Flask + Gunicorn + Nginx 部署

WSGI協議

Web框架致力於如何生成HTML代碼,而Web服務器用於處理和響應HTTP請求。Web框架和Web服務器之間的通訊,須要一套雙方都遵照的接口協議。WSGI協議就是用來統一這二者的接口的。html

WSGI容器——Gunicorn

經常使用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令啓動,不須要編寫配置文件,相對uWSGI要容易不少,因此這裏我也選擇用Gunicorn做爲容器。python

安裝

 

 

啓動

 

module_name對應python文件,variable_name對應web應用實例。
以最簡單的flask應用爲例:nginx

啓動代碼:git

 

tips

開發flask應用時,經常使用flask-script添加一些命令擴展。而部署應用時,就不須要再從flask-script的Manager實例中啓動應用了。
在項目中添加wsgi.py文件:github

  • 在wsgi文件中建立flask實例給gunicorn使用。
  • 建立實例後,註冊上下文裝飾器。

再經過gunicorn啓動flask應用:web

 

Nginx

Gunicorn對靜態文件的支持不太好,因此生產環境下經常使用Nginx做爲反向代理服務器。flask

安裝

 

 

啓動

 

 

修改配置文件

先將配置文件備份:服務器

而後修改配置文件:app

這裏將Nginx設置爲代理模式,代理到本地的8000端口,以後就能夠經過公網訪問flask應用了。框架

總結

最後,總結下這幾個部分的關係:


(nginx收到客戶端發來的請求,根據nginx中配置的路由,將其轉發給WSGI)
nginx:」WSGI,找你的來了!」廈門叉車租賃(WSGI服務器根據WSGI協議解析請求,配置好環境變量,調用start_response方法呼叫flask框架)WSGI服務器:」flask,快來接客,客戶資料我都給你準備好了!」(flask根據env環境變量,請求參數和路徑找到對應處理函數,生成html)flask:」!@#$%^……WSGI,html文檔弄好了,拿去吧。」(WSGI拿到html,再組裝根據env變量組裝成一個http響應,發送給nginx)WSGI服務器:」nginx,剛纔誰找我來着?回他個話,!@#$%^…..」(nginx再將響應發送給客戶端)

相關文章
相關標籤/搜索