ubuntu-server下安裝配置supervisor進程管理

目的:使用supervisor進行進程管理,方便使用。html

操做:python

> sudo apt-get install supervisor # 安裝supervisorweb

  一、安裝完成後,/etc/supervisor/supervisord.conf 是supervisor的主要配置文件。安全

    supervisor的配置文件默認是不全的,不過在大部分默認的狀況下,上面說的基本功能已經知足。服務器

    supervisor的配置參數較多,詳細的配置及說明請百度。socket

    注:分號(;)開頭的配置表示註釋ui

    [unix_http_server]url

    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:xxx] # 這個是咱們配置被管理進程的參數,xxx是進程名,也能夠將其單獨卸載[include]下指定的目錄中,並以指定的後綴結尾
    省略....(下面會寫)
    
    ;包含其它配置文件
    [include]
    files = relative/directory/*.ini    ;能夠指定一個或多個以.ini結束的配置文件
    # files = /etc/supervisor/conf.d/*.conf  ;這樣寫也是ok的,由本身指定,之後就能夠將本身的進程配置文件放在這個目錄下
 
  二、/etc/supervisor/conf.d/*.conf 這個地方就是上面管理進程所放的文件夾
    開始給本身須要的腳本程序編寫一個子進程配置文件,讓supervisor來管理它,
    放在/etc/supervisor/conf.d/目錄下,以.conf做爲擴展名(每一個進程的配置文件均可以單獨分拆也能夠把相關的腳本放一塊兒)。
    如任意定義一個和腳本相關的項目名稱的選項組(/etc/supervisor/conf.d/test.conf)   

      #項目名
      [program:blog]
      #腳本目錄
      directory=/opt/bin
      #腳本執行命令
      command=/usr/bin/python /opt/bin/test.py
      #supervisor啓動的時候是否隨着同時啓動,默認True
      autostart=true
      #當程序exit的時候,這個program不會自動重啓,默認unexpected
      #設置子進程掛掉後自動重啓的狀況,有三個選項,false,unexpected和true。若是爲false的時候,不管什麼狀況下,都不會被從新啓動,若是爲unexpected,只有當進程的退出碼不在下面的exitcodes裏面定義的
      autorestart=false
      #這個選項是子進程啓動多少秒以後,此時狀態若是是running,則咱們認爲啓動成功了。默認值爲1
      startsecs=1
      #日誌輸出
      stderr_logfile=/tmp/blog_stderr.log
      stdout_logfile=/tmp/blog_stdout.log
      #腳本運行的用戶身份
      user = zhoujy
      #把 stderr 重定向到 stdout,默認 false
      redirect_stderr = true
      #stdout 日誌文件大小,默認 50MB
      stdout_logfile_maxbytes = 20M
      #stdout 日誌文件備份數
      stdout_logfile_backups = 20spa

> supervisord # 啓動supervisor服務debug

  注意:執行supervisord時出現supervisor error :Another program is already listening on a port that one of our HTTP servers is,說明你的supervisord已經啓動了,經過 ps -ef | grep supervisord 來查看進程,能夠kill他再從新起。

附上一些命令:

  supervisord -c /etc/supervisord.conf   # supervisor服務啓動

  supervisorctl # 服務客戶端管理(在supervisorctl客戶端下help一下)

    supervisorctl status //查看狀態

    supervisorctl start web_server // 開啓一個進程(web_server=你配置中寫的程序名稱)

    supervisorctl stop web_server //中止一個進程

    supervisorctl restart web_server //重啓一個進程

    supervisorctl reload # 從新啓動配置中的全部程序,更改了supervisor的配置後執行一下

    supervisorctl reread // 從新加載配置,更改了進程配置後

    supervisorctl update // 更新啓動列表,更改了進程配置後

參考:

https://www.cnblogs.com/xuezhigu/p/7660203.html

http://www.cnblogs.com/taek/p/8465393.html

........

相關文章
相關標籤/搜索