PostHeaderIcon Настройка 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 ждет входящих соединений, иначе с нас ничего скачать не получится.

2 комментария на “Настройка rtorerrent+веб-интерфейс ruTorrent”

  • phenomenon says:

    скрипт не запускается, проверьте, у Вас ошибка

  • skiangel says:

    Если можно, дайте больше информации. Есть ли какие либо сообщения об ошибке? Дело в том, что скрипт — это чистый копи-паст с рабочей системы. Описанная связка там работает года два уже без проблем. Компьютер включается сам в 8:00 и выключается в 24:00, я ему на консоль уже год не заходил.

Оставить комментарий

PR-CY.ru