概況
在開發過程中,我們一般直接用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/
其他命令
- uwsgi重啟
uwsgi --reload uwsgi.pid
複製程式碼
- uwsgi停止
uwsgi --stop uwsgi.pid
複製程式碼
歡迎關注我的公眾號: