Configurer Supervisord sur un serveur AWS AMI Linux

j'essaie de faire travailler mon superviseur pour m'assurer que mon système de file d'attente fonctionne toujours.

Voici les mesures que j'ai prises, que j'ai rassemblées à partir de diverses sources: (Couru en tant que root ou super utilisateur)

1) $ easy_install superviseur

2) $ echo_supervisord_conf > / etc / supervisord.conf

3) $ sudo vi supervisord.conf

4) Collé ce qui suit à la fin du dossier:

commande= / usr/bin/php / path/to/AppName / artisan --env=production --timeout=240 file:listen

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

6) $ supervisorctl

7) superviseur > statut

superviseur >

Il n'affiche rien.

18
demandé sur willoller 2015-02-24 20:50:09

2 réponses

Voici la solution que j'ai choisie. AWS AMI inclut pip pour l'installation d'applications Python. Voici les commandes de configuration:

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

après avoir installé supervisor, vous devrez construire manuellement votre script de démarrage pour activer et désactiver le service.

cela va varier avec votre distribution Linux, Ubuntu va créer un script d'initialisation pour vous lorsque vous installez, les autres distributions comme AMI ne le feront pas. Voici une grande ressource pour divers Linux distro init scripts:

https://github.com/Supervisor/initscripts

vous pouvez alors ajouter superviseur à chkconfig pour démarrer automatiquement sur le redémarrage du système.

voici un qui fonctionne pour moi:

Chemin

/etc/init.d/supervisord

exemple de Script Init pour AWS-AMI ou RedHat Linux

#!/bin/bash
#
# supervisord   Startup script for the Supervisor process control system
#
# Author:       Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd)
#               Jason Koppe <jkoppe@indeed.com> adjusted to read sysconfig,
#                   use supervisord tools to start/stop, conditionally wait
#                   for child processes to shutdown, and startup later
#               Erwan Queffelec <erwan.queffelec@gmail.com>
#                   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 "" 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

après que vous fermez et sauver, faites-le exécutable par tous les utilisateurs:

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

vous voulez ensuite confirmer que le processus de supervisord fonctionne en exécutant la commande suivante:

 ps -fe | grep supervisor

si vous ne voyez pas /usr / bin / supervisord comme un processus en cours d'exécution, vous devez le démarrer manuellement:

sudo service supervisord start

Supervisord doit être démarré chaque fois que le serveur est redémarré. Cela peut être fait de la même façon apache est activée après le redémarrage utilisation de chkconfig.

ajouter D'abord à chkconfig, votre liste de processus de démarrage

sudo chkconfig --add supervisord

alors dites à chkconfig de l'allumer après le démarrage

sudo chkconfig supervisord on
31
répondu zeros-and-ones 2016-12-21 01:02:54

le superviseur ne sait pas que vous avez ajouté un programme. c'est répondu sur serverfault , faire ce qui suit:

supervisorctl reread
supervisorctl update

soit dit en passant, il est plus facile de maintenir les fichiers de configuration en utilisant la syntaxe conf.d . En d'autres termes, créer un fichier appelé /etc/supervisor/conf.d/artisan.conf . Tout le reste est le même, mais il est plus facile de contrôler la version de vos fichiers de configuration et de les synchroniser avec les machines lors de la configuration.

4
répondu tedder42 2017-04-13 12:13:41