Supervisord non viene fornito con uno script init o non indica come avviarlo automaticamente, ad es. dopo un riavvio. Ho provato alcuni script /etc/init.d forniti dall'utente, ma tutti falliscono.
Quale sarebbe la soluzione preferita?
Supervisord non viene fornito con uno script init o non indica come avviarlo automaticamente, ad es. dopo un riavvio. Ho provato alcuni script /etc/init.d forniti dall'utente, ma tutti falliscono.
Quale sarebbe la soluzione preferita?
Risposte:
In realtà, ne ho trovato uno che funziona qui http://gist.github.com/176149 . Per installarlo:
sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord
per eseguirlo
sudo chmod +x /etc/init.d/supervisord
e per programmarlo automaticamente, fallo
sudo update-rc.d supervisord defaults
Assicurati che il pid corretto sia in /etc/supervisord.conf che sia mappato in /etc/init.d/supervisord
example: pidfile=/var/run/supervisord.pid
Stop and Start funziona correttamente
service supervisord stop
service supervisord start
Ho creato uno script upstart per Ubuntu 9.10
Ad esempio, ho installato il supervisore in un ambiente virtuale, quindi ho avviato e controllato il supervisore dall'inizio.
creare un file di testo /etc/init/supervisord.conf
i contenuti sono:
description "supervisord"
start on runlevel [345]
stop on runlevel [!345]
expect fork
respawn
exec /misc/home/bkc/Python_Environments/java2/supervisord/bin/supervisord -c /misc/home/bkc/Python_Environments/java2/supervisord/work/supervisord.conf
Avvia automaticamente il supervisore all'avvio. Per avviare manualmente dopo aver creato il file .conf, utilizzare
sudo start supervisord
Per interrompere manualmente il servizio, utilizzare
sudo stop supervisord
curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/supervisord.conf > /etc/init/supervisord.conf && start supervisord
(devi essere root)
Questo è quello che uso su RHEL 5.4 e CentOS 5.5
Non sono sicuro che dipenda da alcune impostazioni di configurazione nel mio supervisord.conf. Ma sembra funzionare bene.
È necessario eseguire il comando seguente dopo averlo installato
chkconfig --add supervisord
[/Etc/rc.d/init.d/supervisord]
#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord
# Source init functions
. /etc/rc.d/init.d/functions
prog="supervisord"
prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"
start()
{
echo -n $"Starting $prog: "
daemon $prog_bin --pidfile $PIDFILE
[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
echo
}
stop()
{
echo -n $"Shutting down $prog: "
[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
chkconfig --add supervisord
devi anche abilitarlo per diversi livelli di corsa tramitechkconfig supervisord --level 345 on
Esiste uno script Debian / Ubuntu nel repository ufficiale del supervisore GitHub:
https://github.com/Supervisor/initscripts/blob/master/debian-norrgard
Questo funziona per me su Ubuntu 10.04.3 LTS. Sembra funzionare anche in 8.04:
Aggiungi quanto segue a /etc/init.d/supervisord
#! /bin/bash -e
SUPERVISORD=/usr/local/bin/supervisord
PIDFILE=/tmp/supervisord.pid
OPTS="-c /etc/supervisord.conf"
test -x $SUPERVISORD || exit 0
. /lib/lsb/init-functions
export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/sbin:/sbin"
case "$1" in
start)
log_begin_msg "Starting Supervisor daemon manager..."
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
log_end_msg 0
;;
stop)
log_begin_msg "Stopping Supervisor daemon manager..."
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || log_end_msg 1
log_end_msg 0
;;
restart|reload|force-reload)
log_begin_msg "Restarting Supervisor daemon manager..."
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
log_end_msg 0
;;
*)
log_success_msg "Usage: /etc/init.d/supervisor
{start|stop|reload|force-reload|restart}"
exit 1
esac
exit 0
Quindi eseguire:
sudo chmod +x /etc/init.d/supervisord
sudo update-rc.d supervisord defaults
sudo service supervisord start
Nessuna delle altre risposte ha funzionato per me.
Il supervisore sembra ora essere nel repository apt, quindi non dovrebbe essere necessario creare manualmente i file init, solo:
sudo apt-get install supervisor
Potresti voler prima ripulire (e fare il backup) dei tuoi vecchi file prima dell'installazione.