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 的基本配置過程和常用配置選項。根據實際需求調整配置文件,確保所需進程被正確監控和管理。

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