Supervisor部署应用

Supervisor 是一个用 Python 编写的进程监控工具,用于管理和监控 Linux/Unix 系统中的进程,确保它们在崩溃时能够自动重启,或者始终保持在运行状态。 以下是配置 Supervisor 的基本步骤和常见配置选项:

1. 安装 Supervisor:

在大多数基于 Debian/Ubuntu 的系统中,可以使用 apt 安装 Supervisor:

sudo apt update
sudo apt install supervisor

对于基于 Red Hat/CentOS 的系统,使用 yum 或 dnf 安装:

sudo yum install supervisor  # 对于较旧的系统
sudo dnf install supervisor  # 对于较新的系统

2. 配置文件:

Supervisor 的主配置文件通常位于 /etc/supervisord.conf。您也可以在此目录下创建子配置文件,放置在 /etc/supervisor/conf.d/ 目录下,以保持配置的模块化。子配置文件通常以 .conf 为扩展名。

3. 基本配置项:

/etc/supervisord.conf 或 /etc/supervisor/conf.d/*.conf:

[unix_http_server]         ; Unix socket 文件路径和权限
file=/var/run/supervisor.sock   ; (默认路径)
chmod=0700                       ; socket 文件权限


[supervisord]                ; Supervisor 主程序配置
logfile=/var/log/supervisor/supervisord.log ; 日志文件路径
pidfile=/var/run/supervisord.pid ; PID 文件路径
childlogdir=/var/log/supervisor            ; 子进程日志目录

[rpcinterface:supervisor]   ; RPC 接口配置
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]             ; Supervisor 控制台配置
serverurl=unix:///var/run/supervisor.sock ; 与主程序通信的 socket 地址

[program:your_program_name]  ; 进程配置,每个要监控的进程需要一个这样的块
command=/path/to/your/command --arg1 value1 --arg2 value2  ; 要运行的命令及参数
directory=/path/to/working/directory             ; 命令的工作目录(可选)
user=your_username                          ; 以哪个用户身份运行(可选)
autostart=true                            ; 是否随 Supervisor 启动时自动启动(默认为 true)
autorestart=true                          ; 程序退出时是否自动重启(默认为 unexpected)
startsecs=5                               ; 程序启动后等待其稳定运行的秒数(默认为 1)
startretries=3                            ; 启动失败时重试次数(默认为 3)
stopsignal=QUIT                           ; 用于停止进程的信号(默认为 TERM)
stopwaitsecs=10                           ; 发送停止信号后等待进程终止的秒数(默认为 0)
stdout_logfile=/var/log/supervisor/your_program_name.log  ; 标准输出日志文件(可选)
stderr_logfile=/var/log/supervisor/your_program_name.err.log ; 标准错误日志文件(可选)
environment=VAR1=value1,VAR2=value2     ; 设置环境变量(可选)
priority=999                              ; 进程优先级,数字越小优先级越高(默认为 999)

4. 添加要监控的进程:

在 [program:your_program_name] 部分,为每个要由 Supervisor 管理的进程配置一个独立的配置块。配置项包括:

  • command: 要运行的命令及参数。
  • directory: (可选)命令的工作目录。
  • user: (可选)以哪个用户身份运行。
  • autostart: 是否随 Supervisor 启动时自动启动。
  • autorestart: 程序退出时是否自动重启。
  • startsecs: 程序启动后等待其稳定运行的秒数。
  • startretries: 启动失败时重试次数。
  • stopsignal: 用于停止进程的信号。
  • stopwaitsecs: 发送停止信号后等待进程终止的秒数。
  • stdout_logfile: 标准输出日志文件。
  • stderr_logfile: 标准错误日志文件。
  • environment: 设置环境变量。
  • priority: 进程优先级,数字越小优先级越高。
  1. 启动和管理 Supervisor: 启动 Supervisor:
sudo systemctl start supervisord

启用开机自启:

sudo systemctl enable supervisord

查看状态:

sudo systemctl status supervisord

使用 Supervisorctl 控制台: 启动控制台:

sudo supervisorctl

在控制台中,可以进行以下操作:

列出所有进程:

supervisorctl status

启动进程:

supervisorctl start your_program_name

停止进程:

supervisorctl stop your_program_name

重启进程:

supervisorctl restart your_program_name

查看进程日志:

supervisorctl tail your_program_name
  1. 更新配置后重启 Supervisor: 当修改了配置文件后,需要重新加载并重启 Supervisor 以应用更改:
sudo supervisorctl reread
sudo supervisorctl update

以上就是 Supervisor 的基本配置过程和常用配置选项。根据实际需求调整配置文件,确保所需进程被正确监控和管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章