Supervisor 进程管理安装配置
Supervisor 是什么?
Supervisor 是一个用 Python 编写的进程控制系统,主要用于在类 Unix 系统(如 Linux、macOS)中管理和监控后台应用的运行。
它的核心功能包括:
- 进程管理:可以方便地启动、停止、重启一个或多个后台进程。
- 自动重启:当管理的进程意外崩溃或退出时,Supervisor 可以自动将其重新启动,确保服务持续可用。
- 集中管理:通过一个统一的命令行工具或 Web 界面来管理所有托管的进程,无需分别记住每个进程的启动命令。
- 日志管理:可以捕获并管理被托管进程的标准输出和错误输出,方便排查问题。
- 简单来说,Supervisor 就像是您服务器上所有后台服务的“保姆”或“监管员”,确保它们能 7x24 小时稳定运行。
一、安装 Supervisor
# 通用安装方式,确保已安装 Python 和 pip:
# 安装 Python pip工具(如果未安装)
yum安装命令: yum install -y python-pip
---
# 如果上面 yum安装 pip失败且更换镜像源无效时,最直接有效的解决方案是手动安装。以下是具体步骤:
# 使用 curl 下载
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py # 这个版本需要注意,不同的python,pip版本也不一样
# 或使用 wget
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py # 这个版本需要注意,不同的python,pip版本也不一样
# 使用系统默认的 Python 2(即 python 命令)安装
python get-pip.py
---
# 安装 supervisor 程序
pip3 install supervisor
# 或 具体看你的pip版本命令
pip install supervisor
# pip 是 Python 的包(Package)管理器。它是 Python 生态系统中最重要的工具之一,
# 用于从 Python Package Index (PyPI)和其他软件仓库安装、升级、管理和卸载用 Python 编写的第三方库和工具。
安装 supervisor 后,执行 echo_supervisord_conf 命令,会输出一个完整的、带注释的默认配置信息,这个后面会用到进程管理服务配置信息,输出正常,说明安装没有问题

supervisor 进程管理服务程序安装完毕之后,会在系统中生成两个主要的配置文件:
但是注意:pip的安装方式是不会自动生成下面文件和文件夹的,需要手动创建
主进程配置文件:/etc/supervisord.conf
子进程配置文件:/etc/supervisord.d/
创建主进程配置文件:echo_supervisord_conf > /etc/supervisord.conf
创建子进程配置文件夹:mkdir /etc/supervisord.d/ -p
二、进程管理服务配置信息
修改创建的主进程配置文件:vim /etc/supervisord.conf
1.1、设置web端页面配置:
注意是否开放端口,否则其他服务器访问不了

1.2、设置主进程要管理子进程的配置路径(最重要的,其他配置都可以先不管)在supervisord.conf文件最后行:

1.2.1、设置好上面配置之后,就可以创建要管理的子进程文件了

文件里面写对应配置,比如这里面写的是mysql:

1.2.2、启动之后就可以查看和管理了
命令行查看管理:

web端查看管理:

三、进程管理服务启动
supervisord -c /etc/supervisord.conf # 启动,-c指定我们的配置文件
ps -ef | grep supervisor # 查询启动的进程
杀死进程: kill -9 进程号 # 不建议这种方式,会导致管理的子进程变成‘孤儿进程’
1. 创建 systemd 服务单元文件(建议)
执行以下命令创建并编辑服务文件:
sudo vim /etc/systemd/system/supervisord.service
将以下内容完整复制到文件中:
[Unit]
Description=Supervisor process control system
Documentation=http://supervisord.org
After=network.target
[Service]
Type=forking
# 设置环境变量,明确指定配置文件路径
Environment=SUPERVISORD_CONFIG=/etc/supervisord.conf
# 启动命令,使用您 ps 命令中显示的绝对路径
ExecStart=/usr/bin/supervisord -c $SUPERVISORD_CONFIG
# 停止命令
ExecStop=/usr/bin/supervisorctl shutdown
# 重新加载配置命令
ExecReload=/usr/bin/supervisorctl reload
# 进程被杀模式
KillMode=process
# 运行用户
User=root
[Install]
WantedBy=multi-user.target
2. 重新加载 systemd 配置
sudo systemctl daemon-reload
3. 启动并启用服务
sudo systemctl start supervisord
设置开机自启:
sudo systemctl enable supervisord
检查服务运行状态:
sudo systemctl status supervisord
四、常用命令
| 命令 | 作用 |
|---|---|
| supervisorctl status | 查看所有进程(程序)的状态 最常用命令。显示所有托管程序的运行状态(如RUNNING, STOPPED, STARTING)及其PID。 |
| supervisorctl status name | 查看指定进程的状态 例如:supervisorctl status mysql。 |
| supervisorctl stop name | 停止指定的服务/程序 例如:supervisorctl stop es。程序会优雅终止。 |
| supervisorctl start name | 启动指定的服务/程序 例如:supervisorctl start es。 |
| supervisorctl restart name | 重启指定的服务/程序 必须指定程序名。 |
| supervisorctl stop all | 停止所有程序 一次性停止所有由Supervisor管理的程序。 |
| supervisorctl start all | 启动所有程序 启动所有配置中 autostart=true的程序。 |
| supervisorctl restart all | 重启所有程序 依次重启所有程序。 |
| supervisorctl reread | 重新读取配置文件 当您修改了某个程序的配置文件(如.conf文件)后,必须首先运行此命令,以告知Supervisor配置有更新。 |
| supervisorctl update | 更新进程组 执行 reread后运行此命令,以使新的配置生效。 |
| supervisorctl reload | 重新启动配置中的所有程序 威力巨大,请谨慎使用。相当于 reread+ update+ 重启所有程序,可能导致业务中断。通常仅在初始配置或大规模变更时使用。 |

浙公网安备 33010602011771号