Skip to content

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.txtmain.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

  1. 登录 railway.app
  2. New Project -> Deploy from GitHub repo
  3. 选择你的后端仓库。

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)

  1. 你拥有一个 xxx.railway.app 的后端链接。
  2. 访问 xxx.railway.app/docs (FastAPI) 能看到接口文档。
  3. 用 Postman 测试接口,能返回数据。

Next Mission: L29. 云端数据库:Neon 与 Upstash

基于 Claude Code 构建