概況
(虛擬環境已經搭好,不做演示)
在開發過程中,我們一般直接用Python命令直接運行Flask程序。這樣的運行只適合我們開發,方便我們調試。一旦程序部署到線上,這樣運行的Flask程序性能會比較低。可以采用uWSGI+Nginx進行部署。
uWSGI
在部署之前,我們得先了解幾個概念
wsgi web應用程序之間的接口。它的作用就像是橋梁,連接在web服務器和web應用框架之間。
uwsgi 是一種傳輸協議,用於定義傳輸信息的類型。
uWSGI 是實現了uwsgi協議WSGI的web服務器。
部署
首先准備一個flask程序,名字run.py(自己的項目主目錄app.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
#項目路徑 /自己項目路徑/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
#虛擬環境環境路徑(在root下的.virtualenvs下查看)
virtualenv = /虛擬環境路徑/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 /自己路徑下的靜態文件/static;
}
}
啟動
啟動uWSGI
uwsgi --ini uwsgi.ini
啟動Nginx(nginx是已經搭好的,直接nginx啟動即可)
然后訪問Nginx監聽的IP,由於我在本地部署,就直接訪問http://127.0.0.1:80/
其他命令
uwsgi重啟
uwsgi --reload uwsgi.pid
uwsgi停止
uwsgi --stop uwsgi.pid