用uWSGI和Nginx部署Flask項目

概況

在開發過程當中,咱們通常直接用Python命令直接運行Flask程序。這樣的運行只適合咱們開發,方便咱們調試。一旦程序部署到線上,這樣運行的Flask程序性能會比較低。能夠採用uWSGI+Nginx進行部署。python

uWSGI

在部署以前,咱們得先了解幾個概念nginx

  • wsgi web應用程序之間的接口。它的做用就像是橋樑,鏈接在web服務器和web應用框架之間。web

  • uwsgi 是一種傳輸協議,用於定義傳輸信息的類型。flask

  • uWSGI 是實現了uwsgi協議WSGI的web服務器。服務器

部署

首先準備一個flask程序,名字run.pyapp

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return '部署'

if __name__ == '__main__':
    app.run()
複製代碼

安裝uWSGI框架

pip install uwsgi
複製代碼

在項目的目錄建立一個uwsgi的配置文件socket

[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;

	}
}
複製代碼

啓動

啓動uWSGIspa

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
複製代碼

歡迎關注個人公衆號:

image
相關文章
相關標籤/搜索