Come avviare automaticamente supervisord su Linux (Ubuntu)


38

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?


come intendi "fallire"? btw; questa domanda sembra appartenere a serverfault.
Erenon,

Debian stable ha script di init funzionanti, quindi suppongo che questa domanda non sia aggiornata.

Risposte:


40

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

Questo è debian specifico? Manca /lib/init/vars.sh e update-rc.d su una scatola
Centos6.5

1
come facciamo a sapere dove va supervisord.conf? / Dove dovremmo mettere supervisord.conf?
Weiwei,

1
Ho scoperto che era molto più semplice installare supervisord dal repository di compressione Debian - fare aptitude install supervisord include la corretta installazione del file /etc/init.d con collegamenti e mette il file di configurazione in /etc/supervisor/supervisord.conf
RichVel

2
@RichVel Questa è una versione alfa, con molti bug. Forse la maggior parte di essi non influisce sul tuo sistema, ma non puoi esserne sicuro e non avere l'ultima versione può morderti in qualsiasi momento. Controlla il repository di origine e vedrai che ci sono più di 320 commit tra le versioni 3.0a8 e 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain - grazie per l'heads-up e il link di confronto ... Non me ne sono reso conto - fastidioso che il packager Debian abbia rilasciato una versione alpha. Sicuramente il punto di Debian stable è usare solo versioni collaudate ...
RichVel,

13

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


2
Grazie! Ecco un esempio: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(devi essere root)
charlax,

3
Prima di eseguirli, controlla sempre i gist one-liners. Questo va bene, ma volevo solo aggiungere quel suggerimento.
Cory Walker,

12

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

aggiungerei solo che è necessario aggiungere le autorizzazioni + x prima di provare a eseguirlo: chmod + x /etc/init.d/supervisord
JiminyCricket

Non dimenticare che dopo aver eseguito chkconfig --add supervisorddevi anche abilitarlo per diversi livelli di corsa tramitechkconfig supervisord --level 345 on
Corey Ballou,


2

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.


1

Ho aggiunto queste righe in /etc/init.d/supervisord per correggere l'elaborazione dell'argomento "stop":

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

e questo funziona alla grande per me.


1

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.


Devi essere consapevole del fatto che "Alcuni di questi pacchetti possono essere notevolmente in ritardo rispetto alla versione ufficiale. Ad esempio, Ubuntu 12.04 (rilasciato ad aprile 2012) offre un pacchetto basato su Supervisor 3.0a8 (rilasciato a gennaio 2010)." (dalla documentazione di Supervisord supervisord.org/… )
glarrain,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.