官方檔案鏈接:http://supervisord.org/
安裝步驟 :
安裝python的擴展
yum install python-setuptools
通過python的擴展安裝supervisor
easy_install supervisor
查詢 supervisor 版本
創建組態檔夾
mkdir /etc/supervisor
mkdir /etc/supervisor/conf.d
覆寫組態檔
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改組態檔
在檔案/etc/supervisor/supervisord.conf結尾[include]節點處
把
;files = relative/directory/*.ini
改為
files = conf.d/*.ini
啟動supervisor
正常情況下在/etc/supervisor/目下:
supervisord -c supervisord.conf
有些環境會出現找不到py的環境,所以需要py的執行路徑,需要找到py的執行代碼
/usr/bin/python2 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
查詢管理行程supervisord是否啟動完成
ps -aux | grep supervisord

組態檔決議
[unix_http_server]
file=/tmp/supervisor.sock ;UNIX socket 檔案,supervisorctl 會使用
;chmod=0700 ;socket檔案的mode,默認是0700
;chown=nobody:nogroup ;socket檔案的owner,格式:uid:gid
;[inet_http_server] ;HTTP服務器,提供web管理界面
;port=127.0.0.1:9001 ;Web管理后臺運行的IP和埠,如果開放到公網,需要注意安全性
;username=user ;登錄管理后臺的用戶名
;password=123 ;登錄管理后臺的密碼
[supervisord]
logfile=/tmp/supervisord.log ;日志檔案,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB ;日志檔案大小,超出會rotate,默認 50MB,如果設成0,表示不限制大小
logfile_backups=10 ;日志檔案保留備份數量默認10,設為0表示不備份
loglevel=info ;日志級別,默認info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 檔案
nodaemon=false ;是否在前臺啟動,默認是false,即以 daemon 的方式啟動
minfds=1024 ;可以打開的檔案描述符的最小值,默認 1024
minprocs=200 ;可以打開的行程數的最小值,默認 200
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ;通過UNIX socket連接supervisord,路徑與unix_http_server部分的file一致
;serverurl=http://127.0.0.1:9001 ; 通過HTTP的方式連接supervisord
; [program:xx]是被管理的行程配置引數,xx是行程的名稱
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程式啟動命令
autostart=true ; 在supervisord啟動的時候也自動啟動
startsecs=10 ; 啟動10秒后沒有例外退出,就表示行程正常啟動了,默認為1秒
autorestart=true ; 程式退出后自動重啟,可選值:[unexpected,true,false],默認為unexpected,表示行程意外殺死后才重啟
startretries=3 ; 啟動失敗自動重試次數,默認是3
user=tomcat ; 用哪個用戶啟動行程,默認是root
priority=999 ; 行程啟動優先級,默認999,值小的優先啟動
redirect_stderr=true ; 把stderr重定向到stdout,默認false
stdout_logfile_maxbytes=20MB ; stdout 日志檔案大小,默認50MB
stdout_logfile_backups = 20 ; stdout 日志檔案備份數,默認是10
; stdout 日志檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動創建目錄(supervisord 會自動創建日志檔案)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false ;默認為false,行程被殺死時,是否向這個行程組發送stop信號,包括子行程
killasgroup=false ;默認為false,向行程組發送kill信號,包括子行程
;包含其它組態檔
[include]
files = relative/directory/*.ini ;可以指定一個或多個以.ini結束的組態檔
創建一個守護行程
// 配置檔案決議: https://www.cnblogs.com/ruanraun/p/supervisor.html
[program: ProjectName]
command=dotnet ProjectName.dll ; 運行程式的命令
directory=/root/Publishing/PublishOutput/ ; 命令執行的目錄
autorestart=true ; 程式意外退出是否自動重啟
autostart=true ; 是否自動啟動
stderr_logfile=/var/log/ProjectName.err.log ; 錯誤日志檔案
stdout_logfile=/var/log/ProjectName.out.log ; 輸出日志檔案
environment=ASPNETCORE_ENVIRONMENT=Production ; 行程環境變數
user=root ; 行程執行的用戶身份
stopsignal=INT
startsecs=1 ; 自動重啟間隔
一份有效的配置
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
user=root ;
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[inet_http_server]
port=*:4967
; 包含其他的組態檔
[include]
files = /etc/supervisord.conf.d/*.ini
一份有效的行程
[program: go-web-blog]
command=bash -c './blog -F'
directory=/root/work/go_project/src/blog/
autorestart=true
autostart=true
startsecs=1
user=root
一些常用的命令
| 命令 | 作用 | 備注 |
|---|---|---|
| supervisorctl reread | 組態檔檢測 | 修改完子行程組態檔后執行 |
| supervisorctl update | 更新組態檔 | 更新子行程配置 |
| supervisorctl reload | 重新加載配置 | 更新子行程配置 |
| supervisorctl start XXX | 啟動某個行程 | xxx 組態檔行程名稱 , 也可以是 "all" |
| supervisorctl -c supervisord.conf | 啟動主(管理)行程 | 啟動supervisor管理行程 |
| supervisorctl | 進入supervisor 的cli端 | 進入互動頁面后 start xx 等頁面正常可執行 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30736.html
標籤:Go
上一篇:go語言系列-從零到資料型別
下一篇:Go語言庫系列之flag
