开发指南生产环境
生产环境
🚀 Cheatsheet (快速执行)
目标: 30分钟内让你的 MVP 安全上线
上线前必做清单:
# 1. 检查环境变量
bun run build
# 2. 数据库迁移
bun db:deploy
# 3. 测试邮件发送
bun --filter mail preview
# 4. 检查 SEO 设置
curl -I https://your-domain.com
最关键的配置:
- ✅ 生产环境变量 (DATABASE_URL, NEXTAUTH_SECRET 等)
- ✅ 域名和 SSL 证书
- ✅ 邮件服务配置
- ✅ 支付服务生产密钥
❓ 为什么要做生产环境检查
对 MVP 的价值:
- 避免崩溃: 用户第一次访问就出错,永远不会再来
- 数据安全: 生产数据丢失,创业直接结束
- 用户信任: SSL、正确邮件域名等细节影响专业形象
- 法律合规: 隐私政策、服务条款避免法律风险
不做检查的后果: 上线第一天就被黑客攻击,或者用户无法注册,前期努力全白费。
🤔 为什么选择这个上线流程
基于真实踩坑经验:
- 分步验证: 每个环节都可能出问题,逐一排查更安全
- 生产/开发分离: 开发环境的配置不能直接用于生产
- 用户体验优先: 邮件、支付、页面加载等直接影响转化率
省时间的方法: 按照这个 checklist 走,比自己摸索快 10 倍,避免常见的低级错误。
🧠 生产环境 vs 开发环境
关键区别:
# 开发环境 (localhost)
DATABASE_URL="postgresql://localhost:5432/dev"
NEXTAUTH_SECRET="dev-secret-123"
STRIPE_SECRET_KEY="sk_test_..."
# 生产环境 (your-domain.com)
DATABASE_URL="postgresql://prod-db-url:5432/prod"
NEXTAUTH_SECRET="super-secure-random-string"
STRIPE_SECRET_KEY="sk_live_..."
最容易犯的错误:
- 忘记把测试密钥换成生产密钥
- 数据库连接字符串指向开发环境
- 邮件模板里还有测试 Logo
🛠️ 实际操作步骤
1. 环境变量配置 (10分钟)
生产环境必需的变量:
# .env.production
NEXTAUTH_URL="https://your-domain.com"
NEXTAUTH_SECRET="生成一个 32 位随机字符串"
DATABASE_URL="生产数据库连接字符串"
# 邮件服务 (选择一个)
RESEND_API_KEY="re_xxx" # 推荐
SENDGRID_API_KEY="SG.xxx"
# 支付服务 (如果用到)
STRIPE_SECRET_KEY="sk_live_xxx"
STRIPE_WEBHOOK_SECRET="whsec_xxx"
快速生成安全密钥:
# 生成 NEXTAUTH_SECRET
openssl rand -base64 32
# 或者在线生成
# https://generate-secret.vercel.app/32
2. 邮件配置检查 (5分钟)
更改邮件模板 Logo:
// packages/mail/emails/components/Wrapper.tsx
// 把 Logo 换成你的品牌 Logo
<img src="https://your-domain.com/logo.png" alt="Your Brand" />
配置发件人信息:
// config/index.ts
export const config = {
mail: {
from: "noreply@your-domain.com", // 必须是你的域名
// ...
}
}
测试邮件发送:
# 启动邮件预览
bun --filter mail preview
# 访问 http://localhost:3005 检查所有邮件模板
3. 数据库生产部署 (5分钟)
# 1. 确保生产数据库 URL 正确
echo $DATABASE_URL
# 2. 部署数据库结构
bun db:deploy
# 3. 验证部署成功
bun db:studio
4. 支付配置 (5分钟)
Stripe 生产配置:
# 1. 登录 Stripe Dashboard
# 2. 切换到 "View live data" 模式
# 3. 复制 Live 密钥到环境变量
STRIPE_SECRET_KEY="sk_live_xxx" # 不是 sk_test_
STRIPE_PUBLISHABLE_KEY="pk_live_xxx"
测试支付流程:
- 使用真实银行卡测试小额支付
- 检查 Webhook 是否正常接收
5. SEO 和页面检查 (5分钟)
基础 SEO 检查:
# 检查页面标题和描述
curl -s https://your-domain.com | grep -i "<title>"
curl -s https://your-domain.com | grep -i "description"
# 检查 SSL 证书
curl -I https://your-domain.com
必需的页面:
- ✅ 首页加载正常
- ✅ 注册/登录流程通畅
- ✅ 隐私政策和服务条款页面
- ✅ 404 页面显示正常
🔒 安全和法律清单
安全配置
# 1. HTTPS 强制跳转 (Vercel 自动配置)
# 2. 安全头设置
# next.config.ts 已包含基础安全配置
# 3. 敏感信息检查
grep -r "test_" .env* # 确保没有测试密钥
grep -r "localhost" .env* # 确保没有本地地址
法律页面
必需创建的页面:
- 隐私政策:
content/legal/privacy-policy.zh.md
- 服务条款:
content/legal/terms.zh.md
- Cookie 政策:
content/legal/cookie-policy.zh.md
内容要点: - 说明收集哪些用户数据
- 如何使用和保护数据
- 用户权利和联系方式
💡 实用上线技巧
软启动策略
# 1. 先上线最基础功能
# 2. 邀请少数用户测试
# 3. 收集反馈后正式推广
监控设置
# 设置基础监控
# - Vercel Analytics (免费)
# - Sentry 错误追踪
# - Google Analytics
域名和 DNS
# 1. 域名解析到 Vercel
# 2. 配置 www 重定向
# 3. 设置邮件 DNS 记录 (SPF, DKIM)
🆘 常见上线问题
问题 1: 邮件发送失败
# 解决方案
# 1. 检查域名 DNS 设置
# 2. 验证邮件服务商配置
# 3. 测试发件人邮箱是否有效
问题 2: 支付回调失败
# 解决方案
# 1. 检查 Webhook URL 是否正确
# 2. 验证 Webhook 密钥
# 3. 查看支付服务商日志
问题 3: 页面加载缓慢
# 解决方案
# 1. 优化图片大小
# 2. 启用 CDN
# 3. 检查数据库查询性能
📊 上线后监控
关键指标
- 页面加载速度: < 3 秒
- 注册转化率: 记录并优化
- 邮件送达率: > 95%
- 支付成功率: > 98%
监控工具推荐
- Vercel Analytics: 免费页面分析
- Google Search Console: SEO 表现
- Stripe Dashboard: 支付数据
📎 延伸阅读
部署平台:
- Vercel 部署指南 - 推荐的部署平台
- Netlify 指南 - 备选部署方案
监控和分析:
- Vercel Analytics - 免费网站分析
- Sentry - 错误监控
法律合规:
下一步: 上线成功后,看 [监控系统]./monitoring) 来持续优化产品表现。