supervisor 能在 python 环境下自动管理进程,当所管理的进程挂掉,supervisor 能够自动拉起被管理的进程。python
一、安装 supervisorweb
pip install supervisor
二、测试安装是否成功浏览器
echo_supervisord_conf
三、建立、编辑配置文件app
主要要经历下面几个步骤:tcp
(1) 在/etc 下建立目录 supervisor测试
(2) 在 /etc/supervisor 下建立主配置文件 supervisord.conf 和 项目应用配置文件目录 conf.dui
(3) 在 conf.d 下建立项目应用配置文件 my_app.ini 并编辑配置之spa
(4) 在主配置文件 supervisord.conf 里引用项目应用配置文件 my_app.ini命令行
3.1 在/etc 下建立目录 supervisorrest
cd /etc sudo mkdir supervisor 最终:/etc/supervisor
3.2 在 /etc/supervisor 下建立主配置文件 supervisord.conf 和 项目应用配置文件目录 conf.d
自动生成配置文件 supervisord.conf echo_supervisord_conf > supervisord.conf
cp supervisord.conf /etc/supervisor/supervisord.conf
cd /etc/supervisor
sudo mkdir conf.d
最终:
/etc/supervisor/supervisord.conf
/etc/supervisor/conf.d
3.3 在 conf.d 下建立项目应用配置文件 my_app.ini 并编辑配置之
my_app.ini 配置示例:
[program: my_app] command=my_app -a 123 ; 启动 my_app 进程的命令行,便于 supervisord 拉起 my_app autostart=true startsec=3 autorestart=true stopsignal=QUIT
priority=1
stopasgroup=true
killasgroup=true stdout_logfile=.../my_project/log/supervisor.log stderr_logfile=.../my_project/log/supervisor_err.log
3.4 在主配置文件 supervisord.conf 里引用项目应用配置文件 my_app.ini
修改主配置文件 supervisord.conf 找到 include ;[include] ;files = relative/directory/*.ini 改成: [include] files = ./conf.d/*.ini
上面的 *.ini 已经包含了 my_app.ini 因此更通用。
四、启动 supervisor
supervisord -c supervisord.conf
使用 pstree -p 能够看到进程树形如: supervisord --- 被管理的进程
五、使用 supervisorctl 查看已经被管理的的程序
supervisorctl -c /etc/supervisor/supervisord.conf
六、重启 supervisor
supervisorctl reload
注意:
一、supvisor 较适合管理监控业务应用,且只能监控前台程序,不能监视后台程序;
如监控 daemon 类程序,会拉不起被监控的程序,会出现错误:
BACKOFF Exited too quickly (process log may have details)
二、每次修改配置文件后,用
supervisorctl reload
重启 supervisor 才能生效
三、涉及 2个命令:
supervisord - 用于启动 supervisor
supervisorctl - 用于启动 supervisor 命令行,可执行 start、stop、status、reload 等操做
四、web 管理界面
支持经过 web 界面管理
修改 supervisord.conf 配置,便可启动 web 管理界面
修改为相似下面: [inet_http_server] port=127.0.0.1:9001 username=user password=123
若 9001 端口拒绝访问,可开启访问
[root@localhost ~]# iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 9001 -j ACCEPT [root@localhost ~]# service iptables save
接下来,就能够经过 浏览器web访问管理界面了