Config.ru - Novik/ruTorrent GitHub Wiki
Собственно, вся установка проходит под лозунгом "наливай да пей". Необходимо скачать версию и развернуть полученный архив в корень веб-сервера. Делать это лучше из под пользователя,
под которым работает собственно веб-сервер. Если это по каким-либо причинам невозможно (например, данный пользователь не имеет доступа к шеллу) - после разархивации необходимо убедиться, что все файлы ruTorrent
доступны пользователю веб-сервера на чтение, а директория ruTorrent/share
со всем своим содержимым - на чтение и запись. Причем последняя должна так же быть доступна на чтение/запись пользователю,
из под которого работает rtorrent. В любом случае, при первой загрузке ruTorrent произведет самодиагностику, и если что не так - он Вам скажет. По крайней мере, должен сказать. ;)
Файлы конфигурации ruTorrent находятся в директории ruTorrent/conf
. Основных файлов три:
config.php
access.ini
plugins.ini
Плагины могут иметь собственные файлы конфигурации, как правило, это файл conf.php
в директории плагина.
Выглядит примерно так:
<?php
// configuration parameters
// for snoopy client
@define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
@define('HTTP_TIME_OUT', 30, true); // in seconds
@define('HTTP_USE_GZIP', true, true);
$httpIP = null; // IP string. Or null for any.
@define('RPC_TIME_OUT', 5, true); // in seconds
@define('LOG_RPC_CALLS', false, true);
@define('LOG_RPC_FAULTS', true, true);
// for php
@define('PHP_USE_GZIP', false, true);
@define('PHP_GZIP_LEVEL', 2, true);
$schedule_rand = 10; // rand for schedulers start, +0..X seconds
$do_diagnostic = true;
$log_file = '/tmp/errors.log'; // path to log file (comment or leave blank to disable logging)
$saveUploadedTorrents = true; // Save uploaded torrents to profile/torrents directory or not
$overwriteUploadedTorrents = false; // Overwrite existing uploaded torrents in profile/torrents directory or make unique name
$topDirectory = '/'; // Upper available directory. Absolute path with trail slash.
$forbidUserSettings = false;
$scgi_port = 5000;
$scgi_host = "127.0.0.1";
// For web->rtorrent link through unix domain socket
// (scgi_local in rtorrent conf file), change variables
// above to something like this:
//
// $scgi_port = 0;
// $scgi_host = "unix:///tmp/rpc.socket";
$XMLRPCMountPoint = "/RPC2"; // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!
$pathToExternals = array(
"php" => '', // Something like /usr/bin/php. If empty, will be found in PATH.
"curl" => '', // Something like /usr/bin/curl. If empty, will be found in PATH.
"gzip" => '', // Something like /usr/bin/gzip. If empty, will be found in PATH.
"id" => '', // Something like /usr/bin/id. If empty, will be found in PATH.
"stat" => '', // Something like /usr/bin/stat. If empty, will be found in PATH.
);
$localhosts = array( // list of local interfaces
"127.0.0.1",
"localhost",
);
$profilePath = '../share'; // Path to user profiles
$profileMask = 0777; // Mask for files and directory creation in user profiles.
// Both Webserver and rtorrent users must have read-write access to it.
// For example, if Webserver and rtorrent users are in the same group then the value may be 0770.
$tempDirectory = null; // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.
$scgi_host = "127.0.0.1";
SCGI хост. Должен соответствовать настройке в файле конфигурации rtorrent. Как правило, всегда 127.0.0.1
.
В случае использования для связи с rtorrent механизма unix domain socket
данная переменная должна содержать что-то типа "unix:///tmp/rpc.socket"
. В теории возможно использование ruTorrent с rtorrent, находящимся на другом хосте,
но на практике я такую конфигурацию не советую - большинство плагинов работать не будут.
$scgi_port = 5000;
SCGI порт. Должен соответствовать настройке в файле конфигурации rtorrent. В случае использоваия unix domain socket
значение данной переменной должно быть 0.
$XMLRPCMountPoint = "/RPC2";
Точка монтирования XMLRPC. Внимание! Не нужно удалять либо комментировать данную строку даже если в Вашей системе не используется прямой доступ к точке монтирования (т.е., например, стоит плагин RPC).
$do_diagnostic = true;
Если данная переменная будет равна false
, то при загрузке ruTorrent диагностика (проверка прав доступа и т.п.) производиться не будет. Что может обеспечить более быструю загрузку.
$log_file = '/tmp/errors.log';
Имя файла, в который будут записываться отладочные сообщения и сообщения об ошибках.
$httpIP = null;
IP адрес, который будет использован ruTorrent для доступа к http и https ресурсам, например, к RSS фидам.
$forbidUserSettings = false;
Если true
, то независимо от наличия/отсутствия внешней авторизации будет использоваться монопольный (однопользовательский) режим работы ruTorrent.
@define('PHP_USE_GZIP', false, true);
Данная константа определяет, будет ли отдаваемый контент фильтроваться через внешнюю программу сжатия (gzip
). Если выставить ее в true
(второй параметр), то все страницы, генерируемые php, размером более 2К будут сжиматься.
Это
- Уменьшает трафик
- Увеличивает загрузку сервера
- Не имеет никакого смысла, если php уже использует какую-либо подсистему сжатия, например, если настройка php
zlib.output_compression
выставлена вon
.
@define('PHP_GZIP_LEVEL', 2, true);
Уровень сжатия для gzip
. Если PHP_USE_GZIP
выставлена в false
, никакого смысла не несет.
$saveUploadedTorrents = true;
Если true
, то все .torrent файлы, добавляемые пользователем через ruTorrent, будут сохраняться в директории share/torrents
(или share/users/USERNAME/torrents
для многопользовательской конфигурации). Если false
, то все .torrent файлы будут удаляться с диска непосредственно после передачи их rtorrent.
$overwriteUploadedTorrents = false;
Если true
, то при сохранении уже существующего .torrent файла он будет перезаписан. В противном случае для файла будет сконструировано уникальное имя. Имеет смысл только если $saveUploadedTorrents
выставлено в true
.
$topDirectory = '/';
Директории выше данной не будут доступны пользователю ruTorrent.
- Пути к внешним программам
$pathToExternals = array(
"php" => '',
"curl" => '',
"gzip" => '',
"id" => '',
Элементы массива должны содержать полный путь к соответствующим программам. Если вместо пути указана пустая строка, то поиск внешней программы будет проводиться согласно переменной окружения PATH
пользователей (веб-сервера или rtorrent, смотря кому в данный конкретный момент программа нужна).
$profilePath = '../share';
Путь к каталогу, в котором будут храниться данные пользователей.
$profileMask = 0777;
Маска доступа для создаваемых пользовательских файлов и директорий. Пользователь веб-сервера и пользователь, под которым работает rtorrent должны иметь доступ на чтение/запись данных файлов. Как следствие - если, например, эти пользователи находятся в одной группе, то разумно изменить данный параметр на 0770.
$tempDirectory = null;
Директория, которая будет использована для создания временных файлов. Должна быть доступна на чтение/запись/выполнение как для веб-сервера, так и для rtorrent. По умолчанию (т.е. null) ruTorrent последовательно проверит значения
-
upload_tmp_dir
из php.ini - значение, которое возвращает функция php
sys_get_temp_dir
- /tmp
и выберет первую подходящую (т.е. существующую и доступную по записи) директорию из этого списка.
Порочие настройки в данном файле трогать категорически не рекомендуется.
Файл предназначен для ограничения пользователя ruTorrent в правах. Представляет из себя обычный ini файл и выглядит так:
;; ruTorrent permissions.
;; By default all flags is assumed as "yes".
[settings]
showDownloadsPage = yes
showConnectionPage = yes
showBittorentPage = yes
showAdvancedPage = yes
[tabs]
showPluginsTab = yes
[statusbar]
canChangeULRate = yes
canChangeDLRate = yes
[dialogs]
canChangeTorrentProperties = yes
Здесь
-
showDownloadsPage
- доступна ли пользователю вкладка "Закачки" в диалоге настроек rtorrent. -
showConnectionPage
- доступна ли пользователю вкладка "Соединение" в диалоге настроек rtorrent. -
showBittorentPage
- доступна ли пользователю вкладка "BitTorrent" в диалоге настроек rtorrent. -
showAdvancedPage
- доступна ли пользователю вкладка "Дополнительно" в диалоге настроек rtorrent. -
showPluginsTab
- доступна ли пользователю закладка "Плагины" на интерфейсе ruTorrent. -
canChangeULRate
- может ли пользователь менять ограничение на скорость отдачи (контекстное меню статус-бара). -
canChangeDLRate
- может ли пользователь менять ограничение на скорость закачки (контекстное меню статус-бара). -
canChangeTorrentProperties
- может ли пользователь менять свойства конкретной закачки.
Файл предназначен для управления плагинами ruTorrent. Представляет из себя обычный ini файл и выглядит так:
;; Plugins' permissions.
;; If flag is not found in plugin section, corresponding flag from "default" section is used.
;; If flag is not found in "default" section, it is assumed to be "yes".
;;
;; For setting individual plugin permissions you must write something like that:
;;
;; [ratio]
;; enabled = yes ;; also may be "user-defined", in this case user can control plugin's state from UI
;; canChangeToolbar = yes
;; canChangeMenu = yes
;; canChangeOptions = no
;; canChangeTabs = yes
;; canChangeColumns = yes
;; canChangeStatusBar = yes
;; canChangeCategory = yes
;; canBeShutdowned = yes
[default]
enabled = user-defined
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes
canBeShutdowned = yes
Каждая секция в файле (за исключением секции default
) соответствует конкретному плагину. Если секции с именем плагина нет, то информация будет браться из секции с именем default.
-
enabled
- будет ли плагин вообще использоваться. Возможные значения - yes, no, user-defined. Последнее означает, что решение о загрузке/не загрузке плагина принимается пользователем и доступно с интерфейса ruTorrent (см. контекстное меню на закладке "Плагины"). -
canChangeToolbar
- может ли плагин менять содержимое главного тулбара. -
canChangeMenu
- может ли плагин менять содержимое контекстного меню. -
canChangeOptions
- может ли плагин менять содержимое диалога настройки. -
canChangeTabs
- может ли плагин добавлять новые закладки на интерфейс. -
canChangeColumns
- может ли плагин изменять структуру отображаемых таблиц (например, списка закачек). -
canChangeStatusBar
- может ли плагин изменять статус-бар ruTorrent. -
canChangeCategory
- может ли плагин изменять панель категорий ruTorrent. -
canBeShutdowned
- доступна ли для данного плагина на интерфейсе команда "Выгрузить".
Пример:
[default]
enabled = yes
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
[rpc]
enabled = no
[unpack]
canChangeOptions = no
В результате плагин RPC загружен вообще не будет, а в плагине Unpack пользователю будет недоступна настройка автоматический распаковки (которая находится в соотв. разделе диалога настроек).
Как ранее уже упоминалось, ruTorrent не имеет собственной системы аутентификации. Защиту файлов следует организовывать средствами веб-сервера. Защищать нужно собственно корневую директорию ruTorrent и, если Вы не используете плагины RPC или HTTPRPC, точку монтирования XMLRPC (по умолчанию /RPC2). Аутентификация обоих частей должна иметь одинаковый realm, либо Вы можете поместить точку монтирования внутрь корневой директории ruTorrent и защищать только одну область. При наличии аутентификации Вы можете настроить ruTorrent на работу с несколькими пользователями.
Замечание: крайне желательно (но, строго говоря, не обязательно), чтобы каждому пользователю соответствовал свой экземпляр rtorrent. В противном случае ряд плагинов (например, Ratio) будет работать некорректно.
Если Вы не используете аутентификацию, либо явно отключили многопользовательский вариант в настроках, то
- Все файлы данных пользователя ruTorrent будут размещены в директории
share/settings
. - Все настройки ruTorrent будут считываться из директории
ruTorrent/conf
.
В противном случае, Вы автоматически имеете многопользовательский вариант установки. При этом
- Все файлы данных конкретного пользователя будут автоматически размещены в директории
share/users/USERNAME/settings
, гдеUSERNAME
- имя, с которым пользователь авторизовался. - Существует возможность настроить ruTorrent для каждого пользователя индивидуально.
Для этого следует скопировать требуемые файлы конфигурации ruTorrent в директорию conf/users/USERNAME
(в отличие от случая с данными пользователя эту директорию нужно создать).
Например, если Вы имеете трех пользователей - tom, dick и harry, Вы должны сделать что-то вроде этого:
mkdir /var/www/ruTorrent/conf/users/tom
mkdir /var/www/ruTorrent/conf/users/dick
mkdir /var/www/ruTorrent/conf/users/harry
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/tom/
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/dick/
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/harry/
После чего отредактировать соответствующим образом файлы config.php
, access.ini
и plugins.ini
в директории пользователя.
Замечание 1: Все три файла копировать вовсе не обязательно.
Замечание 2: ruTorrent все равно будет загружать файл conf/config.php
. А уже после него - файл конфигурации пользователя. Таким образом, файл конфигурации пользователя может содержать только отличия от основного файла. К access.ini
и plugins.ini
данное замечание не относится.
Некоторые плагины имеют собственные файлы конфигурации, такие плагины тоже могут быть сконфигурированы индивидуально.