OPC Stack 部署到 Cloudflare Workers 非常简单。
部署前准备
1. 配置生产环境变量
编辑 .env.prod:
# 应用配置
APP_NAME=your-app
APP_DOMAIN=your-domain.com
# 认证配置
EMAIL_ENABLED=true
EMAIL_FROM=noreply@your-domain.com
RESEND_API_KEY=re_xxx
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxx
# AI 配置(可选)
OPENAI_API_KEY=sk-xxx
GEMINI_API_KEY=xxx
# 内测码(可选)
BETA_CODE_ENABLED=false
# 队列和定时任务(可选)
QUEUES=task-check,email-send
CRONS=0 0 * * *,0 */6 * * *
2. 登录 Cloudflare
wrangler login
部署
一键部署
pnpm deploycf
这个命令会:
- 运行
pre-build.mjs --remote - 创建所有 Cloudflare 资源(D1、R2、KV、Queues)
- 开启 D1 read replication
- 执行 migration
- 部署到 Cloudflare Workers
查看部署状态
# 查看部署日志
wrangler tail
# 查看 Worker 信息
wrangler deployments list
自定义域名
1. 添加域名到 Cloudflare
在 Cloudflare 控制台添加域名,并配置 DNS。
2. 绑定域名到 Worker
wrangler domains add your-domain.com
或在 Cloudflare 控制台手动绑定。
3. 配置 SSL
Cloudflare 自动提供免费 SSL 证书。
环境变量
在 Cloudflare 控制台配置
- 进入 Workers & Pages
- 选择你的 Worker
- 进入 Settings → Variables
- 添加环境变量
使用 wrangler 配置
# 设置环境变量
wrangler secret put OPENAI_API_KEY
# 列出环境变量
wrangler secret list
回滚
回滚到上一个版本
# 查看部署历史
wrangler deployments list
# 回滚到指定版本
wrangler rollback [deployment-id]
监控
查看日志
# 实时日志
wrangler tail
# 过滤日志
wrangler tail --status error
查看指标
在 Cloudflare 控制台查看:
- 请求数
- 错误率
- CPU 时间
- 内存使用
性能优化
1. 启用缓存
// 缓存静态资源
return new Response(body, {
headers: {
'Cache-Control': 'public, max-age=31536000'
}
})
2. 使用 KV 缓存
// 缓存 API 响应
const cached = await env.KV.get(cacheKey)
if (cached) {
return ctx.json(JSON.parse(cached))
}
const data = await fetchData()
await env.KV.put(cacheKey, JSON.stringify(data), {
expirationTtl: 3600
})
3. 优化数据库查询
// 使用索引
await db.query.users.findFirst({
where: eq(users.email, email)
})
// 批量查询
const users = await db.query.users.findMany({
where: inArray(users.id, userIds)
})
CI/CD
GitHub Actions
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3
with:
node-version: 20
cache: 'pnpm'
- run: pnpm install
- run: pnpm deploycf
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
配置 Secrets
在 GitHub 仓库设置中添加:
CLOUDFLARE_API_TOKEN- 其他环境变量
多环境部署
配置多个环境
# 部署到 staging
wrangler deploy --env staging
# 部署到 production
wrangler deploy --env production
wrangler.jsonc 配置
{
"name": "your-app",
"main": "src/index.ts",
"compatibility_date": "2024-01-01",
"env": {
"staging": {
"vars": {
"ENVIRONMENT": "staging"
}
},
"production": {
"vars": {
"ENVIRONMENT": "production"
}
}
}
}
常见问题
Q: 部署失败怎么办?
检查 wrangler 版本是否最新,查看错误日志,确认环境变量配置正确。
Q: 如何更新依赖?
修改 package.json 后重新部署即可。
Q: 部署后访问 404?
检查域名绑定是否正确,DNS 是否生效。