简单生活,热爱一切。

Supervisor 配置 每次都会踩好多坑

基本每次都会花好多的时间去踩不同的坑,索性今天就花点时间记录下踩的坑吧!

Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制

既然是用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

⬆️

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~