Vercel 部署
通过无缝集成和自动部署,将您的 Better SaaS 应用程序部署到 Vercel。Vercel 为 Next.js 应用程序提供最佳的开发者体验,无需配置。
🚀 快速部署
一键部署
部署 Better SaaS 应用程序的最快方式:
手动部署
- 
安装 Vercel CLI
npm install -g vercel - 
登录到 Vercel
vercel login - 
从项目目录部署
vercel - 
按照提示操作
- 设置并部署? 是
 - 选择哪个范围? 选择您的账户
 - 链接到现有项目? 否
 - 您的项目名称是什么? better-saas
 - 您的代码位于哪个目录? ./src
 
 
🔧 环境变量
在 Vercel 控制面板中配置您的环境变量:
必需变量
# 应用程序配置
NEXT_PUBLIC_APP_URL=https://your-domain.vercel.app
# 数据库
DATABASE_URL=postgresql://username:password@host:5432/database
# 认证
BETTER_AUTH_SECRET=your-production-secret-key
# 管理员配置
ADMIN_EMAILS=admin@yourdomain.com可选变量(用于完整功能)
# Stripe 支付
STRIPE_SECRET_KEY=sk_live_your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY=price_monthly_id
NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY=price_yearly_id
# OAuth 提供商
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# 文件存储
R2_BUCKET_NAME=your-production-bucket
R2_ACCESS_KEY_ID=your-access-key-id
R2_SECRET_ACCESS_KEY=your-secret-access-key
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_PUBLIC_URL=https://your-production-domain.com设置环境变量
- 
通过 Vercel 控制面板:
- 转到项目设置
 - 导航到"环境变量"
 - 添加每个变量并选择适当的环境(生产、预览、开发)
 
 - 
通过 Vercel CLI:
vercel env add NEXT_PUBLIC_APP_URL vercel env add DATABASE_URL vercel env add BETTER_AUTH_SECRET 
🗄️ 数据库设置
PostgreSQL 数据库
为您的生产数据库选择以下选项之一:
选项 1:外部 PostgreSQL(推荐)
流行的 PostgreSQL 托管选项:
- Neon - neon.tech(推荐)
 - Supabase - supabase.com
 - PlanetScale - planetscale.com
 
登录Neon,创建一个新项目,在项目面板中点击"Connect",复制数据库URL,将数据库URL添加到 .env 文件的DATABASE_URL变量中。
选项 2:Vercel Postgres
- 
向项目添加 Vercel Postgres:
vercel postgres create - 
链接到您的项目:
vercel postgres connect - 
获取连接详细信息:
DATABASE_URL将自动添加到您的环境变量中
 
数据库迁移
设置数据库后,运行迁移:
# 生成迁移文件
pnpm db:generate
# 将迁移应用到生产数据库
pnpm db:migrate🔄 自动部署
GitHub 集成
- 
连接您的 GitHub 仓库:
- 转到 Vercel 控制面板
 - 点击"导入项目"
 - 选择您的 GitHub 仓库
 - 配置构建设置
 
 - 
自动部署触发器:
- ✅ 推送到主分支 - 部署到生产环境
 - ✅ 拉取请求 - 创建预览部署
 - ✅ 分支部署 - 部署特定分支
 
 
构建配置
Vercel 自动检测 Next.js 项目。默认配置:
{
  "buildCommand": "pnpm build",
  "devCommand": "pnpm dev",
  "installCommand": "pnpm install",
  "outputDirectory": ".next"
}自定义构建设置
在项目根目录创建 vercel.json 进行自定义配置:
{
  "framework": "nextjs",
  "buildCommand": "pnpm build",
  "devCommand": "pnpm dev",
  "installCommand": "pnpm install",
  "functions": {
    "app/api/**/*.ts": {
      "maxDuration": 30
    }
  },
  "crons": [
    {
      "path": "/api/cron/cleanup",
      "schedule": "0 2 * * *"
    }
  ]
}🌐 自定义域名
添加自定义域名
- 
在 Vercel 控制面板中:
- 转到项目设置
 - 导航到"域名"
 - 添加您的自定义域名
 
 - 
DNS 配置:
- 添加指向 
cname.vercel-dns.com的 CNAME 记录 - 或添加指向 Vercel IP 地址的 A 记录
 
 - 添加指向 
 - 
SSL 证书:
- Vercel 自动提供 SSL 证书
 - 默认启用 HTTPS
 
 
域名配置示例
# DNS 记录
CNAME   www     cname.vercel-dns.com
CNAME   @       cname.vercel-dns.com
# 或 A 记录
A       @       76.76.19.61
A       @       76.76.19.62🔐 安全配置
环境特定设置
# 生产环境变量
NODE_ENV=production
NEXT_PUBLIC_APP_URL=https://yourdomain.com
# 安全头(由 Vercel 自动处理)
# - X-Frame-Options
# - X-Content-Type-Options
# - X-XSS-Protection
# - Strict-Transport-SecurityWebhook 安全
对于 Stripe webhooks,在您的 Stripe 控制面板中配置端点:
Webhook URL: https://yourdomain.com/api/webhooks/stripe
Events: customer.subscription.created, customer.subscription.updated, invoice.payment_succeeded📊 监控和分析
Vercel Analytics
启用 Vercel Analytics 进行性能监控:
- 
安装 Vercel Analytics:
pnpm add @vercel/analytics - 
添加到您的布局:
import { Analytics } from '@vercel/analytics/react' export default function RootLayout({ children, }: { children: React.ReactNode }) { return ( <html> <body> {children} <Analytics /> </body> </html> ) } 
速度洞察
启用速度洞察以获取性能指标:
pnpm add @vercel/speed-insightsimport { SpeedInsights } from '@vercel/speed-insights/next'
export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html>
      <body>
        {children}
        <SpeedInsights />
      </body>
    </html>
  )
}🚨 故障排除
常见问题
构建失败
问题: 构建因依赖错误而失败
# 解决方案:清除缓存并重新安装
vercel --force环境变量未加载
问题: 环境变量在生产中未定义
# 检查环境变量
vercel env ls
# 本地拉取环境变量
vercel env pull .env.local数据库连接问题
问题: 无法连接到数据库
# 验证 DATABASE_URL 格式
postgresql://username:password@host:5432/database
# 本地测试连接
psql $DATABASE_URL函数超时
问题: API 路由在 10 秒后超时
// vercel.json
{
  "functions": {
    "app/api/**/*.ts": {
      "maxDuration": 30
    }
  }
}性能优化
Edge Runtime
使用 Edge Runtime 获得更快的响应时间:
// app/api/example/route.ts
export const runtime = 'edge'
export async function GET() {
  return Response.json({ message: 'Hello from Edge Runtime!' })
}静态生成
优化静态页面以获得更好的性能:
// app/page.tsx
export const revalidate = 3600 // 每小时重新验证
export default function HomePage() {
  return <div>您的内容</div>
}🎯 最佳实践
部署检查清单
在部署到生产环境之前:
- 环境变量 已配置
 - 数据库 已设置并迁移
 - 域名 已配置 SSL
 - Webhooks 已为外部服务配置
 - 分析 和监控已启用
 - 错误跟踪 已配置
 - 性能 已优化
 
安全最佳实践
- ✅ 为 
BETTER_AUTH_SECRET使用强密钥 - ✅ 为 API 路由正确配置 CORS
 - ✅ 为所有外部 webhooks 使用 HTTPS
 - ✅ 定期轮换 API 密钥和密码
 - ✅ 监控安全漏洞
 - ✅ 使用环境特定配置
 
性能最佳实践
- ✅ 尽可能启用 Edge Runtime
 - ✅ 为静态内容使用静态生成
 - ✅ 使用 Next.js Image 组件优化图像
 - ✅ 实施适当的缓存策略
 - ✅ 监控核心 Web 指标
 - ✅ 使用 Vercel Analytics 获得洞察
 
恭喜! 您的 Better SaaS 应用程序现已在 Vercel 上线。监控您的应用程序性能并随着用户群的增长进行扩展。
需要帮助? 扫码添加作者微信,邀请你进入专属微信群,获取更多项目信息和使用教程。
