Comment démarrer automatiquement supervisord sur Linux (Ubuntu)

38

Supervisord ne vient pas avec un script d’init ou n’indique pas comment le démarrer automatiquement, c’est-à-dire. après un redémarrage. J'ai essayé des scripts /etc/init.d créés par les utilisateurs, mais ils ont tous échoué.

Quelle serait la solution préférée?


la source
comment voulez-vous dire "échouer"? btw; cette question semble appartenir à serverfault.
erenon
Debian stable a des scripts d'initialisation, alors je suppose que cette question est obsolète.

Réponses:

40

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 programmer automatiquement,

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

Stop and Start fonctionne correctement

service supervisord stop
service supervisord start
Césarsol
la source
Ceci est spécifique à Debian? Manquant /lib/init/vars.sh et update-rc.d sur une boîte
Centos6.5
1
Comment savons-nous où supervisord.conf va? / Où devrions-nous placer supervisord.conf?
Weiwei
1
J'ai trouvé qu'il était beaucoup plus facile d'installer simplement supervisord à partir du référentiel squeeze de Debian - faire aptitude install supervisord inclut une configuration correcte du fichier /etc/init.d avec des liens, et place le fichier de configuration dans /etc/supervisor/supervisord.conf
RichVel
2
@RichVel C'est une version alpha, avec de nombreux bugs. La plupart d'entre eux n'affectent peut-être pas votre système, mais vous ne pouvez pas en être sûr, et ne pas disposer de la dernière version peut vous faire mal à tout moment. Vérifiez le dépôt source et vous constaterez qu'il existe plus de 320 validations entre les versions 3.0a8 et 3.0b2. Github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain
1
@glarrain - merci pour le lien de heads-up et de comparaison ... Je ne savais pas que - ennuyeux que le gestionnaire de paquets Debian prenne une version alpha. Le but de Debian stable est sûrement d’utiliser uniquement des versions éprouvées ...
RichVel
13

J'ai créé un script de démarrage pour Ubuntu 9.10

Par exemple, j'ai installé supervisor dans un environnement virtuel, puis démarrez et contrôlez supervisor depuis le 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 supervisor au démarrage. Pour démarrer manuellement après la création du fichier .conf, utilisez

sudo start supervisord

Pour arrêter manuellement le service, utilisez

sudo stop supervisord

bkc
la source
2
Merci! Voici un one-liner: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(vous devez être root)
charlax
3
Vérifiez toujours les commandes uniques avant de les exécuter. Celui-ci est bien, mais je voulais juste ajouter cette astuce.
Cory Walker
12

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 de mon supervisord.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
Peter Lindqvist
la source
ajouterais seulement que vous deviez ajouter un + x permissions avant d'essayer de l'exécuter: chmod + x /etc/init.d/supervisord
JiminyCricket
N'oubliez pas qu'après la course, chkconfig --add supervisordvous devez également l'activer pour différents niveaux de course viachkconfig supervisord --level 345 on
Corey Ballou
2

Cela fonctionne pour moi sur Ubuntu 10.04.3 LTS. Cela semble également fonctionner en 8.04:

Ajouter 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

Puis lancez:

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.

Shennyg
la source
1

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.

Rukeba
la source
1

Supervisor semble maintenant être dans le référentiel apt, il ne devrait donc pas être nécessaire de créer manuellement les fichiers init, mais simplement:

sudo apt-get install supervisor

Vous voudrez peut-être d'abord nettoyer (et sauvegarder) vos anciens fichiers avant l'installation.

Jeff Bauer
la source
Vous devez savoir que "Certains de ces packages peuvent prendre beaucoup de retard par rapport à la version officielle. Par exemple, Ubuntu 12.04 (publiée en avril 2012) propose un package basé sur Supervisor 3.0a8 (publié en janvier 2010)". (d'après la documentation de Supervisord, supervisord.org/… )
glarrain