L28. 后端服务部署:Railway 的力量
Vibe Coding 宣言:后端不落地,前端没底气。
0. 为什么这一课至关重要? (Why It Matters)
- 不再依赖本地:你的 API 服务(Python/FastAPI)不能只活在你的笔记本里。
- 全栈闭环:前端有 Vercel,后端有 Railway。两者结合,天下无敌。
- 持久化:Railway 还能提供持久化的磁盘存储,不像 Vercel 的函数那样用完即焚。
1. 目标 (Goal)
将 Python 后端服务部署到 Railway,并让 Vercel 的前端能连上它。
2. 核心概念/装备/指令 (The Core)
2.1 Railway (The Engine)
类似 Vercel,但更适合部署长时间运行的服务(如 Web Server, Bot, Worker)。
- Buildpack: 自动识别语言并构建。
- Dockerfile: 如果自动识别失败,就用 Dockerfile。
2.2 环境变量 (Variables)
在 Railway 面板里配置你的 API_KEY 等敏感信息。
3. 实战演练 (Action)
Step 1: 准备后端代码
确保根目录下有 requirements.txt 和 main.py (FastAPI/Flask)。 如果是 FastAPI,确保安装了 uvicorn。
Step 2: 配置启动命令
在 Railway 里设置 Start Command:
bash
uvicorn main:app --host 0.0.0.0 --port $PORT注:$PORT 是 Railway 自动分配的端口,必须用它。
Step 3: 连接 GitHub
- 登录 railway.app。
New Project->Deploy from GitHub repo。- 选择你的后端仓库。
Step 4: 配置变量
在 Variables 选项卡里填入你的 .env 内容。
Step 5: 获取域名
部署成功后,Railway 会分配一个 xxx.up.railway.app 的域名。 这就是你的后端 API 地址!
4. 常见问题 (FAQ - Vibe Style)
Q: Railway 收费吗? A: 每个月有免费额度。 只要不是跑非常耗资源的任务,足够个人用了。如果不够,几美元也很便宜。
Q: 为什么连不上数据库? A: 数据库也得在云端。 你不能连 localhost 了。下一课讲云端数据库。
Q: 为什么 Vercel 前端连不上 Railway 后端? A: CORS (跨域资源共享)。 后端代码里要允许前端域名的访问。
python
# main.py
app.add_middleware(
CORSMiddleware,
allow_origins=["https://your-frontend.vercel.app"],
allow_methods=["*"],
)5. 验收标准 (Definition of Done)
- 你拥有一个
xxx.railway.app的后端链接。 - 访问
xxx.railway.app/docs(FastAPI) 能看到接口文档。 - 用 Postman 测试接口,能返回数据。
Next Mission: L29. 云端数据库:Neon 与 Upstash