Python进程管理工具Supervisor使用指南
Supervisor 是一个用 Python 开发的客户端/服务器系统,用于管理和监控类 UNIX 操作系统上的进程。它提供了便捷的方法来启动、重启和关闭进程。
一,安装 supervisor
以Debian系统为例。
1,安装 supervisor
apt-get install supervisor
2,安装完成后查看 supervisor 是否在运行
ps aux | grep supervisord
正常运行的输出结果如下:
root 13878 0.1 0.6 31760 24712 ? Ss 12:46 0:00 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
root 13971 0.0 0.0 6240 648 pts/0 S+ 12:49 0:00 grep supervisord
3,设置为开机自启
systemctl enable supervisor
4,启动 supervisor
supervisorctl start all
启动 supervisor 前建议先查看 supervisor 的运行情况
5,进入 supervisor 进程管理界面
sudo supervisorctl
二,supervisor配置
安装完成后,supervisor 的配置地址为 /etc/supervisor/supervisord.conf。
不同系统的配置文件地址略有不同。
配置文件内容如下(无需修改)
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
[include]
files = /etc/supervisor/conf.d/*.conf
Python应用的配置文件参考(以Flask项目 hello 为例):
[program:hello]
command=/opt/www/hello/venv/bin/gunicorn -w4 -b 0.0.0.0:8011 app:app ;supervisor启动命令
directory=/opt/www/hello ; 项目的文件夹路径
startsecs=0 ; 启动时间
stopwaitsecs=0 ; 终止等待时间
autostart=true ; 是否自动启动
autorestart=true ; 是否自动重启
stdout_logfile=/opt/logs/www/hello/gunicorn.log ; log 日志
stderr_logfile=/opt/logs/www/hello/gunicorn.error ; 错误日志
三,服务管理
1,查看服务状态
# 查看服务状态
supervisorctl status
#进程管理常用命令
systemctl stop supervisord
systemctl start supervisord
systemctl restart supervisord
2,项目管理
当有新项目加入时,需要刷新服务列表
2.1 reload 命令
如果不指定子服务名称,默认重新启动所有的子服务列表。指定子服务名,仅仅重启当前子服务,其它服务不受影响。
所有子服务是指不管配置是否发生修改,都会重启。
# 刷新服务列表
supervisorctl reload
2.2 update 命令
重启所有配置发生更改的子服务(包含新增子服务),配置未发生变化的子服务不重启。
有新项目加入时,建议使用 update 命令
# 刷新服务列表
supervisorctl update
3,进程管理
3.1,进入 supervisor 管理界面
sudo supervisorctl
3.2 管理命令
# 启动指定服务
supervisorctl start program_name
# 停止指定服务
supervisorctl stop program_name
# 重启指定服务
supervisorctl restart program_name
# 启动所有服务
supervisorctl start all
# 停止所有服务
supervisorctl stop all
我的笔记