Skip to main content

Supervisor 在 Rocky Linux 上的安装与使用指南

Supervisor 是一个用 Python 编写的进程控制系统,允许用户监控和控制类 UNIX 系统上的多个进程。下面是在 Rocky Linux 上安装和配置 Supervisor 的完整指南。

一、安装 Supervisor

1. 安装 EPEL 仓库(如果尚未安装)

sudo dnf install epel-release
sudo dnf update

2. 安装 Supervisor

sudo dnf install supervisor

3. 启动并设置开机自启

sudo systemctl enable supervisord
sudo systemctl start supervisord

4. 验证安装

sudo supervisorctl status

二、基本配置

1. 主配置文件位置

主配置文件位于 /etc/supervisord.conf

2. 包含自定义配置

默认配置会包含 /etc/supervisord.d/ 目录下的所有 .ini 文件:

[include]
files = /etc/supervisord.d/*.ini

三、配置管理进程

1. 创建自定义进程配置

/etc/supervisord.d/ 中创建新的配置文件,例如 myapp.ini

[program:myapp]
command=/usr/bin/python3 /path/to/your/app.py
directory=/path/to/your/app
user=yourusername
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=PYTHONPATH="/path/to/your/app"

2. 常用配置选项

选项 说明
command 要执行的命令
directory 运行命令前切换到的目录
user 运行进程的用户
autostart 是否随 Supervisor 启动而自动启动
autorestart 是否自动重启 (true/false/unexpected)
startretries 启动失败后的重试次数
stderr_logfile 标准错误日志文件
stdout_logfile 标准输出日志文件
environment 设置环境变量

四、Supervisor 命令使用

1. 重新加载配置

sudo supervisorctl reread
sudo supervisorctl update

2. 管理进程

# 启动进程
sudo supervisorctl start myapp

# 停止进程
sudo supervisorctl stop myapp

# 重启进程
sudo supervisorctl restart myapp

# 查看所有进程状态
sudo supervisorctl status

# 查看特定进程状态
sudo supervisorctl status myapp

3. 查看日志

# 查看主日志
sudo tail -f /var/log/supervisor/supervisord.log

# 查看应用日志
sudo tail -f /var/log/myapp.out.log

五、Web 界面(可选)

1. 启用 Web 界面

编辑 /etc/supervisord.conf,取消注释或添加以下内容:

[inet_http_server]
port=*:9001
username=admin
password=yourpassword

2. 重启 Supervisor

sudo systemctl restart supervisord

3. 访问 Web 界面

通过浏览器访问 http://your-server-ip:9001

六、高级配置

1. 进程组管理

[group:mygroup]
programs=myapp1,myapp2
priority=999

2. 事件监听

[eventlistener:memmon]
command=memmon -p myapp=200MB
events=TICK_60

3. 日志轮转

安装 logrotate 并创建 /etc/logrotate.d/supervisor

/var/log/supervisor/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 root root
    postrotate
        /usr/bin/supervisorctl pid > /dev/null && /usr/bin/supervisorctl reopen_logs
    endscript
}

七、故障排除

1. 常见问题解决

  • 配置更改不生效

    sudo supervisorctl reread
    sudo supervisorctl update
    
  • 进程无法启动: 检查 /var/log/supervisor/supervisord.log 和应用的错误日志

  • 权限问题: 确保配置中指定的用户有执行命令和写入日志的权限

2. 日志位置

  • 主日志:/var/log/supervisor/supervisord.log
  • 子进程日志:在各自配置中指定的位置

八、安全注意事项

  1. 不要以 root 用户运行应用程序
  2. Web 界面应设置强密码
  3. 考虑限制 Web 界面的访问 IP
  4. 定期检查日志文件
  5. 保持 Supervisor 更新到最新版本

通过以上步骤,您可以在 Rocky Linux 上成功安装和配置 Supervisor,实现对关键进程的有效管理和监控。