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 ..
voici comment installer et configurer supervord sur centos 7 pour exécuter Laravel files d'attente en permanence:
easy_install supervisor
yum install supervisor
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
systemctl enable supervisord
pour exécuter automatiquement au démarragesystemctl restart supervisord
pour redémarrer le serviceJ'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
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:
yum install -y python-setuptools
easy_install supervisor==3.4.0
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
nano /etc/chkserv.d/chkservd.conf
, ajoutez la ligne supervisord:1
, puis enregistrez le fichier
touch /etc/chkserv.d/supervisord
pour créer un fichier de configuration chkservd
nano /etc/chkserv.d/supervisord
, ajoutez la ligne service[supervisord]=x,x,x,service supervisord restart,supervisord,root
, puis enregistrez le fichier
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 .