Установка rtorrent на FreeBSD

ВНИМАНИЕ! Данная статья предполагает, что у Вас уже установлен и настроен web-сервер Apache 2.2 + PHP 5. Если Apache не устновлен, то можете воспользоваться статьёй Установка веб-сервера на FreeBSD.

Информация о системе
zg# uname -a
FreeBSD zg.test 8.0-STABLE FreeBSD 8.0-STABLE #0: Fri Jan 29 18:51:10 YEKT 2010     
root@zg.test:/usr/obj/usr/src/sys/GENERIC  i386

Текущая дата
zg# date
суббота, 30 января 2010 г. 09:23:28 (YEKT)

----------------- I установка торрента -----------------
Собираем торрент (обязательно с опцией XMLRPC)
zg# cd /usr/ports/net-p2p/rtorrent
zg# make install clean

Собираем менеджер виртуальных сессий (все опции по умолчанию)
zg# cd /usr/ports/sysutils/screen
zg# make install clean

Добавляем фиктивного пользователя, от которого будет работать торрент
zg# pw useradd rtorrent -s /sbin/nologin

Создаём рабочие папки для торрента
zg# mkdir -p /usr/local/rtorrent/downloads
zg# mkdir -p /usr/local/rtorrent/sessions
zg# chown -R rtorrent:rtorrent /usr/local/rtorrent/

Создаём скрипт для управления демоном торрента
zg# ee /usr/local/etc/rc.d/rtorrent.sh
#!/bin/sh
#
#

# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="rtorrent"
rcvar=`set_rcvar`

load_rc_config $name

: ${rtorrent_enable="NO"}
: ${rtorrent_downloads="/usr/local/rtorrent/downloads"}
: ${rtorrent_sessions="/usr/local/rtorrent/sessions"}
: ${rtorrent_scgi_port=""}
: ${rtorrent_encoding_list="UTF-8;cp1251;koi8-r"}
: ${rtorrent_args=""}
: ${rtorrent_user="rtorrent"}
: ${rtorrent_autoload_dir=""}

command="/usr/local/bin/rtorrent"
screen="/usr/local/bin/screen"

rtorrent_args="-d ${rtorrent_downloads} -s ${rtorrent_sessions} ${rtorrent_args}"

[ -n "${rtorrent_autoload_dir}"  ] && rtorrent_args="-O schedule='watch_directory,5,5,load_start=${rtorrent_autoload_dir}' ${rtorrent_args}"
[ -n "${rtorrent_scgi_port}"     ] && rtorrent_args="-O scgi_port='${rtorrent_scgi_port}' ${rtorrent_args}"
[ -n "${rtorrent_encoding_list}" ] && rtorrent_args="-O encoding_list='${rtorrent_encoding_list}' ${rtorrent_args}"

start_cmd="echo Starting ${name}.; su -m ${rtorrent_user} -c \"${screen} -A -m -d -S rtorrent ${command} ${rtorrent_args}\""

run_rc_command "$1"

Выставляем права на запуск для стартового скрипта
zg# chmod +x /usr/local/etc/rc.d/rtorrent.sh

Добавляем в rc.conf настройки для торрента
zg# ee /etc/rc.conf
# rtorrent
rtorrent_enable="YES"
rtorrent_scgi_port="127.0.0.1:5000"

Запускаем торрент
zg# /usr/local/etc/rc.d/rtorrent.sh start
Starting rtorrent.

Проверяем, запустился ли торрент (50000 порт нужен для XML RPC!)
zg# sockstat | grep rtorrent
rtorrent rtorrent   33383 3  tcp4   127.0.0.1:5000        *:*
rtorrent rtorrent   33383 4  tcp4   *:6927                *:*

----------------- II настройка Apache2 -----------------
Ставим модуль SCGI (читаем предупреждение!)
zg# cd /usr/ports/www/mod_scgi
zg# make install clean
...
********************************************************************
* If your mod_scgi seg fault, try disable mod_fastcgi              *
********************************************************************

Редактируем конфиг апача (добавляем строчку после всех загруженных модулей)
zg# ee /usr/local/etc/apache22/httpd.conf
LoadModule scgi_module libexec/apache22/mod_scgi.so

Создаём конфиг для SCGI (авторизация необходима для безопасности)
zg# ee /usr/local/etc/apache22/Includes/scgi.conf
<IfModule mod_scgi.c>

  SCGIMount /RPC2 127.0.0.1:5000

  <Location /RPC2>
    Allow from all
    ## Enable only authorized users
    AuthName "Enter password for torrent"
    AuthType Basic
    AuthUserFile /usr/local/www/rtorrent/.htpasswd
    require valid-user
  </Location>

</IfModule>

----------------- III установка web-панели управления для rtorrent -----------------
Качаем исходники веб-морды для торрента и помещаем их в папку /usr/local/www/rtorrent/docs/
zg# cd /usr/local/www/
zg# fetch http://rutorrent.googlecode.com/files/rtorrent-2.8.tar.gz
zg# tar xf rtorrent-2.8.tar.gz
zg# rm rtorrent-2.8.tar.gz
zg# mv rtorrent/ docs
zg# mkdir rtorrent
zg# mv docs/ rtorrent/
zg# chown -R www:www rtorrent/

Создаём конфиг для торрента
zg# ee /usr/local/etc/apache22/Includes/rtorrent.conf
Alias /rtorrent/ /usr/local/www/rtorrent/docs/

<Directory "/usr/local/www/rtorrent/docs/">
  Allow from all
  AuthName "Enter password for torrent"
  AuthType Basic
  AuthUserFile /usr/local/www/rtorrent/.htpasswd
  require valid-user
</Directory>

Проверяем синтаксис
zg# apachectl configtest
Syntax OK

Создаём учётку для доступа к торренту
zg# htpasswd -c /usr/local/www/rtorrent/.htpasswd torrent
New password:
Re-type new password:
Adding password for user torrent

Применяем настройки апача
zg# apachectl graceful

После этого можно заходить на http://ваш_сервер/rtorrent :)

Проверка работоспособности

rtorrent