目录
supervisor可以非常方便的管理后台持续运行的进程,在后台进程挂掉之后自动拉起并发出通知等
安装supervisor
1. easy_install supervisor 或pip install supervisor
-
如果另外安装了python3导致安装supervisor可执行文件目录变化找不到命令,可临时设置一下可执行文件目录
-
临时设置:export PATH=$PATH:/usr/local/python3/bin可执行文件目录
-
永久设置:修改/etc/profile文件(对所有用户有效,而修改当前用户下的.bash_profile文件对当前yoghurt有效),加export PATH=$PATH:/usr/local/python3/bin, source /etc/profile重载立即生效
-
2. 生成默认配置文件/etc/supervisor/supervisord.conf
-
mkdir /etc/supervisor
-
echo_supervisord_conf > /etc/supervisor/supervisord.conf
-
默认文件路径
-
默认配置文件:/etc/supervisord.conf
-
进程管理配置文件放到:/etc/supervisord.d/目录下
-
默认日志文件:/tmp/supervisord.log,可以查看进程的启动信息
-
3. 配置文件修改
-
参考官方地址 http://supervisord.org/configuration.html
-
参考如下文章
4. 项目配置文件管理
-
进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中
-
创建/etc/supervisor/config.d目录,用于存放进程管理的配置文件
-
修改/etc/supervisor/supervisord.conf中的include参数,将/etc/supervisor/config.d目录添加到include中,files = /etc/supervisor/config.d/*.conf
-
使用supervisor
1. 启动服务端
-
supervisord -c /etc/supervisor/supervisord.conf # 指定配置文件目录启动
-
设置开机启动,根据网上教程有多种方法
-
1.配置systemctl服务
-
进入/lib/systemd/system目录,并创建supervisor.service文件
-
设置开机启动
-
systemctl enable supervisor.service
-
systemctl daemon-reload
-
-
修改文件权限为766,chmod 766 supervisor.service
-
-
2.配置service类型服务
- 参考https://blog.csdn.net/xyang81/article/details/51555473
-
2. 客户端使用
-
交互终端: supervisorctl
-
supervisorctl -c /etc/supervisor/supervisord.conf # 指定配置文件目录启动交互终端
-
help/start/stop等命令
-
-
shell命令
-
supervisorctl status 查看状态
-
supervisorctl update 更新配置
-
pervisorctl stop program_name 停止某个进程
-
supervisorctl start program_name 启动某个进程, 不停supervisor 添加program
-
supervisorctl restart program_name 重启某个进程
-
supervisorctl stop all 关闭所有进程
-
supervisorctl reload 重新启动配置中的所有程序
-
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
-
-
web管理端
- 默认关闭,修改supervisord.conf配置文件打开,[inet_http_server] 项
-
常见错误
-
unix:///tmp/supervisor.sock no such file 未指定配置文件或客户端和服务端配置文件不一致导致
- supervisorctl -c /etc/supervisor/supervisord.conf start xxx保持配置文件一致即可
-
supervisorctl error (no such process) 可能是[include]前的;未取消或files后紧接了;导致的
-
event 通知提醒
-
参考http://supervisord.org/events.html
-
http://talk.withme.me/?p=318
本文参考
[1]:https://www.jianshu.com/p/ac6c84a2f415
[2]:http://talk.withme.me/?p=318
[3]:http://supervisord.org/ “官网”