您的 API 在本地運作正常。您已經徹底測試了它。現在是時候將其部署到真實的伺服器上,使它可以從網際網路上的任何地方訪問,而不僅僅是您的電腦。本章將引導您將 API 部署到 Railway,這是一個使部署變得極其簡單的平台。在大約 15 分鐘內,您將從本地開發轉變為一個即時的、公開可訪問的 API。
為什麼要部署?#
目前,您的 API 僅在 http://localhost:8000 上執行。這對於開發來說很好,但並不是很實用:一旦部署,您將獲得一個類似 https://user-api-production.up.railway.app 的 URL,它可以從任何地方全天候運作。您的 API 變得真實了。
在部署之前:準備您的程式碼#
從 SQLite 切換到 PostgreSQL#
SQLite 非常適合本地開發,但生產 API 應該使用適當的資料庫伺服器。 Railway 免費提供 PostgreSQL。在 Cursor 中打開 database.py 並修改它以支援 SQLite(用於本地開發)和 PostgreSQL(用於生產):此程式碼從環境變數讀取資料庫 URL。如果變數不存在(例如在本地開發時),它會退回到 SQLite。將機密移至環境變數#
您的 auth.py 檔案有一個硬編碼的 SECRET_KEY。這需要改為來自環境變數。新增 CORS 配置#
您的 main.py 目前允許來自任何地方的 CORS (allow_origins=["*"])。這對於開發來說很好,但在生產環境中您應該更加嚴格。現在您可以在生產環境中設定 ALLOWED_ORIGINS=https://yourapp.com,https://www.yourapp.com 以限制訪問。本地測試#
在本地執行您的 API 確保這些更改沒有破壞任何東西:訪問 http://localhost:8000/docs 並驗證一切仍然正常運作。
部署到 Railway#
Railway 是一個現代部署平台。它開始是免費的,自動處理資料庫,並且部署非常簡單。建立 Railway 帳戶#
安裝 Railway CLI#
登入 Railway#
這會打開瀏覽器視窗進行身分驗證。完成後,您就從 CLI 登入了。初始化您的專案#
Railway 會問:"Create a new project or link to an existing one?"Railway 建立一個專案並將您的本地目錄連結到它。新增 PostgreSQL 資料庫#
從列表中選擇 PostgreSQL。Railway 佈建一個 PostgreSQL 資料庫並自動建立一個包含連接字串的 DATABASE_URL 環境變數。設定環境變數#
建立 Procfile#
Railway 需要知道如何啟動您的應用程式。在您的專案根目錄中建立一個名為 Procfile(無副檔名)的檔案:web: uvicorn main:app --host 0.0.0.0 --port $PORT
這告訴 Railway 執行您的 FastAPI 應用程式並將其綁定到 Railway 提供的埠。建立 requirements.txt(如果您修改了它)#
確保您的 requirements.txt 包含所有依賴項:fastapi
uvicorn[standard]
sqlalchemy
psycopg2-binary
python-jose[cryptography]
passlib[bcrypt]
pydantic[email]
python-multipart
注意:PostgreSQL 支援需要 psycopg2-binary。2.
安裝 requirements.txt 中的依賴項
3.
自動建立資料庫表(因為 main.py 中的 Base.metadata.create_all())
獲取您的部署 URL#
https://user-api-production.up.railway.app
訪問該 URL + /docs 以查看您的即時 API 文件:https://user-api-production.up.railway.app/docs
測試您已部署的 API#
還記得上一章您用 AI 生成的所有那些測試案例嗎?現在您可以使用它們來測試您的生產 API。您不需要再次手動測試——只需切換環境。在 Apidog 中建立生產環境#
5.
Base URL: https://your-api-url.up.railway.app (您的實際 Railway URL)
執行您的 AI 生成測試#
1.
切換到 Production 環境(右上角的下拉選單)
Apidog 對生產 API 執行所有測試。您將看到:如果所有測試通過,恭喜!您的生產 API 運作得與本地版本完全一樣。環境變數是否設定正確?(railway variables 查看)
資料庫是否連接?(railway logs 檢查)
日誌中有任何錯誤嗎?(railway logs 查看)
這就是自動化測試的力量。 您用 AI 生成一次,現在您可以透過切換 Base URL 對任何環境(本地、模擬、生產)執行它們。
了解部署#
Railway 接收了您的程式碼,並看到它是一個 Python 專案(因為 requirements.txt)。它自動:設定環境變數 (DATABASE_URL, SECRET_KEY 等)
將您的應用程式連接到 PostgreSQL 資料庫
每次您執行 railway up,它都會使用您的最新程式碼重新部署。資料庫在部署之間持續存在,因此您的資料不會丟失。
查看日誌#
進行更新#
2.
在 Apidog 中執行您的測試套件(Local 環境)
4.
再次執行您的測試套件(Production 環境)
Railway 自動處理零停機部署。您的舊版本會繼續執行,直到新版本準備就緒,然後流量會切換過去。
免費層限制#
對於像這樣的簡單 API,您可能會保持在免費層內。如果您超過了,Railway 會暫停您的服務直到下個月,或者您可以新增付款方式。
替代方案:部署到 Render#
如果您更喜歡 Render(另一個好的平台),過程類似:5.
Render 檢測到它是 Python 並自動配置
Render 也提供免費層並類似地處理資料庫。主要區別在於 Render 自動從 GitHub 部署,而 Railway 可以直接從您的本地機器部署。
您學到了什麼#
準備您的程式碼以投入生產(環境變數、資料庫 URL)
您的 API 不再只是一個本地專案。它是一個真實的、已部署的服務,可以從任何地方訪問。
恭喜!#
這是一個現代的、專業的開發工作流程。您學會了使用 AI 工具來提高生產力,同時仍然了解底層發生了什麼。繼續構建,繼續學習,最重要的是 - 使用這些技能來創造您引以為豪的東西。在離開之前,請查看 章節總結 以快速回顧這段旅程。 Modified at 2025-12-29 12:07:25