2015-02-24 27 views
14

Próbuję przekonać nadzorcę, aby upewnił się, że mój system kolejki jest zawsze uruchomiony.Konfigurowanie Supervisora ​​na serwerze AWS AMI Linux

Oto kroki zrobiłem, które pieced razem z różnych źródeł: (Ran jako root lub administrator)

1) $ easy_install przełożonego

2) $ echo_supervisord_conf>/etc /supervisord.conf

3) $ sudo vi supervisord.conf

4) wklejony Follo Skrzydło do końca pliku:

command =/usr/bin/php/ścieżka/do/NazwaAp/rzemieślnik --env = produkcja --timeout = 240 kolejka: słuchać

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

6) $ supervisorctl

7) nadzorca> stan

nadzorca>

Nic nie wyświetla.

Odpowiedz

16

Oto rozwiązanie, z którym współpracowałem. AWS AMI zawiera pip do instalowania aplikacji Python. Oto komendy setup:

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

Po zainstalowaniu przełożonego trzeba będzie ręcznie zbudować skrypt startowy, aby włączyć usługę i wyłączać.

To będzie się różnić w zależności od dystrybucji Linuksa, Ubuntu utworzy skrypt startowy dla ciebie podczas instalacji, inne dystrybucje, takie jak AMI, nie będą. Tutaj jest doskonałym źródłem informacji dla różnych skryptów startowych Linux distro-up:

https://github.com/Supervisor/initscripts

Można następnie dodać przełożonego do chkconfig zacząć automatycznie po ponownym uruchomieniu systemu.

Oto jeden, który działa dla mnie:

Ścieżka

/etc/init.d/supervisord 

Przykład Init Script dla AWS-AMI lub 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 

po zamknięciu i zapisać, uczynić go wykonywalnym przez wszystkich użytkowników:

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

Będziesz następny chcą potwierdzić, że proces supervisord jest w istocie systemem, uruchamiając następującą komendę:

ps -fe | grep supervisor 

Jeśli nie widzisz/usr/bin/supervisord jako uruchomionego procesu, to musisz zacząć ręcznie:

sudo service supervisord start 

Supervisord należy uruchomić w dowolnym momencie, gdy serwer zostanie ponownie uruchomiony. Można to zrobić podobnie do włączania Apache po ponownym uruchomieniu komputera za pomocą polecenia chkconfig.

Pierwszy dodać go do chkconfig, twój rozruch lista proces

sudo chkconfig --add supervisord 

Wtedy powiedzieć chkconfig aby go włączyć po starcie

sudo chkconfig supervisord on 
+0

Utworzono plik "/etc/init.d/supervisord", a następnie uruchom "sudo service supervisord start", ale ja otrzymał "env: /etc/init.d/supervisord: Odmowa uprawnień" .... jakiś pomysł? Używam ec2 Amazon AIM z centos 7 – llioor

+1

'chmod a + x/etc/init.d/supervisord', aby uczynić go wykonywalnym był brakujący krok w tej bardzo szczegółowej odpowiedzi :) –

+0

Dzięki Filipe, będę aktualizować odpowiedź . –

4

Przełożony nie wie, że dodałeś program. This is answered on serverfault, wykonaj następujące czynności:

supervisorctl reread 
supervisorctl update 

Nawiasem mówiąc, łatwiej jest utrzymać plików konfiguracyjnych za pomocą składni conf.d. Innymi słowy, utwórz plik o nazwie /etc/supervisor/conf.d/artisan.conf. Wszystko inne jest takie samo, ale łatwiej jest kontrolować pliki konfiguracyjne i synchronizować je z komputerami podczas instalacji.

+0

Hej, dzięki za szybką odpowiedź! Nie mogę się doczekać, aby wysiąść i przetestować to! –

+0

Próbowałem tego i miałem pewne błędy. Zauważyłem, że nie mogę uzyskać przełożonego, aby zacząć, kiedy biegam jako su $ service supervisord start Otrzymuję superwizora: nierozpoznaną usługę. Czy potrzebuję takiego skryptu startowego? http://translate.google.com/translate?hl=pl&sl=ja&u=http://d.hatena.ne.jp/massat/20111013/1318484253&prev=search –

+0

jak zainstalowałeś przełożonego? Zakładam, że jesteś na AWS Linux AMI? (edytuj swoje oryginalne pytanie, dodaj te rzeczy, a następnie dodaj komentarz tutaj.) Spróbuję odtworzyć.) – tedder42