Twilioapp-admin/DEPLOYMENT.md
mars f20988b90c feat: 完成所有页面的演示模式实现
- 更新 DashboardLayout 组件,统一使用演示模式布局
- 实现仪表盘页面的完整演示数据和功能
- 完成用户管理页面的演示模式,包含搜索、过滤、分页等功能
- 实现通话记录页面的演示数据和录音播放功能
- 完成翻译员管理页面的演示模式
- 实现订单管理页面的完整功能
- 完成发票管理页面的演示数据
- 更新文档管理页面
- 添加 utils.ts 工具函数库
- 完善 API 路由和数据库结构
- 修复各种 TypeScript 类型错误
- 统一界面风格和用户体验
2025-06-30 19:42:43 +08:00

6.4 KiB
Raw Permalink Blame History

部署指南

概述

本文档介绍如何将口译服务管理后台部署到生产环境。项目支持多种部署方式,推荐使用 Vercel 进行快速部署。

前置条件

1. 准备服务账户

在部署前,请确保已经配置好以下服务:

  • Supabase - 数据库和身份验证服务
  • Stripe - 支付处理服务(可选)
  • OpenAI - AI 服务(可选)
  • Twilio - 通信服务(可选)

2. 环境变量配置

请准备以下环境变量:

# 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. 准备代码仓库

# 确保代码已提交到 Git 仓库
git add .
git commit -m "准备部署"
git push origin main

2. 连接 Vercel

  1. 访问 Vercel 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

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. 构建和运行

# 构建镜像
docker build -t interpretation-admin .

# 运行容器
docker run -p 3000:3000 --env-file .env.local interpretation-admin

方式三:传统服务器部署

1. 服务器环境准备

# 安装 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. 代码部署

# 克隆代码
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. 创建管理员账户

-- 在 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

# 安装 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. 启用缓存

// 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. 数据库备份

# 每日自动备份
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. 依赖更新

# 检查过期依赖
npm outdated

# 更新依赖
npm update

2. 安全更新

# 检查安全漏洞
npm audit

# 修复安全问题
npm audit fix

3. 定期维护

  • 清理日志文件
  • 优化数据库
  • 更新 SSL 证书
  • 检查性能指标

扩展部署

负载均衡

当流量增加时,可以考虑:

  • 使用 CDN 加速静态资源
  • 部署多个实例
  • 使用负载均衡器

微服务架构

对于大型应用,可以考虑:

  • 拆分 API 服务
  • 使用消息队列
  • 实施服务发现

支持和帮助

如果在部署过程中遇到问题,可以:

  1. 查看项目文档
  2. 检查 GitHub Issues
  3. 联系技术支持

注意: 请确保在生产环境中使用强密码和安全的配置。定期更新依赖包和安全补丁。