Supervisor 进程管理安装配置

Supervisor 是什么?

Supervisor​ 是一个用 Python 编写的进程控制系统,主要用于在类 Unix 系统(如 Linux、macOS)中管理和监控后台应用的运行。
它的核心功能包括:

  1. 进程管理:可以方便地启动、停止、重启一个或多个后台进程。
  2. 自动重启:当管理的进程意外崩溃或退出时,Supervisor 可以自动将其重新启动,确保服务持续可用。
  3. 集中管理:通过一个统一的命令行工具或 Web 界面来管理所有托管的进程,无需分别记住每个进程的启动命令。
  4. 日志管理:可以捕获并管理被托管进程的标准输出和错误输出,方便排查问题。
  5. 简单来说,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 命令,会输出一个完整的、带注释的默认配置信息,这个后面会用到进程管理服务配置信息,输出正常,说明安装没有问题

image

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端页面配置:

注意是否开放端口,否则其他服务器访问不了
image

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

image

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

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

image

1.2.2、启动之后就可以查看和管理了

命令行查看管理:
image

web端查看管理:
image

三、进程管理服务启动

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+ 重启所有程序,可能导致业务中断。通常仅在初始配置或大规模变更时使用。
posted @ 2026-04-26 13:28  沙漠的一只雕  阅读(8)  评论(0)    收藏  举报