четверг, 6 мая 2010 г.

Установка rTorrent + ruTorrent на ubuntu server (10.04)

Пользователь, из-под которого запускается скрин - rtorrent

1) обновляемся:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

2) ставим все, что нужно
sudo apt-get install screen php5 php5-geoip php5-cgi php5-cli apache2-utils curl subversion make autoconf autotools-dev automake libtool libcurl4-openssl-dev libsigc++-2.0-dev pkg-config libncurses5-dev checkinstall g++

3) Добавляем юзера
useradd rtorrent

Устанавливаем пароль
passwd rtorrent
000111

Создаем папки
cd /home/rtorrent
mkdir torrents
mkdir session

Меням владельца
chown -R rtorrent /home/rtorrent/
chgrp -R rtorrent /home/rtorrent/


4) Ставим xml-rpc из svn
       
        cd ~
svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
cd xmlrpc-c
./configure --prefix=/usr
make
sudo checkinstall -D

в третьем пункте меню ставим версию - 1, например, иначе не установится

5) Собираем libtorrent

        cd ~
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz (последняя версия на момент написания)
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
./autogen.sh
./configure --prefix=/usr
make
sudo checkinstall –D
В поле Discription вводим libtorrent


6) Собираем rtorrent

        cd ~
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz (последняя версия на момент написания)
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
./autogen.sh
./configure --with-xmlrpc-c --prefix=/usr
make
sudo checkinstall -D

В поле Discription вводим rtorrent


7) создаем файл конфигурации:
cd /home/rtorrent
nano rtorrent.rc


с примерно таким содержимым:
(пути папки и т.д. прописываешь свои)

directory = /home/rtorrent/torrents/
session = /home/rtorrent/session/
scgi_port = 127.0.0.1:5000
encoding_list = UTF-8

min_peers = 10
max_peers = 125
min_peers_seed = 10
max_uploads = 0
download_rate = 675
upload_rate = 900
port_range = 6789-6789
port_random = no
check_hash = yes
peer_exchange = yes
check_hash = yes
use_udp_trackers = yes
encryption = allow_incoming,try_outgoing,enable_retry

#Завершение программы при нехватке свободного места
schedule = low_diskspace,5,60,close_low_diskspace=300M

#Автоматические загрузки
schedule = watch_directory_1,5,5,"load_start=/home/media/torrents/auto/bddisk/*.torrent,d.set_directory=/home/media/blue-ray_disk"
schedule = watch_directory_2,5,5,"load_start=/home/media/torrents/auto/houseMD/*.torrent,d.set_directory=/home/media/houseMD"
schedule = watch_directory_3,5,5,"load_start=/home/media/torrents/auto/xbox/*.torrent,d.set_directory=/home/media/xbox"

или берем официальный конфиг с комментариями и правим:
wget http://libtorrent.rakshasa.no/export/1169/trunk/rtorrent/doc/rtorrent.rc -O /home/rtorrent/.rtorrent.rc
и правим нужные настройки

Устанавливаем права
chmod 777 .rtorrent.rc
chown -R rtorrent /home/rtorrent/.rtorrent.rc
chgrp -R rtorrent /home/rtorrent/.rtorrent.rc


9) Включаем файлы конфигурации для lighttpd

а) fastcgi
ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf

б) auth
ln -s /etc/lighttpd/conf-available/05-auth.conf /etc/lighttpd/conf-enabled/05-auth.conf
nano 05-auth.conf
Дописываем в конец еще одну секцию, не забываем сменить юзера на нашего ("require" => "user=rtorrent")

server.modules                += ( "mod_auth" )


auth.backend                   = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/htdigest"

auth.require = ( "/RPC2" =>
        (
                "method" => "digest",
                "realm" => "rTorrent RPC",
                "require" => "user=rtorrent"
        )
)

c) scgi
Создаем конфиг scgi
nano /etc/lighttpd/conf-available/10-scgi.conf

копипастим туда следуюший код:

server.modules += ( "mod_scgi" )

scgi.server = (
                "/RPC2" =>
                  ( "127.0.0.1" =>
                    (
                      "host" => "127.0.0.1",
                      "port" => 5000,
                      "check-local" => "disable",
                      "disable-time" => 0,
                    )
                  )
              )


делаем симлинк
ln -s /etc/lighttpd/conf-available/10-scgi.conf /etc/lighttpd/conf-enabled/10-scgi.conf


10) создаем пароль:
sudo htdigest -c /etc/lighttpd/htdigest "rTorrent RPC" rtorrent

11) рискнем хоть веб-морду дернуть из svn: 
cd /var/www/
sudo svn checkout
http://rutorrent.googlecode.com/svn/trunk/rutorrent
cd rutorrent
sudo svn checkout http://rutorrent.googlecode.com/svn/trunk/plugins

Удаляем ненужные плагины, затем в файле /rutorent/plugins/.svn/entries убираем по две строчки для каждого ненужного плагина, чтобы они не обновлялись – имя плагина и слово dir.

В дальнейшем обновляем и ядро и плагины командой
svn up *
из папки /var/www/rutorrent


12) теперь разрешаем пользователю веб сервера пользоваться мордой:
sudo chown -R www-data:www-data /var/www/rutorrent
sudo chmod -R 777 /var/www/rutorrent

13) так как консольный клиент не умеет (!!!) работать как демон, скачиваем костыли, позволяющие обойти этот идиотизм. (заметим, что костыль этот изобрел сам криворукий кодер)
sudo wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

14) редактируем костыль
sudo nano /etc/init.d/rtorrent

в user пишем своего пользователя
user=rtorrent

15) делаем костыль самодвижущимся и добавляем его в автозапуск.
chown root:root /etc/init.d/rtorrent
sudo chmod +x /etc/init.d/rtorrent
sudo update-rc.d rtorrent defaults
sudo /etc/init.d/rtorrent start

16) Делаем автоматическое создание папки с названием фильма, например, путь загрузки - /mnt/raid/video/<НАЗВАНИЕФИЛЬМА>/movie.torrent.
Для этого добавляем в .rtorrent.rc следующую строку (можно в конец):

system.method.set_key=event.download.inserted_new, create_struct,"d.open= ;f.multicall=default,\"execute={sh,/home/rtorrent/creator.sh,$f.get_frozen_path=}\""

И создаем исполняемый скрипт creator.sh следующего содержания:

#!/bin/sh
dir=`dirname "${1}"`
mkdir -p "${dir}"