部署
NextShip 针对 Vercel 部署进行了优化,但也可以在任何 Node.js 托管平台上运行。
Vercel 部署
1. 连接仓库
- 访问 vercel.com
- 点击"Add New Project"
- 导入你的 GitHub 仓库
- 选择 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=xxx3. 部署
点击"Deploy",Vercel 将会:
- 安装依赖
- 构建项目
- 部署到生产环境
4. 配置域名
- 进入项目设置 → Domains
- 添加你的自定义域名
- 按照指示更新 DNS 记录
Stripe Webhook 设置
对于生产环境,配置 Stripe webhooks:
- 进入 Stripe Dashboard → Developers → Webhooks
- 添加端点:
https://yourdomain.com/api/stripe/webhook - 选择事件:
checkout.session.completedcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_failed
- 将签名密钥复制到
STRIPE_WEBHOOK_SECRET
数据库设置
Neon(推荐)
- 在 neon.tech 创建账户
- 创建新项目
- 将连接字符串复制到
DATABASE_URL - 运行迁移:
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>成本估算
| 服务 | 免费额度 | 规模化后预估成本 |
|---|---|---|
| Vercel | 100GB 带宽 | $20/月 |
| Neon | 0.5GB 存储 | $19/月 |
| Stripe | 无月费 | 2.9% + $0.30/笔交易 |
| Resend | 3,000 封邮件/月 | $20/月 |
| Sentry | 5,000 错误/月 | $26/月 |