Как стать автором
Обновить

Установка и настройка связки rtorrent+wtorrent в Debian

Время на прочтение5 мин
Количество просмотров1.8K
На хабрахабре уже неоднократно осбуждалась проблема создания домашнего сервера. Соответственно, воспользовавшись поиском, Вы сможете без проблем найти несколько хороших статей по этой теме. Там Вы, в частности, узнаете, зачем это все нужно.
Но, к сожалению, ни одна из представленных в Интернете статей не раскрывает полностью проблему установки связки rtorrent+wtorrent в системе Debian (либо Ubuntu, что практически то же самое). Основная сложность состоит в нескольких очевидных и не очень «подводных камнях»:

— Debian содержит некоторые пакеты с устаревшими версиями библиотек, несовместимыми с последней версией rtorrent/libtorrent;
— существующие мануалы и howto содержат информацию лишь о том, как установить данную связку на сервер lighttpd, что не всегда удобно (например, у меня на домашнем сервере есть пара сайтов, которые лучше запускать под Apache);
— ни одно руководство не учитывает все тонкости установки.

Учитывая эти обстоятельства и было написано данное руководство в стиле «copy-paste», которое, надеюсь, поможет Вам в нелегком деле приручения rtorrent/wtorrent.

Ставим «чистый» Debian 4.0. Далее в консоли под рутом ставим необходимые пакеты:

apt-get install apache-common apache2-utils autoconf automake \
autotools-dev binutils build-essential bzip2 ca-certificates comerr-dev \
cpp cpp-4.1 dpkg-dev file g++ g++-4.1 gawk gcc gcc-4.1 libapache-mod-php5 \
libapr1 libaprutil1 libc6-dev libcurl3 libcurl3-openssl-dev libexpat1 \
libidn11 libidn11-dev libkadm55 libkrb5-dev libmagic1 libncurses5-dev \
libneon26 libpcre3 libpq4 libsigc++-2.0-dev libsqlite0 libsqlite3-0 \
libssl-dev libssp0 libstdc++6-4.1-dev libsvn1 libtool libxml2 linux-kernel-headers \
lynx m4 make mime-support ntp ntpdate openssl patch libapache2-mod-scgi\
perl perl-modules php5 php5-cgi php5-common php5-sqlite pkg-config screen


Поколдуем над Apache:

a2enmod suexec
a2enmod scgi


Остальное будем ставить из сорсов. Для начала установим xmlrpc:

cd
svn co xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable xmlrpc-c
cd xmlrpc-c
./configure --disable-cplusplus
make
make install

Далее c-ares:

cd
wget c-ares.haxx.se/c-ares-1.6.0.tar.gz
tar xzf c-ares-1.6.0.tar.gz
cd c-ares-1.6.0
./configure
make
make install


Далее libcurl:

cd
wget curl.haxx.se/download/curl-7.19.3.tar.gz
tar xzf curl-7.19.3.tar.gz
cd curl-7.19.3
./configure --enable-ares
make
make install


Теперь можно собрать libtorrent и rtorrent:

cd
mkdir rtorrent
cd rtorrent
svn co svn://rakshasa.no/libtorrent/trunk
svn up
cd trunk
cd libtorrent
./autogen.sh
./configure
make
make install
cd ../rtorrent
./autogen.sh
./configure --with-xmlrpc-c
make
make install


Добавим пользователя rt и создадим всякие служебные папки:

useradd rt
cd /home/rt
mkdir ./torrents
mkdir ./torrents/watch
mkdir ./torrents/doing
mkdir ./torrents/done
mkdir ./.rtsession
chown rt:rt /home/rt -R
chmod 777 /home/rt/torrents -R


Создадим скрипт запуска для rtorrent и добавим его в автозагрузку:

cd
wget re-hash.ru/pub/rtorrent.tgz
tar xzf rtorrent.tgz
cp rtorrent /etc/init.d
chmod a+x /etc/init.d/rtorrent
update-rc.d rtorrent defaults 25


Создадим конфигурационный файл для rtorrent:

nano /home/rt/.rtorrent.rc

Пропишем туда следующее:

scgi_port = localhost:5000
min_peers = 40
max_peers = 1000
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 15
directory = /home/rt/torrents/doing
session = /home/rt/.rtsession
schedule = watch_directory,5,5,load_start=/home/rt/torrents/watch/*.torrent
schedule = tied_directory,5,5,start_tied=
schedule = untied_directory,5,5,close_untied=
on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/home/rt/torrents/done/ ;d.set_directory=/home/rt/torrents/done/"
on_start = link1,"create_link=tied,,.started"
on_stop = link1,"delete_link=tied,,.started"
on_finished = link1,"create_link=tied,,.finished"
on_erase = link1,"delete_link=tied,,.finished"
schedule = low_diskspace,5,60,close_low_diskspace=100M
port_range = 63963-63963
port_random = no
check_hash = yes
use_udp_trackers = yes
encryption = allow_incoming,try_outgoing,enable_retry
dht = auto
dht_port = 63982


Если у вас роутер, на нем необходимо открыть порты 63963 и 63982 для сервера с rtorrent.
Далее редактируем файл /etc/apache2/apache.conf, добавим куда-нибудь следующие строчки:

SCGIMount /RPC2 127.0.0.1:5000

<VirtualHost *:80>
SuexecUserGroup rt rt
ServerName torrent
#ServerAlias www.torrent
DocumentRoot /var/www/torrent/www
CustomLog /var/www/torrent/access.log combined
ErrorLog /var/www/torrent/error.log
<Directory "/var/www/torrent/www">
Options FollowSymLinks Includes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#ScriptAlias /cgi-bin/ "/var/www/torrent/cgi-bin/"
</VirtualHost>


Теперь установим wtorrent. Для этого сделаем следующее:

mkdir /var/www/torrent/www
cd /var/www/torrent/www
svn co svn://canbruixa.homelinux.net/repos/trunk/wtorrent/
mv * ..
cd ..
rmdir wtorrent
mkdir data
nano ./conf/home.conf.php


В файл ./conf/home.conf.php пропишем следующее:

<?php
define( 'URL', 'http://torrent/' );
define( 'BASE', 'http://torrent/' );
define( 'DB_FILE', 'db/database.db');
define( 'RT_HOST', 'localhost');
define( 'RT_PORT', 80);
define( 'RT_DIR', 'RPC2/');
define( 'RT_AUTH', false);
define( 'RT_USER', '');
define( 'RT_PASSWD', '');
define( 'NO_MULTICALL', true);
define( 'DIR_TORRENTS', 'torrents/');
define( 'DIR_EXEC', '/var/www/torrent/www');
define( 'PERM_TORRENTS', 0777);
define( 'DIR_DOWNLOAD', '/home/rt/doing');
define( 'DIR_LANG', 'home/lang/' );
define( 'DIR_TPL', 'home/tpl/' );
define( 'DIR_TPL_COMPILE', 'tpl_c/' );
define( 'DIR_TPL_HTML', 'home/html/' );
define( 'DIR_BACKUP', 'backup/' );
define( 'DIR_UPLOAD', 'torrents/');
define( 'TITLE', 'wTorrent' );
define( 'META_TITLE', 'rTorrent web interface' );
define( 'META_KEYWORDS', 'rtorrent xmlrpc interface php web html' );
define( 'META_DESCRIPTION', 'rtorrent web inrface using xmlrpc' );
define( 'DIR_CSS_DETALLS', 'home/css/detalls.css' );
define( 'DIR_CSS_ESTIL', 'home/css/estil.css' );
define( 'DIR_JS', 'home/js/javasc.js' );
define( 'DIR_JSHADE', 'home/js/shadedborder.js' );
define( 'DIR_JSPROTO', 'home/js/prototype.js' );
define( 'DIR_SCRIPTACULOUS','home/js/scriptaculous/scriptaculous.js');
define( 'DIR_FAVICO', 'favicon.ico' );
define( 'DIR_IMG', 'home/img/' );
define( 'SRC_INDEX', 'index.php' );
define( 'SCRAMBLE', false);
define( 'APP', 'wTorrent' );
require_once( 'lib/inc/includes.inc.php' );
autoload( 'lib/cls/', 'cls/', 'home/cls/' );
ini_set( 'include_path', DIR_EXEC );
?>


Далее пропишем разрешения для всех необходимых папок и файлов:

chown -R rt:rt /var/www/torrent/www
chown -R www-data:www-data db torrents tpl_c
chmod data 755
touch ./db/database.db


Для того, чтобы все заработало, лучше всего рестартнуть сервер. Если Вы хотите получить доступ к web-интерфейсу с локальной машины, просто добавьте строчку

127.0.0.1 torrent

в файл /etc/hosts. Если Вы хотите получить доступ к интерфейсу с другой машины, добавьте вышеуказанную строчку в hosts на ней, заменив 127.0.0.1 на IP машины с rtorrent.

После перезагрузки откройтие URL torrent/install.php в браузере и выполните установку. Можно оставить все по умолчанию, кроме имени пользователя и пароля, разумеется. После установки не забудьте убить файл /var/www/torrent/www/install.php.

Если что-то забыл — отвечу в комментариях. Буду благодарен за конструктивные замечания по данному мануалу.
Теги:
Хабы:
Всего голосов 8: ↑7 и ↓1+6
Комментарии31

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань