Docs/deployment/部署

部署

NextShip 针对 Vercel 部署进行了优化,但也可以在任何 Node.js 托管平台上运行。

Vercel 部署

1. 连接仓库

  1. 访问 vercel.com
  2. 点击"Add New Project"
  3. 导入你的 GitHub 仓库
  4. 选择 Next.js 框架预设

2. 配置环境变量

在 Vercel 项目设置中添加所有必需的环境变量:

# 必需
NEXT_PUBLIC_APP_URL=https://yourdomain.com
DATABASE_URL=postgresql://...
BETTER_AUTH_SECRET=your-secret
 
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx
 
# Resend
RESEND_API_KEY=re_xxx
 
# OAuth(如果使用)
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
GITHUB_CLIENT_ID=xxx
GITHUB_CLIENT_SECRET=xxx

3. 部署

点击"Deploy",Vercel 将会:

  • 安装依赖
  • 构建项目
  • 部署到生产环境

4. 配置域名

  1. 进入项目设置 → Domains
  2. 添加你的自定义域名
  3. 按照指示更新 DNS 记录

Stripe Webhook 设置

对于生产环境,配置 Stripe webhooks:

  1. 进入 Stripe Dashboard → Developers → Webhooks
  2. 添加端点:https://yourdomain.com/api/stripe/webhook
  3. 选择事件:
    • checkout.session.completed
    • customer.subscription.updated
    • customer.subscription.deleted
    • invoice.payment_failed
  4. 将签名密钥复制到 STRIPE_WEBHOOK_SECRET

数据库设置

Neon(推荐)

  1. neon.tech 创建账户
  2. 创建新项目
  3. 将连接字符串复制到 DATABASE_URL
  4. 运行迁移:pnpm db:push

其他 PostgreSQL 提供商

  • Supabase
  • Railway
  • PlanetScale(MySQL 模式)
  • AWS RDS

部署检查清单

上线前确认:

  • 所有环境变量已配置
  • 数据库已迁移
  • Stripe webhook 端点已配置
  • 邮件域名已在 Resend 验证
  • OAuth 应用已配置生产环境 URL
  • 错误监控已设置(Sentry)
  • 分析已配置(PostHog)
  • 自定义域名已配置
  • SSL 证书已激活

性能优化

Edge Functions

Next.js 自动使用 edge functions 用于:

  • 中间件
  • API 路由(配置后)

图片优化

next.config.ts 中配置允许的域名:

images: {
  remotePatterns: [
    { hostname: "yourdomain.com" },
    { hostname: "avatars.githubusercontent.com" },
  ],
}

缓存

  • 静态页面在边缘缓存
  • API 响应可通过 Cache-Control 头缓存
  • 使用 Upstash Redis 进行应用级缓存

监控

Sentry(错误追踪)

// sentry.client.config.ts
Sentry.init({
  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
  tracesSampleRate: 1.0,
});

PostHog(分析)

// providers.tsx
<PostHogProvider apiKey={process.env.NEXT_PUBLIC_POSTHOG_KEY}>
  {children}
</PostHogProvider>

成本估算

服务免费额度规模化后预估成本
Vercel100GB 带宽$20/月
Neon0.5GB 存储$19/月
Stripe无月费2.9% + $0.30/笔交易
Resend3,000 封邮件/月$20/月
Sentry5,000 错误/月$26/月