CentOS6 Supervisor安裝

簡介

Supervisor 是用Python開發(fā)的一個client/server服務诸典,是Linux/Unix系統(tǒng)下的一個進程管理工具伐庭,不支持Windows系統(tǒng)辱姨。它可以很方便的監(jiān)聽浩姥、啟動蘸吓、停止、重啟一個或多個進程例驹。用Supervisor管理的進程捐韩,當一個進程意外被殺死,supervisort監(jiān)聽到進程死后鹃锈,會自動將它重新拉起奥帘,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制仪召。

因為Supervisor是Python開發(fā)的寨蹋,安裝前先檢查一下系統(tǒng)否安裝了Python2.4以上版本。下面以CentOS6扔茅,Python2.6版本環(huán)境下已旧,介紹Supervisor的安裝與配置步聚:

安裝Python包管理工具(easy_install)

# python  -V
# wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python

安裝supervisor

#  easy_install supervisor

supervisor安裝完成后會生成三個執(zhí)行程序:supervisortd、supervisorctl召娜、echo_supervisord_conf运褪,分別是supervisor的守護進程服務(用于接收進程管理命令)、客戶端(用于和守護進程通信玖瘸,發(fā)送管理進程的指令)秸讹、生成初始配置文件程序。

配置supervisor

運行echo_supervisord_conf程序生成supervisor的初始化配置文件雅倒,如下所示:

# mkdir /etc/supervisor
# echo_supervisord_conf > /etc/supervisor/supervisord.conf

配置文件參數(shù)說明

supervisor的配置參數(shù)較多璃诀,下面介紹一下常用的參數(shù)配置,詳細的配置及說明蔑匣,請參考官方文檔介紹劣欢。
注:分號(;)開頭的配置表示注釋

[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和端口价脾,如果開放到公網(wǎng)牧抵,需要注意安全性
;username=user              ;登錄管理后臺的用戶名
;password=123               ;登錄管理后臺的密碼

[supervisord]
logfile=/tmp/supervisord.log ;日志文件,默認是 $CWD/supervisord.log
logfile_maxbytes=50MB        ;日志文件大小侨把,超出會rotate犀变,默認 50MB,如果設成0座硕,表示不限制大小
logfile_backups=10           ;日志文件保留備份數(shù)量默認10弛作,設為0表示不備份
loglevel=info                ;日志級別,默認info华匾,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ;pid 文件
nodaemon=false               ;是否在前臺啟動映琳,默認是false,即以 daemon 的方式啟動
minfds=1024                  ;可以打開的文件描述符的最小值蜘拉,默認 1024
minprocs=200                 ;可以打開的進程數(shù)的最小值萨西,默認 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]是被管理的進程配置參數(shù)旭旭,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       ; 啟動失敗自動重試次數(shù)娱俺,默認是3
user=tomcat          ; 用哪個用戶啟動進程,默認是root
priority=999         ; 進程啟動優(yōu)先級废麻,默認999荠卷,值小的優(yōu)先啟動
redirect_stderr=true ; 把stderr重定向到stdout,默認false
stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小烛愧,默認50MB
stdout_logfile_backups = 20   ; stdout 日志文件備份數(shù)油宜,默認是10
; stdout 日志文件,需要注意當指定目錄不存在時無法正常啟動怜姿,所以需要手動創(chuàng)建目錄(supervisord 會自動創(chuàng)建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false     ;默認為false,進程被殺死時慎冤,是否向這個進程組發(fā)送stop信號,包括子進程
killasgroup=false     ;默認為false沧卢,向進程組發(fā)送kill信號蚁堤,包括子進程

;包含其它配置文件
[include]
files = relative/directory/*.ini    ;可以指定一個或多個以.ini結(jié)束的配置文件
include示例:

[include]
files = /opt/absolute/filename.ini /opt/absolute/*.ini foo.conf config??.ini

配置管理進程

進程管理配置參數(shù),不建議全都寫在supervisord.conf文件中搏恤,應該每個進程寫一個配置文件放在include指定的目錄下包含進supervisord.conf文件中违寿。

  1. 創(chuàng)建/etc/supervisor/config.d目錄,用于存放進程管理的配置文件
  2. 修改/etc/supervisor/supervisord.conf中的include參數(shù)熟空,將/etc/supervisor/conf.d目錄添加到include中
[include]
files = /etc/supervisor/config.d/*.ini

控制進程

supervisord 啟動成功后藤巢,可以通過 supervisorctl 客戶端控制進程,啟動息罗、停止掂咒、重啟。運行 supervisorctl 命令迈喉,不加參數(shù)绍刮,會進入 supervisor 客戶端的交互終端,并會列出當前所管理的所有進程挨摸。

上圖中的tomcat就是我們在配置文件中[program:tomcat]指定的名字孩革。
輸入help可以查看可以執(zhí)行的命令列表,如果想看某個命令的作用得运,運行 help 命令名稱膝蜈,如:help stop

stop tomcat // 表示停止tomcat進程
stop all // 表示停止所有進程
bash終端
supervisorctl status
supervisorctl stop tomcat
supervisorctl start tomcat
supervisorctl restart tomcat
supervisorctl reread
supervisorctl update
Web管理界面

Supervisor Web管理界面
出于安全考慮,默認配置是沒有開啟web管理界面熔掺,需要修改supervisord.conf配置文件打開http訪權(quán)限饱搏,將下面的配置:

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

修改為:

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001          ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

開機啟動Supervisor服務

配置service類型服務
#!/bin/bash
#
# supervisord   This scripts turns supervisord on
#
# Author:       Mike McGrath <mmcgrath@RedHat.com> (based off yumupdatesd)
#
# chkconfig:    - 95 04
#
# description:  supervisor is a process control utility.  It has a web based
#               xmlrpc interface as well as a few other nifty features.
# processname:  supervisord
# config: /etc/supervisor/supervisord.conf
# pidfile: /tmp/supervisord.pid
#
# source function library
. /etc/rc.d/init.d/functions
PIDFILE=/tmp/supervisord.pid

RETVAL=0
start() {
    echo -n $"Starting supervisord: "
    daemon "supervisord --pidfile=$PIDFILE -c /etc/supervisor/supervisord.conf"
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
}
stop() {
    echo -n $"Stopping supervisord: "
    killproc supervisord
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/supervisord
}
restart() {
    stop
    start
}
case "$1" in
  start)
    start
    ;;
  stop) 
    stop
    ;;
  restart|force-reload|reload)
    restart
    ;;
  condrestart)
    [ -f /var/lock/subsys/supervisord ] && restart
    ;;
  status)
    status supervisord
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    exit 1
esac
exit $RETVAL

將上述腳本內(nèi)容保存到/etc/rc.d/init.d/supervisor文件中,修改文件權(quán)限為755置逻,并設置開機啟動

# chmod 755 /etc/rc.d/init.d/supervisor
# chkconfig supervisor on
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末推沸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鬓催,老刑警劉巖肺素,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異深浮,居然都是意外死亡压怠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門飞苇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜗顽,你說我怎么就攤上這事布卡。” “怎么了雇盖?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵忿等,是天一觀的道長。 經(jīng)常有香客問我崔挖,道長贸街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任狸相,我火速辦了婚禮薛匪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脓鹃。我一直安慰自己逸尖,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布瘸右。 她就那樣靜靜地躺著娇跟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪太颤。 梳的紋絲不亂的頭發(fā)上苞俘,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音龄章,去河邊找鬼吃谣。 笑死,一個胖子當著我的面吹牛瓦堵,可吹牛的內(nèi)容都是我干的基协。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼菇用,長吁一口氣:“原來是場噩夢啊……” “哼澜驮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惋鸥,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤杂穷,失蹤者是張志新(化名)和其女友劉穎悍缠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耐量,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡飞蚓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廊蜒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趴拧。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖山叮,靈堂內(nèi)的尸體忽然破棺而出著榴,到底是詐尸還是另有隱情,我是刑警寧澤屁倔,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布脑又,位于F島的核電站,受9級特大地震影響锐借,放射性物質(zhì)發(fā)生泄漏问麸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一钞翔、第九天 我趴在偏房一處隱蔽的房頂上張望严卖。 院中可真熱鬧,春花似錦嗅战、人聲如沸妄田。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疟呐。三九已至,卻和暖如春东且,著一層夾襖步出監(jiān)牢的瞬間启具,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工珊泳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鲁冯,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓色查,卻偏偏與公主長得像薯演,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秧了,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容