安装
服务器上带的python是2.7版本的,直接执行安装
pip install supervisor
配置
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
打开配置文件
vim /etc/supervisord.conf
在配置文件底部,配置include
[include] # 一定要把这一行前面的分号; 去掉 ,否则你下面添加的进程配置不会生效
files=/etc/supervisor/*.conf #若你本地无/etc/supervisor目录,请自建
用supervisor管理进程,配置如下:
cd /etc/supervisor
vim sms_queue.conf
加入以下内容(根据自己的需要修改)
[program:sms_queue]
command= php think queue:work --queue smsJobQueue --daemon ;需要执行的命令(分号前面一定要加空格)
directory=/www/web/mobile_meiyuzhixing_com/public_html ; directory to cwd to before exec (def no cwd)
process_name=%(program_name)s
autostart=true ; start at supervisord start (default: true)
autorestart=true ; whether/when to restart (default: unexpected)
startsecs=3 ; number of secs prog must stay running (def. 1)
redirect_stderr=true ; redirect proc stderr to stdout (default false) 错误输出重定向
stdout_logfile=/tmp/sms_queue.log ; stdout log path, NONE for none; default AUTO, log输出
启动
启动supervisor
supervisord -c /etc/supervisord.conf
查看 supervisord 是否在运行:
ps aux | grep supervisord
supervisorctl的用法(命令行管理工具,可以用这个查看其管理的进程等)
supervisord : 启动supervisor
supervisorctl reload :修改完配置文件后重新启动supervisor
supervisorctl status :查看supervisor监管的进程状态
supervisorctl start 进程名 :启动XXX进程
supervisorctl stop 进程名 :停止XXX进程
supervisorctl stop all:停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl update:根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
我在使用过程中遇到的错误
- 因为忘记把主配置文件底部下面 [include] 这一行前面的分号去掉,结果自己添加的进程配置一直都不生效
- 报 couldn't chdir to /www/web/ 的错误,百度了一下是因为directory=... 这一行分号前面没有加空格,加上之后就没有报错了
- 在command列 报 The "--daemon;需要执行的命令" option does not exist. 也是把分号前面加一个空格就解决掉了
- 参考了 https://www.jianshu.com/p/3658c963d28b的文章