用uWSGI和Nginx部署Flask項目


概況

(虛擬環境已經搭好,不做演示)

在開發過程中,我們一般直接用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 


免責聲明!

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



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