Статьи‎ > ‎

Web+Torrent

Предисловие

Учитывая активное использовании torrent-сетей возникло желание управлять клиентом из любой точки сети посредством web-интерфейса. На тот момент я имел установленный дистрибутив Debian Lenny на рабочем компютере. После исследования существующих на тот момент решений и состояния репозиториев выбор был остановлен на свзяке rtorrent и wtorrent.

Установка програмного обеспечения

Необходимые пакеты из репозитария:
  • php5
  • apache2 или lighttpd
  • libapache2-mod-scgi (только для apache2)
  • php5-sqlite
  • rtorrent
  • screen
Примечание: rtorrent пришлось бэкпортировать из testing, т.к. версия из stable падала иногда с ошибкой сегментирования.
Далее скачиваем свежую версию wtorrent. Я решил взять версию из svn, т.к. проще следить за обновлениями:
# cd /var/www/
# svn co svn://wtorrent-project.org/repos/trunk/wtorrent/

После установки необходимых пакетов можно перейти непосредственно к конфигурированию

Настройка програмного обеспечения

Приступая к настройке этого програмного комплекса следует сразу оговориться о некоторых нюансах.
По-первых, торрент-клиент должен работать под тем же пользователем, что и web-сервер, чтобы избежать конфликтов с правами. В данном случае это был www-data.
Во-вторых, вполне очевидно, что может понадобится прямой доступ к интерфейсу rTorrent, потому следует это предусмотреть.

rTorrent

Создаем файл настроек /var/www/.rtorrent.rc следующего содержания
scgi_port = localhost:5000
session = /var/www/wtorrent/torrents
Кладем скрипт инициализации в /etc/init.d . Обратите внимание, что rtorrent не может работать в режиме демона, потому для скрипта инициализации используется утилита screen. Для обеспечения возможности подключения к сессии screen необходимо внести дополнения в конфигурацию в файле /var/www/.screenrc:
multiuser on
addacl root
Здесь я разрешил доступ пользователю root. Аналогично можно добавить и других пользователей.
У скрипта инициализации есть файл конфигурации /etc/rtorrent.conf следующего содержания:
user="www-data"

# Группа, not implemented, see d_start for beginning implementation
group=`id -ng "$user"`

# Файл конфигурации rtorent
config="`su -c 'echo $HOME' $user`/.rtorrent.rc"

# Дополнительные опции запуса rtorrent
options=""

# Директория по-умолчанию для screen
base="`su -c 'echo $HOME' $user`"

# Имя сессии screen
srnname="rtorrent"

logfile="/var/log/rtorrentInit.log"

Запускаем демон

# /etc/init.d/rtorrent start

Можно попробовать подключиться к сессии следующим образом:

# screen -ls www-data/

There is a suitable screen on:
    5093.rtorrent    (12.11.2009 11:29:16)    (Multi, detached)
1 Socket in /var/run/screen/S-www-data.

# screen -r www-data/5093

или, если сессия одна у юзера, то просто
# screen -r www-data/
Для отключения от сессии нажмите ^a затем d. Для более подробной информацией по работе со sсreen обратитесь к соответствующему справочному руководству.

Web-сервер

В этом месте есть 2 варианта на выбор. Зависит от конкретной ситуации и ваших предпочтений. Для домашней станции я бы рекомендовал lighttpd, как более легковесный, но учтите, что apache2 в любом случае установиться как зависимость.

Apache2

Включение модуля mod-scgi
# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/scgi.load
Конфигурируем точку монтирования. Для этого создаем файл /etc/apache2/conf.d/RPC2 следующего содержания:
SCGIMount /RPC2 127.0.0.1:5000

и перезапускаем сервис:

# /etc/init.d/apache2 restart

Lighttpd

Включаем php
# cd /etc/lighttpd/conf-enabled/
# ln -s ../conf-available/10-fastcgi.conf
Включаем mod-scgi, для этого создаем файл /etc/lighttpd/conf-enabled/10-scgi.conf
server.modules   += ( "mod_scgi" )

scgi.server = (
 "/RPC2" => # RT_DIR
   ( "127.0.0.1" =>
      (
          "host" => "127.0.0.1", # Ip where rtorrent is listening
          "port" => 5000, # Port specified in .rtorrent.rc
          "check-local" => "disable"
     )
   )
)
Перезапускаем службу
# /etc/init.d/lighthttpd restart

wTorrent

Копируем файл конфигурации
# cd /var/www/wtorrent/conf/
# cp sample.user.conf.php user.conf.php
# chown www-data
user.conf.php
Корректируем права на директории
# cd /var/www/wtorrent
# chown www-data data db torrents tpl_c
Открываем адрес http://localhost/wtorrent/install.php , делаем при необходимости корретировки. Проверяем конфигурацию кнопкой "Try configuration", и если ошибок не обнаружено, нажимаем "Save configuration"
После этого проверяем работоспособность ресурса.
Внимание! После конфигурирования файл install.php следует обязательно удалить по соображениям безопасности.
# rm /var/www/wtorrent/install.php

Заключение

Стоит отметить, что существуют многие другие проекты, предоставляющие альтернативные интерфейсы управления rTorrent через протокол XML-RPC. Из них особый интерес предстваляет ruTorrent, интерфейс которого идентичен веб-интерфейсу uTorrent, но к сожалению он не имеет средств для разделения доступа пользователей, авторизации и имеет более высокие требования к версии rtorrent, чем в lenny.

Приложения (1)

  • rtorrent – добавлено 11.11.2009 23:27 пользователем Олег Ключкин (версия 1)
    2 КБ Загрузить