零、
近期发现宝塔的supervisor(一个进程管理器)总是出问题,改为了手动启动进程,但是手动启动又非常不方便,尤其是启动了多个名字相同的进程(例如swoole)的时候,难以管理, 于是研究了下supervisor的原生用法,发现也很简单,类似于nginx, 记录一下
一、安装
yum install supervisor
安装完成之后默认在 /etc 下生成 主配置文件 supervisord.conf 和 一个子配置文件的空目录 supervisord.d, 主配置文件包含子目录所有*.ini 结尾的文件, 一般不用去管;子配置文件以*.ini 结尾, 一个进程对应一个ini文件。 类似nginx的 nginx.conf 和 conf.d/
/etc
├──
├── supervisord.conf
├── supervisord.d
│ ├── fyshop_swoole.ini // 刚安装完是没有这个的。
│ └── beilu_swoole.ini // 刚安装完是没有这个的。
├──
二、启动服务
supervisord -c /etc/supervisord.conf
三、添加子配置文件,以.ini结尾
; 程序名称,终端控制时需要的标识
[program:fyshop_swoole]
; 命令执行的目录
directory=/www/wwwroot/feiyu211.sdyingfeng.cn/
; 运行程序的命令
command=/usr/bin/php think swoole
; 默认为1
numprocs=1
; 默认为 %(program_name)s,即 [program:x] 中的 x
process_name=%(program_name)s_%(process_num)02d
; 以哪个用户来运行该进程
user=root
; supervisor启动时自动启动该应用
autostart=true
; 程序崩溃时自动重启
autorestart=true
; 进程持续运行多久才认为是启动成功
; startsecs=2
; 重试次数
; startretries=5
; 重定向输出的日志
redirect_stderr=true
stdout_logfile=/www/wwwlogs/supervisor_feiyu_swoole.log
loglevel=info
四、加载子配置并启动
supervisorctl update
supervisorctl status
supervisorctl restart fyshop_swoole:*
五、其他命令
supervisorctl restart all
supervisorctl reload //重启
supervisorctl status //查看所有进程的状态
supervisorctl stop demo //停止
supervisorctl start demo //启动
supervisorctl restart demo //重启
supervisorctl update //配置文件修改后可以使用该命令加载新的配置
六、遇到的问题
1.进程无法查看/启动/重启?
supervisorctl status
unix:///run/supervisor/supervisor.sock no such file
删除所有supervisord 进程, 使用 supervisord -c /etc/supervisord.conf 重新启动
参考 :