RuTorrent установка и настройка под Gentoo: различия между версиями

Материал из AlexNook
Перейти к навигацииПерейти к поиску
м
м
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
[http://code.google.com/p/rutorrent/ ruTorrent] - это графическая оболочка для работы с торрент клиентом [[RTorrent_-_установка_и_настройка|rTorrent]], работающая под управлением веб сервера. С версии 0.7.5, rtorrent можно собрать вместе с поддержкой протокола [[wikipedia:ru:XML-RPC|XML-RPC]]. Это позволяет в удобной для форме общаться с клиентом, управлять им, используя что-то своё (как правило веб обёртку), а не только консоль с [[wikipedia:en:Ncurses|ncurses]].
[[Изображение:logo_ruTorrent.png|thumb|ruTorrent Logo]]
[http://code.google.com/p/rutorrent/ ruTorrent] - это графическая оболочка для работы с торрент клиентом [[RTorrent_-_установка_и_настройка|rTorrent]], работающая под управлением веб сервера. С версии 0.7.5, rtorrent можно собрать вместе с поддержкой протокола [[wikipedia:ru:XML-RPC|XML-RPC]]. Это позволяет в удобной для нас форме общаться с клиентом, управлять им, используя что-то своё (как правило веб обёртку), а не только консоль с [[wikipedia:en:Ncurses|ncurses]].


Одним из наиболее интересных приложений, основанных на веб-технологии на мой взгляд оказался проект [http://code.google.com/p/rutorrent/ ruTorrent]. Я уже давно пользовался [[RTorrent_-_установка_и_настройка|rTorrent]], но как-то настал тот момент, когда я устал от консоли и мне захотелось иметь красивый и наглядный вывод информации в браузер о текущем положении дел. Это пожалуй единственное что мне было интересно, т.к. управлять программой мне удобнее используя горячие клавиши, а так же конфигурационный файл. Рассмотрим как можно прикрутить себе веб-морду, очень сильно напоминающую неплохой Win torrent clietn - uTorrent =).
Одним из наиболее интересных приложений, основанных на веб-технологии на мой взгляд оказался проект [http://code.google.com/p/rutorrent/ ruTorrent]. Я уже давно пользовался [[RTorrent_-_установка_и_настройка|rTorrent]], но как-то настал тот момент, когда я устал от консоли и мне захотелось иметь красивый и наглядный вывод информации в браузер о текущем положении дел. Это пожалуй единственное что мне было интересно, т.к. управлять программой мне удобнее используя горячие клавиши, а так же конфигурационный файл. Рассмотрим как можно прикрутить себе веб-морду, очень сильно напоминающую неплохой Win torrent clietn - uTorrent =).
Строка 6: Строка 7:
Посмотрим, что надо иметь на сервере, для установки [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.  
Строка 21: Строка 23:


===Подготовка системы к ruTorrent===
===Подготовка системы к ruTorrent===
Выполним некоторые предварителные действия для подготовки инструментария и среды под ruTorrent.
====Собираем rTorrent с опцией XML-RPC====
Для начала надо пересобрать [[RTorrent_-_установка_и_настройка|rTorrent]] с необходимой опципей, т.е. поддержкой [[wikipedia:ru:XML-RPC|XML-RPC]].
Для начала надо пересобрать [[RTorrent_-_установка_и_настройка|rTorrent]] с необходимой опципей, т.е. поддержкой [[wikipedia:ru:XML-RPC|XML-RPC]].


Для этого в файл ''package.use'' добавляем строку.
Для этого в файл {{Path|/etc/portage/package.use}} добавляем строку.
{{File|/etc/portage/package.use|
{{File|/etc/portage/package.use|
<pre>net-p2p/rtorrent daemon xmlrpc</pre>
<pre>net-p2p/rtorrent daemon xmlrpc</pre>
}}
}}
{{Note|Опция daemon у меня там уже была для того, чтобы я мог зпускатье го в режиме демона}}
{{Note|Опция daemon у меня там уже была для того, чтобы я мог зпускать его в режиме демона}}


Пересобираем [http://libtorrent.rakshasa.no/ rTorrent]:
Пересобираем [http://libtorrent.rakshasa.no/ rTorrent]:
{{Root|emerge rtorrent}}
{{Root|emerge rtorrent}}


Далее надо собрать к [http://www.apache.org/ Apache] модуль [http://gentoo-portage.com/www-apache/mod_scgi mod_scgi]. Для этого выполняем следующие действия.
====Установка модуля mod_scgi для Apache====
Далее надо собрать к [http://www.apache.org/ Apache] модуль {{Package|www-apache/mod_scgi||direct=yes}}. Для этого выполняем следующие действия.


Сперва добавим в файл ''package.keywords'' строки
Сперва добавим в файл {{Path|/etc/portage/package.keywords}} строки
{{File|/etc/portage/package.keywords|
{{File|/etc/portage/package.keywords|
<pre>www-apache/mod_scgi ~amd64
<pre>www-apache/mod_scgi ~amd64
www-apps/scgi ~amd64</pre>
www-apps/scgi ~amd64</pre>
}}
}}
Это размаскирует эти пакеты для систем amd64 (64 битная ОС).
Это размаскирует эти пакеты для систем {{Keyword|amd64}} (64 битная ОС).


{{Note|Если у вас x86, то данная процедура не нужна}}
{{Note|Если у вас x86, то данная процедура не нужна. Вместо этого надо добавить ключик ~x86.}}


Причём пакет '''www-apache/mod_scgi''' и есть сам mod_scgi, а '''www-apps/scgi''' дополнительно устанавливаемый пакет при компиляции mod_scgi.
Причём пакет {{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] нужный модуль:
Строка 49: Строка 54:
Теперь надо сконфигурировать данный модуль.
Теперь надо сконфигурировать данный модуль.


Открываем на правку конфигурационный файл XX_mod_scgi.conf и вносим в него:
=====Конфигурация mod_scgi=====
Открываем на правку конфигурационный файл '''XX_mod_scgi.conf''' (у меня он называется '''20_mod_scgi.conf''').
{{Note|Данное название сгенерированно Гентушным подходом (Gentoo-way), где цифры перед названием файла указывают на порядок, в котором он будет автоматом подгружен из папки '''modules.d''' в общий конфиг (его не рекомендуется править, т.к. он будет каждый раз переписан при обновлении апача).}}
{{File|/etc/apache2/modules.d/20_mod_scgi.conf|
{{File|/etc/apache2/modules.d/20_mod_scgi.conf|
<pre><IfDefine SCGI>
<pre><IfDefine SCGI>
Строка 64: Строка 71:
         AuthUserFile /var/www/tool/htpasswd/.rutorrent
         AuthUserFile /var/www/tool/htpasswd/.rutorrent
         Require valid-user
         Require valid-user
</Location></pre>
</Location>
</IfDefine></pre>
}}
}}


Соответственно мы тут добавили точку монтирования (Location "/RPC2"), адрес и порт (SCGIServer localhost:5000), а так же прикрыли доступ из вне, поставив пароль, используя обычную веб-аунтификацию апача. Последнее позволит защитить обращения к нашему веб серверу к RPC (http://address/RPC2), а ведь именно туда обращается ruTorrent, посылая запросу не напряму к rTorrent, а через веб сервер (более подробно можно глянуть [http://code.google.com/p/rutorrent/wiki/WebserverSetup тут]).
Соответственно мы тут добавили точку монтирования ('''Location "/RPC2"'''), адрес и порт ('''SCGIServer localhost:5000'''), а так же прикрыли доступ из вне, поставив пароль, используя обычную веб-аунтификацию апача. Последнее позволит защитить обращения к нашему веб серверу к RPC (''<nowiki>http://address/RPC2</nowiki>''), а ведь именно туда обращается [http://code.google.com/p/rutorrent/ ruTorrent], посылая запросу не напряму к [http://libtorrent.rakshasa.no/ rTorrent], а через веб сервер (более подробно можно глянуть [http://code.google.com/p/rutorrent/wiki/WebserverSetup тут]).
 
Так же нам надо создать файл с паролем и логином для веб-аутентификации {{Path|/var/www/tool/htpasswd/.rutorrent}}, куда вносятся данные, полученные от утилиты htpasswd (можно сгенерировать их и on-line, например [http://www.htaccesstools.com/htpasswd-generator/ тут]).
{{Note|Путь, куда вы положите файл .rutorrent может быть любым у вас. Главное вынести его за пределы папки, доступной по протоколу http (в Генту обычно ''htdocs''.)}}
 
'''<IfDefine SCGI>''' эта директива проверяет, был ли запущен апач с ключом SCGI и только потом подгружает модуль mod_scgi. Для того, чтобы запустить апач с этим ключом необходимо поправить следующий файл:
 
{{File|/etc/conf.d/apache2|
<pre>APACHE2_OPTS="-D SCGI ...... "</pre>
}}
То есть мы добавили ключ запуска апача '''-D SCGI''', важно не удалить случайно те ключи, которые там ранее уже были у вас. Просто вставьте своё значение вначало.
 
После проделанных выше операций перезапускаем наш Apache:
{{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/rutorrent/share''. Если этого не будет, то при первом же запуске ruTorrent укажет сам, на эту проблему, а так же перечислет все пути, куда у него нет прав на запись.
 
Установка самого набора скриптов (веб-морды) ruTorrent на этом заканчивается. Можно, однако выполнить и некоторые настройки веб приложения. Прочитать более подробно об этом можно на оффициальном сайте проекта - [http://code.google.com/p/rutorrent/wiki/Config?wl=ru#Настройка тут].
 
Теперь надо немного отредактировать конфигурационный файл [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).
 
Теперь у нас есть рабочий [http://code.google.com/p/rutorrent/ ruTorrent] по адресу
{{Path|<nowiki>http://адрес_сервера:порт_сервера/rtorrent</nowiki>}}
 
{{Note|Указывается адрес и порт вашего веб сервера, куда вы поставили [http://code.google.com/p/rutorrent/ ruTorrent], а так же собвственно папку, где лежат php скрипты. С адресом и портом SCGI это не связанно.}}
 
{{Note|Важно отметить, что базовая аутентификация средствами веб сервера не очень хороша и конечно желательно хотя бы использовать https протокол соединения, для шифрования при передаче данных, в том числе логина и пароля.}}
 
==Ссылки==
* [http://code.google.com/p/rutorrent/ ruTorrent]
* [http://libtorrent.rakshasa.no/ rTorrent]
 
[[Category:Linux]]
[[Category:Index]]

Текущая версия на 19:16, 21 августа 2010

ruTorrent Logo

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 добавляем строку.

File: /etc/portage/package.use
net-p2p/rtorrent daemon xmlrpc
Note: Опция daemon у меня там уже была для того, чтобы я мог зпускать его в режиме демона

Пересобираем rTorrent:

emerge rtorrent

Установка модуля mod_scgi для Apache

Далее надо собрать к Apache модуль www-apache/mod_scgi. Для этого выполняем следующие действия.

Сперва добавим в файл /etc/portage/package.keywords строки

File: /etc/portage/package.keywords
www-apache/mod_scgi ~amd64
www-apps/scgi ~amd64

Это размаскирует эти пакеты для систем amd64 (64 битная ОС).

Note: Если у вас x86, то данная процедура не нужна. Вместо этого надо добавить ключик ~x86.

Причём пакет www-apache/mod_scgi и есть сам mod_scgi, а www-apps/scgi дополнительно устанавливаемый пакет при компиляции mod_scgi.

Собираем для Apache нужный модуль:

emerge mod_scgi

Теперь надо сконфигурировать данный модуль.

Конфигурация mod_scgi

Открываем на правку конфигурационный файл XX_mod_scgi.conf (у меня он называется 20_mod_scgi.conf).

Note: Данное название сгенерированно Гентушным подходом (Gentoo-way), где цифры перед названием файла указывают на порядок, в котором он будет автоматом подгружен из папки modules.d в общий конфиг (его не рекомендуется править, т.к. он будет каждый раз переписан при обновлении апача).
File: /etc/apache2/modules.d/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, например тут).

Note: Путь, куда вы положите файл .rutorrent может быть любым у вас. Главное вынести его за пределы папки, доступной по протоколу http (в Генту обычно htdocs.)

<IfDefine SCGI> эта директива проверяет, был ли запущен апач с ключом SCGI и только потом подгружает модуль mod_scgi. Для того, чтобы запустить апач с этим ключом необходимо поправить следующий файл:

File: /etc/conf.d/apache2
APACHE2_OPTS="-D SCGI ...... "

То есть мы добавили ключ запуска апача -D SCGI, важно не удалить случайно те ключи, которые там ранее уже были у вас. Просто вставьте своё значение вначало.

После проделанных выше операций перезапускаем наш Apache:

/etc/init.d/apache2 restart

Установка ruTorrent

Для установки самой свежей версии необходимов выполнить чекаут из системы контроля версий SubVersion.

Для этого переходим в папку веб сервера апаче, куда мы хотим установить наш ruTorrent и выполняем:

svn checkout http://rutorrent.googlecode.com/svn/trunk/rtorrent
Note: Внимание при чекауте автоматом создаётся подпапка rutorrent в текущей директории

Более подробно об обновлении через svn читайте вот тут.

Важно чтобы пользователь веб сервера (apache в моей системе) имел права на запись в DOCUMENT_ROOT/rutorrent/share. Если этого не будет, то при первом же запуске ruTorrent укажет сам, на эту проблему, а так же перечислет все пути, куда у него нет прав на запись.

Установка самого набора скриптов (веб-морды) ruTorrent на этом заканчивается. Можно, однако выполнить и некоторые настройки веб приложения. Прочитать более подробно об этом можно на оффициальном сайте проекта - тут.

Теперь надо немного отредактировать конфигурационный файл rTorrent'а - .rtorrent.rc, добавив в него сделующие строки:

File: /home/alex/.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 со следующим содержимым:

File: /var/www/tool/htdocs/rutorrent/.htaccess
AuthName "ruTorrent Restricted Area"
AuthType Basic
AuthUserFile /var/www/tool/htpasswd/.rutorrent
Require valid-user

Это прикрутит ранее созданный файл с паролем и логином (смотри секцию выше о настройке mod_scgi).

Теперь у нас есть рабочий ruTorrent по адресу http://адрес_сервера:порт_сервера/rtorrent

Note: Указывается адрес и порт вашего веб сервера, куда вы поставили ruTorrent, а так же собвственно папку, где лежат php скрипты. С адресом и портом SCGI это не связанно.
Note: Важно отметить, что базовая аутентификация средствами веб сервера не очень хороша и конечно желательно хотя бы использовать https протокол соединения, для шифрования при передаче данных, в том числе логина и пароля.

Ссылки