Supervisor 配置 每次都会踩好多坑
基本每次都会花好多的时间去踩不同的坑,索性今天就花点时间记录下踩的坑吧!
既然是用Python开发的一个client/server服务,所以我选择间接的通过python来安装supervisor
1.安装
先安装 Python 的 easy_install,再通过 easy_install 安装 supervisor
# yum install python-setuptools
# easy_install supervisor
2.配置文件
生成配置文件,并建立相应目录,管理 supervisor 启动进程
# echo_supervisord_conf > /etc/supervisord.conf
# mkdir -p /etc/supervisor/conf.d/
1
2
编辑 /etc/supervisord.conf,修改 [include] 区块内容:
[include]
files = /etc/supervisor/conf.d/*.conf
1
2
这样, supervisor 会加载 /etc/supervisor/conf.d/ 下的所有 .conf 文件
3.自动启动
在 https://github.com/Supervisor/initscripts 下载 CentOS 使用的自动启动服务脚本 centos-systemd-etcs
# wget -O /usr/lib/systemd/system/supervisord.service https://github.com/Supervisor/initscripts/raw/master/centos-systemd-etcs
将 supervisord 服务设为自启动
# systemctl enable supervisord.service
输入 supervisorctl 命令可以进入 supervisor 控制台
4.设置 Laravel 队列
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /data/wwwroot/app.com/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=www
numprocs=8
redirect_stderr=true
stdout_logfile=/data/wwwroot/app.com/storage/logs/queue.log
//注意:检查你的php所在目录和项目所在目录 是否对应
这里开启了 8 个 queue:work 进程,并监视他们,如果失败的话,自动重启;在项目的 storage/logs/queue.log 记录日志。
启动 supervisor 服务:
# supervisord
1
至此, supervisor 安装及 Laravel 队列设置完毕
如果以后配置文件有修改,或者新增,进入 supervisor 控制台,执行下面的命令
# supervisorctl
supervisorctl> reread
supervisorctl> update
supervisorctl> start laravel-worker:*
5.遇到的一些坑
1.unix:///tmp/supervisor.sock no such file问题
重新生成配置文件 echo_supervisord_conf> /etc/supervisord.conf
按上面步骤修改配置
supervisord -c/etc/supervisord.conf
还有一种说法是将supervisord.conf中的/tmp 该为/var下,具体请看https://blog.csdn.net/qq_28885149/article/details/79364685
2.laravel-worker-ui:laravel-worker-ui_00 FATAL can't find command '/usr/local/php/bin/php'
检查supervisord.conf中的php目录是否正确
3.在使用命令supervisorctl start all启动控制进程时,遇到如下错误
unix:///tmp/supervisor.sock no such file
出现上述错误的原因是supervisord并未启动,只要在命令行中使用命令supervisord启动supervisord即可。
一些相关命令:
【启动supervisord】 supervisord 建议supervisord -c/etc/supervisord.conf
【停止supervisord】 supervisorctl shutdown
【重新加载配置文件】 supervisorctl reload
【进程管理】
1. 启动supervisord管理的所有进程
supervisorctl start all
2. 停止supervisord管理的所有进程
supervisorctl stop all
3. 启动supervisord管理的某一个特定进程
supervisorctl start program-name // program-name为[program:xx]中的xx
4. 停止supervisord管理的某一个特定进程
supervisorctl stop program-name // program-name为[program:xx]中的xx
5. 重启所有进程或所有进程
supervisorctl restart all // 重启所有
supervisorctl reatart program-name // 重启某一进程,program-name为[program:xx]中的xx
6. 查看supervisord当前管理的所有进程的状态
supervisorctl status
写的不错,赞助一下主机费
扫一扫,用支付宝赞赏

扫一扫,用微信赞赏

暂无评论~~