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