Автор Тема: Торрент клиент с веб интерфейсом [lighttpd+rtorrent+rutorrent[FreeBSD]]  (Прочитано 4275 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Pascal

  • Администратор
  • Сообщений: 7277
  • Репутация: 34
  • OS:
  • Mac OS X Mac OS X
  • Browser:
  • Opera 9.80 Opera 9.80
    • Просмотр профиля
    • Форум системных администраторов UNIX
Для начала установим rtorrent (/usr/ports/net-p2p/rtorrent)

# cd /usr/ports/net-p2p/rtorrent
# make install clean

Включаем поддержку XMLRPC:



Далее устанавливаем lighttpd (/usr/ports/www/lighttpd)
Включаем поддержку SPAWNFCGI:



Далее ставим php5 (/usr/ports/lang/php5)
Отмечаем GCI и SUHOSIN:



Редактируем /usr/local/etc/lighttpd.conf
Раскоментируем модули: "mod_access", "mod_auth", "mod_fastcgi", "mod_scgi", "mod_accesslog"

server.modules              = (                                 
"mod_access",                                 
"mod_auth",             
"mod_scgi",                                 
"mod_fastcgi",                                 
"mod_accesslog" )


Проверяем чтоб были записи:

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php-fastcgi.socket",
                                   "bin-path" => "/usr/local/bin/php-cgi"
                                 )
                               )
                            )

Добавляем в конец файла

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

Добавляем lighttpd_enable="YES" в /etc/rc.conf и запускаем lighttpd

# echo 'lighttpd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/lighttpd start

Переходим в /usr/local/www/data и создаем там файл test.php содержанием:

<?php
phpinfo
();
?>

Далее в браузере набираем ip_сервера/test.php
Результат должен быть примерно таким:
Spoiler for phpinfo:

Устанавливаем screen:

# cd /usr/ports/sysutils/screen
# make install clean

Теперь переходим в директорию /usr/local/etc/rc.d и создаем там файл rtorrent.rc содержанием:

#!/bin/sh
# PROVIDE: rtorrentd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="rtorrentd"
rcvar=`set_rcvar`

load_rc_config $name

rtorrentd_enable=${rtorrentd_enable:-"NO"}
rtorrentd_user=${rtorrentd_user:-""}
rtorrentd_args=${rtorrentd_args:-""}
start_cmd="${name}_start"
stop_cmd="${name}_stop"

rtorrentd_start()
{
  su ${rtorrentd_user} -c '/usr/local/bin/screen -m -d -S rtorrent /usr/local/bin/rtorrent'
  echo "Starting ${name}."
}

rtorrentd_stop()
{
  killall rtorrent
  echo "Stopping ${name}."
}

run_rc_command "$1"

Даем права на исполнение:

# chmod +x rtorrent.rc
Далее редактируем /etc/rc.conf:

rtorrentd_enable="YES"
rtorrentd_user="p2p"

В моем примере используется пользователь p2p,
Можно конечно запускать торрент от своего пользователя но я считаю что в этом нет необходимости,
поэтому создаем пользователя p2p с группой p2p, шелом /bin/sh и домашней директорией /home/p2p

# adduser p2p
-------------------
# pw user show p2p 

p2p:*:1002:1002::0:0:User &:/home/p2p:/bin/sh

создаем директорию где будут храниться скаченные файлы, и  делаем еще одну директорию для сессий
потом задаем права:

# mkdir /usr/local/smb/torrents
# mkdir /usr/local/smb/torrents/sess
# chown -R p2p:p2p /usr/local/smb/torrents

Далее создаем файл конфигурации .rtorrent.rc в корневой директории пользователя от имени которого мы запускаем rtorrent:
# cat /home/p2p/.rtorrent.rc
scgi_port = 127.0.0.1:5000
encoding_list = UTF-8
min_peers = 20
max_peers = 30
max_uploads = 20
download_rate = 256
upload_rate = 40
directory = /usr/local/smb/torrents 
session = /usr/local/smb/torrents/sess
port_range = 40890-40890
port_random = no 
check_hash = yes 
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext 

пробуем запустить rtorrent:

# /usr/local/etc/rc.d/rtorrent.rc start 
Starting rtorrentd. 
# ps ax | grep screen   
1785  ??  Ss     0:00,01 /usr/local/bin/screen -m -d -S rtorrent /usr/local/bin/rtorrent

Теперь надо скачать веб-интерфейс (rutorrent)
нам нужен файл "ruTorrent core files" (rutorrent-3.1.tar.gz) (На момент написании статьи версия 3.1)

После этого распакуем содержимое архива например в /usr/local/www/data/rutorrent
и назначим права:

# cd /usr/local/www/data/rutorrent
# chown -R www:www ../
# chmod -R 777 share


Если вам нужна авторизация на веб интерфейс то делаем вот что:

Добавляем в конец lighttpd.conf:

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/usr/local/etc/htpasswd"
auth.require = ( "/" =>
 (
  "method" => "basic",
  "realm" => "Privat zone",
  "require" => "valid-user"
 )
)

В состав lighttpd не входит генератор htpasswd, поэтому можно сгенерить файл на другой машине или найти в гугле htpasswd generator.
В итоге файл вида user:hash должен находиться в /usr/local/etc/htpasswd (в данном случае) и иметь права 400


Теперь можно настроить виртуальный хост для нашего веб-интерфейса:
Добавляем в конец lighttpd строки и перезапускаем его:


$HTTP["host"] == "nas.soho" {
     server.document-root = "/usr/local/www/data/rutorrent/"
 }

Проверим результат:

Spoiler for rutorrent:

Основная настройка оконченна, теперь можно перейти к плагинам.





Плагины устанавливаются достаточно просто:
Достаточно распаковать архив в директорию plugins и обновить страницу с веб-интерфейсом в браузере.
Наиболее интересные плагины это: _getdir и diskspace


_getdir позволяет указать директорию для загрузки контента:




diskspace показывает свободное дисковое пространство:






Вот собственно и все, удачной настройки.
« Последнее редактирование: Ноябрь 28, 2010, 05:09:58 pm от FessAectan »
#define TRUE FALSE

FessAectan

  • Супермодератор
  • Сообщений: 5582
  • Репутация: 34
  • OS:
  • FreeBSD FreeBSD
  • Browser:
  • Chrome 6.0.472.63 Chrome 6.0.472.63
    • Просмотр профиля
Тема закрыта, вопросы задавать здесь
Сервис, который не мониторится — это не сервис. Без мониторинга вы просто запустили программу. (с) Лимончелли