Настройка Supervisord на сервере AWS AMI Linux

Я пытаюсь заставить супервизора работать, чтобы убедиться, что моя система очереди всегда работает.

Вот шаги, которые я сделал, которые я собрал из разных источников: (Ran как root или суперпользователь)

1) $ easy_install supervisor

2) $ echo_supervisord_conf > /etc/supervisord.conf

3) $ sudo vi supervisord.conf

4) Вставка следующего в конец файла:

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

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

6) $ supervisorctl

7) supervisor > status

супервизоp >

Он ничего не отображает.

Ответы

Ответ 1

Вот решение, с которым я пошел. AWS AMI включает в себя pip для установки приложений Python. Вот команды установки:

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

После установки диспетчера вам необходимо вручную создать свой запуск script, чтобы включить или отключить службу.

Это будет отличаться от вашего дистрибутива Linux, Ubuntu создаст init script для вас при установке, другие дистрибутивы, такие как AMI, не будут. Вот отличный ресурс для различных сценариев запуска дистрибутива Linux:

https://github.com/Supervisor/initscripts

Затем вы можете добавить супервизора в chkconfig для автоматического запуска при перезагрузке системы.

Вот, что работает для меня:

Путь

/etc/init.d/supervisord

Пример Init script для AWS-AMI или 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

После закрытия и сохранения сделайте его выполнимым для всех пользователей:

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

Затем вам нужно будет подтвердить, что процесс супервизора фактически запущен, выполнив следующую команду:

 ps -fe | grep supervisor

Если вы не видите /usr/bin/supervisord в качестве запущенного процесса, вам необходимо запустить его вручную:

sudo service supervisord start

Супервизор следует запускать в любое время, когда сервер перезагружается. Это можно сделать так же, как apache включен после перезагрузки с помощью chkconfig.

Сначала добавьте его в chkconfig, ваш список процессов запуска

sudo chkconfig --add supervisord

Затем скажите chkconfig включить его после загрузки

sudo chkconfig supervisord on

Ответ 2

supervisor не знает, что вы добавили программу. Это ответ на serverfault, выполните следующие действия:

supervisorctl reread
supervisorctl update

Кстати, проще поддерживать конфигурационные файлы с помощью синтаксиса conf.d. Другими словами, создайте файл с именем /etc/supervisor/conf.d/artisan.conf. Все остальное одно и то же, но проще управлять версиями файлов конфигурации и синхронизировать их с машинами при настройке.