前幾篇介紹了如何設定 Lightsail 主機以及如何上傳檔案,接著就要進入程式碼環節。
整體系統架構如下圖,以 Lightsail 作為運行基礎,要注意的是,不是把程式碼上雲,網頁應用程式就會運作。
中間需要透過 Apache 網頁伺服器和 WSGI 伺服器。
Q:為什麼不能直接使用 app.py ?
直接用 app.py 只能啟動 Flask 內建的開發伺服器,雖然比較單純,但在正式環境下效能差、無法同時處理多個連線,也缺乏安全機制,因此,只適合測試。
使用 Apache 搭配 WSGI,讓 Apache 處理大量請求和靜態資源,WSGI 再把動態請求交給 Flask,能夠確保效能和穩定性。
系統主要使用 Flask 框架開發,前端以 HTML/CSS/JavaScript 實作,後端程式則使用 Python 串接 Azure AI Vision、Azure OpenAI 進行文字辨識及處理,以及 Lightsail MySQL 資料庫進行資料存取。
在網域設定上,使用 DNS(例如 www.000.tw)指向 Lightsail 伺服器,讓使用者可以直接透過網址連線到系統。
主要的檔案架構如下:
/var/www/flaskAPP
├── app.py # 主程式,啟動 Flask
├── clients.py # 資料庫相關功能
├── main.py # 用 FastAPI 建立資料庫連線
├── templates/ # HTML 模板
│ ├── index.html # 首頁
│ └── data_extract.html # 資料下載頁面
└── static/ # 靜態資源
├── css/
│ ├── index_style.css
│ └── data_extract_style.css
├── js/
│ └── script.js
└── img/
└── logo.png