Supervisord ne vient pas avec un script d'initialisation ou n'indique pas comment le démarrer automatiquement, c'est-à-dire. après un redémarrage. J'ai essayé certains scripts /etc/init.d fournis par les utilisateurs, mais ils échouent tous.
Quelle serait la solution préférée?
En fait, j'en ai trouvé un qui fonctionne ici http://Gist.github.com/176149 . Pour l'installer:
Sudo curl https://Gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord
l'exécuter
Sudo chmod +x /etc/init.d/supervisord
et pour le planifier automatiquement, faites
Sudo update-rc.d supervisord defaults
Assurez-vous que le pid correct dans /etc/supervisord.conf est mappé dans /etc/init.d/supervisord
example: pidfile=/var/run/supervisord.pid
Arrêtez et commencez à travailler correctement
service supervisord stop
service supervisord start
J'ai créé un script upstart pour Ubuntu 9.10
Par exemple, j'ai installé le superviseur dans un environnement virtuel, puis je démarre et contrôle le superviseur à partir du début.
créer un fichier texte /etc/init/supervisord.conf
le contenu est:
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
Il démarrera automatiquement le superviseur au démarrage. Pour démarrer manuellement après avoir créé le fichier .conf, utilisez
Sudo start supervisord
Pour arrêter manuellement le service, utilisez
Sudo stop supervisord
C'est ce que j'utilise sur RHEL 5.4 et CentOS 5.5
Je ne sais pas si cela dépend de certains paramètres de configuration dans mon supervord.conf. Mais cela semble fonctionner correctement.
Vous devez exécuter la commande suivante après l'avoir installée
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
Il existe un script Debian/Ubuntu dans le référentiel officiel du superviseur GitHub:
https://github.com/Supervisor/initscripts/blob/master/debian-norrgard
Cela fonctionne pour moi sur Ubuntu 10.04.3 LTS. Il semble également fonctionner dans 8.04:
Ajoutez ce qui suit à /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
Exécutez ensuite:
Sudo chmod +x /etc/init.d/supervisord
Sudo update-rc.d supervisord defaults
Sudo service supervisord start
Aucune des autres réponses n'a fonctionné pour moi.
J'ai ajouté ces lignes dans /etc/init.d/supervisord pour corriger le traitement de l'argument "stop":
do_stop()
{
/usr/local/bin/supervisorctl stop all
/usr/local/bin/supervisorctl shutdown
# Return
...
et cela fonctionne très bien pour moi.
Le superviseur semble maintenant être dans le référentiel apt, il ne devrait donc pas être nécessaire de créer manuellement des fichiers init, juste:
Sudo apt-get install supervisor
Vous voudrez peut-être d'abord nettoyer (et sauvegarder) vos anciens fichiers avant l'installation.