当前位置: 首页 > news >正文

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 能够帮助你稳定、高效地运行和监控各类应用程序。

http://www.dtcms.com/a/113270.html

相关文章:

  • 0101安装matplotlib_numpy_pandas-报错-python
  • Business English Certificates (BEC) 高频词汇学习
  • 将MATLAB神经网络数据转换为C/C++进行推理计算
  • Linux网络状态监控利器:netstat与ping命令详解
  • Java的Selenium的特殊元素操作与定位之select下拉框
  • RocketMQ初认识
  • C,C++语言缓冲区溢出的产生和预防
  • 【2012】【论文笔记】太赫兹波在非磁化等离子体——
  • 【国产突围!致远电子ZXDoc如何打破Vector垄断,成为新能源车研发“神器”?】
  • Xshell Plus 6下载与安装
  • 【机器学习】机器学习工程实战-第4章 特征工程
  • LabVIEW商业软件开发注意问题
  • C语言-基础语法学习
  • 【Linux系统】linux下的软件管理
  • 大数据技术发展与应用趋势分析
  • `use_tempaddr` 和 `temp_valid_lft ` 和 `temp_prefered_lft ` 笔记250405
  • web性能检测工具lighthouse
  • k8s 1.23升级1.24
  • JavaSE基础——第六章 类与对象(二)
  • 使用dockerbuildx在x86机器上构建arm版docker镜像
  • 神经网络基础
  • 嵌入式AI简介
  • java面向对象 - 封装、继承和多态
  • 浅谈ai - Activation Checkpointing - 时间换空间
  • HANA如何在存储过程里执行动态SQL
  • 智慧节能双突破 强力巨彩谷亚VK系列刷新LED屏使用体验
  • 初识Linux-基本常用指令(一篇学会操作指令)
  • 03.unity开发资源 获取
  • 05.unity 游戏开发-3D工程的创建及使用方式和区别
  • Windows程序中计时器WM_TIMER消息的使用