05.01.13

Настройка Rutorrent для работы с Nginx


После долгого использования rtorrent в консольном режиме решил наконец прикрутить к нему rutorrent Почему именно rutorrent? Потому что насколько я понял морда wtorrent с nginx не дружит совсем. Итак, я не буду рассказывать сейчас как настраивать rtorrent, тот кто читает наверняка уже его использует давно,а расскажу конкретно как к rtorrent прикрутить веб морду. Везде где я читал rutorrent слушал порт по протоколу TCP/IP, но я считаю использование unix socket будет и безопаснее как то правильнее чтоли. Приступим: Для начала нам нужно иметь хотя бы рабочий nginx, rtorrent собранный

--with-xmlrpc
и собственно сам rutorrent с плагином RPC Скачиваем по этим двум ссылкам и расспаковываем:
cd /srv/http sudo tar -xvzpf /path/to/rutorrent-3.1.tar.gz
После чего переходим в директорию plugins:
cd /srv/http/rutorrent/plugins  sudo tar -xvzpf /path/to/rpc-3.1.tar.gz
Меняем владельца директории rutorrent на того от которого запущен nginx,например http
sudo chown -R http:http /srv/http/rutorrent/
Затем открываем вашим любимым текстовым редактором конфигурационный файл rutorrent
nano -w /srv/http/rutorrent/conf/config.php
и прописываем порт и хост для прослушки:
$scgi_port = 0; $scgi_host = "unix:///tmp/ru.sock";
Далее открываем конфиг rtorrent'a
nano ~/.rtorrent.rc
и прописываем адрес сокета который будет создавать rtorrent при старте.
scgi_local = /tmp/ru.sock
Единственная загвоздка в том что запуск rtorrent у меня происходит от другого пользователя нежели запуск nginx. Проблема эта решается путем добавления в init скрипт rtorrentd нужного umask. Прямо в скрипте прописываем:
umask 111
Теперь займемся nginx'ом: Создадим новый локэйшен для этого:
location /rutorrent {
root /srv/http/; 
auth_basic "You need the password";
auth_basic_user_file /etc/nginx/conf/torrent; 

} location ~* \.php$ { index index.html; fastcgi_pass unix:/tmp/ru.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/http$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; }
Теперь при обращении www.yourdomain.ru/rutorrent будет открываться веб морда rutorrent. Хочу заметить что ее надо скрыть от посторонних глаз. Так как сам rutorrent не обладает никакими собственными методами аутенфикации мы сделали ее средствами nginx и прописали выше:

auth_basic "You need the password";  auth_basic_user_file /etc/nginx/conf/torrent
Теперь создадим с помощью httpasswd (утилита Apache) зашифрованный пароль и запишем его хеш в /etc/nginx/conf/torrent.

sudo htpasswd -b /etc/nginx/conf/torrent your_login your_password
Собственно все, теперь перезапускаем nginx и rtorrent и открываем в браузере http://127.0.0.1/rutorrent. Выдастся запрос на авторизацию после ввода которого вы можете рулить закачками на сервере хоть с дивана, хоть с работы.