Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。它是經過fork/exec的方式把這些被管理的進程看成supervisor的子進程來啓動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去便可。也實現當子進程掛掉的時候,父進程能夠準確獲取子進程掛掉的信息的,能夠選擇是否本身啓動和報警。python
Supervisor是使用python開發的一個進程管工具,安裝和使用都很是簡單。使用 pip 或者 easy_install 安裝會很是方便,自動解決依賴關係。web
1、安裝命令安全
pip install supervisor easy_install supervisor
安裝完成後系統會增長几個命令:app
2、安裝好supervisor後須要手動的生成配置文件。socket
echo_supervisord_conf > /etc/supervisord.conf
supervisor默認讀取的配置文件爲/etc/supervisord.conf。工具
生成配置文件後就能夠啓動了,若是須要指定配置文件啓動的話 須要加上參數 -c,如:url
supervisord -c /etc/supervisord/supervisord.conf
3、設置配置文件命令行
執行完上面的操做後,配置文件/etc/supervisord.conf就已經生成了。unix
supervisord.conf 基本配置項說明,因爲其參數比較多,這些只貼出一些經常使用的配置項,詳細內容可參閱官網。 「;」 符號是表示該行配置被註釋。rest
[unix_http_server] file=/home/supervisor/supervisor.sock ; supervisorctl使用的 socket文件的路徑 ;chmod=0700 ; 默認的socket文件權限0700 ;chown=nobody:nogroup ; socket文件的擁有者 [inet_http_server] ; 提供web管理後臺管理相關配置 port=0.0.0.0:9001 ; web管理後臺運行的ip地址及端口,綁定外網需考慮安全性 ;username=root ; web管理後臺登陸用戶名密碼 ;password=root [supervisord] logfile=/var/log/supervisord.log ; 日誌文件,默認在$CWD/supervisord.log logfile_maxbytes=50MB ; 日誌限制大小,超過會生成新文件,0表示不限制 logfile_backups=10 ; 日誌備份數量默認10,0表示不備份 loglevel=info ; 日誌級別 pidfile=/home/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid ; pid文件 nodaemon=false ; 是否在前臺啓動,默認後臺啓動false minfds=1024 ; 能夠打開文件描述符最小值 minprocs=200 ; 能夠打開的進程最小值 [supervisorctl] serverurl=unix:///home/supervisor/supervisor.sock ; 經過socket鏈接supervisord,路徑與 [include] ;files = /etc/supervisor/conf.d/*.ini ;指定了在當前目錄supervisor.d文件夾下配置多個配置文件
在配置文件中,咱們須要作的在後面加上須要被管理的uwsgi和celery,如:
[program:uwsgi] command=uwsgi --ini /var/www/project/app01/uwsgi.ini ; 啓動uwsgi,路徑改成項目的路徑 directory=/var/www/project ;項目目錄 stopsignal=QUIT autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/www/project/uwsgi.log ; uwsgi日誌
[program:celery] command=celery -A project worker --loglevel=info --pool=solo ; 啓動celery的worker directory=/var/www/project ; 項目目錄 stopsignal=QUIT autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/www/project/logs/celery.log ; celery日誌
4、啓動
設置完配置文件後啓動supervisor就能夠管理uwsgi和celery了。
啓動命令:
supervisord
supervisorctl
若是supervisord配置文件再也不默認位置,使用supervisorctl工具時須要指定配置文件路徑
supervisordctl -c 配置文件路徑 supervisordctl status #查看進程運行狀態 supervisordctl start 進程名 #啓動進程 all 表示所有 supervisordctl stop 進程名 #關閉進程 supervisordctl restart 進程名 # 重啓進程 supervisordctl update # 從新載入配置文件 supervisordctl shutdown # 關閉supervisord supervisordctl clear 進程名 # 清空進程日誌