So starten Sie Supervisord automatisch unter Linux (Ubuntu)

38

Supervisord wird nicht mit einem Init-Skript geliefert oder gibt nicht an, wie es automatisch gestartet werden soll, d. H. nach einem Neustart. Ich habe einige von Benutzern bereitgestellte /etc/init.d-Skripte ausprobiert, aber alle schlagen fehl.

Was wäre die bevorzugte Lösung?


quelle
Wie meinst du "scheitern"? übrigens; diese frage scheint auf serverfault zu gehören.
Erenon
Debian Stable hat funktionierende Init-Skripte, daher denke ich, dass diese Frage veraltet ist.

Antworten:

40

Eigentlich habe ich eine gefunden, die hier funktioniert: http://gist.github.com/176149 . So installieren Sie es:

sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord

es laufen zu lassen

sudo chmod +x /etc/init.d/supervisord

und um es automatisch zu planen, tun Sie

sudo update-rc.d supervisord defaults

Stellen Sie sicher, dass in /etc/supervisord.conf die richtige PID angegeben ist, die in /etc/init.d/supervisord zugeordnet ist

example: pidfile=/var/run/supervisord.pid

Stop and Start funktionieren einwandfrei

service supervisord stop
service supervisord start
Caesarsol
quelle
Das ist debian-spezifisch? Fehlende /lib/init/vars.sh und update-rc.d auf einer Centos6.5-Box
EoghanM
1
Woher wissen wir, wohin supervisord.conf geht? / Wo sollen wir supervisord.conf platzieren?
Weiwei
1
Ich fand es viel einfacher, Supervisord einfach aus dem Debian Squeeze Repo zu installieren - Aptitude Install Supervisord beinhaltet die korrekte Einrichtung der Datei /etc/init.d mit Links und legt die Konfigurationsdatei in /etc/supervisor/supervisord.conf ab
RichVel
2
@ RichVel Das ist eine Alpha-Version mit vielen Fehlern. Vielleicht haben die meisten von ihnen keine Auswirkungen auf Ihr System, aber Sie können sich nicht sicher sein, und wenn Sie nicht über die neueste Version verfügen, können Sie dies zu jedem Zeitpunkt tun. Überprüfen Sie die Quelle Repo und Sie werden sehen , dass es mehr als 320 Commits zwischen den Versionen 3.0a8 und 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain
1
@glarrain - danke für den Heads-up- und Vergleichslink ... Wusste nicht, dass - ärgerlich, dass der Debian-Packager eine Alpha-Veröffentlichung aufgenommen hat. Sicherlich besteht der Sinn von Debian Stable darin, nur bewährte Versionen zu verwenden ...
RichVel
13

Ich habe ein Upstart-Skript für Ubuntu 9.10 erstellt

Zum Beispiel habe ich Supervisor in einer virtuellen Umgebung installiert und dann Supervisor von Anfang an gestartet und gesteuert.

Erstellen Sie eine Textdatei /etc/init/supervisord.conf

die inhalte sind:

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

Supervisor wird beim Booten automatisch gestartet. Verwenden Sie, um nach dem Erstellen der .conf-Datei manuell zu starten

sudo start supervisord

Verwenden Sie, um den Dienst manuell zu beenden

sudo stop supervisord

bkc
quelle
2
Vielen Dank! Hier ist ein curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord
Einzeiler
3
Überprüfen Sie immer alle Einzeiler, bevor Sie sie ausführen. Dies ist in Ordnung, aber ich wollte nur diesen Tipp hinzufügen.
Cory Walker
12

Dies ist, was ich auf RHEL 5.4 und CentOS 5.5 verwende

Ich bin nicht sicher, ob es von einigen Konfigurationseinstellungen in meiner supervisord.conf abhängt. Aber es scheint in Ordnung zu funktionieren.

Sie müssen nach der Installation den folgenden Befehl ausführen

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
quelle
würde nur hinzufügen, dass Sie + x-Berechtigungen hinzufügen müssen, bevor Sie versuchen, es auszuführen: chmod + x /etc/init.d/supervisord
JiminyCricket
Vergiss nicht, dass chkconfig --add supervisorddu es nach dem Laufen auch für verschiedene chkconfig supervisord --level 345 on
Corey Ballou
2

Dies funktioniert für mich unter Ubuntu 10.04.3 LTS. Es scheint auch in 8.04 zu funktionieren:

Fügen Sie Folgendes hinzu zu /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

Dann renne:

sudo chmod +x /etc/init.d/supervisord
sudo update-rc.d supervisord defaults

sudo service supervisord start

Keine der anderen Antworten hat für mich funktioniert.

Shennyg
quelle
1

Ich habe diese Zeilen in /etc/init.d/supervisord eingefügt, um die Verarbeitung von "Stopp" -Argumenten zu korrigieren:

do_stop()
{
    /usr/local/bin/supervisorctl stop all
    /usr/local/bin/supervisorctl shutdown
    # Return
    ...

und das funktioniert super bei mir.

rukeba
quelle
1

Supervisor befindet sich anscheinend jetzt in einem geeigneten Repository. Daher sollte es nicht erforderlich sein, Init-Dateien manuell zu erstellen.

sudo apt-get install supervisor

Möglicherweise möchten Sie Ihre alten Dateien vor der Installation zuerst bereinigen (und sichern).

Jeff Bauer
quelle
Sie müssen sich darüber im Klaren sein, dass "einige dieser Pakete erheblich hinter der offiziellen Release-Version zurückbleiben können. Beispielsweise bietet Ubuntu 12.04 (veröffentlicht im April 2012) ein auf Supervisor 3.0a8 (veröffentlicht im Januar 2010) basierendes Paket an." (aus der Dokumentation von Supervisord supervisord.org/… )
glarrain