# 部署指南 ## 概述 本文档介绍如何将口译服务管理后台部署到生产环境。项目支持多种部署方式,推荐使用 Vercel 进行快速部署。 ## 前置条件 ### 1. 准备服务账户 在部署前,请确保已经配置好以下服务: - **Supabase** - 数据库和身份验证服务 - **Stripe** - 支付处理服务(可选) - **OpenAI** - AI 服务(可选) - **Twilio** - 通信服务(可选) ### 2. 环境变量配置 请准备以下环境变量: ```env # Supabase 配置 NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # Stripe 配置 STRIPE_SECRET_KEY=sk_test_... NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_... # OpenAI 配置 OPENAI_API_KEY=sk-... # Twilio 配置 TWILIO_ACCOUNT_SID=AC... TWILIO_API_KEY_SID=SK... TWILIO_API_KEY_SECRET=... # 应用配置 NEXTAUTH_SECRET=your-nextauth-secret JWT_SECRET=your-jwt-secret NEXTAUTH_URL=https://your-domain.com ``` ## 部署方式 ### 方式一:Vercel 部署(推荐) #### 1. 准备代码仓库 ```bash # 确保代码已提交到 Git 仓库 git add . git commit -m "准备部署" git push origin main ``` #### 2. 连接 Vercel 1. 访问 [Vercel Dashboard](https://vercel.com/dashboard) 2. 点击 "New Project" 3. 导入你的 Git 仓库 4. 选择 "Next.js" 框架预设 #### 3. 配置环境变量 在 Vercel 项目设置中添加所有必要的环境变量: 1. 进入项目 Settings 2. 选择 Environment Variables 3. 添加所有上述环境变量 #### 4. 部署 1. 点击 "Deploy" 开始部署 2. 等待构建完成 3. 访问提供的 URL 验证部署 ### 方式二:Docker 部署 #### 1. 创建 Dockerfile ```dockerfile FROM node:18-alpine AS deps RUN apk add --no-cache libc6-compat WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci --only=production FROM node:18-alpine AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . ENV NEXT_TELEMETRY_DISABLED 1 RUN npm run build FROM node:18-alpine AS runner WORKDIR /app ENV NODE_ENV production ENV NEXT_TELEMETRY_DISABLED 1 RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs COPY --from=builder /app/public ./public COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static USER nextjs EXPOSE 3000 ENV PORT 3000 CMD ["node", "server.js"] ``` #### 2. 构建和运行 ```bash # 构建镜像 docker build -t interpretation-admin . # 运行容器 docker run -p 3000:3000 --env-file .env.local interpretation-admin ``` ### 方式三:传统服务器部署 #### 1. 服务器环境准备 ```bash # 安装 Node.js 18+ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # 安装 PM2 npm install -g pm2 ``` #### 2. 代码部署 ```bash # 克隆代码 git clone https://github.com/your-username/interpretation-admin.git cd interpretation-admin # 安装依赖 npm install # 构建项目 npm run build # 启动服务 pm2 start npm --name "interpretation-admin" -- start ``` ## 数据库设置 ### 1. 执行数据库脚本 在 Supabase Dashboard 中执行 `database/schema.sql` 脚本: 1. 登录 Supabase Dashboard 2. 进入 SQL Editor 3. 复制粘贴 `database/schema.sql` 内容 4. 点击 "Run" 执行 ### 2. 配置 RLS 策略 确保行级安全策略正确配置,保护用户数据安全。 ### 3. 创建管理员账户 ```sql -- 在 Supabase SQL Editor 中执行 INSERT INTO users (id, email, name, user_type, status) VALUES ( 'your-admin-user-id', 'admin@example.com', '系统管理员', 'admin', 'active' ); ``` ## SSL 证书配置 ### 使用 Let's Encrypt ```bash # 安装 Certbot sudo apt install certbot python3-certbot-nginx # 获取证书 sudo certbot --nginx -d yourdomain.com # 自动续期 sudo crontab -e # 添加: 0 12 * * * /usr/bin/certbot renew --quiet ``` ## 性能优化 ### 1. 启用缓存 ```javascript // next.config.js module.exports = { async headers() { return [ { source: '/api/:path*', headers: [ { key: 'Cache-Control', value: 'public, max-age=300, stale-while-revalidate=60' } ] } ] } } ``` ### 2. 图片优化 确保使用 Next.js Image 组件进行图片优化。 ### 3. 代码分割 利用 Next.js 的自动代码分割功能。 ## 监控和日志 ### 1. 应用监控 推荐使用以下监控服务: - **Vercel Analytics** - 性能监控 - **Sentry** - 错误监控 - **LogRocket** - 用户行为监控 ### 2. 数据库监控 - 使用 Supabase Dashboard 监控数据库性能 - 设置告警规则 - 定期检查慢查询 ## 备份策略 ### 1. 数据库备份 ```bash # 每日自动备份 0 2 * * * pg_dump $DATABASE_URL > backup_$(date +\%Y\%m\%d).sql ``` ### 2. 代码备份 - 使用 Git 进行版本控制 - 定期推送到远程仓库 - 标记重要版本 ## 安全配置 ### 1. 环境变量安全 - 使用强密码和随机密钥 - 定期轮换 API 密钥 - 不要在代码中硬编码敏感信息 ### 2. 网络安全 - 启用 HTTPS - 配置 CORS 策略 - 使用 CSP 头部 ### 3. 数据库安全 - 启用 RLS 策略 - 使用最小权限原则 - 定期更新密码 ## 故障排除 ### 常见问题 1. **构建失败** - 检查依赖版本兼容性 - 确认环境变量配置 2. **数据库连接失败** - 验证 Supabase 配置 - 检查网络连接 3. **API 调用失败** - 检查 API 密钥 - 验证服务状态 ### 调试工具 - 使用浏览器开发者工具 - 检查服务器日志 - 使用 Supabase 日志功能 ## 更新和维护 ### 1. 依赖更新 ```bash # 检查过期依赖 npm outdated # 更新依赖 npm update ``` ### 2. 安全更新 ```bash # 检查安全漏洞 npm audit # 修复安全问题 npm audit fix ``` ### 3. 定期维护 - 清理日志文件 - 优化数据库 - 更新 SSL 证书 - 检查性能指标 ## 扩展部署 ### 负载均衡 当流量增加时,可以考虑: - 使用 CDN 加速静态资源 - 部署多个实例 - 使用负载均衡器 ### 微服务架构 对于大型应用,可以考虑: - 拆分 API 服务 - 使用消息队列 - 实施服务发现 ## 支持和帮助 如果在部署过程中遇到问题,可以: 1. 查看项目文档 2. 检查 GitHub Issues 3. 联系技术支持 --- **注意**: 请确保在生产环境中使用强密码和安全的配置。定期更新依赖包和安全补丁。