一、安裝
Supervisor是一款基於Python開發的進程管理工具,具有簡單易用、跨平台、可靠穩定、易擴展等優點。在使用該工具之前,首先需要安裝。我們可以使用pip或yum進行安裝:
pip install supervisor
或
yum install supervisor -y
二、配置文件
在使用Supervisor之前,需要配置一個配置文件。該文件通常位於/etc/supervisord.conf或/etc/supervisor/supervisord.conf。下面是一個簡單的配置文件:
[unix_http_server]
file=/var/run/supervisor.sock ; sock文件路徑
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; 日誌文件路徑
pidfile=/var/run/supervisord.pid ; pid文件路徑
nodaemon=false ; 是否使用守護進程模式運行
minfds=1024 ; 文件描述符最小值
minprocs=200 ; 進程數最小值
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; sock文件路徑
[program:hello]
command=/usr/local/bin/hello ; 應用啟動命令
autostart=true ; 是否隨supervisord一起啟動
autorestart=unexpected ; 是否自動重啟
startsecs=1 ; 啟動時等待時間
redirect_stderr=true ; 是否重定向stderr
三、常用命令
Supervisor提供了一些常用的命令,方便我們進行管理:
- supervisord:啟動supervisord
- supervisorctl start [program name]:啟動指定的進程
- supervisorctl stop [program name]:停止指定的進程
- supervisorctl restart [program name]:重啟指定的進程
- supervisorctl status:查看所有進程的狀態
四、進程配置
在配置文件中,我們需要對要管理的進程進行配置。下面是一個完整的進程配置:
[program:myprogram]
command=/path/to/myprogram ; 應用啟動命令
directory=/path/to/myprogram ; 應用所在目錄
user=myuser ; 應用所屬用戶
autostart=true ; 是否隨supervisord一起啟動
autorestart=true ; 是否自動重啟
startretries=3 ; 啟動失敗時重試次數
redirect_stderr=true ; 是否重定向stderr
stdout_logfile=/var/log/myprogram.log ; 標準輸出日誌文件路徑
stdout_logfile_maxbytes=1MB ; 標準輸出日誌文件最大大小
stdout_logfile_backups=10 ; 標準輸出日誌文件最大備份數
stderr_logfile=/var/log/myprogram.err ; 標準錯誤日誌文件路徑
stderr_logfile_maxbytes=1MB ; 標準錯誤日誌文件最大大小
stderr_logfile_backups=10 ; 標準錯誤日誌文件最大備份數
上述配置中,command、directory、user、autostart、autorestart等參數都已經說明清楚,下面我們著重介紹一下日誌相關的參數:
- redirect_stderr:表示是否重定向標準錯誤輸出,如果為true,則會將標準錯誤輸出到supervisord的日誌文件中。
- stdout_logfile:表示標準輸出日誌文件路徑。
- stdout_logfile_maxbytes:表示標準輸出日誌文件最大大小。
- stdout_logfile_backups:表示標準輸出日誌文件最大備份數。
- stderr_logfile:表示標準錯誤日誌文件路徑。
- stderr_logfile_maxbytes:表示標準錯誤日誌文件最大大小。
- stderr_logfile_backups:表示標準錯誤日誌文件最大備份數。
五、常見問題
1. 無法啟動
如果無法啟動supervisord,可以查看/var/log/supervisor/supervisord.log,裡面通常會包含具體的錯誤信息。
2. 埠被佔用
如果埠被佔用,可以修改/etc/supervisord.conf或/etc/supervisor/supervisord.conf中的配置文件,將使用的埠號改為未被佔用的埠號。
3. 日誌文件增長過快
如果日誌文件增長過快,可以通過設置logrotate來解決。在/etc/logrotate.d目錄下創建一個新的文件,例如myprogram:
/var/log/myprogram.log {
daily
rotate 10
missingok
notifempty
compress
}
這個文件表示每天進行一次日誌輪轉,最多保留10個備份,如果日誌文件不存在,則不進行錯誤提示,如果日誌文件為空,則不進行日誌輪轉,最後進行壓縮。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232499.html