среда, 24 ноября 2010 г.

Установка и настройка utserver (utorrent) на ubuntu 10.10

Вышла серверная (только консоль) Linux версия utorrent - а. Решил поставить посмотреть как она смотрится.
С установкой, точнее с запуском, проблем не возникло. Тут всё просто, скачиваем архив вот отсюда, распаковываем его, я для utorrent-a создал нового пользователя
p2p

adduser -a p2p
и распаковал всё содержимое в созданный каталог
/home/p2p/utserver
И ещё несколько каталогов для удобства:
mkdir /home/p2p/torrent /home/p2p/file /home/p2p/tmp
В каталоге
/home/p2p/utserver
создаём файл
nano /home/p2p/utserver/utserver.conf
и туда добовляем
dir_root: /home/p2p
dir_active: /home/p2p/file
dir_completed: /home/p2p/file
dir_download: /home/p2p/file
dir_torrent_files: /home/p2p/torrents
dir_temp_files: /home/p2p/tmp
dir_autoload: /home/p2p/tmp
preferred_interface: eth0
Переходим в корень распакованного архива и запускаем
./utserver
всё произойдёт запуск и создание настроек.
Это с запуском, но при этом терминал будет занят и при последующей перезагрузки придётся заново вручную запускать utorrent.
Поэтому решил поискать темку про создание init фала для демона, просмотрев несколько форумов на http://www.utorrent.com и попробовав разные варианты, получилось прикрутить только этот файл загрузки от сюда:
создаём файл
sudo nano /etc/init.d/utserver

и вставляем вот этот код

#! /bin/sh
### BEGIN INIT INFO
# Provides: utserver
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the utserver.
# Description: uTorrent Server for Linux. A headless
# bittorrent client with a WebUI.
### END INIT INFO

# Author: John Doe
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="uTorrent Server for Linux"
CHDIR=/home/p2p/utserver
NAME=utserver
UT_CONFIG=/home/p2p/utserver/$NAME.conf
UT_SETTINGS=/home/p2p/utserver
UT_LOG=/home/p2p/utserver/$NAME.log
#DAEMON_ARGS="-daemon -configfile ${UT_CONFIG} -settingspath ${UT_SETTINGS} -logfile ${UT_LOG}"
DAEMON_ARGS="-configfile ${UT_CONFIG} -settingspath ${UT_SETTINGS} -logfile ${UT_LOG}"
DAEMON=$CHDIR/$NAME
USER=p2p
GROUP=p2p
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
STOP_TIMEOUT=5
INIT_VERBOSE=yes

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --chuid $USER:$GROUP --chdir $CHDIR --background --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --chuid $USER:$GROUP --chdir $CHDIR --background --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}

case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac

:

После этого даём права на чтение
sudo chmod a+x /etc/init.d/utserver
пробуем запустить и вырубить
incognito@home:~$ sudo /etc/init.d/utserver stop
* Stopping uTorrent Server for Linux utserver [ OK ]
incognito@home:~$ sudo /etc/init.d/utserver start
* Starting uTorrent Server for Linux utserver [ OK ]
incognito@home:~$
если всё так же то делаем следующее телодвижение для того что бы стартовало всё автоматом
update-rc.d utserver defaults
ИМХО: Конечно приятно что разрабы utorrenta вспомнили наконец то и про linux и я с удовольствием буду пользоваться этим продуктом, только не сейчас. Пока продукт сыроват, много багов, плохо обновляется конфиг, да и вообще ещё мало возможностей у него. Но надеюсь со временем всё будет гуд. А пока под сервер торрент демона лучше чем deluge не видел.

4 комментария:

  1. Пожалуйста, тоже помогает сильно когда приходиться ставить заново всё %)

    ОтветитьУдалить
  2. да я тоже давно хотел клиент такой под линукс, даже в свое время юзал под вайном обычный клиент, но теперь вуаля... но у меня 2 проблемы и в интернете ничего толкового нет, может ты подскажешь:
    1. я хочу автоматически загружать торренты с трекера, там есть такая фича, но нужны кукисы, кукисы выдрать не проблема, но какие?
    2. как сделать загрузку в несколько директорий, что бы при добавлении торрента был выбор, отделить софт от видео и тд

    ОтветитьУдалить
  3. I must say, that Torrent is one of the most famous and used places on the web. The way they provide Free Data, and the popularity and Respect they have earned in these years, is really unbelievable. Officially they are illegal. but they are kind of Robin Hood type. Who takes paid things from the providers and make them available to the public for Free.
    Virtual Edge

    ОтветитьУдалить