Python 後台在自己電腦能跑,要放上網路卻卡住?Flask、FastAPI、Django 的五項上線檢查

為什麼「我的電腦能跑」,不代表別人打得開
想像這個場景:一家貿易公司的老闆請 ChatGPT 寫了一套庫存後台,用 Flask 做的。在自己的筆電上開 localhost:5000,查詢、新增、匯出都正常。業務同仁問:「我在外面要怎麼打開?」老闆這才發現,自己不知道下一步在哪裡。
如果您正處在這個階段,代表最難的部分已經完成:功能做出來了,也親手驗證過。接下來的落差很單純:您的電腦裝好了一堆東西,而上線的伺服器是一台全空的機器。上線其實就是讓這台空機器,重現您電腦上的一切。
實務上,AI 寫的 Python 專案卡在上線,幾乎都出在下面五個地方。
五項檢查,由簡到難
1. requirements.txt 是否完整
AI 常常只列出程式碼 import 的套件,漏掉執行時才需要的,例如 gunicorn、psycopg2-binary、python-dotenv、whitenoise。建議的驗證方式是做一次「全新安裝」:
- 建立新的虛擬環境:
python -m venv fresh - 只用清單安裝:
pip install -r requirements.txt - 再啟動一次專案
如果這裡就報錯,上線一定會報同樣的錯。也建議把 Python 版本寫下來(例如 3.11),避免兩邊版本不同。
2. 啟動指令
python app.py 或 flask run 是給開發用的,不適合對外服務。正式環境通常改用 WSGI/ASGI 伺服器,例如:
- Flask:
gunicorn app:app - FastAPI:
uvicorn main:app --host 0.0.0.0 --port 8000 - Django:
gunicorn 專案名.wsgi
兩個小提醒:主機要綁 0.0.0.0,只綁 127.0.0.1 的話外面連不進來;port 常由平台指定,建議從環境變數讀取。另外請確認程式裡沒有留著 debug=True。
3. ALLOWED_HOSTS 與 DEBUG(Django 最常見)
上線後看到 Bad Request (400),多半是網域沒加進 ALLOWED_HOSTS。同時建議:
- 把正式網域加入
ALLOWED_HOSTS - 若使用 https,另外設定
CSRF_TRUSTED_ORIGINS(要帶https://) DEBUG在正式環境一律關閉,SECRET_KEY改由環境變數讀取,不要留在程式碼裡
Flask 與 FastAPI 沒有這個設定,但前端若在另一個網址,要留意 CORS 允許的來源是否包含正式網域。
4. 靜態檔(CSS、JS、圖片)
本機開發時,框架會順手幫您提供靜態檔;正式環境不會。現象通常是頁面能開、但樣式全跑掉。
- Django:設定
STATIC_ROOT,上線前執行python manage.py collectstatic,小型專案可搭配whitenoise - Flask/FastAPI:檢查靜態資料夾路徑是否寫成只在您電腦才存在的絕對路徑
另外,會員上傳的檔案不要放在專案資料夾裡,很多平台更新時會把它清掉,建議改放獨立的儲存空間。
5. 資料庫連線字串
這是最容易出事的一項,因為牽涉真實資料。請逐點確認:
- 連線位址是不是
localhost?上線機器上沒有那個資料庫 - 目前用的是不是 SQLite 檔案?它在可隨時重建的主機上,資料可能隨更新消失
- 帳號密碼是否寫死在程式碼或被打包進壓縮檔?建議改成
DATABASE_URL之類的環境變數 - 執行 migration 前,先備份,並在副本上演練一次
這五項都有共通點:每一項都能用一行指令或一次重新安裝驗證,不需要讀懂所有程式碼。把檢查結果記成五行清單,之後無論自己處理或交給別人,都有依據。更完整的上線前檢查,可以參考這篇 AI 寫的程式碼上線檢查清單。
清單檢查完之後,下一步在哪
這裡要先說清楚一件事:我們的 免費預覽 只能放靜態檔案(HTML/CSS/JS,或能編譯成靜態檔的前端)。需要執行中的後端與資料庫的 Python 專案,上傳後不會得到預覽網址,而是一份 AI 健診報告,說明為什麼不能放、要怎麼改。如果您的專案前端與後端是分開的,前端部分仍可以先做成預覽,拿給主管或客戶看畫面。
至於 Python 後台本身,實務上有兩條路:照上面的清單自己逐項處理;或請人協助收尾。若您希望有人把這五項檢查、部署與後續維護一併處理,可以先看 我們的服務內容與收費方式,範圍與價格會先以書面談定,再開始動工。
關於 AI 上線專家
AI 上線專家讓您的 AI 幫您把網站部署上線:把一句話貼給 Claude Code、Cursor 或 Codex,幾分鐘後就有一個 您的名稱.aionline.tw 公開網址,可以直接傳給客戶或同事看。
- 免費預覽,不需信用卡,到期自動下線、不會扣款;滿意再升級為永久,最低 NT$99 / 月起
- 靜態網站、Node/Python 等有後端的網站都能部署,需要資料庫時自動配好 Postgres
- 付費方案可以綁自己的網域;部署不起來或需要客製開發,可以直接聯絡我們