supervisor 安裝與nginx配置


1、什么是supervisor

  superviosr是一個Linux/Unix系統上的進程監控工具,他/她upervisor是一個Python開發的通用的進程管理程序,可以管理和監控Linux上面的進程,能將一個普通的命令行進程變為后台daemon,並監控進程狀態,異常退出時能自動重啟。不過同daemontools一樣,它不能監控daemon進程

2、supervisor 安裝與nginx配置

  安裝:

  1、yum 安裝

    安裝epel源
    yum install epel-release -y
    yum install supervisor -y

    tornado項目配置

vim /etc/supervisord.d/tornado.ini
[program:tornado] directory=/root command=/root/to.py autostart=true autorestart=true stderr_logfile=/tmp/tornado_stderr.log stdout_logfile=/tmp/tornado_stdout.log #user = test

 

  2、python 安裝

    yum install python-pip -y

    pip install supervisor

    生成配置文件

    echo_supervisord_conf > /etc/supervisord.conf

    修改配置文件

  vim /etc/supervisord.conf

  [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)

  [include]

  files = /etc/supervisor/*.conf

  創建.conf目錄     mkdir /etc/supervisor

  創建nginx配置文件  vim nginx.conf

  [program:nginx]

  autorestart=True

  autostart=True

  redirect_stderr=True

  ;environment=PATH=""  

  command=/usr/sbin/nginx -g 'daemon off;';注意一定要前台啟動

  user=root

  ;process_name = %(program_name)s%(process_num)d

  ;numprocs=3  

  ;directory=/root/

  stdout_logfile_maxbytes=20MB

  stdout_logfile_backups=20

  ;stdout

  stdout_logfile=/var/log/supervisor/nginx.log

  stderr_logfile=/var/log/supervisor/nginx_error.log

3、supervisord配置塊詳解:

- logfile:log文件路徑
- logfile_maxbytes:log文件達到多少后自動進行輪轉,單位是KB、MB、GB。如果設置為0則表示不限制日志文件大小
- logfile_backups:輪轉日志備份的數量,默認是10,如果設置為0,則不備份
- loglevel:error、warn、info、debug、trace、blather、critical
- pidfile:pid文件路徑
- umask:umask值,默認022
- nodaemon:如果設置為true,則supervisord在前台啟動,而不是以守護進程啟動
- minfds:supervisord在成功啟動前可用的最小文件描述符數量,默認1024
- minprocs:supervisord在成功啟動前可用的最小進程描述符數量,默認200
- nocleanup:防止supervisord在啟動的時候清除已經存在的子進程日志文件
- childlogdir:自動啟動的子進程的日志目錄
- user:supervisord的運行用戶
- directory:supervisord以守護進程運行的時候切換到這個目錄
- strip_ansi:消除子進程日志文件中的轉義序列
- environment:一個k/v對的list列表

4、program配置詳解:

- command:啟動程序使用的命令,可以是絕對路徑或者相對路徑
- process_name:一個python字符串表達式,用來表示supervisor進程啟動的這個的名稱,默認值是%(program_name)s
- numprocs:Supervisor啟動這個程序的多個實例,如果numprocs>1,則process_name的表達式必須包含%(process_num)s,默認是1
- numprocs_start:一個int偏移值,當啟動實例的時候用來計算numprocs的值
- priority:權重,可以控制程序啟動和關閉時的順序,權重越低:越早啟動,越晚關閉。默認值是999
- autostart:如果設置為true,當supervisord啟動的時候,進程會自動重啟。
- autorestart:值可以是false、true、unexpected。false:進程不會自動重啟,unexpected:當程序退出時的退出碼不是exitcodes中定義的時,進程會重啟,true:進程會無條件重啟當退出的時候。
- startsecs:程序啟動后等待多長時間后才認為程序啟動成功
- startretries:supervisord嘗試啟動一個程序時嘗試的次數。默認是3
- exitcodes:一個預期的退出返回碼,默認是0,2。
- stopsignal:當收到stop請求的時候,發送信號給程序,默認是TERM信號,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。
- stopwaitsecs:在操作系統給supervisord發送SIGCHILD信號時等待的時間
- stopasgroup:如果設置為true,則會使supervisor發送停止信號到整個進程組
- killasgroup:如果設置為true,則在給程序發送SIGKILL信號的時候,會發送到整個進程組,它的子進程也會受到影響。
- user:如果supervisord以root運行,則會使用這個設置用戶啟動子程序
- redirect_stderr:如果設置為true,進程則會把標准錯誤輸出到supervisord后台的標准輸出文件描述符。
- stdout_logfile:把進程的標准輸出寫入文件中,如果stdout_logfile沒有設置或者設置為AUTO,則supervisor會自動選擇一個文件位置。
- stdout_logfile_maxbytes:標准輸出log文件達到多少后自動進行輪轉,單位是KB、MB、GB。如果設置為0則表示不限制日志文件大小
- stdout_logfile_backups:標准輸出日志輪轉備份的數量,默認是10,如果設置為0,則不備份
- stdout_capture_maxbytes:當進程處於stderr capture mode模式的時候,寫入FIFO隊列的最大bytes值,單位可以是KB、MB、GB
- stdout_events_enabled:如果設置為true,當進程在寫它的stderr到文件描述符的時候,PROCESS_LOG_STDERR事件會被觸發
- stderr_logfile:把進程的錯誤日志輸出一個文件中,除非redirect_stderr參數被設置為true
- stderr_logfile_maxbytes:錯誤log文件達到多少后自動進行輪轉,單位是KB、MB、GB。如果設置為0則表示不限制日志文件大小
- stderr_logfile_backups:錯誤日志輪轉備份的數量,默認是10,如果設置為0,則不備份
- stderr_capture_maxbytes:當進程處於stderr capture mode模式的時候,寫入FIFO隊列的最大bytes值,單位可以是KB、MB、GB
- stderr_events_enabled:如果設置為true,當進程在寫它的stderr到文件描述符的時候,PROCESS_LOG_STDERR事件會被觸發
- environment:一個k/v對的list列表
- directory:supervisord在生成子進程的時候會切換到該目錄
- umask:設置進程的umask
- serverurl:是否允許子進程和內部的HTTP服務通訊,如果設置為AUTO,supervisor會自動的構造一個url

5、supervisor 操作命令

$ supervisorctl status
$ supervisorctl stop usercenter
$ supervisorctl start usercenter
$ supervisorctl restart usercenter
$ supervisorctl reread
$ supervisorctl update

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM