web-dev-qa-db-fra.com

Installez et configurez Supervisord sur Centos 7 pour exécuter Laravel files d'attente en permanence

Je veux utiliser Laravel système de files d'attente dans mon projet et je veux exécuter php artisan queue: work en permanence sur l'arrière-plan du serveur, j'ai fait quelques recherches à ce sujet et j'ai trouvé une ligne de commande qui peut l'exécuter même après avoir quitté le terminal ssh mais elle peut être arrêtée dans certains cas et peut me poser de terribles problèmes. Donc après un certain temps, j'ai découvert qu'il existe un package nommé Supervisord qui peut redémarrer la commande même après le serveur est redémarré. Mais malheureusement, ma connaissance de Linux est faible, donc je veux demander à quelqu'un d'aider de 0 à 100 étape par étape comment installer Supervisord et le configurer sur centos 7 et ensuite définir la ligne de commande de file d'attente. Merci beaucoup ..

15
Tohid Dadashnezhad

voici comment installer et configurer supervord sur centos 7 pour exécuter Laravel files d'attente en permanence:

  1. easy_install supervisor
  2. yum install supervisor
  3. vim /etc/supervisord.conf modifier le programme de section comme suit:
[program:laravel-worker]
command=php /path/to/app.com/artisan queue:work 
process_name=%(program_name)s_%(process_num)02d
numprocs=8 
priority=999 
autostart=true
autorestart=true  
startsecs=1
startretries=3
user=Apache
redirect_stderr=true
stdout_logfile=/path/to/log/worker.log
  1. systemctl enable supervisord pour exécuter automatiquement au démarrage
  2. systemctl restart supervisord pour redémarrer le service
38
Abdu

J'espère que cela sera utile à quelqu'un, c'est le processus que j'ai suivi en plus de la réponse de @ Abdu pour faire fonctionner CentOS 7.

1. Installer le superviseur

easy_install supervisor

* S'il n'est pas installé, exécutez yum install -y python-setuptools et alors easy_install supervisor

2. Travail de préparation

Pour lancer la configuration idéale, vous devez exécuter ce qui suit ...

# create directory for supervisor logs
mkdir /var/log/supervisor

# create directory for supervisor configs
mkdir -p /etc/supervisor/conf.d

# create config directory for supervisor
cat <<EOT >> /etc/supervisor/supervisord.conf
; supervisor config file

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf
EOT

# create systemctl service script
cat <<EOT >> /lib/systemd/system/supervisord.service
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
EOT

Une fois que vous avez fait cela, vous devriez maintenant pouvoir démarrer et arrêter le superviseur en utilisant systemctl. Pour démarrer systemctl, exécutez systemctl start supervisord. Pour afficher l'état du superviseur, exécutez systemctl status supervisord.

Vous pouvez créer autant de configurations personnalisées que vous le souhaitez sous /etc/supervisor/conf.d

. Activer au démarrage du système

Vous devez également activer supervisord au démarrage en exécutant

systemctl enable supervisord
3
Chris

Sur mon compte Bluehost systemctl n'était pas en cours d'exécution, mais à la place chkserv était utilisé pour surveiller et redémarrer les processus, donc les deux réponses ici ne fonctionnaient pas complètement pour moi.

De plus, j'ai rencontré une erreur avec easy_install supervisor, car il a essayé d'installer la nouvelle version 4.x.x, qui nécessite Python > 2.6, alors que 2.6 était la version exacte de Python fonctionnant sur ma machine.

Voici ce qui a fonctionné pour moi:

  1. yum install -y python-setuptools

  2. easy_install supervisor==3.4.0

  3. nano /etc/supervisord.conf et ajouter

[supervisord]
nodaemon=true

[include]
files = /etc/supervisor/conf.d/*.conf

[program:laravel-worker]
command=php artisan queue:work --tries=1
autostart=true
autorestart=true
stderr_logfile=/var/log/queue.err.log
stdout_logfile=/var/log/queue.out.log
  1. nano /etc/chkserv.d/chkservd.conf, ajoutez la ligne supervisord:1, puis enregistrez le fichier

  2. touch /etc/chkserv.d/supervisord pour créer un fichier de configuration chkservd

  3. nano /etc/chkserv.d/supervisord, ajoutez la ligne service[supervisord]=x,x,x,service supervisord restart,supervisord,root, puis enregistrez le fichier

  4. supervisord s'affichera désormais dans WHM sous Service Manager, et chkservd le démarrera et s'assurera qu'il continue de fonctionner, mais pour le démarrer manuellement, exécutez simplement supervisord

Pour plus d'informations sur l'ajout d'un service à chkservd, cliquez ici .

0
kregus