centOS7 flask項目佈署

先用1張圖表示centOS佈署flask的關鍵點,以及可能遇到的問題,及解決辦法。html

圖片看不清,能夠【下載】下來看,清晰度可以看清字python

 

【目標】linux

  • 局域網內,經過url能夠訪問flask編寫的api
  • 更新flask項目後,自動佈署

 

【工具】nginx

自動佈署涉及的工具:git

  • gitlab
  • jenkins

 

佈署flask項目,涉及的工具:web

  • flask編程
  • gunicorn:gunicorn啓動flask項目的方法
  • nginx:明確nginx與gunicorn之間的關係,當瀏覽器訪問flask-api時,背後發生了什麼
  • supervisor:掌握使用方法
  • linux操做:建立文件,切換目錄,安裝工具,啓動/重啓/關閉工具,查看被佔端口號以及,殺死進程

 

【環境介紹】編程

  • flask運行環境:

  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進程,再重啓)

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

相關文章
相關標籤/搜索