Обещанное вчера HowTo по установке BitTorrent-клиента rTorrent и web-интерфейса к нему rtGUI. Буду рад если кому-нибудь поможет. Установка производилась на VDS под управлением FreeBSD 6.3. Получить такой можно, например, на FirstVDS.Ru.

Ставим rTorrent из портов

# cd /usr/ports/net-p2p/rtorrent-devel
# make install clean

Внимание собирать его надо gcc42 или выше, если в системе его изначально нет, то лучше поставить из пакетов, потому как собирать его долго

# pkg_add -r gcc42

В меню конфигурирования порта отмечаем единственную опцию XMLRPC-C, вообще она по умолчанию отмечена. Ждем пока соберется, выбираем под каким пользователем будем запускать (допустим rtorrent), создаем директорию для сохранения сессий

# su -l rtorrent
# mkdir sessions

Берем пример конфигурационного файла .rtorrent.rc здесь и правим под наши нужды. Потребуется исправить эти строчки указав актуальные пути, все остальное по желанию

directory = ./
session = ./session
schedule = watch_directory,5,5,load_start=./watch/*.torrent

Плюс к этому для работы web-интерфейса нужно добавить вот такую строчку

scgi_local = /home/rtorrent/data/tmp/rpc.socket

А для того чтобы торрент не падал встречая символы отличные от латиницы еще и вот такую

encoding_list = UTF-8

С самим клиентом все, им уже можно пользоваться. Сделаем скрипт для автоматического запуска. Как я уже говорил работать в виде демона он не умеет, но для нас это не проблема. Заставить работать в screen у меня, как и у моего коллеги (он правда на домашнем сервере пробовал) не получилось, но есть и другой способ.

# cd /usr/ports/misc/dtach
# make install

Утилита dtach — это усеченный screen, собственно кроме возможности отцепить сессию от терминала она ничего не умеет, а нам больше ничего и не надо.

Пишем скрипт для старта rTorrent, сохраняем его куда-нибудь в /root/bin/, например, и прописываем в /etc/rc.local. Вот что получилось у меня

#!/bin/sh
export HOME=/home/rtorrent/data/
/bin/rm /home/rtorrent/data/tmp/rpc.socket
/bin/sleep 5
/usr/bin/su -m rtorrent -c '/usr/local/bin/dtach -n /home/rtorrent/data/tmp/rtorrent.sock /usr/local/bin/rtorrent'
/bin/sleep 20
/bin/chmod 777 /home/rtorrent/data/tmp/rpc.socket

Теперь переходим к web-интерфейсу для его работы понадобятся пхпшный экстеншен xmlrpc.so и http-сервер с поддержкой SCGI. С первым проблем никаких

# cd /usr/ports/net/php5-xmlrpc
# make install clean

SCGI поддерживается из коробки в Apache, а вот любимый всеми nginx его не умеет, однако есть соответсвующий модуль, который попахивает душком. В общем я с этим заморачиваться не стал, а обратил свой взор в сторону прямого конкурента nginx, используемого на таких сервисах как YouTube и wikipedia — Lighttpd.

С переходом проблем не возникло, но об этом как-нибудь в другой раз. Собственно для работы потребуется добавить в конфигурацию лайти SCGI-сервер, который будет работать с сокетом rTorrent'а. Лучше всего повесить его на какой-нибудь нестандартный порт, и закрыть этот порт фаерволом от подключений извне, я сделал так

#### SCGI for rTorrent
$SERVER["socket"] == «82.146.33.122:81» {
scgi.server = (
«/» =>
( «127.0.0.1» =>
(
«socket» => «/home/rtorrent/data/tmp/rpc.socket»,
«check-local» => «disable»,
«disable-time» => 0, # don't disable scgi if connection fails
)
)
)
}

Не забудьте в массив server.modules добавить mod_scgi, иначе работать не будет.

Дело осталось за малым. Качаем последнюю версию rtGUI c официального сайта, распаковываем архив в директорию любого сайта с поддержкой php, правим config.php, указав путь до нашего SCGI

$rpc_connect="http://82.146.33.122:81";

И, по желанию прописываем путь до директории в которой клиент ищет torrent-файлы, если конечно вы ее задали в .rtorrent.rc

$watchdir="/home/rtorrent/data/watch"

Все, пользуемся.

P.S. Есть во всей этой связке один неприятный момент. Из-за баги в библиотеке xmlrpc-c размер файлов более 2 Гб в веб-интресфейсе отражается некорректно. В новых версиях либы этот баг забороли, но в портах их нет, а сборка втупую результатов не дала, так что ждем пока обновится порт.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Тэги: , , ,

Связанные записи