30

我想在我的项目中使用 Laravel 队列系统,我想在服务器后台运行php artisan queue:work,我对此进行了一些搜索,我找到了一个命令行,即使从 ssh 终端退出后也可以运行它,但它可以在某些情况下情绪低落,会给我带来可怕的问题。所以过了一会儿我发现有一个名为 Supervisord 的包,即使在服务器重新启动后也可以重新启动命令。所以我想请人从0到100一步一步地帮助如何安装Supervisord并在centos 7上配置它,然后设置队列命令行。太感谢了..

4

3 回答 3

81

这是在 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
  1. systemctl enable supervisord在启动时自动运行
  2. systemctl restart supervisord重新启动服务
于 2017-11-16T05:23:36.563 回答
14

希望这对某人有用,这是我除了@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

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

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

3.在系统启动时启用

您还应该通过运行在启动时启用 supervisord

systemctl enable supervisord
于 2019-07-23T11:02:01.760 回答
1

在我的 Bluehost 帐户systemctl上没有运行,而是chkserv用于监视和重新启动进程,因此这里的两个答案对我来说并不完全有效。

此外,我遇到了一个错误easy_install supervisor,因为它试图安装新的 4.xx 版本,这需要Python > 2.6,而 2.6 是在我的机器上运行的 Python 的确切版本。

这对我有用:

  1. yum install -y python-setuptools

  2. easy_install supervisor==3.4.0

  3. nano /etc/supervisord.conf并添加

[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,添加行supervisord:1,然后保存文件

  2. touch /etc/chkserv.d/supervisord创建 chkservd 配置文件

  3. nano /etc/chkserv.d/supervisord,添加行service[supervisord]=x,x,x,service supervisord restart,supervisord,root,然后保存文件

  4. supervisord现在将显示在 WHM 下Service Managerchkservd并将启动它并确保它继续运行,但要手动启动它,只需运行supervisord

有关添加服务的更多信息chkservd请单击此处

于 2019-08-20T13:19:53.187 回答