使用Supervisor來管理uwsgi和celery

介紹

Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓。它是經過fork/exec的方式把這些被管理的進程看成supervisor的子進程來啓動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去便可。也實現當子進程掛掉的時候,父進程能夠準確獲取子進程掛掉的信息的,能夠選擇是否本身啓動和報警。python

 

安裝

Supervisor是使用python開發的一個進程管工具,安裝和使用都很是簡單。使用 pip 或者 easy_install 安裝會很是方便,自動解決依賴關係。web

1、安裝命令安全

pip install supervisor

easy_install supervisor

 

安裝完成後系統會增長几個命令:app

  • supervisord 用於啓動supervisor服務。
  • supervisorctl 用於管理supervisor服務,管理使用supervisor啓動的進程。

 

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 進程名                    # 清空進程日誌
相關文章
相關標籤/搜索