跳转到内容

03. 部署后端 Workers

这一章会做 3 件事:

  1. 填必要的密钥和变量
  2. 跑数据库迁移
  3. 部署 Worker 代码

建议你在做这章时,同时开着:

  • Dev Console 的 新手入门
  • Dev Console 的 部署 Cloudflare
  • Dev Console 的 本地启动

原因:

  • 你能看到哪些服务迁移过了
  • 你能看到哪些服务已经启动
  • 你能更快知道是不是某个服务单独报错

不是所有服务都要在第一天把所有第三方配置填满。

  • node1-auth-service
    • JWT_SECRET
    • ADMIN_SECRET

如果你要开真实支付,再处理的

Section titled “如果你要开真实支付,再处理的”
  • node3-pay-service
    • STRIPE_SECRET_KEY
    • STRIPE_WEBHOOK_SECRET
    • CREEM_API_KEY
    • CREEM_WEBHOOK_SECRET
  • node10-ai-service
    • CF_ACCOUNT_ID
    • CF_GATEWAY_ID
    • CF_AIG_TOKEN

2. 先填 node1-auth-service 的两个关键密钥

Section titled “2. 先填 node1-auth-service 的两个关键密钥”

你有两种做法:

  • 做法 A:直接编辑 wrangler.jsonc
  • 做法 B:用 wrangler secret put

对新手来说,第一遍建议:

  • JWT_SECRET
  • ADMIN_SECRET

直接写进 backend/node1-auth-service/wrangler.jsonc 里,把占位值替换掉。

因为这样你最不容易搞混。

请打开:

  • backend/node1-auth-service/wrangler.jsonc

把这两个值改掉:

  • REPLACE_WITH_STRONG_JWT_SECRET
  • REPLACE_WITH_STRONG_ADMIN_SECRET

建议:

  • 至少 32 位
  • 包含大小写字母、数字、特殊字符
  • 不要用生日、手机号、公司名

3. 如果你需要支付和 AI,把这些也填掉

Section titled “3. 如果你需要支付和 AI,把这些也填掉”

打开:

  • backend/node3-pay-service/wrangler.jsonc

把你要使用的支付平台配置补进去。

如果你暂时不做真实支付,这一步可以先跳过。

但是要记住:

  • 不配支付密钥
  • 结账功能不会正常工作

打开:

  • backend/node10-ai-service/wrangler.jsonc

把这些值补进去:

  • CF_ACCOUNT_ID
  • CF_GATEWAY_ID
  • CF_AIG_TOKEN

如果你不填:

  • AI chat 页面部署后大概率只能看到页面,不能真正跑通模型调用

注意,是远程迁移,不是本地迁移。

在仓库根目录执行:

Terminal window
pnpm --dir backend/node1-auth-service db:migrate:remote
pnpm --dir backend/node2-support-service db:migrate:remote
pnpm --dir backend/node3-pay-service db:migrate:remote
pnpm --dir backend/node4-notify-service db:migrate:remote
pnpm --dir backend/node5-blog-service db:migrate:remote
pnpm --dir backend/node7-site-service db:migrate:remote
pnpm --dir backend/node8-prompt-service db:migrate:remote
pnpm --dir backend/node9-checkin-service db:migrate:remote
pnpm --dir backend/node10-ai-service db:migrate:remote

说明:

  • node6-cdn-service 不需要 D1 迁移

在仓库根目录执行:

Terminal window
pnpm --dir backend/node1-auth-service deploy
pnpm --dir backend/node2-support-service deploy
pnpm --dir backend/node3-pay-service deploy
pnpm --dir backend/node4-notify-service deploy
pnpm --dir backend/node5-blog-service deploy
pnpm --dir backend/node6-cdn-service deploy
pnpm --dir backend/node7-site-service deploy
pnpm --dir backend/node8-prompt-service deploy
pnpm --dir backend/node9-checkin-service deploy
pnpm --dir backend/node10-ai-service deploy

为什么可以现在再部署真实代码

Section titled “为什么可以现在再部署真实代码”

因为上一章你已经先创建了空 Worker。

现在这些命令会把空 Worker 覆盖成真实服务。

6. 如果部署时提示 service binding 找不到

Section titled “6. 如果部署时提示 service binding 找不到”

先不要慌。

一般只看 3 个地方:

如果你改过名字,service binding 就会找不到目标。

检查 2:那 10 个空 Worker 是不是没有全部创建

Section titled “检查 2:那 10 个空 Worker 是不是没有全部创建”

只少一个,某些服务就会报错。

检查 3:你是不是部署到了另一个 Cloudflare 账号

Section titled “检查 3:你是不是部署到了另一个 Cloudflare 账号”

有的人本地 wrangler login 用的是个人账号,但 Dashboard 看的是公司账号。

这也会导致”明明看起来存在,实际却找不到”。

7. 这一章结束前,你应该已经满足的条件

Section titled “7. 这一章结束前,你应该已经满足的条件”
  • 所有后端 Worker 都已经成功部署
  • 所有 D1 迁移都已经执行
  • node1-auth-serviceJWT_SECRETADMIN_SECRET 已经是真实值

如果你要做支付或 AI:

  • 支付密钥也已经配置
  • AI Gateway 变量也已经配置