先用1張圖表示centOS佈署flask的關鍵點,以及可能遇到的問題,及解決辦法。html
圖片看不清,能夠【下載】下來看,清晰度可以看清字python
【目標】linux
【工具】nginx
自動佈署涉及的工具:git
佈署flask項目,涉及的工具:web
【環境介紹】編程
python3,pip3,python虛擬環境flask
centOS7centos
【操做步驟】api
配置gunicorn:
1.建立虛擬環境,並下載gunicorn(pip install gunicorn)
2.在項目根目錄下建立gunicorn的啓動文件,wsgi.py,內容以下:
from app import create_app application = create_app() if __name__ == '__main__': application.run()
3.啓動命令:
gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application
驗證結果:
這時候經過命令請求url,能夠看到響應結果。這樣gunicorn就配置好了
curl http://127.0.0.1:8000 /users
配置nginx:
安裝nginx:
yum -y install nginx
若是提示沒有可用的軟件包,解決辦法:Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟件包
若是啓動nginx失敗,由於80端口號被佔用,解決辦法:centos7 ngxin啓動失敗:Job for nginx.service failed(80端口被佔用的解決辦法)
驗證結果:
啓動nginx後,打開瀏覽器輸入http://10.2.1.92:8001(8001是nginx使用的端口)
看到以下界面,表示nginx環境搭建完畢
配置使用nginx代理gunicorn服務
具體配置參照:gunicorn+nginx配置方法
驗證結果:
驗證結果前,要確保gunicorn是啓動的
配置supervisor管理gunicorn進程(啓動|重啓|關閉)
最後使用supervisor後臺啓動gunicorn進程,不然一關掉命令窗口,gunicorn進程也被殺死了,這固然不是你們但願看到的結果
supervisor的配置方法,參照supervisor的使用
驗證結果:
經過supervisor啓動gunicorn以後,關掉命令行窗口,注意器訪問 A地址/路由地址(A地址是什麼,參照上圖),能夠看到正確的響應結果,表示supervisor成功啓動了gunicorn
這樣nginx+gunicorn+supervisor佈署flask項目就配置好了。
配置項目更新,自動佈署:
若是想要實現更新flask項目,自動佈署,能夠藉助jenkins與gitlab的web-hook功能。
具體配置方法(只看前面與gitlab的配置便可,後面寫的很亂,不用看):如何建立一個項目,讓gitlab自動觸發jenkins進行構建
驗證結果:
在項目中新建1個測試文件:test.py,提交到倉庫
在服務器~/.jenkins/workspace/job名稱下查看,也存在test.py文件,即表示自動佈署配置成功
具體的配置不太清楚時,能夠看看這1篇,寫的很亂,但可能會記錄一些具體配置
【疑問】
爲何每次自動佈署以後,請求接口請求到的內容仍是以前的內容呢?
可是這樣作以後,再更新接口,內容就更新過來了?(殺掉supervisor進程,再重啓)