supervisor安裝和配置
阿新 • • 發佈:2018-10-30
創建 最小值 異常 tar lin npr 執行 update 可選值
有時候,我們需要某些程序或者進程在後天穩定運行。
nohup java -jar .....jar &
但是,可能服務器會因為某些原因down掉,或者因為某個同時誤殺了進程,不穩定性太多。
於是就認識了supervisor。
而且越用越喜歡,這家夥集監控,自動重啟為一身啊,而且輕量級。只需要讓supervisor開機自啟就解決一切問題
一:素質四連
wget https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz ? tar -xf supervisor-3.3.4.tar.gz -C /usr/local/ (-C參數 是解壓到/usr/local/ 此路徑下) ? cd /usr/local/supervisor-3.3.4/ (進入解壓目錄 找到setup.py 腳本 執行) ? python setup.py install
二:配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
(配置文件的路徑也可以放別的地方不一定要放在etc下,但如果放別的地方,在啟動服務的時候要指定要在啟服務程序的 後面加參數"-c " 後接配置文件的的路徑才可以,如果放在etc下系統會自動查到到配置文件的)
配置文件詳解:
[unix_http_server] file=/usr/local/supervisor-3.3.4/supervisor.sock ;UNIX socket 文件,supervisorctl 會使用 ;chmod=0700 ;socket文件的mode,默認是0700 ;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid ? [inet_http_server] ;HTTP服務器,提供web管理界面 port=0.0.0.0:9001 ;Web管理後臺運行的IP和端口,如果開放到公網,需要註意安全性 username=user ;登錄管理後臺的用戶名 password=123 ;登錄管理後臺的密碼 ? [supervisord] logfile=/usr/local/supervisor-3.3.4/supervisord.log ;日誌文件,默認是 $CWD/supervisord.log logfile_maxbytes=50MB ;日誌文件大小,超出會rotate,默認 50MB,如果設成0,表示不限制大小 logfile_backups=10 ;日誌文件保留備份數量默認10,設為0表示不備份 loglevel=info ;日誌級別,默認info,其它: debug,warn,trace pidfile=/usr/local/supervisor-3.3.4/supervisord.pid ;pid 文件 nodaemon=false ;是否在前臺啟動,默認是false,即以 daemon 的方式啟動 minfds=1024 ;可以打開的文件描述符的最小值,默認 1024 minprocs=200 ;可以打開的進程數的最小值,默認 200 ? [supervisorctl] serverurl=unix:///usr/local/supervisor-3.3.4/supervisor.sock ;通過UNIX socket連接supervisord,路徑與unix_http_server部分的file一致 ;serverurl=http://127.0.0.1:9001 ; 通過HTTP的方式連接supervisord ? ;[program:tomcat] 是被管理的進程配置參數,tomcat是進程的名稱,原文用xx表示,tomcat是我要監控的對象 [program:tomcat] command=/usr/local/tomcat/bin/catalina.sh run ; 程序啟動命令 autostart=true ; 在supervisord啟動的時候也自動啟動 startsecs=10 ; 啟動10秒後沒有異常退出,就表示進程正常啟動了,默認為1秒 autorestart=true ; 程序退出後自動重啟,可選值:[unexpected,true,false],默認為unexpected,表示進程意外殺死後才重啟 startretries=3 ; 啟動失敗自動重試次數,默認是3 user=root ; 用哪個用戶啟動進程,默認是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=stdout_logfile=/usr/local/tomcat/logs/catalina.out stopasgroup=true ;默認為false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程 killasgroup=true ;默認為false,向進程組發送kill信號,包括子進程 ? ;包含其它配置文件 [include] files = /etc/supervisor/conf.d/*.conf ;可以指定一個或多個以.conf結束的配置文件,有的是以*.ini 結尾的,這個是自定義的 不影響;
? 添加多個進程的時候,可以include融合多個配置文件
[program:jenkins] directory= /usr/local command=/usr/java/jdk1.8.0_181/bin/java -jar jenkins.war autostart=true ; 在supervisord啟動的時候也自動啟動 startsecs=10 ; 啟動10秒後沒有異常退出,就表示進程正常啟動了,默認為1秒 autorestart=true ; 程序退出後自動重啟,可選值:[unexpected,true,false],默認為unexpected,表示進程意外殺死後才重啟 startretries=3 ; 啟動失敗自動重試次數,默認是3 user=root ; 用哪個用戶啟動進程,默認是root priority=999 ; 進程啟動優先級,默認999,值小的優先啟動 redirect_stderr=true ; 把stderr重定向到stdout,默認false stdout_logfile_maxbytes=20MB ; stdout 日誌文件大小,默認50MB stdout_logfile_backups = 20 ; stdout 日誌文件備份數,默認是10 stdout_logfile=/usr/local/nginx/logs/catalina.log stopasgroup=true ;默認為false,進程被殺死時,是否向這個進程組發送stop信號,包括子進程 killasgroup=true ;默認為false,向進程組發送kill信號,包括子進程
三,啟動登錄
supervisord -c /etc/supervisor/supervisord.conf
啟動完後 就可以瀏覽器輸入ip地址:9001 訪問了 登陸的時候配置文件裏有用戶名和密碼 默認配置的是用戶名:user 密碼123 ;
supervisord : 啟動supervisor supervisorctl reload :修改完配置文件後重新啟動supervisor supervisorctl status :查看supervisor監管的進程狀態 supervisorctl start 進程名 :啟動XXX進程 supervisorctl stop 進程名 :停止XXX進程 supervisorctl stop all:停止全部進程,註:start、restart、stop都不會載入最新的配置文件。 supervisorctl update:根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟
四:設置開機自啟
在/etc/rc.local中加入: supervisord -c /etc/supervisor/supervisord.conf
可能會產生環境問題
? 可以使用絕對路勁。使用javahome/bin/java 啟動
supervisor安裝和配置