-
Notifications
You must be signed in to change notification settings - Fork 71
Установка MoniTorrent на WD MyCloud with OMV
Для удобной работы с файловой системой (распаковка архивов, создание папок и т.п.) через GUI можно использовать WinSCP или FileZilla.
Исходная система:
$ uname -a
Linux MyCloud 3.2.68 #7 SMP Wed Apr 1 18:37:42 UTC 2015 armv7l GNU/Linux
$ dpkg -l | grep openmediavault
ii openmediavault 2.2.13 all Open network attached storage solution
ii openmediavault-minidlna 1.1 all OpenMediaVault miniDLNA (DLNA server) plugin
ii openmediavault-omvextrasorg 1.34 all OMV-Extras.org Package Repositories for OpenMediaVault
ii openmediavault-transmissionbt 1.4 all OpenMediaVault Transmission (BitTorrent client) plugin.
В поставке отсутствует systemd
, так что выкручиваемся с автозапуском через sysvinit
.
Подготовительный этап:
Управлять версиями python будем с помощью утилиты pyenv. Ставим необходимые пакеты для ее корректной установки и дальнейшей сборки python из исходников:
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev xz-utils php5-curl curl git
Устанавливаем сам pyenv и обновляем его:
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
pyenv update
Если ругнулось на неизвестную команду pyenv
, то надо добавить в профиль .bashrc следующее (подробнее, а так же для других шеллов, в Wiki проекта pyenv):
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Подтягиваем изменения:
source .bashrc
Далее ставим последнюю версию python (3.6.0 на момент написания):
pyenv install 3.6.0
На этапе установки может вывалиться ошибка об отсутствии свободного места (т.к. pyenv сначала выкачивает исходники указанной версии python, а потом билдит его), тогда можно переопределить папку tmp
для текущей сессии (!ВАЖНО! папка должна быть смонтирована без флага noexec
):
export TMPDIR="/media/tmp"
После того, как установили нужную версию python, создадим отдельный virtualenv для MT:
pyenv 3.6.0 monitorrent
Если на любом из этих этапов возникли какие-либо сложности, то сначала смотрим Wiki проекта pyenv.
Теперь можно переходить к запуску самого MT.
Выкачиваем последний релиз и распаковываем его (пример: /root/monitorent
).
Устанавливаем для этой папки локальный virtualenv, который мы создали ранее:
cd /root/monitorent
pyenv local monitorrent
Проверяем установленную локальную версию python, ставим зависимости по инструкции MT и запускаем сервер:
cd /root/monitorent
pyenv local
pip install -r requirements.txt
python server.py
На этом основной этап установки закончен.
Для автоматического запуска сервера при старте системы создадим отдельный скрипт и добавим его в /etc/init.d
.
Скрипт для запуска monitorrent
:
#!/bin/sh
### BEGIN INIT INFO
# Provides: monitorrent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemon for monitorrent server
# Description: This app can watch for torrent updates.
# Github repo https://github.com/werwolfby/monitorrent
### END INIT INFO
# Full path to monitorrent folder (ex: /home/user/monitorrent)
DIR=/root/monitorrent
SERVICE=$DIR/server.py
# Full path to python you want to use for monitorrent (ex: /usr/bin/python)
SERVICE_RUNNER=/root/.pyenv/versions/monitorrent/bin/python
SERVICE_NAME=monitorrent
# Args to pass to a server (ex: "--debug")
SERVICE_ARGS=""
# This next line determines what user the script runs as.
SERVICE_USER=root
# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/$SERVICE_NAME.pid
. /lib/lsb/init-functions
do_start () {
log_daemon_msg "Starting $SERVICE_NAME service"
start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $SERVICE_USER --chuid $SERVICE_USER --chdir $DIR --exec $SERVICE_RUNNER -- $SERVICE $SERVICE_ARGS
log_end_msg $?
}
do_stop () {
log_daemon_msg "Stopping $SERVICE_NAME service"
start-stop-daemon --stop --pidfile $PIDFILE --retry 10
log_end_msg $?
}
do_uninstall() {
echo -n "Uninstall "$SERVICE_NAME" service? That cannot be undone. [yes|No] "
local SURE
read SURE
if [ "$SURE" = "yes" ]; then
stop
rm -f "$PIDFILE"
update-rc.d -f "$SERVICE_NAME" remove
rm -fv "$0"
fi
}
case "$1" in
start|stop)
do_${1}
;;
restart|reload|force-reload)
do_stop
do_start
;;
uninstall)
do_${1}
;;
status)
status_of_proc "$SERVICE_NAME" "$SERVICE" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$SERVICE_NAME {start|stop|restart|uninstall|status}"
exit 1
;;
esac
exit 0
!ВАЖНО! Не забудьте поменять значения переменных DIR=
, SERVICE_RUNNER=
и SERVICE_USER=
на свои. При необходимости, можно указать аргументы для запуска сервера в переменной SERVICE_ARGS=
Установим этому скрипту права на исполнение:
chmod +x /etc/init.d/monitorrent
Добавим его для автозапуска:
update-rc.d monitorrent defaults 90 20
После перезагрузки устройства, статус сервера можно проверить командой service monitorrent status
.