centOS7 flask項目布署


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

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

 

【目標】

  • 局域網內,通過url可以訪問flask編寫的api
  • 更新flask項目后,自動布署

 

【工具】

自動布署涉及的工具:

  • gitlab
  • jenkins

 

布署flask項目,涉及的工具:

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

 

【環境介紹】

  • flask運行環境:

  python3,pip3,python虛擬環境

  •  布署環境:

  centOS7

 

【操作步驟】

  配置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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM