web-dev-qa-db-fra.com

Comment démarrer automatiquement Supervisord sur Linux (Ubuntu)

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?

38
sebastien

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
40
sebastien

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

13
bkc

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
12
Peter Lindqvist

Il existe un script Debian/Ubuntu dans le référentiel officiel du superviseur GitHub:

https://github.com/Supervisor/initscripts/blob/master/debian-norrgard

5
Mike Korobov

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.

2
shennyg

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.

1
rukeba

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.

1
Jeff Bauer