Oto rozwiązanie, z którym współpracowałem. AWS AMI zawiera pip do instalowania aplikacji Python. Oto komendy setup:
$ sudo pip install supervisor
$ echo_supervisord_conf
$ sudo su -
$ echo_supervisord_conf > /etc/supervisord.conf
Po zainstalowaniu przełożonego trzeba będzie ręcznie zbudować skrypt startowy, aby włączyć usługę i wyłączać.
To będzie się różnić w zależności od dystrybucji Linuksa, Ubuntu utworzy skrypt startowy dla ciebie podczas instalacji, inne dystrybucje, takie jak AMI, nie będą. Tutaj jest doskonałym źródłem informacji dla różnych skryptów startowych Linux distro-up:
https://github.com/Supervisor/initscripts
Można następnie dodać przełożonego do chkconfig zacząć automatycznie po ponownym uruchomieniu systemu.
Oto jeden, który działa dla mnie:
Ścieżka
/etc/init.d/supervisord
Przykład Init Script dla AWS-AMI lub 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
po zamknięciu i zapisać, uczynić go wykonywalnym przez wszystkich użytkowników:
chmod a+x /etc/init.d/supervisord
Będziesz następny chcą potwierdzić, że proces supervisord jest w istocie systemem, uruchamiając następującą komendę:
ps -fe | grep supervisor
Jeśli nie widzisz/usr/bin/supervisord jako uruchomionego procesu, to musisz zacząć ręcznie:
sudo service supervisord start
Supervisord należy uruchomić w dowolnym momencie, gdy serwer zostanie ponownie uruchomiony. Można to zrobić podobnie do włączania Apache po ponownym uruchomieniu komputera za pomocą polecenia chkconfig.
Pierwszy dodać go do chkconfig, twój rozruch lista proces
sudo chkconfig --add supervisord
Wtedy powiedzieć chkconfig aby go włączyć po starcie
sudo chkconfig supervisord on
Utworzono plik "/etc/init.d/supervisord", a następnie uruchom "sudo service supervisord start", ale ja otrzymał "env: /etc/init.d/supervisord: Odmowa uprawnień" .... jakiś pomysł? Używam ec2 Amazon AIM z centos 7 – llioor
'chmod a + x/etc/init.d/supervisord', aby uczynić go wykonywalnym był brakujący krok w tej bardzo szczegółowej odpowiedzi :) –
Dzięki Filipe, będę aktualizować odpowiedź . –