RuTorrent установка и настройка под Gentoo: различия между версиями
ALEX (обсуждение | вклад) |
ALEX (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
Посмотрим, что надо иметь на сервере, для установки [http://code.google.com/p/rutorrent/ ruTorrent]. | Посмотрим, что надо иметь на сервере, для установки [http://code.google.com/p/rutorrent/ ruTorrent]. | ||
===Системные требования=== | |||
* rTorrent версии не менее 0.8.2, скомпилированный с поддержкой [[wikipedia:ru:XML-RPC|XML-RPC]]. | * rTorrent версии не менее 0.8.2, скомпилированный с поддержкой [[wikipedia:ru:XML-RPC|XML-RPC]]. | ||
* Веб-сервер с поддержкой php 5.0. | * Веб-сервер с поддержкой php 5.0. | ||
Строка 35: | Строка 36: | ||
====Установка модуля mod_scgi для Apache==== | ====Установка модуля mod_scgi для Apache==== | ||
Далее надо собрать к [http://www.apache.org/ Apache] модуль | Далее надо собрать к [http://www.apache.org/ Apache] модуль {{Package|www-apache/mod_scgi||direct=yes}}. Для этого выполняем следующие действия. | ||
Сперва добавим в файл {{Path|/etc/portage/package.keywords}} строки | Сперва добавим в файл {{Path|/etc/portage/package.keywords}} строки | ||
Строка 46: | Строка 47: | ||
{{Note|Если у вас x86, то данная процедура не нужна}} | {{Note|Если у вас x86, то данная процедура не нужна}} | ||
Причём пакет | Причём пакет {{Package|www-apache/mod_scgi||direct=yes}} и есть сам mod_scgi, а {{Package|www-apps/scgi|direct=yes}} дополнительно устанавливаемый пакет при компиляции mod_scgi. | ||
Собираем для [http://www.apache.org/ Apache] нужный модуль: | Собираем для [http://www.apache.org/ Apache] нужный модуль: | ||
Строка 87: | Строка 88: | ||
После проделанных выше операций перезапускаем наш Apache: | После проделанных выше операций перезапускаем наш Apache: | ||
{{Root|/etc/init.d/apache2 restart}} | {{Root|/etc/init.d/apache2 restart}} | ||
==Установка ruTorrent== | |||
Для установки самой свежей версии необходимов выполнить чекаут из системы контроля версий [http://subversion.tigris.org/ SubVersion]. | |||
Для этого переходим в папку веб сервера апаче, куда мы хотим установить наш ruTorrent и выполняем: | |||
{{Root|svn checkout <nowiki>http://rutorrent.googlecode.com/svn/trunk/rtorrent</nowiki>}} | |||
{{Note|Внимание при чекауте автоматом создаётся подпапка rutorrent в текущей директории}} | |||
Более подробно об обновлении через svn читайте вот [http://code.google.com/p/rutorrent/wiki/GetFromSVN тут]. | |||
Важно чтобы пользователь веб сервера (apache в моей системе) имел права на запись в некоторые папки (если не изменяет память это ''DOCUMENT_ROOT/settings'' и ''DOCUMENT_ROOT/torrents''). Если этого не будет, то при первом же запуске ruTorrent укажет сам, на какие папки у него нет прав на запись. | |||
Теперь надо немного отредактировать конфигурационный файл [http://libtorrent.rakshasa.no/ rTorrent]'а - '''.rtorrent.rc''', добавив в него сделующие строки: | |||
{{File|/home/alex/.rtorrent.rc| | |||
<pre>#SCGI PORT for XML-RPC Connections | |||
scgi_port = 127.0.0.1:5000 | |||
encoding_list = UTF-8 | |||
</pre> | |||
}} | |||
Это укажет адрес и порт SCGI и жёстко пропишет кодировку (протокол XML-RPC работает только с UTF-8 как я понял, что нельзя кстати названь минусом, т.к. очень уж она хороша). | |||
===Добавляем защиту доступа к ruTorrent=== | |||
Т.к. [http://libtorrent.rakshasa.no/ rTorrent] не имеет встроеного механизма аутентификации и к нему может из вне подключиться кто угодно и выполнить там любые действия, то есть смыл защитить его хотябы обычным встроенным в веб сервер способом (по аналогии с mod_scgi). | |||
Для этого в корень папки на веб сервере, где лежат скрипты ruTorrent кидаме файл '''.htaccess''' со следующим содержимым: | |||
{{File|/var/www/tool/htdocs/rutorrent/.htaccess| | |||
<pre>AuthName "ruTorrent Restricted Area" | |||
AuthType Basic | |||
AuthUserFile /var/www/tool/htpasswd/.rutorrent | |||
Require valid-user | |||
</pre> | |||
}} | |||
Это прикрутит ранее созданный файл с паролем и логином (смотри секцию выше о настройке mod_scgi). | |||
Теперь у нас есть рабочий ruTorrent по адресу | |||
{{Path|<nowiki>http://адрес_сервера:порт_сервера/rtorrent</nowiki>}} | |||
{{Note|Указывается адрес и порт вашего веб сервера, куда вы поставили ruTorrent, а так же собвственно папку, где лежат php скрипты. С адресом и портом SCGI это не связанно.}} |
Версия 19:07, 13 декабря 2009
ruTorrent - это графическая оболочка для работы с торрент клиентом rTorrent, работающая под управлением веб сервера. С версии 0.7.5, rtorrent можно собрать вместе с поддержкой протокола XML-RPC. Это позволяет в удобной для форме общаться с клиентом, управлять им, используя что-то своё (как правило веб обёртку), а не только консоль с ncurses.
Одним из наиболее интересных приложений, основанных на веб-технологии на мой взгляд оказался проект ruTorrent. Я уже давно пользовался rTorrent, но как-то настал тот момент, когда я устал от консоли и мне захотелось иметь красивый и наглядный вывод информации в браузер о текущем положении дел. Это пожалуй единственное что мне было интересно, т.к. управлять программой мне удобнее используя горячие клавиши, а так же конфигурационный файл. Рассмотрим как можно прикрутить себе веб-морду, очень сильно напоминающую неплохой Win torrent clietn - uTorrent =).
Приготовления и системные требования
Посмотрим, что надо иметь на сервере, для установки ruTorrent.
Системные требования
- rTorrent версии не менее 0.8.2, скомпилированный с поддержкой XML-RPC.
- Веб-сервер с поддержкой php 5.0.
- Браузер, как локальный клиент (IE 7.0, Firefox 2.x, Firefox 3.x, Opera 9.x)
Теперь я напишу, с что стояло у меня, перед тем как я приступил к работе:
Основу я указал, теперь приступим к приготовлениям.
Подготовка системы к ruTorrent
Выполним некоторые предварителные действия для подготовки инструментария и среды под ruTorrent.
Собираем rTorrent с опцией XML-RPC
Для начала надо пересобрать rTorrent с необходимой опципей, т.е. поддержкой XML-RPC.
Для этого в файл /etc/portage/package.use добавляем строку.
net-p2p/rtorrent daemon xmlrpc
Пересобираем rTorrent:
Установка модуля mod_scgi для Apache
Далее надо собрать к Apache модуль www-apache/mod_scgi. Для этого выполняем следующие действия.
Сперва добавим в файл /etc/portage/package.keywords строки
www-apache/mod_scgi ~amd64 www-apps/scgi ~amd64
Это размаскирует эти пакеты для систем amd64 (64 битная ОС).
Причём пакет www-apache/mod_scgi и есть сам mod_scgi, а www-apps/scgi дополнительно устанавливаемый пакет при компиляции mod_scgi.
Собираем для Apache нужный модуль:
Теперь надо сконфигурировать данный модуль.
Конфигурация mod_scgi
Открываем на правку конфигурационный файл XX_mod_scgi.conf (у меня он называется 20_mod_scgi.conf).
<IfDefine SCGI> LoadModule scgi_module modules/mod_scgi.so # Apache2 example <Location "/RPC2"> SetHandler scgi-handler SCGIServer localhost:5000 SCGIHandler On Options -Multiviews AuthName "RPC2 Restricted Area" AuthType Basic AuthBasicProvider file AuthUserFile /var/www/tool/htpasswd/.rutorrent Require valid-user </Location> </IfDefine>
Соответственно мы тут добавили точку монтирования (Location "/RPC2"), адрес и порт (SCGIServer localhost:5000), а так же прикрыли доступ из вне, поставив пароль, используя обычную веб-аунтификацию апача. Последнее позволит защитить обращения к нашему веб серверу к RPC (http://address/RPC2), а ведь именно туда обращается ruTorrent, посылая запросу не напряму к rTorrent, а через веб сервер (более подробно можно глянуть тут).
Так же нам надо создать файл с паролем и логином для веб-аутентификации /var/www/tool/htpasswd/.rutorrent, куда вносятся данные, полученные от утилиты htpasswd (можно сгенерировать их и on-line, например тут).
<IfDefine SCGI> эта директива проверяет, был ли запущен апач с ключом SCGI и только потом подгружает модуль mod_scgi. Для того, чтобы запустить апач с этим ключом необходимо поправить следующий файл:
APACHE2_OPTS="-D SCGI ...... "
То есть мы добавили ключ запуска апача -D SCGI, важно не удалить случайно те ключи, которые там ранее уже были у вас. Просто вставьте своё значение вначало.
После проделанных выше операций перезапускаем наш Apache:
Установка ruTorrent
Для установки самой свежей версии необходимов выполнить чекаут из системы контроля версий SubVersion.
Для этого переходим в папку веб сервера апаче, куда мы хотим установить наш ruTorrent и выполняем:
Более подробно об обновлении через svn читайте вот тут.
Важно чтобы пользователь веб сервера (apache в моей системе) имел права на запись в некоторые папки (если не изменяет память это DOCUMENT_ROOT/settings и DOCUMENT_ROOT/torrents). Если этого не будет, то при первом же запуске ruTorrent укажет сам, на какие папки у него нет прав на запись.
Теперь надо немного отредактировать конфигурационный файл rTorrent'а - .rtorrent.rc, добавив в него сделующие строки:
#SCGI PORT for XML-RPC Connections scgi_port = 127.0.0.1:5000 encoding_list = UTF-8
Это укажет адрес и порт SCGI и жёстко пропишет кодировку (протокол XML-RPC работает только с UTF-8 как я понял, что нельзя кстати названь минусом, т.к. очень уж она хороша).
Добавляем защиту доступа к ruTorrent
Т.к. rTorrent не имеет встроеного механизма аутентификации и к нему может из вне подключиться кто угодно и выполнить там любые действия, то есть смыл защитить его хотябы обычным встроенным в веб сервер способом (по аналогии с mod_scgi).
Для этого в корень папки на веб сервере, где лежат скрипты ruTorrent кидаме файл .htaccess со следующим содержимым:
AuthName "ruTorrent Restricted Area" AuthType Basic AuthUserFile /var/www/tool/htpasswd/.rutorrent Require valid-user
Это прикрутит ранее созданный файл с паролем и логином (смотри секцию выше о настройке mod_scgi).
Теперь у нас есть рабочий ruTorrent по адресу http://адрес_сервера:порт_сервера/rtorrent