supervisor是什麼python
superviosr是一個Linux/Unix系統上進程監控和管理的工具,它由python編寫,能夠用pip安裝。supervisor能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓linux
爲何要使用supervisorios
supervisor能夠實現單個或成組地控制進程,它能夠把web服務的進程組看成本身的子進程,在子進程掛掉時重啓。對一組進程進行統一管理是linux沒有的功能web
supervisor組件app
supervisord是管理其餘進程的主進程dom
supervisorctl是supervisor客戶端的命令行工具socket
主配置文件supervisord.conf工具
unix_http_server 配置塊url
在該配置塊的參數項表示的是一個監聽在socket上的HTTP server命令行
[unix_http_server] file=/tmp/supervisor.sock ; (the path to the socket file) chmod=0766 ; socket file mode (default 0700)
file: unix domain socket的文件路徑。supervisorctl經過它與supervisord進行通訊
chmod: 修改supervisor.sock文件的權限
supervisord 配置塊
該配置塊的參數項是關於supervisord進程的全局配置項
[supervisord] logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200)
logfile: log文件路徑。與子進程的日誌不一樣
logfile_maxbytes: log文件達到多少自動進行輪轉,單位是kb、單位是KB、MB、GB。若是設置爲0則表示不限制日誌文件大小。當日志大小超過50MB時,生成一個新的日誌文件
logfile_backups:輪轉日誌備份的數量,默認是10,若是設置爲0,則不備份
loglevel:error、warn、info、debug、trace、blather、critical
pidfile:pid文件路徑
nodaemon:若是設置爲true,則supervisord在前臺啓動,而不是以守護進程啓動
minfds:supervisord在成功啓動前最少系統空閒的文件描述符,默認1024
minprocs:supervisord在成功啓動前最小可用的進程描述符,默認200
supervisorctl配置塊
[supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
rpcinterface配置塊
這個選項是給XML_RPC用的,若是想使用supervisord或者web server這個選項必需要開啓
[rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
include配置塊
用於將寫在cong.d中的*.ini文件內容讀入主配置文件
通常一個ini文件包含一個program配置塊。用於配置web服務進程的啓動命令、目錄、日誌位置等
[include] files = /etc/supervisor/conf.d/*.ini
[program:myserver] command=/home/my_web_server/venv/bin/gunicorn -w4 -b0.0.0.0:8105 app.wsgi:application directory=/home/my_web_server/ user=deploy stdout_logfile=/home/logs/server.log stderr_logfile=/home/logs/server.err.log
command:啓動程序使用的命令,能夠是絕對路徑也能夠是相對路徑
directory:supervisord在生成子進程的時候會切換到該目錄
user: 若是supervisord以root運行,則會使用這個設置用戶啓動子程序
stdout_logfile:進程標準輸出的文件位置
stderr_logfile:進程錯誤日誌輸出的文件位置
還有一些可選配置:
autorestart = true
在子進程掛掉後重啓
priority=1
子進程啓動關閉優先級,優先級低的,最早啓動,關閉的時候最後關閉。數字越高,優先級越高
numprocs=1
啓動進程的數目
在新建了ini配置文件後,要用supervisorctl從新加載配置文件
supervisorctl reload