2015-02-24 11 views
14

Sto cercando di far funzionare il supervisore per assicurarsi che il mio sistema di coda sia sempre in esecuzione.Impostazione di Supervisord su un server AWS AMI Linux

qui sono i passi che ho preso, che ho messo insieme da varie fonti: (Ran come root o super utente)

1) $ easy_install supervisore

2) $ echo_supervisord_conf>/etc /supervisord.conf

3) $ sudo vi supervisord.conf

4) incollato il follo ala alla fine del file:

comando =/usr/bin/php/path/to/NomeApp/artigianale --env = produzione --timeout = 240 coda: ascoltare

5) $ supervisord -c /etc/supervisord.conf

6) $ supervisorctl

7) supervisore> stato

supervisore>

Non mostra nulla.

risposta

16

Ecco la soluzione con cui sono andato. AWS AMI include pip per l'installazione di applicazioni Python. Qui ci sono i comandi di configurazione:

$ sudo pip install supervisor 
$ echo_supervisord_conf 
$ sudo su - 
$ echo_supervisord_conf > /etc/supervisord.conf 

Dopo aver installato supervisore è necessario creare manualmente lo script di start-up per trasformare il servizio on e off.

Questo varierà con la tua distribuzione Linux, Ubuntu creerà uno script di init per te quando installerai, altre distribuzioni come l'AMI non lo faranno. Qui è una grande risorsa per i vari script di init-up distro Linux:

https://github.com/Supervisor/initscripts

È possibile quindi aggiungere supervisore di chkconfig per iniziare automaticamente al riavvio del sistema.

Ecco quello che funziona per me:

Percorso

/etc/init.d/supervisord 

Esempio Init Script per AWS-AMI o RedHat Linux

#!/bin/bash 
# 
# supervisord Startup script for the Supervisor process control system 
# 
# Author:  Mike McGrath <[email protected]> (based off yumupdatesd) 
#    Jason Koppe <[email protected]> adjusted to read sysconfig, 
#     use supervisord tools to start/stop, conditionally wait 
#     for child processes to shutdown, and startup later 
#    Erwan Queffelec <[email protected]> 
#     make script LSB-compliant 
# 
# chkconfig: 345 83 04 
# description: Supervisor is a client/server system that allows \ 
# its users to monitor and control a number of processes on \ 
# UNIX-like operating systems. 
# processname: supervisord 
# config: /etc/supervisord.conf 
# config: /etc/sysconfig/supervisord 
# pidfile: /var/run/supervisord.pid 
# 
### BEGIN INIT INFO 
# Provides: supervisord 
# Required-Start: $all 
# Required-Stop: $all 
# Short-Description: start and stop Supervisor process control system 
# Description: Supervisor is a client/server system that allows 
# its users to monitor and control a number of processes on 
# UNIX-like operating systems. 
### END INIT INFO 

# Source function library 
. /etc/rc.d/init.d/functions 

# Source system settings 
if [ -f /etc/sysconfig/supervisord ]; then 
    . /etc/sysconfig/supervisord 
fi 

# Path to the supervisorctl script, server binary, 
# and short-form for messages. 
supervisorctl=/usr/local/bin/supervisorctl 
supervisord=${SUPERVISORD-/usr/local/bin/supervisord} 
prog=supervisord 
pidfile=${PIDFILE-/tmp/supervisord.pid} 
lockfile=${LOCKFILE-/var/lock/subsys/supervisord} 
STOP_TIMEOUT=${STOP_TIMEOUT-60} 
OPTIONS="${OPTIONS--c /etc/supervisord.conf}" 
RETVAL=0 

start() { 
    echo -n $"Starting $prog: " 
    daemon --pidfile=${pidfile} $supervisord $OPTIONS 
    RETVAL=$? 
    echo 
    if [ $RETVAL -eq 0 ]; then 
     touch ${lockfile} 
     $supervisorctl $OPTIONS status 
    fi 
    return $RETVAL 
} 

stop() { 
    echo -n $"Stopping $prog: " 
    killproc -p ${pidfile} -d ${STOP_TIMEOUT} $supervisord 
    RETVAL=$? 
    echo 
    [ $RETVAL -eq 0 ] && rm -rf ${lockfile} ${pidfile} 
} 

reload() { 
    echo -n $"Reloading $prog: " 
    LSB=1 killproc -p $pidfile $supervisord -HUP 
    RETVAL=$? 
    echo 
    if [ $RETVAL -eq 7 ]; then 
     failure $"$prog reload" 
    else 
     $supervisorctl $OPTIONS status 
    fi 
} 

restart() { 
    stop 
    start 
} 

case "$1" in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    status) 
     status -p ${pidfile} $supervisord 
     RETVAL=$? 
     [ $RETVAL -eq 0 ] && $supervisorctl $OPTIONS status 
     ;; 
    restart) 
     restart 
     ;; 
    condrestart|try-restart) 
     if status -p ${pidfile} $supervisord >&/dev/null; then 
      stop 
      start 
     fi 
     ;; 
    force-reload|reload) 
     reload 
     ;; 
    *) 
     echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload}" 
     RETVAL=2 
    esac 

    exit $RETVAL 

Dopo aver chiudere e salvare, renderlo eseguibile da tutti gli utenti:

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

Si sarebbe vicino voler confermare che il processo supervisord è infatti in esecuzione eseguendo il comando seguente:

ps -fe | grep supervisor 

Se non vedi/usr/bin/supervisord come un processo in esecuzione, allora avete bisogno per iniziare esso manualmente:

sudo service supervisord start 

Supervisord deve essere avviato in qualsiasi momento che il server viene riavviato. Questo può essere fatto in modo simile a come viene attivato Apache dopo il riavvio usando chkconfig.

Prima inserirlo al chkconfig, la vostra start up lista dei processi

sudo chkconfig --add supervisord 

poi dire chkconfig per accenderlo dopo il boot

sudo chkconfig supervisord on 
+0

Ho creato il file "/etc/init.d/supervisord" e poi ho eseguito "sudo service supervisord start" ma io ricevuto "env: /etc/init.d/supervisord: permesso negato" .... qualche idea? Sto usando ec2 Amazon AIM con centos 7 – llioor

+1

'chmod a + x/etc/init.d/supervisord' per renderlo eseguibile era un passo mancante in questa risposta molto dettagliata :) –

+0

Grazie Filipe, aggiornerò la risposta . –

4

Il supervisore non sa che è stato aggiunto un programma. This is answered on serverfault, effettuare le seguenti operazioni:

supervisorctl reread 
supervisorctl update 

Tra l'altro, è più facile da mantenere i file di configurazione utilizzando la sintassi conf.d. In altre parole, creare un file chiamato /etc/supervisor/conf.d/artisan.conf. Tutto il resto è lo stesso, ma è più semplice controllare la versione dei file di configurazione e sincronizzarli con le macchine al momento dell'impostazione.

+0

Hey grazie per la vostra risposta rapida! Non vedo l'ora di scendere e testarlo! –

+0

Ho provato e ho avuto alcuni errori. Ho notato che non riesco ad avviare il supervisore, quando si esegue come su $ service supervisord start ottengo supervisore: servizio non riconosciuto. Ho bisogno di uno script di avvio come questo? http://translate.google.com/translate?hl=it&sl=ja&u=http://d.hatena.ne.jp/massat/20111013/1318484253&prev=search –

+0

come hai installato il supervisore? Presumo che tu sia sull'AMI Linux di AWS? (modifica la tua domanda originale, aggiungi quella roba, quindi aggiungi un commento qui. Proverò a riprodurlo.) – tedder42

Problemi correlati