1. 程式人生 > >Python3 基於 Nginx 部署 Flask 專案

Python3 基於 Nginx 部署 Flask 專案

很早之前就寫過一篇 Python3 基於 Nginx 部署 Django 專案 的文章,一直沒有釋出出來,這次部署 Flask 專案的時候用到了很多之前 Django 的東西,所有乾脆同時將這兩篇釋出。

很多細節的內容我就不寫了,只把 Nginx 配置和 uWSGI 配置給出即可,因為原理是一毛一樣的。其中有一點不同的是,Django 中有 wsgi.py 檔案,所以我們不需要指定專案的根目錄、主程式、python直譯器路徑等相關內容。但是 Flask 是輕量級的 web 伺服器,沒有這些東西,所以我們在配置 Nginx 和 uWSGI 的時候需要指定這些內容。

Nginx 配置:

# Flask dataV api
server {
    
    listen 5050;
    
    server_name data.migelab.com;
    charset utf-8;
    
    client_max_body_size 75M;
    
    location / { 

        include uwsgi_params;                       # 匯入uwsgi配置 
    
        uwsgi_pass 127.0.0.1:5555;                  # 轉發埠,需要和uwsgi配置當中的監聽埠一致
        uwsgi_param UWSGI_PYTHON /usr/bin/python3;  # Python直譯器所在的路徑,如果有虛擬環境可將路徑設定為虛擬環境
        uwsgi_param UWSGI_CHDIR /opt/dataV;         # 專案根目錄
        uwsgi_param UWSGI_SCRIPT run:app;           # 專案的主程式,比如你測試用run.py檔案,檔案中app = Flask(__name__),那麼這裡就填run:app 
    }   
}

uWSGI 配置:

[uwsgi]

# uWSGI 的監聽埠
socket          = 127.0.0.1:5555
# 專案根目錄
chdir           = /opt/dataV
# Flask 專案的啟動檔案
wsgi-file       = run.py
# 程式內啟用的application變數名
callable        = app 
# 程序數量
processes       = 4
vacuum          = true
master          = true

啟動 uWSGI 伺服器:

uwsgi --ini /opt/dataV/uwsgi.ini &