1. 程式人生 > >Centos平臺Supervisord全攻略(docker應用程式設定為開機啟動)

Centos平臺Supervisord全攻略(docker應用程式設定為開機啟動)

前言: 

一定有你懶於啟動指令碼或者沒有啟動指令碼,但是又需要常駐後臺的程序需要管理,那麼supervisor一定不會失望,如果你使用過supervisord,我想你不會跟我爭論nohup & 什麼的也行的。

你可以通過yum直接安裝或者使用pip安裝,下面使用pip安裝

環境:

centos6.5

python2.7.5

首先安裝必要的包:

yum install python-setuptools
easy_install pip
pip install supervisor

如果安裝成功就可以進行下一步了。

###生成必要的配置檔案
echo_supervisord_conf > supervisord.conf
###將配置檔案統一放在/etc下,我想centos使用者沒有異議吧 cp supervisord.conf /etc/supervisord.conf ###為了不將所有新增配置資訊全寫在一個配置檔案裡,我們新建一個資料夾,每個配置資訊新增一個配置檔案,相互隔離 mkdir /etc/supervisord.d/ 修改配置檔案 vi /etc/supervisord.conf 加入以下配置資訊 [include] files = /etc/supervisord.d/*.conf

接下來建立一個啟動指令碼唄

#!/bin/sh
#
# /etc/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a # number of processes on UNIX-like operating # systems. # # chkconfig: - 64 36 # description: Supervisor Server # processname: supervisord # Source init functions . /etc/rc.d/init.d/functions prog="supervisord" prefix="/usr/local" exec_prefix="${prefix}" prog_bin="${exec_prefix}
/bin/supervisord"
PIDFILE="/var/run/$prog.pid" start() { echo -n $"Starting $prog: " ###注意下面這一行一定得有-c /etc/supervisord.conf 不然修改了配置檔案根本不生效! daemon $prog_bin -c /etc/supervisord.conf --pidfile $PIDFILE [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup" echo } stop() { echo -n $"Shutting down $prog: " [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown" echo } case "$1" in start) start ;; stop) stop ;; status) status $prog ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac
###然後加入啟動項唄
chmod +x /etc/init.d/supervisord
chkconfig --add supervisord
chkconfig supervisord on
service supervisord start

如果想通過web檢視管理的程序,加入以下程式碼,監聽9001,使用者user,密碼123

[inet_http_server] 
port=9001
username=user      
password=123

在重啟之前隨便建立一個掛在後臺的命令

 vi /etc/supervisord.d/tail.conf
[program:tail1]                                                                            
command=tail -f  /etc/supervisord.conf   ;常駐後臺的命令
autostart=true                           ;是否隨supervisor啟動
autorestart=true                         ;是否在掛了之後重啟,意外關閉後會重啟,比如kill掉!
startretries=3                           ;啟動嘗試次數
stderr_logfile=/tmp/tail1.err.log        ;標準輸出的位置
stdout_logfile=/tmp/tail1.out.log        ;標準錯誤輸出的位置

然後重啟瞧瞧

/etc/init.d/supervisord restart
##檢視一下是否監聽
lsof -i:9001
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
superviso 7782 root    4u  IPv4 74522612      0t0  TCP *:etlservicemgr (LISTEN)

好的,然後訪問伺服器ip:9001

如你所見,可以看見正在執行的程式的各種資訊(沒有執行的當然也能看到),通過簡單的點選就能restart all,stop all等命令~~~是不是異常強大