Supervisor 安装及配置
文章目录
- Supervisor 安装及配置
-
- 安装 supervisor
- 配置文件
- 自动启动
- 设置 Laravel 队列
- 重要提示
安装 supervisor
先安装 Python 的 easy_install,再通过 easy_install 安装 supervisor
yum install python-setuptools
easy_install supervisor
supervisor 安装完成后会生成三个执行程序:
supervisord
:守护进程服务(用于接收进程管理命令)
supervisorctl
:客户端(用于和守护进程通信,发送管理进程的指令)
echo_supervisord_conf
:生成初始配置文件程序
配置文件
运行
supervisord
服务的时候,需要指定 supervisor 配置文件,如果没有显示指定,默认在以下目录查找:
/etc/supervisord.conf
/etc/supervisor/supervisord.conf
//默认是没有这些配置文件的
生成配置文件,并建立相应目录,管理 supervisor 启动进程
echo_supervisord_conf > /etc/supervisord.conf
mkdir -p /etc/supervisor/conf.d/
编辑
/etc/supervisord.conf
,修改最下面
[include]
区块内容:
[include]
files = /etc/supervisor/conf.d/*.conf
这样, supervisor 会加载
/etc/supervisor/conf.d/
下的所有
.conf
文件
自动启动
在 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 控制台
设置 Laravel 队列
新建 /etc/supervisor/conf.d/laravel-worker.conf 文件:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /xxxx/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=www (注意用户)
numprocs=8
redirect_stderr=true
stdout_logfile=/xxxx/storage/logs/queue.log
这里需要注意的问题是文件名和头部 [program:XXX]
一定要一致,不然加载不到!
这里开启了 8 个
queue:work
进程,并监视他们,如果失败的话,自动重启;在项目的
storage/logs/queue.log
记录日志。
启动 supervisord 服务
supervisord -c /etc/supervisord.conf
至此, supervisor 安装及 Laravel 队列设置完毕!
如果以后配置文件有修改,或者新增,进入 supervisor 控制台,执行下面的命令:
# supervisorctl
supervisorctl> reread
supervisorctl> update
supervisorctl> start laravel-worker:*
重要提示
supervisor
进程已启动的情况下,长时间之后再添加新的配置的时候,通过以下方式重启
supervisor
进程!
systemctl restart supervisord.service