четверг, 3 марта 2011 г.

Настройка rtorrent+rutorrent на FreeBSD 8.x

Цель: поднять консольный легковесный торрент клиент
Инсрументы: FreeBSD 8.1, rtorrent, rutorrent
Решение:
1 Установка
#cd /usr/ports/net-p2p/rtorrent
#make install clean
Необходим screen
#cd /usr/ports/sysutils/screen
#make install clean
Добавление пользователя
#pw useradd rtorrent -s /sbin/nologin
Создание необходимых папок:
#mkdir -p /home/torrent/downloads
#mkdir -p /home/torrent/sessions
Указание прав доступа:
#chown -R rtorrent:rtorrent /home/torrent/
Скрипт запуска найденный в сети:
#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="/home/torrent/downloads"}
: ${rtorrent_sessions="/home/torrent/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"
 Сделать скрипт исполняемым:
#chmod +x /usr/local/etc/rc.d/rtorrent.sh
Добавить в автозапуск:
#ee /etc/rc.conf
rtorrent_enable="YES"
rtorrent_scgi_port="127.0.0.1:5000"
Первый старт и проверка:
#/usr/local/etc/rc.d/rtorrent.sh start
#sockstat | grep rtorrent
rtorrent rtorrent   82439 4  tcp4   127.0.0.1:5000        *:*
rtorrent rtorrent   82439 5  tcp4   *:6997                *:*
Установка mod_cgi:
#cd /usr/ports/www/mod_scgi
#make install clean
Проверка подключен ли модуль в конфиге Apache22:
#ee /usr/local/etc/apache22/httpd.conf
LoadModule scgi_module        libexec/apache22/mod_scgi.so

#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>
2 Установка вебинтерфейса rutorrent:
#cd /usr/local/www/
#fetch http://rutorrent.googlecode.com/files/rutorrent-3.2.tar.gz
#tar xf rutorrent-3.2.tar.gz
#rm rutorrent-3.2.tar.gz
#mv rutorrent/ docs
#mkdir rtorrent
#mv docs/ rtorrent/
Определение прав доступа:
#chown -R www:www rtorrent/
Добавление настройки в Apache22 для rutorrent:
#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>
Проверка изменений в конфиге Apache22:
#apachectl configtest
Syntax OK
Установка пароля для доступа к вебинтерфейсу:
#htpasswd -c /usr/local/www/rtorrent/.htpasswd torrent
New password:
Re-type new password:
Adding password for user torrent
Применение изменений в конфиге Apache22:
#apachectl graceful
Теперь по адресу http://server_ip/rtorrent/ доступно управление торрент клиентом rtorrent.Распространенная ошибка в логе вебинтерфейса:
Bad response from server: (200 [parsererror,getuisettings]) <?php require_once( util.php ); $fname = getSettingsPath()./uisettings.json; $s = @file_get_contents($fname); if($s==false) $s = {}; cachedEcho($s,application/json,true); ?>
решение:
ee /usr/local/etc/apache22/httpd.conf
AddType application/x-httpd-php .php .phtml .php3
Добавление плагинов для rutorrent:
cd /usr/local/www/rtorrent/docs/plugins
fetch http://rutorrent.googlecode.com/files/erasedata-3.2.tar.gz
fetch http://rutorrent.googlecode.com/files/trafic-3.2.tar.gz
fetch http://rutorrent.googlecode.com/files/scheduler-3.2.tar.gz
fetch http://rutorrent.googlecode.com/files/diskspace-3.2.tar.gz
fetch http://rutorrent.googlecode.com/files/cpuload-3.2.tar.gz
tar xf cpuload-3.2.tar.gz
tar xf erasedata-3.2.tar.gz
tar xf trafic-3.2.tar.gz
tar xf diskspace-3.2.tar.gz
tar xf scheduler-3.2.tar.gz
rm cpuload-3.2.tar.gz
rm erasedata-3.2.tar.gz
rm trafic-3.2.tar.gz
rm diskspace-3.2.tar.gz
rm scheduler-3.2.tar.gz
Для того чтобы в rutorrent верно отображалось свободное место на диске куда rtorrent скачивает данные необходимо изменить переменную:
ee /usr/local/www/rtorrent/docs/conf/config.php
ctrl+y
$topDirectory
$topDirectory = '/home/torrent/';
И перезапустить торрент:
/usr/local/etc/rc.d/rtorrent.sh restart

6 комментариев:

  1. на мой взгляд трансмиссия проще, да и кроме стандартной веб-морды есть гуи рулилка (если нужны всякие плюшки)

    whereis transmission
    transmission: /usr/ports/net-p2p/transmission

    whereis transmission-remote-gui
    transmission-remote-gui: /usr/ports/net-p2p/transmission-remote-gui

    ОтветитьУдалить
  2. про трансмиссию согласен, но изначально преследовалась цель наиболее быстрого клиента. rtorrent свободно держал 200+ торрентов активными и не нагружал систему, весь необходимый функционал подгружался из плагинов. На тот момент трансмиссия висла при такой нагрузке. Про GUI к ней не знал если честно. Сейчас ознакомлюсь. Спасибо.

    ОтветитьУдалить
  3. Юзал трансмиссию до рторрента. И гуй к ней виндовый. Он рядом с рторрентом не стоял. Рторрент юзаю уже более 3 лет.

    ОтветитьУдалить
  4. Погонял я трансмиссию...сам остался на rtorrent'е, жена рулит трансмиссией из винды. Все довольны)

    ОтветитьУдалить
  5. Скрипт запуска через screen это хорошо, но выносить туда часть настроек глупо, ибо rtorrent не читает конфиг файл, соответственно веб интерфейсу некуда сохранять эти настройки
    Так что как man для установки - респект автору
    Для настройки не годится абсолютно

    ОтветитьУдалить
    Ответы
    1. Благодарю. Цель преследовалась одна - поднять клиент и чтобы не ругался в логах. Остальное допиливание - дело желания и вкуса... скрипт вообще честно найден в сети... не редактировал. Целевая аудитория у этого man'a - win админы, которые увидели FreeBSD пусть не первый раз, но явно не в продакшн...

      Удалить