Pull to refresh

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

Reading time5 min
Views1.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.

Если что-то забыл — отвечу в комментариях. Буду благодарен за конструктивные замечания по данному мануалу.
Tags:
Hubs:
Total votes 8: ↑7 and ↓1+6
Comments31

Articles