Supervisor的安装和使用

部署运行你感兴趣的模型镜像

Supervisor 使用笔记(CentOS 8 环境)

本周,老师让我使用supervisor管理项目服务,当时第一次听说过这个进程管理工具😶‍🌫️,就上网搜了搜安装和使用,又用ai查了一些细节,希望能够帮助到你们。

Supervisor 是一款基于 Python 的进程管理工具,可以帮助你集中管理和监控多个进程,自动重启异常退出的服务,并统一管理日志。下面介绍如何在 CentOS 8 环境中安装和配置 Supervisor,以及如何将其作为 systemd 服务来管理。


1. 环境准备

  • 操作系统: CentOS 8
  • Python 环境: Supervisor 是基于 Python 开发的,CentOS 8 默认支持 Python 3,但也可以使用虚拟环境。
  • 网络连接: 确保虚拟机能够访问外网,以便安装依赖包。

2. 安装 Supervisor

2.1 安装 Python3 和 pip

通常 CentOS 8 已经安装了 Python 3,可以通过以下命令检查版本:

python3 --version

若未安装 pip,则可以通过以下命令安装(如果已安装可跳过):

sudo dnf install python3-pip -y

2.2 安装 Supervisor

推荐使用 pip 安装 Supervisor:

sudo pip3 install supervisor

安装完成后,可通过下面命令确认安装版本:

supervisord --version

3. 配置 Supervisor

3.1 生成默认配置文件

Supervisor 提供了一个命令来生成默认的配置文件。可以将配置文件生成到常用路径(例如 /etc/etc/supervisord.conf):

echo_supervisord_conf | sudo tee /etc/supervisord.conf

3.2 编辑配置文件

使用你喜欢的编辑器修改 /etc/supervisord.conf。主要需要关注以下部分:

  • [unix_http_server]
    用于进程间通信的 Unix socket 配置。默认配置通常可用,但注意检查权限设置。

  • [supervisord]
    定义 Supervisor 日志文件、pid 文件等基本参数。建议设置日志文件路径,例如 /var/log/supervisord.log

  • [program:x]
    添加你需要管理的程序。示例如下:

    [program:my_app]
    command=/usr/bin/python3 /path/to/your/app.py
    directory=/path/to/your/
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/my_app_err.log
    stdout_logfile=/var/log/my_app_out.log
    

4. 使用 systemd 管理 Supervisor

在 CentOS 8 中,建议将 Supervisor 作为 systemd 服务来管理,以便随系统启动、停止和监控。

4.1 创建 systemd 服务文件

新建一个名为 /etc/systemd/system/supervisord.service 的文件,内容如下:

[Unit]
Description=Supervisor process control system for UNIX
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

注意: 如果 supervisordsupervisorctl 的路径不同(例如使用 which supervisord 命令查找路径),请根据实际路径修改 ExecStartExecStopExecReload 命令。

4.2 启用并启动 Supervisor 服务

执行以下命令使服务生效并启动 Supervisor:

sudo systemctl daemon-reload
sudo systemctl enable supervisord
sudo systemctl start supervisord

查看服务状态,确保已正常运行:

sudo systemctl status supervisord

5. 使用 supervisorctl 管理进程

Supervisor 自带的命令行工具 supervisorctl 可用于管理和监控进程。

  • 查看所有进程状态:

    sudo supervisorctl status
    
  • 启动、停止和重启进程:

    sudo supervisorctl start my_app
    sudo supervisorctl stop my_app
    sudo supervisorctl restart my_app
    
  • 重新加载配置:
    当你修改了 /etc/supervisord.conf 或其他引入的配置文件后,使用下面命令使配置生效:

    sudo supervisorctl reread
    sudo supervisorctl update
    

6. 日志管理与调试

  • 日志文件:
    Supervisor 会记录自身的日志(如 /var/log/supervisord.log)以及每个管理进程的标准输出和错误日志。请确保配置文件中定义的日志文件目录存在并有写入权限。

  • 查看实时日志:

    通过以下命令可以实时查看某个进程的日志:

    sudo supervisorctl tail my_app stdout
    sudo supervisorctl tail my_app stderr
    
  • 调试建议:
    如进程频繁重启,检查日志信息,确认是否由于依赖环境、路径错误或权限问题导致。


7. 常见问题及解决方法

  • 配置文件修改后无效:
    修改配置后需执行 rereadupdate 命令,或重启 supervisord 服务。

  • 权限问题:
    检查 Unix socket、日志文件及工作目录的权限设置,确保 Supervisor 运行用户(如 root 或特定用户)有足够权限。

  • 路径问题:
    确认 supervisordsupervisorctl 的可执行文件路径是否正确(特别是在使用 pip 安装时可能位于 /usr/local/bin)。


总结

在 CentOS 8 虚拟机环境中使用 Supervisor,不仅可以通过 pip 轻松安装和配置,还能借助 systemd 将其管理为系统服务,实现自动启动和故障恢复。通过合理的配置和日志管理,Supervisor 能够帮助你稳定、高效地运行和监控各类应用程序。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值