Вот решение, с которым я пошел. AWS AMI включает pip для установки приложений Python. Вот команды настройки:
$ sudo pip install supervisor
$ echo_supervisord_conf
$ sudo su -
$ echo_supervisord_conf > /etc/supervisord.conf
После установки супервизора вам нужно будет вручную создать сценарий запуска, чтобы включать и выключать службу.
Это будет зависеть от вашего дистрибутива Linux, Ubuntu создаст для вас сценарий инициализации при установке, другие дистрибутивы, такие как AMI, этого не сделают. Вот отличный ресурс для различных сценариев инициализации дистрибутива Linux:
https://github.com/Supervisor/initscripts
Затем вы можете добавить супервизор в chkconfig, чтобы автоматически запускаться при перезагрузке системы.
Вот один из них, который работает для меня:
Дорожка
/etc/init.d/supervisord
Пример сценария инициализации для AWS-AMI или RedHat Linux
#!/bin/bash
#
# supervisord Startup script for the Supervisor process control system
#
# Author: Mike McGrath <[email protected]> (based off yumupdatesd)
# Jason Koppe <[email protected]> adjusted to read sysconfig,
# use supervisord tools to start/stop, conditionally wait
# for child processes to shutdown, and startup later
# Erwan Queffelec <[email protected]>
# make script LSB-compliant
#
# chkconfig: 345 83 04
# description: Supervisor is a client/server system that allows \
# its users to monitor and control a number of processes on \
# UNIX-like operating systems.
# processname: supervisord
# config: /etc/supervisord.conf
# config: /etc/sysconfig/supervisord
# pidfile: /var/run/supervisord.pid
#
### BEGIN INIT INFO
# Provides: supervisord
# Required-Start: $all
# Required-Stop: $all
# Short-Description: start and stop Supervisor process control system
# Description: Supervisor is a client/server system that allows
# its users to monitor and control a number of processes on
# UNIX-like operating systems.
### END INIT INFO
# Source function library
. /etc/rc.d/init.d/functions
# Source system settings
if [ -f /etc/sysconfig/supervisord ]; then
. /etc/sysconfig/supervisord
fi
# Path to the supervisorctl script, server binary,
# and short-form for messages.
supervisorctl=/usr/local/bin/supervisorctl
supervisord=${SUPERVISORD-/usr/local/bin/supervisord}
prog=supervisord
pidfile=${PIDFILE-/tmp/supervisord.pid}
lockfile=${LOCKFILE-/var/lock/subsys/supervisord}
STOP_TIMEOUT=${STOP_TIMEOUT-60}
OPTIONS="${OPTIONS--c /etc/supervisord.conf}"
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon --pidfile=${pidfile} $supervisord $OPTIONS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
touch ${lockfile}
$supervisorctl $OPTIONS status
fi
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d ${STOP_TIMEOUT} $supervisord
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -rf ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
LSB=1 killproc -p $pidfile $supervisord -HUP
RETVAL=$?
echo
if [ $RETVAL -eq 7 ]; then
failure $"$prog reload"
else
$supervisorctl $OPTIONS status
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $supervisord
RETVAL=$?
[ $RETVAL -eq 0 ] && $supervisorctl $OPTIONS status
;;
restart)
restart
;;
condrestart|try-restart)
if status -p ${pidfile} $supervisord >&/dev/null; then
stop
start
fi
;;
force-reload|reload)
reload
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload}"
RETVAL=2
esac
exit $RETVAL
После закрытия и сохранения сделайте его исполняемым для всех пользователей:
chmod a+x /etc/init.d/supervisord
Затем вы захотите подтвердить, что процесс supervisord действительно запущен, выполнив следующую команду:
ps -fe | grep supervisor
Если вы не видите /usr/bin/supervisord как запущенный процесс, вам нужно запустить его вручную:
sudo service supervisord start
Supervisord необходимо запускать каждый раз после перезагрузки сервера. Это можно сделать аналогично тому, как apache включается после перезагрузки с помощью chkconfig.
Сначала добавьте его в chkconfig, ваш список запускаемых процессов.
sudo chkconfig --add supervisord
Затем скажите chkconfig включить его после загрузки.
sudo chkconfig supervisord on
person
zeros-and-ones
schedule
23.07.2015