本文档基于Python3.9 supervisor4.2.5
# 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple supervisor
# 创建服务目录
mkdir -p /etc/supervisor/supervisord.d
chmod 777 -R /etc/supervisor/
# 初始化配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
尝试修改如下配置
#该配置开启supervisor服务通信,web ui通信,xml-rpc通信
[unix_http_server]
file=/tmp/supervisor.sock
[inet_http_server]
port=127.0.0.1:9001
[supervisorctl]
serverurl=http://127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[include]
files = /etc/supervisor/supervisord.d/*.ini
# vim /etc/supervisor/supervisord.d/项目名.ini
[program:项目名]
command = 项目运行命令 # 如python3 main.py
autostart = true
autorestart = true
user = root
stdout_logfile = /etc/supervisor/logs/项目名.log
# 启动主服务 supervisord -c supervisord.conf
# 启动项目 supervisorctl start 项目名
# 查看状态 supervisorctl status
# 启动supervisor主服务 supervisord -c supervisord.conf
# supervisor 项目服务 命令
supervisorctl status # 查看进程状态
supervisorctl stop project_name # 终止某个进程
supervisorctl start project_name # 启动某个进程
supervisorctl restart project_name # 重启某个进程
supervisorctl reread # 重新加载配置
supervisorctl update # 更新配置,根据最新的配置启动程序,会启动已经运行的程序
supervisorctl restart all # 重启所有服务
supervisorctl stop all # 停止所有服务
from xmlrpc.client import ServerProxy
server = ServerProxy('http://localhost:9001/RPC2')
server.supervisor.getState() # 获取supervisor服务状态
.getProcessInfo(name) # 获取部署服务信息
.getAllProcessInfo()# 获取所有部署服务信息
.startProcess(name) # 启动指定名称服务
.startAllProcesses() # 启动所有服务
.stopProcess(name) # 停止指定服务
.stopAllProcesses() #停止所有服务
.reloadConfig() # 重新加载配置