Собираем rTorrent + ruTorrent

Сначала несколько важных замечаний, актуальны они на момент публикации

  • Обновлено 16.02.2012 — но процесс установки не проверен пошагово, что-то может пойти не так.
  • GIT версия rotrrent у меня так и не заработала корректно, посему запись надо корректировать.
  • Последние версии ruTorrent хранят настроки в пользовательских директориях, таким образом если какое-то время вы проработали без настроенной авторизации, то вам будет необходимо скопировать настройки в пользовательскую директорию, иначе сбросятся счетчики трафика, расписание и некоторые другие настройки. Глобальные настроки и торренты хранятся в /var/www/rutorrent/share а пользовательские в /var/www/rutorrent/share/users/username — где username имя заданное для basic авторизации

Итак теперь к делу.

Сразу оговорю, все комманды воплняются с правами суперпользователя, права будут расставлены в конце.
Для начала нам нужно установить apache + php для этого есть 2 пути.
1) Использовать комманду tasksel — позволит установить LAMP максимально просто — но нам не нужен MySQL сервер, так что установка будет несколько избыточной.

tasksel

выбрать «LAMP server» и нажать <ok>
2) Установить нужные пакеты с помощью apt-get, этот вариант позволит установить только необходимое.

# для начала на всякий случай обновим репозиторий
apt-get update
apt-get install apache2 php5 php5-cgi php5-cli libapache2-mod-php5 php5-common

Далее необходимо установить дополнительные библиотеки которые потребуются для работы ruTorrent

apt-get install php5-xmlrpc php5-curl libapache2-mod-scgi curl libcurl3-openssl-dev

следом подключаем только что установленный SCGI модуль

a2enmod scgi

произведем некоторые настройки которые понядобятся нам в будущем, отредактируем файл /etc/apache2/sites-available/default, после

<Directory /var/www>
...
</Directory>

добавьте

<Directory /var/www/rutorrent>
AllowOverride AuthConfig
Order allow,deny
allow from all
</Directory>

перед

</VirtualHost>

добавьте

SCGIMount /RPC2 127.0.0.1:5000

перезапустим apache

apache2ctl restart

Пакеты необходимые для сборки из исходников и для получения исходников через svn

apt-get install checkinstall subversion git-core build-essential make autoconf autotools-dev automake libcurl4-openssl-dev libtool libsigc++-2.0-dev pkg-config libncurses5-dev libcppunit-dev

создадим папку для хранения исходников полученных через svn

# предварительно перейдем в домашний каталог
cd
# создадим рабочую директорию
mkdir buildrt
cd buildrt

скачиваем исходники XML-RPC for C/C++ собираем и устанавливаем

svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
cd xmlrpc-c
./configure --prefix=/usr
make
# узнаем версию xmlrpc-c это понадобиться нам позже при выполнении checkinstall
grep XMLRPC_C_VERSION version.h | awk '{print $3}' | tr -d \"

Запускаем checkinstall для получения deb пакета и его установки. В процессе необходимо будет указать некоторые параметры для создаваемого пакета.

checkinstall -D

#в процессе получаем примерно такой вывод
This package will be built according to these values:

0 -  Maintainer: [ hatifnatt@fatman-application ]
1 -  Summary: [ xmlrpc ]
2 -  Name:    [ xmlrpc ]
3 -  Version: [ c ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ xmlrpc-c ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ xmlrpc ]
Enter a number to change any of them or press ENTER to continue:

Процесс прост, выбираем что редактировать, вводин соответствующую цифру жмем [Enter] вводим желаемое значение снова жмем [Enter].
[1] исправляем Summary на xmlrpc-c
[2] исправляем Name на xmlrpc-c
[3] исправляем Version на первые два числа из полученные выше версии, в моем случае вывод был 1.29.1 соответственно ввожу 1.29
[4] исправляем Release на последнее число из полученной выше версии, в моем случае вывод был 1.29.1 соответственно ввожу 1
[11] исправляем Provides на xmlrpc-c

# в завершение возвращаемся в папку buildrt
cd ..

Скачиваем исходники libtorrent и rTorrent, теперь с git т.к. svn поломался и починен не будет (пруф) затем собираем, во время работы checkinstall будет выдано предупреждение

Please write a description for the package.
End your description with an empty line or EOF.
>>

Вводим libtorrent жмем [Enter] два раза.
Далее получаем:

*****************************************
**** Debian package creation selected ***
*****************************************
*** Warning: The package version "0.13.0
0.13.0
...
0.13.0
0.13.0" is not a
*** Warning: debian policy compliant one. Please specify an alternate one

просто укажите (впечатайте) версию 0.13.0 для libtorrent и 0.8.6 для rtorrent

Собственно нижеприведенными командами скачиваем и устанавливаем.

#разработка проекта ведется теперь под git, получим исходные коды
git clone https://github.com/rakshasa/rtorrent rtorrent
git clone https://github.com/rakshasa/libtorrent libtorrent

#соберем, установим libtorrent
cd libtorrent
./autogen.sh
./configure --prefix=/usr
make
checkinstall -D
#соберем, установим rtorrent
cd ../rtorrent
./autogen.sh
./configure --with-xmlrpc-c --prefix=/usr
make
checkinstall -D

Далее установим rutorrent, подробно про это написано тут

cd /var/www/
svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent

и некоторые плагины
diskspace — отображает занятое место на носителе куда скачиваются торренты
erasedata — позволяет удалить скачанные файлы вместе с самим торрент файлом
scheduler — позволяет настроить расписание
traffic — ведет статистику принятого и отданного трафика
список всех плагинов расположен здесь

cd /var/www/rutorrent/plugins
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/diskspace
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/erasedata
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/scheduler
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/trafic

Сразу же рекомендую настрить basic авторизацию, для этого создадим файл .htaccess в директории /var/www/rutorrent

AuthName "Need auth"
AuthType Basic
AuthUserFile /var/www/rutorrent/.htpasswd
require valid-user

и сгенерируем файл с авторизационными данными .htpasswd

htpasswd -mc .htpasswd username

Перейдем собственно к настройке rTorrent.
Настроки хранятся в домашней директории в файле .rtorrent.rc

# переключаемся на необходимого пользователя
su user
cd
wget -O .rtorrent.rc http://hatifnatt.ru/rtorrent/rtorrent.rc
exit

не забудьте изменить «user» — на своего пользователя, листинг .rtorrent.rc ниже

# Скорость в KiB
scgi_port = 127.0.0.1:5000
encoding_list=UTF-8
min_peers = 40
max_peers = 80
min_peers_seed = 10
max_peers_seed = 60
max_uploads = 10
download_rate=600
upload_rate=30
directory = /mnt/fat/torrent/
session =/home/download/rtorrent/session
schedule = watch_directory,5,5,load_start=/home/download/rtorrent/watch/*.torrent
# For trafic plugin
schedule = trafic,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/trafic/update.php&amp; exit 0}"
# For scheduler plugin
schedule = scheduler,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/scheduler/update.php&amp; exit 0}"
#номер порта (или нескольких портов) который открывает клиент для обмена данными port_range = 50000 - 50050
port_random = no
check_hash = yes
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
use_udp_trackers = yes

В последних версиях ruTorrent реализован единый запуск всех плагинов так что теперь вместо строк:

# For trafic plugin
schedule = trafic,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/trafic/update.php& exit 0}"
# For scheduler plugin
schedule = scheduler,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/scheduler/update.php& exit 0}"

Нужно использовать

execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php user &}

не забудьте исправить user на вашего пользователя. Эта строка позволит плагинам стартовать одновременно с запуском rTorrent, так же плагины запускаются когда вы заходите в Web-интерфейс.

Запуск rtorrent как демона

wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

изменим переменню user в скрипте, она отвечат за то, от имени какого пользователя будет стартовать rtorrent, проще всего запускать rtorrent от того пользователя под которым вы заходите в систему

nano /etc/init.d/rtorrent

меняем права и настраиваем автозапуск

chmod +x /etc/init.d/rtorrent
update-rc.d rtorrent defaults
/etc/init.d/rtorrent start

меняем так же права на папку с rutorrent

chown -R www-data:www-data /var/www/rutorrent

стоит так же проверять права доступа после обновлений rutorrent и плагинов через SVN
Теперь можно зайти по адресу http://ваш_сервер/rutorrent/ и начать что-нибудь загружать :)

Вместо сборки из исходников можете попробовать установить собранные мной пакеты:
rtorrent_0.8.6-1_amd64.deb
libtorrent_0.12.6-1_amd64.deb
xmlrpc-c_1.22-0_amd64.deb

Ссылки по теме (собственно на основе них и была написан данный опус :) )
ruTorrent – Gui для rTorrent, замена uTorrent
Собираем rTorrent из исходников
Настройка rtorrent + web-ui (rutorrent / wtorrent)
How To Install rTorrent & ruTorrent (using Socket + SSL + Authentication) on Ubuntu or Debian
SeedBox с rTorrent / ruTorrent на базе Apache под FreeBSD
Rtorrent + Rutorrent, установка и настройка (manual) :)
Вопрос о связке: rtorrent+rutorrent

PS Данная запись достаточно долго пролежала в черновиках, кое что самую малость устарело, но в целом информация достаточно актуальная, так же надеюсь что ничего не упустил.

Похожие публикации
Оставите комментарий ?

10 Комментарии。

  1. Спасибо за инфу. Но почему то не работает trafic плагин...=(

    schedule = trafic,10,00:15:00,"execute={sh, -c,php /var/www/rutorrent/trafic/update.php& exit 0}"

    Изменил на schedule = trafic,10,00:15:00,"execute={sh, -c,php /var/www/rutorrent/PLUGINS/trafic/update.php& exit 0}"

    Но не помогло...=(

    • В последних версиях ruTorrent реализован единый запуск всех плагинов так что теперь вместо строк:

      # For trafic plugin schedule = trafic,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/trafic/update.php& exit 0}" # For scheduler plugin schedule = scheduler,10,00:15:00,"execute={sh,-c,php /var/www/rutorrent/plugins/scheduler/update.php& exit 0}"

      Нужно использоватьexecute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php user &} не забудьте исправить user на вашего пользователя. Эта строка позволит плагинам стартовать одновременно с запуском rTorrent, так же плагины запускаются когда вы заходите в Web-интерфейс.

      Надеюсь это поможет!

  2. Спасибо за оперативный ответ, но нашёл раньше.

    На самом деле,строчку я эту тоже вставил. но без имени пользователя выписка из документации по плагинам (Замечание: в Вашей конфигурации путь к интерпретатору php, путь к ruTorrent и имя пользователя (tom) скорее всего, отличаются. Не забудьте отредактировать их должным образом. В случае однопользовательской конфигурации имя пользователя должно отсутствовать.)

    Помогло chmod -R 777 /var/www/rutorrent.

    Моя строчка в файле конфигураций рторрента:

    execute = {sh, -c,/usr/bin/php5 /var/www/rutorrent/php/initplugins.php &}

    Теперь вопрос в другом, если вес файла привышает 2Gb или объём исходящего (входящего) трафика тоже значение становится отрицательным и в Kb :)

    • chmod -R 777 /var/www/rutorrent

      не лучший вариант по идеологическим соображениям так сказать,

      лучше использовать комбинацию вроде

      chown -R www-data:www-data /var/www/rutorrent chmod -R 755 /var/www/rutorrent

      PS Да, у меня кстати объем файла и объемы трафика никак не влияют на отображение.

  3. Проблема кстати лечится

    code.google.com/p/rutorrent/wiki/Main?wl=ru

    Если вместо чисел больших 2 гигабайт ruTorrent показывает отрицательные числа, следует рекомпилировать rTorrent с более свежей версией xmlrpc-c. Минимально необходимая версия данной библиотеки — 1.11.

  4. Подскажите как решить такую проблему (rTorrent+ruTorent): если торрент сделан из папки, а не из файла то невозможно поменять конечную папку для записи файлов. Допустим торрент файл сделан на папку «бук». Я добавляю его в руторрент и выбираю папку для сохранения «книги», в тако случае я получу папку «бук» в папке «книги». Уже перелопатил все плагины, поставил _getdir, пробовал перемещать уже скачанные торренты итог один. Подскажите как быть? с юторрентом таких проблем нету...

  5. @Deft

    Хм, я всегда свливаю все новые торренты в директорию по умолчанию, поэтому не могу сейчас ничего сказать по поводу данной проблемы.

    При случае попробую и посмотрю каков результат у меня будет.

Ответить на hatifnatt ¬
Отменить ответ


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>