Недавно снова попробовал свежую версию transmission-daemon. Как оказалось, в свежей версии transmission-daemon web-клиент уже встроен вовнутрь демона. Работает без падений - всё отлично, но хочется рассмотреть по возможности побольше вариантов, чтобы выбрать оптимальный.
Недавно я наткнулся на лестные отзывы о web-интерфейсе rutorrent для rtorrent. Сам интерфейс очень похож на web-интерфейс (и на GUI-интерфейс) программы uTorrent.
web-интерфейс будет обслуживаться web-сервером lighttpd, а rtorrent будет запущен в screen-сеансе. Для работы web-интерфейса нам понадобится PHP, а для настройки ограничения доступа - утилита htdigest из пакета apache2-utils. Если вы не хотите её устанавливать, то вместо неё можете воспользоваться следующим сценарием lightdigest.sh.
Поставим необходимое нам:
# aptitude install rtorrent screen lighttpd php5-cgi apache2-utilsДля начала я создал простенький файл конфигурации ~/.rtorrent.rc для rtorrent в домашнем каталоге пользователя, от имени которого будет работать rtorrent:
port_range = 6925-6925 directory = /home/rtorrent session = /home/rtorrent/.rtorrent-session/ load_start = /home/rtorrent/torrents/* scgi_port = 127.0.0.1:5000port_range - опция задаёт диапазон TCP-портов, который будет прослушиваться в ожидании подключения других torrent-клиентов и будет анонсироваться трекерам. В данном случае это всего один TCP-порт 6925. Если его не указать, то при каждом запуске rtorrent будет слушать и анонсировать случайный диапазон портов. Задаю я этот параметр по одной простой причине - чтобы потом проковырять в фаерволле соответствующую дырочку.
- directory - опция задаёт каталог, в который будет производиться закачка.
- session - опция задаёт каталог, в который будут помещаться активные торренты. При перезапуске rtorrent эти торренты автоматически будут возобновлены.
- load_start - задаёт имена торрент-файлов, которые необходимо добавить к текущему сеансу.
- scgi_port - настраивает прослушивание управляющего TCP-порта. Управление происходит по протоколу XML-RPC.
server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => ( ( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/tmp/php.socket", "max-procs" => 2, "idle-timeout" => 20, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "1", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" ) ) ) server.modules += ( "mod_scgi" ) scgi.server = ( "/RPC2" => ( "127.0.0.1" => ( "host" => "127.0.0.1", "port" => 5000, "check-local" => "disable", "disable-time" => 0, ) ) ) server.modules += ( "mod_auth" ) auth.backend = "htdigest" auth.backend.htdigest.userfile = "/etc/lighttpd/htdigest" auth.require = ( "/RPC2" => ( "method" => "digest", "realm" => "rTorrent RPC", "require" => "user=rtorrent" ) )Этот фрагмент включает и настраивает три плагина lighttpd:
- fastcgi - для обслуживания php-сценариев web-интерфейса,
- scgi - для проксирования обращений к URL'у "/RPC2" на локальный TCP-сокет 5000,
- auth - для ограничения доступа к этому URL'у по имени пользователя и паролю.
# htdigest -c /etc/lighttpd/htdigest "rTorrent RPC" rtorrentЕсли в файле паролей уже есть какие-то записи, то предыдущую команду выполним без опции "-c", чтобы файл не был перезаписан, а был только лишь дополнен новой записью. Соответственно, если вы уже использовали авторизацию по htdigest, файл паролей может находиться в другом месте, в том куда вы его до этого положили. В таком случае нужно поправить путь к файлу паролей в опции auth.backend.htdigest.userfile, указанной в фрагменте /etc/lighttpd/lighttpd.conf выше.
Теперь пришло время скачать со страницы http://code.google.com/p/rutorrent/downloads/list архив rtorrent с файлами web-интерфейса rutorrent. Остальные перечисленные на этой странице файлы являются плагинами к rutorrent.
$ wget http://rutorrent.googlecode.com/files/rtorrent-2.7.tar.gzСоздадим каталог для размещения файлов из архива:
# cd /var/www $ mkdir rutorrentИ распакуем архив в него:
# tar xzvf rtorrent-2.7.tar.gz -C /var/www/rutorrentВидим, что файлы распаковались в каталог /var/www/rutorrent/rtorrent. Мне это не понравилось, я переместил файлы так, как и было изначально мной задумано:
# cd /var/www/rutorrent # mv rtorrent/* . # rmdir rtorrentТеперь дадим приложению права на запись в каталоги torrents и settings:
# chown www-data:www-data torrents settingsЗаходим по адресу http://ваш-IP/rutorrent, проходим аутентификацию и изучаем интерфейс:
Примечания:
- При работе web-интерфейса выяснилось, что он неплохо умеет ронять rtorrent.
- Пищу для дальнейших размышлений на тему улучшения системы даёт сообщение web-интерфейса: "rTorrent скомпилирован с некорректной версией библиотеки xmlrpc-c, без поддержки 8-байтовых целых. Версия библиотеки должна быть >= 1.11. Часть функциональности будет недоступна."
- Заметка пока-что оставляет за кадром вопросы автозапуска rtorrent в сеансе screen, возможно в скором времени я доберусь до этого вопроса.
- Возможно я пропустил установку и настройку каких-то жизненно важных для работы связки пакетов.
- rutorrent - главная страница
- http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide
- Lighttpd - mod_fastcgi - настройки модуля fastcgi один в один совпадают с настройками модуля sgci, поэтому документацию на модуль scgi нужно смотреть тоже здесь.
7 комментариев:
следует добавить что при проблеме с кодировкой в файл .rtorrent.rc необходимо прописать encoding_list = кодировка(у меня к примеру UTF-8)
Gryph0N
По поводу комментария №3. Автозапуск - нет ничего проще. Достаточно написать скриптик и засунуть его к примеру в /usr/local/etc/rc.d
Вот пример моего скрипта. Правда я использовал не screen, а dtach.
torrent.sh:
#!/bin/sh
export HOME=/home/alex/
/bin/rm -f /usr/torrent/torent.sock
sleep 5
/usr/bin/su -m alex -c '/usr/local/bin/dtach -n /usr/torrent/torent.sock /usr/local/bin/rtorrent'
sleep 5
Задержки необязательны, просто на моем пентиуме 1 без них скрипт не работает :)
На странице http://ваш-IP/rutorrent выдает "Ваш web сервер не поддерживает PHP."
Где ошибка?
Читайте выше про настройку PHP.
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 2,
"idle-timeout" => 20,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
))
)
Нужно поставить php5-cgi и прописать в настройках модуля правильный путь к нему. Можно сделать немного по-другому: команда lighty-mod-enable fastcgi, прописать в файле /etc/lighttpd/conf-enabled/10-fastcgi.conf правильный путь к интерпретатору PHP.
Не забудьте перезапустить Lighttpd.
Подскажите, а использование Lighttpd обязательно? обычными средствами апача нельзя обойтись?
Апачем воспользоваться, конечно же, можно. Просто я стараюсь, где возможно, обходиться только Lighttpd. Тем более, что в большинстве случаев его возможностей мне хватает.
Really I am very impressed with this post. Just awesome... I haven’t any word to appreciate this post.
Rutorrent
Отправить комментарий