部署指南

生产部署

配置 wrangler、写入 secret、远程迁移并发布到 Cloudflare Workers。

部署流程

  1. 更新 wrangler.jsonc — Worker 名称、D1/R2/KV/Queue ID、公开 vars
  2. 写入 Secrets — 每个敏感变量执行 wrangler secret put
  3. 远程迁移 — pnpm db:migrate:remote(migrations/ 有变更时)
  4. 构建并部署 — pnpm run deploy
  5. 验证 — 见 验证清单

重要

请使用 pnpm run deploy,不要使用 pnpm deploy(pnpm 会将其解析为包管理命令)。

写入 Secret 示例

bash
pnpm wrangler secret put BETTER_AUTH_SECRET
pnpm wrangler secret put GOOGLE_CLIENT_SECRET
pnpm wrangler secret put STRIPE_SECRET_KEY
pnpm wrangler secret put STRIPE_WEBHOOK_SECRET
pnpm wrangler secret put RESEND_API_KEY
pnpm wrangler secret put R2_ACCESS_KEY_ID
pnpm wrangler secret put R2_SECRET_ACCESS_KEY
pnpm wrangler secret list

wrangler.jsonc 公开变量示例

以下可放在 vars(会参与构建或非敏感配置):

jsonc
{
  "vars": {
    "VITE_SITE_URL": "https://your-domain.com",
    "VITE_GA_MEASUREMENT_ID": "G-XXXXXXXX",
    "VITE_POSTHOG_HOST": "https://us.i.posthog.com",
    "R2_PUBLIC_URL": "https://oss.your-domain.com",
    "EMAIL_FROM": "Your App <no-reply@your-domain.com>"
  }
}

部署命令

bash
pnpm run deploy

等价于:

  1. vite build — 构建 SSR 与客户端
  2. 复制 Sentry instrument.server.mjs
  3. wrangler deploy — 发布 Worker

构建时变量

变量前缀行为
VITE_*编译进客户端 bundle
普通 secret仅 Worker 运行时可读

修改 VITE_* 后必须重新 deploy,不能只更新 secret。

数据库迁移

bash
pnpm db:migrate:remote

建议在每次部署前执行(尤其 migrations/ 有更新时)。

警告

切勿将 .dev.vars、服务账号 JSON、Stripe/Resend 密钥提交 Git。生产使用 Stripe live 密钥。