Статистика
Сегодня: 86 Онлайн: 1
Опрос

Помог ли наш сайт решить Вашу проблему?

View Results

Загрузка ... Загрузка ...

Друзья и коллеги

Технология жизни - технология будущего

#Записки сисадмина

Denis Tulyakov

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

А так же в конфиге апача присутствуют строки

1
LoadModule php5_module        libexec/apache22/libphp5.so

и

1
2
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

После этого можно приступать к установке и настройке.

1
2
cd /usr/ports/net-p2p/rtorrent
sudo make install clean

Для апача должен быть установлен mod_scgi

1
2
cd /usr/ports/www/mod_scgi
sudo make install clean

Сам веб-интерфейс берется здесь: http://rutorrent.googlecode.com/files/rtorrent-2.6.tar.gz

Его надо распаковать в директорию, откуда он будет вызываться веб-сервером, например /usr/local/www/rtorrent. Не забыть установить ему правильного владельца:

1
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:

1
LoadModule scgi_module        libexec/apache22/mod_scgi.so

и определяем алиас

1
2
3
4
5
6
7
Alias /torrent "/usr/local/www/rtorrent/"

DirectoryIndex index.html
Options Indexes FollowSymlinks Multiviews
AllowOverride All
Order allow,deny
Allow from all

Кроме этого, если связь между веб-интерфейсом и rtorrent осуществляется по tcp, а не с помощью unix-socket, добавляем в конфигурационный файл следующие строки:

1
2
3
SCGIMount /RPC2 127.0.0.1:5000
Order allow,deny
Allow from all

ВАЖНО: данные настройки не предполагают никакой защиты паролем, либо еще каким-либо образом. я к этому вернусь позже, а пока стоит хотя бы сделать deny from all и allow from ip_домашних_компьютеров в описании алиаса для веб-сервера.

Я выбрал работу через unix-socket, потому-что по tcp у меня связать все это дело не получилось, а долго ковыряться было лень. Поэтому файл /usr/local/www/rtorrent/config.php приводим к следующему виду:

1
2
3
4
5
6
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
?>

rc-скрипт для автозапуска rtorrent я честно слямзил у optik’а из статьи, о которой упоминал выше, выглядит он вот так:

/usr/local/etc/rc.d/rtorrent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/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"

Делаем его исполняемым:

1
sudo chmod 755 /usr/local/etc/rc.d/rtorrent

В файл /etc/rc.conf  добавляем сладующие строки:

1
2
3
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

1
sudo /usr/local/etc/rc.d/apache22 restart
1
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