Когда у меня возникла необходимость установить на сервер, который
находится под управлением Ubuntu 9.04 «Jaunty Jackalope», BitTorent
клиент, то я сразу подумал о rtorrent. Но пока я искал инструкцию по его
настройке (точнее по настройке самого rtorrent, screen и web-интерфейса
к rtorrent) я узнал о том что мой любимый Deluge (которым я пользовался раньше на компьютере с DE GNOME) может работать и в консольном режиме и в режиме с Web-интерфейсом. Меня это заинтересовало.В результате я раскопал официальный сайт Deluge и нашёл на нём инструкцию по установке Deluge на сервер. Всё намного проще, нежели в случае с rtorrent.
1. Для начала я бы порекомендовал обзавестись пакетами, которые понадобятся для работы:
1.
sudo
apt-get install g++ make python-all-dev python-all python-dbus
python-gtk2 python-notify python-setuptools librsvg2-common python-xdg
python-support subversion libboost-dev libboost-python-dev
libboost-iostreams-dev libboost-thread-dev libboost-date-time-dev
libboost-filesystem-dev libboost-serialization-dev libssl-dev zlib1g-dev
2. Теперь установим сам Deluge:
1.
sudo apt-get install deluge-common deluge-console deluge-core deluge-torrent deluge-webui
3. Нужно создать для него демона, который будет его запускать. Для этого создадим файл /etc/default/deluge-daemon:
1.
sudo nano /etc/default/deluge-daemon
Содержимое файла должно быть таким (ВНИМАНИЕ!!! Обязательно замените <username> на имя вашего пользователя в системе!):
1.
# Configuration for /etc/init.d/deluge-daemon
2.
3.
# The init.d script will only run if this variable non-empty.
4.
DELUGED_USER="<username>" # !!!CHANGE THIS!!!!
5.
6.
# Should we run at startup?
7.
RUN_AT_STARTUP="YES"
Для выхода из nano и сохранения файла используйте сочетание Ctrl+x + ответ на вопрос о необходимости сохранения файла.
4. Создадим исполняемый скрипт /etc/init.d/deluge-daemon:
1.
sudo nano /etc/init.d/deluge-daemon
Его содержимое должно быть следующим:
001.
#!/bin/sh
002.
### BEGIN INIT INFO
003.
# Provides: deluge-daemon
004.
# Required-Start: $local_fs $remote_fs
005.
# Required-Stop: $local_fs $remote_fs
006.
# Should-Start: $network
007.
# Should-Stop: $network
008.
# Default-Start: 2 3 4 5
009.
# Default-Stop: 0 1 6
010.
# Short-Description: Daemonized version of deluge and webui.
011.
# Description: Starts the deluge daemon with the user specified in
012.
# /etc/default/deluge-daemon.
013.
### END INIT INFO
014.
015.
# Author: Adolfo R. Brandes
016.
017.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
018.
DESC="Deluge Daemon"
019.
NAME1="deluged"
020.
NAME2="deluge"
021.
DAEMON1=/usr/bin/deluged
022.
DAEMON1_ARGS="-d"
023.
DAEMON2=/usr/bin/deluge
024.
DAEMON2_ARGS="-u web"
025.
PIDFILE1=/var/run/$NAME1.pid
026.
PIDFILE2=/var/run/$NAME2.pid
027.
PKGNAME=deluge-daemon
028.
SCRIPTNAME=/etc/init.d/$PKGNAME
029.
030.
# Exit if the package is not installed
031.
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
032.
033.
# Read configuration variable file if it is present
034.
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
035.
036.
# Load the VERBOSE setting and other rcS variables
037.
[ -f /etc/default/rcS ] && . /etc/default/rcS
038.
039.
# Define LSB log_* functions.
040.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
041.
. /lib/lsb/init-functions
042.
043.
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
044.
then
045.
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
046.
exit 0
047.
fi
048.
049.
if [ -z "$DELUGED_USER" ]
050.
then
051.
log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
052.
exit 0
053.
fi
054.
055.
#
056.
# Function that starts the daemon/service
057.
#
058.
do_start()
059.
{
060.
# Return
061.
# 0 if daemon has been started
062.
# 1 if daemon was already running
063.
# 2 if daemon could not be started
064.
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \
065.
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
066.
RETVAL1="$?"
067.
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \
068.
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
069.
RETVAL2="$?"
070.
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1
071.
072.
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \
073.
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
074.
RETVAL1="$?"
075.
sleep 2
076.
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \
077.
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
078.
RETVAL2="$?"
079.
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
080.
}
081.
082.
#
083.
# Function that stops the daemon/service
084.
#
085.
do_stop()
086.
{
087.
# Return
088.
# 0 if daemon has been stopped
089.
# 1 if daemon was already stopped
090.
# 2 if daemon could not be stopped
091.
# other if a failure occurred
092.
093.
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
094.
RETVAL2="$?"
095.
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
096.
RETVAL1="$?"
097.
[ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
098.
099.
rm -f $PIDFILE1 $PIDFILE2
100.
101.
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
102.
}
103.
104.
case "$1" in
105.
start)
106.
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
107.
do_start
108.
case "$?" in
109.
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
110.
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
111.
esac
112.
;;
113.
stop)
114.
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
115.
do_stop
116.
case "$?" in
117.
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
118.
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
119.
esac
120.
;;
121.
restart|force-reload)
122.
log_daemon_msg "Restarting $DESC" "$NAME1"
123.
do_stop
124.
case "$?" in
125.
0|1)
126.
do_start
127.
case "$?" in
128.
0) log_end_msg 0 ;;
129.
1) log_end_msg 1 ;; # Old process is still running
130.
*) log_end_msg 1 ;; # Failed to start
131.
esac
132.
;;
133.
*)
134.
# Failed to stop
135.
log_end_msg 1
136.
;;
137.
esac
138.
;;
139.
*)
140.
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
141.
exit 3
142.
;;
143.
esac
144.
145.
:
5. Разрешим пользователю root исполнять этот скрипт:
1.
sudo chmod 755 /etc/init.d/deluge-daemon
6. Добавим выполнение этого скрипта при старте системы:
1.
sudo update-rc.d deluge-daemon defaults
7. Теперь осталось либо запустить скрипт
1.
sudo /etc/init.d/deluge-daemon start
либо перезапустить сервер
1.
sudo shutdown -r now
Всё, программой можно пользоваться обратившись к серверу через
браузер на порт 8112. К примеру, http://198.162.1.25:8112. Пароль
по-умолчанию «deluge».
Web-интерфейс системы очень удобный и продуманный. За сутки работы с ним ошибок и недочётов не обнаружено. Выглядит он вот так:
На мой взгляд установка Deluge в разы проще и понятнее, нежели
установка rtorrent. А так как для моих задач Deluge хватает выше крыши,
то я остановился именно на нём.
P.S.
Если коды скриптов не сработали, то попробуйте взять их с официального сайта с документацией, вдруг при копирование какие-нибудь символы на что-нибудь заменились.
Если коды скриптов не сработали, то попробуйте взять их с официального сайта с документацией, вдруг при копирование какие-нибудь символы на что-нибудь заменились.
Обновление от 20 июля 2009 05:00
Я советую устанавливать deluge не из репозитория Ubuntu, а собирать из SVN разработчиков. Так как версия из SVN стабильнее и у меня намного реже вылетает с ошибкой Segmentation fault (segfault), нежели версия из репозитория.
Я советую устанавливать deluge не из репозитория Ubuntu, а собирать из SVN разработчиков. Так как версия из SVN стабильнее и у меня намного реже вылетает с ошибкой Segmentation fault (segfault), нежели версия из репозитория.
Установка не многим сложнее. Ниже приведу процесс удаления версии установленной из репозитория и установки версии из SVN
1. Удалим имеющийся deluge
1.
sudo apt-get remove deluge
2. Удаляем конфигурационные файлы deluge, предварительно сделав копию (на всякий случай, так как в папке ~/.config/deluge/state находится список торентов которые были в deluge до его удаления)
1.
cp ~/.config/deluge ~/.config/deluge-backup
2.
rm -rf ~/.config/deluge
3. Устанавливаем последний стабильный deluge из SVN
1.
svn co http://svn.deluge-torrent.org/branches/1.1.0_RC deluge
2.
cd deluge
3.
sudo rm -fr /usr/lib/python2.5/site-packages/deluge-1.1*
4.
python setup.py build
5.
sudo python setup.py install
Комментариев нет:
Отправить комментарий