環境:html
centOS7.5 python3與python2共存
使用這種方式配置supervisor,能夠爲每1個flask項目創建 1個配置文件,使用1個supervisorctl統一管理,各類項目之間的配置文件又互不干擾。python
經過在jenkins使用shell命令便可完成項目的自動佈署git
參照:Centos7 中使用Supervisor守護進程shell
下面這種方式,只能在flask項目中經過supervisord -c xx.conf文件這種方式啓動gunicorn,每次佈署項目以後,都 須要手動重啓,很不方便。flask
目標:瀏覽器
讓supervisor管理gunicorn,能夠在gunicorn發生意外的狀況下,會自動的重啓。
1.supervisor的安裝:
在系統級別的python環境下pip install supervisor
。(這裏若是你用的是python3寫的項目,也能夠直接用pip安裝啓動supervisor,也就是python2,supervisor安裝在3或者2,對你的項目沒有任何影響)
2.在項目的根目錄下建立一個文件叫作program_name_supervisor.conf,目錄結構以下:bash
配置文件內容以下:服務器
注意:app
1.注意supervisord配置文件行頭不要有空格post
2.gunicorn的命令要在虛擬環境下運行(由於gunicorn安裝在flaskApi這個虛擬環境中)
# supervisor的程序名字
[program:gotest] #program_name 該名稱能夠隨意設置
# supervisor執行的命令
command=/root/.virtualenvs/flaskApi/bin/gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application
# 項目的目錄
directory = /home/wangju/gitProject/flaskDemo
# 開始的時候等待多少秒
startsecs=0
# 中止的時候等待多少秒
stopwaitsecs=0
# 自動開始
autostart=true
# 程序掛了後自動重啓
autorestart=true
# 輸出的log文件
stdout_logfile=programdir/log/supervisord.log #這裏你可能須要先建立log路徑
# 輸出的錯誤文件
stderr_logfile=programdir/log/supervisord.err#同上
[supervisord]
# log的級別
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登陸的地址和端口號
serverurl = http://127.0.0.1:9001
# 登陸supervisorctl的用戶名和密碼
username = admin
password = admin123456
[inet_http_server]
# supervisor的服務器
port = :9001
# 用戶名和密碼
username = admin
password = admin123456
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
安裝:
yum
install
-y epel-release
yum
install
-y supervisor
驗證安裝成功:
#測試是否安裝成功
echo_supervisord_conf #建立配置文件
echo_supervisord_conf > /etc/supervisord.conf
經過supervisor啓動gunicorn
(flaskApi) [root@67 flaskDemo]# supervisord -c gotest_supervisor.conf
肯定supervisord 服務並設置爲隨機啓動:
systemctl start supervisord.service && systemctl enable supervisord.service
瀏覽器輸入url確認一下,gunicron已經把flask啓動起來了,能夠正常請求並返回內容
參考文檔:
https://www.jianshu.com/p/d2da31b95a55
https://www.cnblogs.com/Dicky-Zhang/p/6171954.html