Настройка rtorerrent+веб-интерфейс ruTorrent
Собрал себе домашний маршрутизатор+nas+asterisk-server. Озаботился какой-нибудь качалкой торрентов, чтобы вобще домашние машины не держать включенными. Поиск решения в интернете привел меня к вышеозначенной связке. Сам rTorrent присутствует в портах, веб-интерфейс берется на сайте разработчиков.
отличная статья по этому поводу находится здесь: http://www.lissyara.su/?id=1852
Но в ней используется веб-сервер lighthttpd, а у меня уже установлен apache22, поэтому пришлось поработать немного и самому :)
Итак, начинаем:
Подразумевается, что у нас уже установлен следующий софт:
- apache22
- php5 (с опциями cgi и fast_cgi)
- php5-extensions (c опцией xmlrpc)
- screen
А так же в конфиге апача присутствуют строки
LoadModule php5_module libexec/apache22/libphp5.so
и
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
После этого можно приступать к установке и настройке.
[cc lang=»bash»]cd /usr/ports/net-p2p/rtorrent
sudo make install clean[/cc]
Для апача должен быть установлен mod_scgi
[cc lang=»bash»]cd /usr/ports/www/mod_scgi
sudo make install clean[/cc]
Сам веб-интерфейс берется здесь: http://rutorrent.googlecode.com/files/rtorrent-2.6.tar.gz
Его надо распаковать в директорию, откуда он будет вызываться веб-сервером, например /usr/local/www/rtorrent. Не забыть установить ему правильного владельца:
sudo chown -R www:www /usr/local/www/rtorrent
здесь www — имя пользователя, из-под которого пускается веб-сервер.
Кроме этого берем плагин rpc, осуществляющий связь веб-интерфейса с rtorrent: http://rutorrent.googlecode.com/files/rpc-1.0.tar.gz и помещаем его в папку plugins в корне вебинтерфейса, сохраняя структуру папок.
Настраиваем Apache. В файле /usr/local/etc/httpd.conf влючаем подгрузку модуля scgi:
LoadModule scgi_module libexec/apache22/mod_scgi.so
и определяем алиас
[cc lang=»bash»]Alias /torrent «/usr/local/www/rtorrent/»
DirectoryIndex index.html
Options Indexes FollowSymlinks Multiviews
AllowOverride All
Order allow,deny
Allow from all
[/cc]
Кроме этого, если связь между веб-интерфейсом и rtorrent осуществляется по tcp, а не с помощью unix-socket, добавляем в конфигурационный файл следующие строки:
[cc lang=»bash»]SCGIMount /RPC2 127.0.0.1:5000
Order allow,deny
Allow from all
[/cc]
ВАЖНО: данные настройки не предполагают никакой защиты паролем, либо еще каким-либо образом. я к этому вернусь позже, а пока стоит хотя бы сделать deny from all и allow from ip_домашних_компьютеров в описании алиаса для веб-сервера.
Я выбрал работу через unix-socket, потому-что по tcp у меня связать все это дело не получилось, а долго ковыряться было лень. Поэтому файл /usr/local/www/rtorrent/config.php приводим к следующему виду:
[cc lang=»php»]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//rtorrent_rpc.socket»; // rtorrent посредством unix-socket
?>[/cc]
rc-скрипт для автозапуска rtorrent я честно слямзил у optik’а из статьи, о которой упоминал выше, выглядит он вот так:
/usr/local/etc/rc.d/rtorrent
[cc lang=»bash»]#!/bin/sh
#
#<
# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name=»rtorrent»
rcvar=`set_rcvar`
load_rc_config $name
: ${rtorrent_enable=»NO»}
: ${rtorrent_args=»»}
: ${rtorrent_user=»rtorrent»}
command=»/usr/local/bin/rtorrent»
screen=»/usr/local/bin/screen»start_precmd=»${name}_prestart»
start_cmd=»echo \»Starting ${name}.\»; su ${rtorrent_user} -c ‘${screen} -A -m -d -S rtorrent ${command} ${rtorrent_args} -o scgi_local=/tmp/rtorrent_rpc.soc
start_postcmd=»${name}_poststart»
rtorrent_prestart()
{
if [ -e «/tmp/rtorrent_rpc.socket» ]; then
rm -R /tmp/rtorrent_rpc.socket
fi
return 0
}
rtorrent_poststart()
{
while [ ! -e «/tmp/rtorrent_rpc.socket» ];
do
sleep 0.1
echo waiting for /tmp/rtorrent_rpc.socket creation…
done
echo done
chown www /tmp/rtorrent_rpc.socket
return 0
}
#stop_postcmd=»rm -R /var/tmp/rtorrent_rpc.socket»
run_rc_command «$1″[/cc]
Делаем его исполняемым:
sudo chmod 755 /usr/local/etc/rc.d/rtorrent
В файл /etc/rc.conf добавляем сладующие строки:
rtorrent_enable="YES"
rtorrent_args="-n -d /home/rtorrent/downloads -s /home/rtorrent/sessions"
rtorrent_user="rtorrent"
Флаг -n запрещает загружать конфигурационный файл. Конфиг называется rtorrent.rc и создается в домашней папке пользователя, от которого запускается rtorrent. rtorrent, в свою очередь хочет, чтобы названия конфига начиналось с точки, так что если нам все-таки нужно, чтобы конфигурационный файл загружался, убираем флаг -n и переименовываем rtorrent.rc в .rtorrent.rc, после чего он начинает отрабатываться.
не забываем создать в системе пользователя rtorrent, от которого все это дело будет запускаться.
В домашней директории rtorrent создаем папки downloads и sessions. В первую будут складываться скачиваемые файлы, во вторую — torrent-файлы и служебная информация.
Кажется, инчего не забыли. Перезапускаем веб-сервер и запускаем rtorrent
sudo /usr/local/etc/rc.d/apache22 restart
sudo /usr/local/etc/rc.d/rtorrent start
После чего браузером заходим на http://ip-компьютера_на_котором_работает_rtorrent/rtorrent
и проверяем результат.
PS Если компьютер с rtorrent находится за маршрутизатором/NAT, не забываем сделать на маршрутизаторе проброс порта, на котором rtorrent ждет входящих соединений, иначе с нас ничего скачать не получится.
скрипт не запускается, проверьте, у Вас ошибка
Если можно, дайте больше информации. Есть ли какие либо сообщения об ошибке? Дело в том, что скрипт — это чистый копи-паст с рабочей системы. Описанная связка там работает года два уже без проблем. Компьютер включается сам в 8:00 и выключается в 24:00, я ему на консоль уже год не заходил.