在centos 7上安装和配置supervisord以永久运行Laravel队列

Toh*_*had 19 supervisord laravel centos7 laravel-queue

我想在我的项目中使用Laravel队列系统,我想运行php artisan队列:在服务器的后台永久工作,我做了一些搜索,我找到了一个命令行,即使从ssh终端退出后也可以运行它但它可以在某些情况下会失败,可能会给我带来可怕的问题.所以过了一会儿我发现有一个名为Supervisord的软件包,即使服务器重启后也可以重启命令.但不幸的是我的linux知识很低,所以我想请一个人从0到100逐步帮助如何安装Supervisord并在centos 7上配置它,之后设置队列命令行.非常感谢..

Abd*_*bdu 50

这里是如何在centos 7上安装和配置supervisord以永久运行Laravel队列:

  1. easy_install supervisor
  2. yum install supervisor
  3. vim /etc/supervisord.conf 编辑部分程序如下:
[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
Run Code Online (Sandbox Code Playgroud)
  1. systemctl enable supervisord 在开始时自动运行
  2. systemctl restart supervisord 重启服务

  • 您假设人们有“ easy_install”,就我而言,我的新CentOS没有。要获得它:`yum install -y python-setuptools`然后可以继续执行(除非您是root,否则所有命令以`sudo`开头)。这是行不通的:`yum install administrator`:已经通过easy_install安装了。 (3认同)

Chr*_*ris 5

希望这对某人有用,这是我在@Abdu的回答之外经过的使CentOS 7正常运行的过程。

1.安装主管

easy_install supervisor

*如果未安装,请运行yum install -y python-setuptools然后easy_install supervisor

2.准备工作

为了使理想的设置运行,您应该运行以下命令...

# 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
Run Code Online (Sandbox Code Playgroud)

完成此操作后,您现在应该可以使用systemctl启动和停止主管。要启动systemctl,请运行systemctl start supervisord。要查看主管的状态,请运行systemctl status supervisord

您可以根据需要创建任意数量的自定义配置 /etc/supervisor/conf.d

3.在系统启动时启用

您还应该在启动时通过运行启用超级用户

systemctl enable supervisord
Run Code Online (Sandbox Code Playgroud)

  • 如果收到错误消息“unix:///var/run/supervisor.sock no such file”`[unix_http_server] file=/var/run/supervisor.sock,请将这些添加到 /etc/supervisor/supervisord.conf 的顶部; (套接字文件的路径) chmod=0700 ; sockef文件模式(默认0700)` (3认同)