用uWSGI和Nginx部署Flask專案
在開發過程中,我們一般直接用Python命令直接執行Flask程式。這樣的執行只適合我們開發,方便我們除錯。一旦程式部署到線上,這樣執行的Flask程式效能會比較低。可以採用uWSGI+Nginx進行部署。
uWSGI
在部署之前,我們得先了解幾個概念
-
wsgi web應用程式之間的介面。它的作用就像是橋樑,連線在web伺服器和web應用框架之間。
-
uwsgi 是一種傳輸協議,用於定義傳輸資訊的型別。
-
uWSGI 是實現了uwsgi協議WSGI的web伺服器。
部署
首先準備一個flask程式,名字 run.py
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return '部署' if __name__ == '__main__': app.run() 複製程式碼
安裝uWSGI
pip install uwsgi 複製程式碼
在專案的目錄建立一個uwsgi的配置檔案
[uwsgi] #配合nginx使用 socket = 127.0.0.1:8000 #專案路徑 /Users/xiaoyuan/Desktop/flask_test chdir= 自己專案路徑 #wsgi檔案 run就是flask啟動檔案去掉字尾名 app是run.py裡面的Flask物件 module= run:app #指定工作程序 processes= 4 #主程序 master= true #每個工作程序有2個執行緒 threads = 2 #指的後臺啟動 日誌輸出的地方 daemonize= uwsgi.log #儲存主程序的程序號 pidfile = uwsgi.pid #虛擬環境環境路徑 virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test 複製程式碼
然後配置Nginx,找到Nginx的配置檔案 nginx.conf ,在http塊下加上下面程式碼
server { # 監聽埠 listen 80; # 監聽ip 換成伺服器公網IP server_name 127.0.0.1; #動態請求 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } #靜態請求 location /static { alias /Users/xiaoyuan/Desktop/flask_test/static; } } 複製程式碼
啟動
啟動uWSGI
uwsgi --ini uwsgi.ini 複製程式碼
啟動Nginx
/etc/init.d/nginx start 複製程式碼
然後訪問Nginx監聽的IP,由於我在本地部署,就直接訪問http://127.0.0.1:80/
