supervisor安裝

Supervisor官方文檔:http://supervisord.org/index.htmlhtml

Supervisor是一個進程管理工具,當進程中斷的時候Supervisor能自動從新啓動它。能夠運行在各類類unix的機器上,不支持windows,Python編寫,python版本大於2.4,不支持3,因此python3.x是不能安裝supervisor,只有2.x能夠安裝python

1、安裝supervisor
我因爲pip install supervisor下載下來可能由於網絡緣由因此採用了 方法二安裝的ios

方法1、web

yum install python-setuptools
easy_install supervisor
supervisord  -v

方法2、shell

wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz
tar zxvf supervisor-3.1.3.tar.gz
cd supervisor
python setup.py install

注意:我升級了python2.6.6到python2.7.13,因此安裝的時候多是
python2.7 setup.py install 這樣json

方法3、vim

yum install -y epel-release
yum install -y supervisor

方法4、利用pip安裝
我是下載了setuptools和pip包 安裝完後 用pip安裝superviosrwindows

unzip  setuptools-36.6.0.zip
cd setuptools-36.6.0
python  setup.py  install
tar  xf  pip-9.0.1.tar.gz
cd pip-9.0.1
python  setup.py  install

若是pip -V 提示沒有命令,那麼須要添加環境變量(最好都添加一下)centos

vim /etc/profile
export PATH=/usr/local/python2.7/bin:$PATH
source /etc/profile
`echo "export PATH=/usr/local/python2.7/bin:$PATH" >>/etc/profile``

pip升級命令:python3.x

pip install -U pip     或者下面這個  兩個功能等同
pip install --upgrade pip

可是首先要安裝 python2.7或者以上版本的python 可是最好別裝3.x的python可能會有問題目前來講

pip  install supervisor``
或者 

tar zxvf supervisor-3.3.3.tar.gz
cd supervisor
python setup.py install
這裏python多是升級後的python2.7,要注意一下 

supervisor官網使用pip  install supervisor方式安裝的

**2、組件說明**
  一、supervisord : 服務
  二、supervisorctl:命令工具

3、若是是centos7上啓動服務並設置開機自動啓動,centos6.x見下面
  systemctl start supervisord.service && systemctl enable supervisord.service

而後生成配置文件 supervisord.conf
echo_supervisord_conf > /etc/supervisord.conf

建立目錄,之後須要用supervisor啓動的配置文件都放在這個目錄下便可
mkdir -p /etc/supervisor/conf.d/

修改 /etc/supervisord.conf 中的 include 爲本身的配置文件存放地址。
 vim /etc/supervisord.conf
;[include]
;files = relative/directory/*.ini

改爲下面的:

[include]
files = /etc/supervisor/conf.d/*.conf

**sed方式更改:**
sed -i 's@\;\[include\]@\[include\]@g' /etc/supervisord.conf
sed -i 's@\;files \= relative\/directory\/\*\.ini@files \= \/etc\/supervisor\/conf.d\/\*\.conf@g' /etc/supervisord.conf
**指定配置文件啓動supervisor:**
supervisord -c /etc/supervisord.conf
[root@localhost src]# ps -ef | grep supervisor
root       2027      1  0 07:29 ?        00:00:00 /usr/local/python2.7/bin/python /usr/local/python2.7/bin/supervisord -c /etc/supervisord.conf
root       2114   1782  0 07:44 pts/0    00:00:00 grep supervisor

supervisor的配置文件(除去了大部分沒必要要的文件)

[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
logfile_backups=10           ; 日誌文件保留備份數量默認 10
loglevel=info                ; 日誌級別,默認 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=false               ; 是否在前臺啓動,默認是 false,即以 daemon 的方式啓動
minfds=1024                  ; 能夠打開的文件描述符的最小值,默認 1024
minprocs=200                 ; 能夠打開的進程數的最小值,默認 200

; 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 ; 經過 UNIX socket 鏈接 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl=http://127.0.0.1:9001 ; 經過 HTTP 的方式鏈接 supervisord

; 包含其餘的配置文件
;[include]
;files = relative/directory/*.ini    ; 能夠是 *.conf 或 *.ini

若是在supervisor的目錄下放了新的conf文件。那麼能夠用reread讀取,update啓動新的進程
配置進程,在supervisord.conf 最後加上下面配置,固然你也能夠放到其餘文件,經過編輯supervisor的配置文件 include 引入
如:
cd /etc/supervisor/conf.d/
vim ssserver.conf

[program:ssserver]            #ssserver是程序名。配置文件通常就是ssserver.conf這樣
command=/usr/local/bin/ssserver -c /etc/config.json    #啓動命令。最好用絕對路徑
#process_name=%(program_name)s%(process_num)01d            #每一個進程名稱,若是咱們下面的numprocs參數爲1的話,就不用管這個參數了,它默認值%(program_name)s也就是上面的那個program冒號後面的名字
numprocs=1                #啓動的數量
autostart=true              #supervisor啓動的時候是否隨着同時啓動
autorestart=true           #當程序跑出exit的時候,這個program會自動重啓
startretries=10             #程序失敗自動重啓次數
startsecs=3                  #程序重啓時候停留在runing狀態的秒數
stopsignal=QUIT
stopwaitsecs=10         #程序啓動10s後沒有異常退出,就當作正常啓動了
user=root                     #使用root用戶啓動
environment=LD_LIBRARY_PATH='/usr/local/lib'
directory=/usr/local/bin/                     #程序啓動目錄
redirect_stderr=true                           # 把 stderr 重定向到 stdout,默認 false
stdout_logfile=/var/log/ssserver.log   # stdout日誌文件路徑
stdout_logfile_maxbytes=100MB      # stdout 日誌文件大小,默認 50MB
stdout_logfile_backups=10                # stdout 日誌文件備份數

(更多配置說明請參考:http://supervisord.org/configuration.html

示例解釋:

[program:theprogramname] ;定義監控系統的名稱
command=theprogramcmd ;重啓進程的命令
autorstart=true ;是否自動啓動
process_name=%(program_name)s ;進程名稱,默認是程序名稱
numprocs=1 ;進程數量
directory=/tmp ;路徑
umask=022 ;掩碼
priority=999 ;優先級,越大被開起的越早
autorestart=true ;自動重啓
startsecs=10 ;啓動等待時間(秒)
startretries=3 ;啓動重試次數
stopsignal=TERM ;關閉信號
stopwaitsecs=10 ;關閉前等待時間
user=chrism ;監控用戶權限
redirect_stderr=false ;重定向報錯輸出到stdout
stdout_logfile=/a/path ;輸入重定向爲日誌
stdout_logfile_maxbytes=1MB ;日誌大小
stdout_logfile_backups=10 ;日誌備份
stdout_capture_maxbytes=1MB 
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=A=1,B=2 ;預約義環境變量
serverurl=AUTO ;系統URL

而後supervisorctl 進入 supervisor的shell界面

而後
reread     重讀一下
update讓服務更新進來  就啓動了新的服務
**報錯:**
#supervisorctl
unix:///tmp/supervisor.sock no such file

**解決:**
可能沒啓動服務,指定配置文件啓動服務便可
supervisord -c /etc/supervisord.conf
**報錯:**
/var/log/supervisor/xxx_out.log does not exist

**解決:**
緣由是/var/log/supervisor目錄不存在,去建立一個就能夠了
mkdir /var/log/supervisor
相關文章
相關標籤/搜索