软硬件环境
- centos7.6.1810 64bit
cat /etc/redhat-release #查看系统版本
- supervisor 3.4.0
- python 2.7.5
supervisor 简介
supervisor
是一个用python
语言编写的进程管理
工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor
监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制。
supervisord 安装
yum install -y epel-release
yum install -y supervisor
启动&开启自启
systemctl start supervisord
systemctl enable supervisord
其他命令
systemctl stop supervisord
systemctl start supervisord
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord
supervisor 的 web 端
supervisor
提供了基于web
的控制,管理员可以通过在页面上点点按钮即可完成对进程的启动、重启等操作,甚是方便。
进入配置文件,开启对 web 端的支持
vim /etc/supervisord.conf
如果提供给外部访问,需要将 port 改为本机 ip 地址
#取消10-13行注释,前面数字是行号
[inet_http_server] ; inet (TCP) server disabled by default
port=192.168.26.121:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
配置完成后重启服务
systemctl restart supervisord
supervisord 应用配置
进入 supervisord 配置文件
cat /etc/supervisord.conf
通过配置文件最后一行看到
[include]
files = supervisord.d/*.ini
也就是说,我们所有的应用配置文件都保存在这个目录下,以.ini格式命名保存的,可以自行修改地址,但不要修改后缀
那我们来创建一个受监控的应用吧
创建测试 python 配置
创建一个名称叫做python的应用程序配置
vim /etc/supervisord.d/python.ini
配置文件内容,其中 command 就是我们应用程序启动需要执行的命令
[program:python] #这里的python就是我们显示在web前端以及终端的监控名称
command=python /tmp/supervisordtest/test.py #我们要监控的文件地址
autostart=true
autorestart=true
startsecs=1
startretries=3
redirect_stderr=true
stdout_logfile=/tmp/supervisordtest/access_python.log #日志地址,可自行配置目录
stderr_logfile=/tmp/supervisordtest/error_python.log #日志地址,可自行配置目录
创建 test.py
mkdir /tmp/supervisordtest
vim /tmp/supervisordtest/test.py
程序内容:开启一个死循环,不停的打印内容
while True:
print(100)
重启 supervisord 使配置文件生效
systemctl restart supervisord
查看应用是否正常启动
1、命令查看
systemctl status supervisord
2、可视化 web 查看
web 端可以重启,停止,清理日志,查看日志等多个操作
supervisor 相关的几个命令
安装完毕,会生成 3 个系统命令supervisorctl
、supervisord
和echo_supervisord_conf
supervisord
,运行supervisor
时会启动一个进程supervisord
,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启supervisorctl 是命令行管理工具,可以用来执行 start stop restart 等命令,来对这些子进程进行管理, 如
sudo supervisorctl start demoweb
其中 demoweb 是进程的名称, 详细的命令及说明见下面的这张表
命令 说明 supervisorctl start program_name 启动某个进程 supervisorctl stop program_name 停止某个进程 supervisorctl restart program_name 重启某个进程 supervisorctl status program_name 查看某个进程的状态 supervisorctl stop all 停止全部进程 \ \ supervisorctl reload 载入最新的配置文件,重启所有进程 supervisorctl update 根据最新的配置,重启配置更改过的进程,未更新的进程不受影响 - echo_supervisord_conf
用来生成默认的配置文件(默认配置文件,内容非常齐全且都有注释,适合用时查阅,用法是这样的
echo_supervisord_conf > test.conf