爲了保證web項目一直處於運行狀態,在程序遇到異常丶報錯時,當即重啓服務html
supervisor是使用python編寫的一個進程管理工具,能夠在linux系統下啓動,重啓,關閉進程python
1.python安裝:pip install supervisor(不推薦) 1.源碼安裝:https://pypi.python.org/pypi/supervisor >>>cd /usr/local/src >>>wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419ea/supervisor-3.3.2.tar.gz >>>tar -zxvf supervisor-3.3.2.tar.gz 2.生成配置文件:echo_supervisord_conf > /etc/supervisord.conf 3.啓動:supervisord -c /etc/supervisord.conf
Supervisor 是一個 C/S 模型的程序,supervisord
是 server 端,supervisorctl
是 client 端。linux
# vim /etc/supervisord.conf # 配置文件底部,配置include [include] files=/etc/supervisor/*.conf # 引入 `/etc/supervisor/conf.d/` 下的 `.conf` 文件,若你本地無/etc/supervisor目錄,請自建
rogram 的配置文件就寫在,supervisord 配置中 include
項的路徑下:web
# /etc/supervisor/conf.d/ 目錄下建立xxx.conf文件 # vim xxx.conf [program:app] ; 程序名稱,在 supervisorctl 中經過這個值來對程序進行一系列的操做 autorestart=True ; 程序異常退出後自動重啓 autostart=True ; 在 supervisord 啓動的時候也自動啓動 redirect_stderr=True ; 把 stderr 重定向到 stdout,默認 false environment=PATH="/home/app_env/bin" ; 能夠經過 environment 來添加須要的環境變量,一種常見的用法是使用指定的 virtualenv 環境 command=python server.py ; 啓動命令,與手動在命令行啓動的命令是同樣的 user=ubuntu ; 用哪一個用戶啓動 directory=/home/app/ ; 程序的啓動目錄 stdout_logfile_maxbytes = 20MB ; stdout 日誌文件大小,默認 50MB stdout_logfile_backups = 20 ; stdout 日誌文件備份數 ; stdout 日誌文件,須要注意當指定目錄不存在時沒法正常啓動,因此須要手動建立目錄(supervisord 會自動建立日誌文件) stdout_logfile = /data/logs/usercenter_stdout.log
supervisord : 啓動supervisor supervisorctl reload :修改完配置文件後從新啓動supervisor supervisorctl status :查看supervisor監管的進程狀態 supervisorctl start 進程名 :啓動XXX進程 supervisorctl stop 進程名 :中止XXX進程 supervisorctl stop all:中止所有進程,注:start、restart、stop都不會載入最新的配置文件。 supervisorctl update:根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓