Ставим BitTorrent-клиент
Обещанное вчера 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 = ./sessionschedule = 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/shexport 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 Гб в веб-интресфейсе отражается некорректно. В новых версиях либы этот баг забороли, но в портах их нет, а сборка втупую результатов не дала, так что ждем пока обновится порт.
Комментарии
http://sabinich-translate.blogspot.com/
мощно. фишку с dtach взял на вооружение =)
Спасибо.
http://ihtiandr.info/
А я в итоге /usr/ports/net-p2p/hrktorrent/ поставил, простой, легкий и удобный :)
http://sabinich-translate.blogspot.com/
совершенно неожиданно для себя на официальном сайте нашел http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh
Meg@DED
Под фрюхой, во всяком случае в контексте VDS'а работать точно не будет, я проверял.