安装

  1. $ yum install -y supervisor

然后创建扩展配置文件

这里已 laravel 为例

  1. $ cd /etc/supervisord.d
  2. $ vi laravel-worker.ini

写下以下内容

  1. [program:laravel-worker]
  2. process_name=%(program_name)s_%(process_num)02d
  3. command=php /你的Linux完整项目地址/artisan queue:work redis --sleep=3 --tries=3
  4. autostart=true
  5. autorestart=true
  6. user=www
  7. numprocs=8
  8. redirect_stderr=true
  9. stdout_logfile=/www/wwwroot/app/worker.log

说明

  1. command:XX 程序启动命令
  2. autostart=true ;在supervisord启动的时候也自动启动
  3. autorestart=true ;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
  4. user=www ;用哪个用户启动进程,默认是root
  5. numprocs=8 ;指定 Supervisor 运行 8 queue:work 进程并且监管它们,
  6. redirect_stderr=true ;stderr重定向到stdout,默认false
  7. stdout_logfile=/www/wwwroot/app/worker.log ;stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件

执行命令重启Supervisor:

  1. $ sudo supervisorctl reread

可是报错了

  1. error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

处理结果如下

执行命令

  1. $ supervisord

再次执行

  1. $ sudo supervisorctl reread
  2. $ sudo supervisorctl update
  3. $ sudo supervisorctl start laravel-worker:*

OK,问题解决