03. 部署后端 Workers
这一章会做 3 件事:
- 填必要的密钥和变量
- 跑数据库迁移
- 部署 Worker 代码
0. 你可以同时打开 Dev Console
Section titled “0. 你可以同时打开 Dev Console”建议你在做这章时,同时开着:
- Dev Console 的
新手入门 - Dev Console 的
部署 Cloudflare - Dev Console 的
本地启动
原因:
- 你能看到哪些服务迁移过了
- 你能看到哪些服务已经启动
- 你能更快知道是不是某个服务单独报错
1. 先理解什么是”必须填”的
Section titled “1. 先理解什么是”必须填”的”不是所有服务都要在第一天把所有第三方配置填满。
第一次跑通,必须先处理的
Section titled “第一次跑通,必须先处理的”node1-auth-serviceJWT_SECRETADMIN_SECRET
如果你要开真实支付,再处理的
Section titled “如果你要开真实支付,再处理的”node3-pay-serviceSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETCREEM_API_KEYCREEM_WEBHOOK_SECRET
如果你要开 AI 能力,再处理的
Section titled “如果你要开 AI 能力,再处理的”node10-ai-serviceCF_ACCOUNT_IDCF_GATEWAY_IDCF_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_SECRETREPLACE_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_IDCF_GATEWAY_IDCF_AIG_TOKEN
如果你不填:
- AI chat 页面部署后大概率只能看到页面,不能真正跑通模型调用
4. 先跑远程数据库迁移
Section titled “4. 先跑远程数据库迁移”注意,是远程迁移,不是本地迁移。
在仓库根目录执行:
pnpm --dir backend/node1-auth-service db:migrate:remotepnpm --dir backend/node2-support-service db:migrate:remotepnpm --dir backend/node3-pay-service db:migrate:remotepnpm --dir backend/node4-notify-service db:migrate:remotepnpm --dir backend/node5-blog-service db:migrate:remotepnpm --dir backend/node7-site-service db:migrate:remotepnpm --dir backend/node8-prompt-service db:migrate:remotepnpm --dir backend/node9-checkin-service db:migrate:remotepnpm --dir backend/node10-ai-service db:migrate:remote说明:
node6-cdn-service不需要 D1 迁移
5. 逐个部署 Worker
Section titled “5. 逐个部署 Worker”在仓库根目录执行:
pnpm --dir backend/node1-auth-service deploypnpm --dir backend/node2-support-service deploypnpm --dir backend/node3-pay-service deploypnpm --dir backend/node4-notify-service deploypnpm --dir backend/node5-blog-service deploypnpm --dir backend/node6-cdn-service deploypnpm --dir backend/node7-site-service deploypnpm --dir backend/node8-prompt-service deploypnpm --dir backend/node9-checkin-service deploypnpm --dir backend/node10-ai-service deploy为什么可以现在再部署真实代码
Section titled “为什么可以现在再部署真实代码”因为上一章你已经先创建了空 Worker。
现在这些命令会把空 Worker 覆盖成真实服务。
6. 如果部署时提示 service binding 找不到
Section titled “6. 如果部署时提示 service binding 找不到”先不要慌。
一般只看 3 个地方:
检查 1:你是不是改了 Worker 名
Section titled “检查 1:你是不是改了 Worker 名”如果你改过名字,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-service的JWT_SECRET和ADMIN_SECRET已经是真实值
如果你要做支付或 AI:
- 支付密钥也已经配置
- AI Gateway 变量也已经配置