Раздел: Админство

О настройке rtorrent+screen и rutorrent

Недавно наткнулся на очередную тонкость при настройке rtorrent + rutorrent, которая вызывает определённые проблемы и плохо гуглится. Заодно поделюсь настройкой автозапуска rtorrent в отдельном окне Screen при загрузке компьютера.

Rtorrent доступен из официального репозитория:

pacman -S rtorrent

Далее, необходимо скопировать файл настроек в домашнюю директорию пользователя, из-под которого предполагается штатное пользование торрент-клиентом:

cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc

Разумеется, это не должен быть root.

Как настроить rtorrent, нормально написано на офсайте archlinux. Собственно, необходимый минимум настроек заключается в указании директорий:
-папку, где rtorrent будет брать .torrent файлы (directory for new torrents);
-папку для текущих закачек (session directory);
-папку для складывания окончательно закачанных файлов (downloaded torrents).
У меня все эти три папки лежат в директории Torrents и называются следующим образом:

~/.rtorrent.rc

# Default directory to save the downloaded torrents. 
directory = /home/sharefolder/Torrents/TorrentsFinished/

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/sharefolder/Torrents/TorrentsDown/

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=/home/sharefolder/Torrents/TorrentFiles/*.torrent

К сожалению, rtorrent нельзя свернуть после запуска, поэтому необходимо поставить эмулятор «оконной работы» Screen, и запускать rtorrent уже внутри «окна», которым можно управлять — сворачивать, восстанавливать, закрывать.

pacman -S screen

Screen работает очень просто: для того, чтобы запустить «отдельное окно», в консоли нужно ввести: screen.
Чтобы запустить программу сразу при запуске окна, можно указать её название так: screen rtorrent.
Свернуть окно — Ctrl+A, затем D.
Посмотреть список имеющихся окон — screen -list
Развернуть свёрнутое окно — screen -r <%номер_окна%>; номер окна — из предыдущей команды.
Каждое окно привязывается к тому юзеру, который его запустил, и один пользователь не может посмотреть список окон другого пользователя или «войти» в них.

Чтобы rtorrent запускался автоматически при старте компьютера, необходимо создать файл /etc/rc.d/rtorrent следующего содержания:

#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
  start)
    stat_busy "Starting rtorrent"
    sudo -H -u <strong>User</strong> screen -d -m -S rtorrent rtorrent &> /dev/null
    if [ $? -gt 0 ]; then
      stat_fail
    else
      add_daemon rtorrent
      stat_done
    fi
    ;;
  stop)
    stat_busy "Stopping rtorrent"
    killall -w -s 2 /usr/bin/rtorrent &> /dev/null
    if [ $? -gt 0 ]; then
      stat_fail
    else
      rm_daemon rtorrent
      stat_done
    fi
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

Естественно, User надо заменить именем пользователя, из-под которого будет происходить запуск rtorrent, настройки которого лежат в домашней директории юзера ~/.rtorrent.rc.
Затем, необходимо разрешить исполнение этому файлу -rwxr-xr-x :

chmod 755 /etc/rc.d/rtorrent

и добавить его в /etc/rc.conf в строчку DAEMONS = (… rtorrent …)

Чтобы прикрутить веб-оболочку к торрент-клиенту, нам необходимо установить саму оболочку, а так же php и apache. Rutorrent, который мы будем устанавливать, доступен из AUR. Остальное — из обычного репозитория:

yaourt -S rutorrent
pacman -S php apache php-apache

В файле /etc/php/php.ini необходимо в параметр open_basedir добавить следующие значения:

/etc/webapps/rutorrent/conf/:/usr/share/webapps/rutorrent/php/:/usr/share/webapps/rutorrent/

Далее, из AUR необходимо установить модуль взаимодействия приложения с веб-сервером:

yaourt -S mod_scgi

После установки, его необходимо указать в /etc/httpd/conf/httpd.conf

LoadModule scgi_module modules/mod_scgi.so

В этом же файле необходимо включить scgi на порту, по которому будет происходить взаимодействие:

SCGIMount /RPC2 127.0.0.1:5000

В этом же файле необходимо прописать алиас — соответствие пути после доменного имени папке, в которой лежит rutorrent:

<IfModule alias_module>
   Alias /rutorrent /usr/share/webapps/rutorrent
   <Directory "/usr/share/webapps/rutorrent">
       ...
   </Directory>
</IfModule>

Примеры оформления данного раздела можно найти в директории /etc/webapps/rutorrent/
Обычно, вместо «…» указываются настройки доступа; на момент настройки можно поставить Allow from all.

Файл настроек rutorrent:
/etc/webapps/rutorrent/conf/config.php
В этом файле необходимо проверить следующие значения:

        $scgi_port = 5000;
        $scgi_host = "127.0.0.1";

Они должны полностью совпадать со значениями соответствующих параметров в httpd.conf, указанными выше (SCGIMount /RPC2 127.0.0.1:5000)

В файле настроек самого торрент-клиента так же необходимо установить те же самые значения (добавить в конец файла ~/.rtorrent.rc):

scgi_port = 127.0.0.1:5000

Таким образом, после рестарта httpd, веб-интерфейс должен быть доступен по адресу http://ip-адрес/rutorrent/

Теперь самое интересное — Траблшутинг : )
Если при входе на страницу веб-интерфейса торрент-клиента возникают ошибки типа:

[03.04.2010 10:09:15] WebUI started.
[03.04.2010 10:09:15] JS error: [http://localhost/rutorrent/ : xx ] XML cannot be the whole program

или что-то вроде «нет связи rutorrent с rtorrent»,
следует сделать:
1. Проверить, действительно ли все настройки совпадают во всех трёх файлах (httpd.conf, ~/.rtorrent.rc и config.php) на предмет порта и ip адреса.
2. Проверить, даны ли права пользователю http на директорию, в которой лежит rutorrent. Если нет, назначить:

chown -R http:http /etc/webapps/rutorrent

3. Посмотреть, вдруг что-то уже висит на 5000 порту:

cat /etc/services | grep 5000

Возможно, стоит переназначить этот порт на какой-то другой (например, у меня работает на 5666). Не забудьте сделать это во всех трёхфайлах! И, рестарт httpd.
4. Возможно, стоит добавить используемый порт (указанный во всех файлах) в диапазон port_range в файле ~/.rtorrent.rc.

Не забывайте рестартить httpd.

Комментировать

Комментарии

9 − 4 =