不败君

前端萌新&初级后端攻城狮

CentOS7配置Supervisor守护进程Laravel队列

发表:2019-11-25 18:31:45

围观(183)

上一篇文章 树洞-未来邮局开源 用到了 Laravel 的延时队列。本地调试直接在根目录执行

php artisan queue:work

就能正常执行,但是到了线上生产环境,不可能一直连着服务器终端执行上面这句代码。


所以这时候就用到了 Supervisor 守护进程。

首先安装 Supervisor

yum install supervisor

安装完成后,修改 /etc/supervisord.conf 文件,在文件末尾 [include] 上方添加代码:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /www/wwwroot/hole.bubaijun.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/www/hole.bubaijun.com/worker.log


代码解释:

[program:laravel-worker]
守护进程应用名称

process_name=%(program_name)s_%(process_num)02d
python字串表达式,用来表示 supervisor 进程启动的名称

command=php /www/hole.bubaijun.com/artisan queue:work sqs --sleep=3 --tries=3
网站目录及被监控的进程启动命令

autostart=true
supervisord 启动时,该进程跟着启动

autorestart=true
自动重启

user=root
以 root 的身份运行

numprocs=8
进程数

redirect_stderr=true
重定向 stderr

stdout_logfile=/www/hole.bubaijun.com/worker.log
进程的日志文件


配置文件修改后,执行 sudo supervisorctl reread

如果报错:

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

则先执行

supervisord

再依次执行

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*


完成后可以查看进程是否正常运行:

ps -ef | grep artisan


另外,博主还遇到了执行 sudo supervisorctl start laravel-worker:* 后返回错误:

laravel-worker_00: ERROR (abnormal termination)

然后将刚写入的配置,即 /etc/supervisord.conf 文件的

command=php /www/wwwroot/hole.bubaijun.com/artisan queue:work sqs --sleep=3 --tries=3

这句 改成

command=php /www/wwwroot/hole.bubaijun.com/artisan queue:work --sleep=3 --tries=3

去掉了 sqs 再次执行就好了。

本文地址 : bubaijun.com/page.php?id=151

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语