> ## Documentation Index
> Fetch the complete documentation index at: https://codofly.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 部署指南

> 将 Codofly Template 部署到生产环境

# 部署指南

本文档将指导您如何将 Codofly Template 部署到 Vercel 生产环境。

## Vercel 部署

### 连接 GitHub 仓库

<Steps>
  <Step title="登录 Vercel">
    访问 [vercel.com](https://vercel.com) 并使用 GitHub 账号登录
  </Step>

  <Step title="导入项目">
    点击 "New Project" → "Import Git Repository" → 选择你的项目仓库
  </Step>

  <Step title="配置项目">
    * Framework Preset: 选择 "Next.js"
    * Build Command: `pnpm build`
    * Install Command: `pnpm install`
  </Step>

  <Step title="部署">
    点击 "Deploy" 开始部署
  </Step>
</Steps>

### 环境变量配置

在 Vercel 项目设置中添加以下环境变量：

```bash theme={null}
# 数据库
DATABASE_URL=your_production_database_url

# NextAuth
NEXTAUTH_URL=https://your-domain.vercel.app
NEXTAUTH_SECRET=your_production_secret

# 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

# Stripe
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret

# AI 服务
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
```

<Callout type="warning">
  确保在生产环境中使用强密码和真实的 API 密钥。
</Callout>

### 自定义域名

<Steps>
  <Step title="添加域名">
    在 Vercel 项目设置 → Domains 中添加你的域名
  </Step>

  <Step title="配置 DNS">
    在域名提供商处添加 CNAME 记录指向 Vercel
  </Step>

  <Step title="验证">
    等待 DNS 生效并验证域名
  </Step>
</Steps>

## 数据库部署

### Vercel Postgres

```bash theme={null}
# 安装 Vercel Postgres
pnpm add @vercel/postgres

# 在 Vercel 控制台创建数据库
# 获取连接字符串并添加到环境变量
DATABASE_URL=postgres://user:pass@host:port/db?sslmode=require
```

### Neon 数据库

```bash theme={null}
# 1. 在 neon.tech 创建数据库
# 2. 获取连接字符串
DATABASE_URL=postgresql://user:pass@host/db?sslmode=require

# 3. 运行迁移
npx prisma migrate deploy
```

### 生产环境迁移

```bash theme={null}
# 部署数据库迁移
npx prisma migrate deploy

# 生成 Prisma Client
npx prisma generate

# 添加种子数据（可选）
npx prisma db seed
```

## 必需环境变量

### 核心变量

```bash theme={null}
DATABASE_URL=           # 数据库连接
NEXTAUTH_URL=          # 应用域名
NEXTAUTH_SECRET=       # JWT 签名密钥（随机字符串）
```

### 第三方服务

```bash theme={null}
# OAuth
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# 支付
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=

# AI 服务
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
```

### 安全配置建议

* 使用强随机密钥作为 `NEXTAUTH_SECRET`
* 在生产环境中禁用调试模式
* 定期轮换 API 密钥
* 限制 OAuth 回调 URL

## 性能优化

### 构建优化

```javascript title="next.config.js" theme={null}
/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    ppr: true,
  },
  compress: true,
  poweredByHeader: false,
  images: {
    domains: ['your-image-domains.com'],
  },
}

module.exports = nextConfig
```

### 缓存策略

```typescript title="app/api/users/route.ts" theme={null}
export async function GET() {
  const users = await prisma.user.findMany()
  
  return NextResponse.json(
    { data: users },
    {
      headers: {
        'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=300'
      }
    }
  )
}
```

## 常见问题

### 部署失败

```bash theme={null}
# 检查构建日志
# 确保所有依赖已安装
# 检查环境变量配置
```

### 数据库连接失败

```bash theme={null}
# 检查 DATABASE_URL 格式
# 确保数据库允许外部连接
# 运行数据库迁移
```

### 域名无法访问

```bash theme={null}
# 检查 DNS 配置
# 确保 NEXTAUTH_URL 正确
# 清除浏览器缓存
```

<Note>
  部署完成后，建议进行完整的功能测试，确保所有功能正常工作。
</Note>
