【Flask 教學】實作 GCP 部署 Flask + Nginx + uWSGI

GCP部署Flask_Nginx_uWSGI_Max行銷誌

前言

在 GCP 上部署 Flask 時踩了不少的雷坑,所以此篇寫得特別詳細,照著步驟走一定可以部署完成!期望能幫助到也正在學習如何在 GCP 上部署 Flask + Nginx + uWSGI 架設 Server 的朋友!

另外之前也有寫過一篇用 Docker 部署 Flask 的文章 (附完整程式碼),推薦給大家:

【Flask教學系列】實作 Docker-compose (Flask+Nginx+PostgreSQL)

一. GCP 建置虛擬主機

1.1 在 GCP 上新建立一台 VM,我們這次選用 f1-micro (1 vCPU,614 MB記憶體) 最小型的主機,每個月會花費 150 台幣左右。

1.2 作業系統選用預設的 Debian 版本是 Linux 10 (buster)

1.3 防火牆選擇開啟 HTTP 和 HTTPS ( 80 prot 和 443 port)

1.4 此次教學中會使用到 8001 port ,所以需要到 VPC 網路 > 防火牆 > 建立防火牆規則裡面新增 tcp 8001

二. 安裝套件

1.1 首先切換到 root 權限
建議以下動作都以 root 帳號執行,若在安裝過程中有遇到任何的 error 都請立即解決再繼續建置,不然可能會導致更難處理的後果

1.2 安裝套件
為了讓大家比較清楚安裝了什麼套件,所以我這邊是一行一行列出來~

三. 開始實作 GCP 部署 Flask Server

1. 架構解說

1.1 本次的資料夾目錄結構如下,基本上跟隨著本篇的指令就會建構出一樣的架構囉

1.2 建立 flask 資料夾

2. 建立 Flask 的 main.py

2.1 在 flask_app 資料夾內建立 main.py

2.2 貼上以下主程式

2.3 測試 Flask 運行

運行後,瀏覽器開啟 IP 位置 http://35.193.247.37:8001/ 就可以看到部署兩個字囉!

3. 建立 uWSGI 配置檔

3.1 在 flask_app 資料夾內建立 app.ini

3.2 貼上以下配置參數

3.3 測試使用 uWSGI 來運行 Flask

運行後,瀏覽器開啟 IP 位置 http://35.193.247.37:8001/ 就可以看到部署兩個字囉!

4. 建立 Nginx 配置檔

1.1 修改 Nginx 配置

1.2 貼上以下主程式

5. 運行 Flask + uWSGI + Nginx

1.1 啟動 uWSGI

1.2 右上角齒輪 > 建立新的連線

1.3 啟動 Nginx

都運行後,瀏覽器開啟 IP 位置 http://35.193.247.37:80/ 如果看到部署兩個字代表成功囉!

1.4 補充 Nginx 相關指令

後記:分享此次踩到的 uWSGI 雷坑

▍uWSGI 錯誤訊息:invalid request block size

解決方法:請確認 Nginx 配置的協議是否與 uWSGI 配置的協議相同,以下列了三種不同的配置方法

解決方法 1. 使用 http 協議

Nginx 配置

uWSGI 配置

解決方法 2. 使用 uwsgi 協議

Nginx 配置

uWSGI 配置

解決方法 3. 使用 socket

Nginx 配置

uWSGI 配置

運行 uwsgi --ini app.ini 後,資料夾會自動產生 uwsgi.sock

最後~

每次要遷移主機,都需要重新部署實在太累了!所以筆者推薦此篇利用 Docker 就可以一個指令完成快速架起 Server

【Flask教學系列】實作 Docker-compose (Flask+Nginx+PostgreSQL)

▍回顧本篇我們介紹了的在 GCP 實作部署 Flask 大綱:

  • GCP 建置虛擬主機
  • 安裝套件
  • 進入正題 – 開始實作 GCP 部署 Flask Server
    1. 架構解說
    2. 建立 uWSGI 配置檔
    3. 建立 Nginx 配置檔
  • 後記:分享此次踩到的 uWSGI 雷坑

關於 Flask 教學的延伸閱讀:

▍關於 Flask 教學系列目錄:

▍其他 Flask 相關教學:

那 【Flask 教學】實作 GCP 部署 Flask + Nginx + uWSGI 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *