- 更新 DashboardLayout 组件,统一使用演示模式布局 - 实现仪表盘页面的完整演示数据和功能 - 完成用户管理页面的演示模式,包含搜索、过滤、分页等功能 - 实现通话记录页面的演示数据和录音播放功能 - 完成翻译员管理页面的演示模式 - 实现订单管理页面的完整功能 - 完成发票管理页面的演示数据 - 更新文档管理页面 - 添加 utils.ts 工具函数库 - 完善 API 路由和数据库结构 - 修复各种 TypeScript 类型错误 - 统一界面风格和用户体验
6.4 KiB
6.4 KiB
部署指南
概述
本文档介绍如何将口译服务管理后台部署到生产环境。项目支持多种部署方式,推荐使用 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
- 访问 Vercel Dashboard
- 点击 "New Project"
- 导入你的 Git 仓库
- 选择 "Next.js" 框架预设
3. 配置环境变量
在 Vercel 项目设置中添加所有必要的环境变量:
- 进入项目 Settings
- 选择 Environment Variables
- 添加所有上述环境变量
4. 部署
- 点击 "Deploy" 开始部署
- 等待构建完成
- 访问提供的 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
脚本:
- 登录 Supabase Dashboard
- 进入 SQL Editor
- 复制粘贴
database/schema.sql
内容 - 点击 "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 策略
- 使用最小权限原则
- 定期更新密码
故障排除
常见问题
-
构建失败
- 检查依赖版本兼容性
- 确认环境变量配置
-
数据库连接失败
- 验证 Supabase 配置
- 检查网络连接
-
API 调用失败
- 检查 API 密钥
- 验证服务状态
调试工具
- 使用浏览器开发者工具
- 检查服务器日志
- 使用 Supabase 日志功能
更新和维护
1. 依赖更新
# 检查过期依赖
npm outdated
# 更新依赖
npm update
2. 安全更新
# 检查安全漏洞
npm audit
# 修复安全问题
npm audit fix
3. 定期维护
- 清理日志文件
- 优化数据库
- 更新 SSL 证书
- 检查性能指标
扩展部署
负载均衡
当流量增加时,可以考虑:
- 使用 CDN 加速静态资源
- 部署多个实例
- 使用负载均衡器
微服务架构
对于大型应用,可以考虑:
- 拆分 API 服务
- 使用消息队列
- 实施服务发现
支持和帮助
如果在部署过程中遇到问题,可以:
- 查看项目文档
- 检查 GitHub Issues
- 联系技术支持
注意: 请确保在生产环境中使用强密码和安全的配置。定期更新依赖包和安全补丁。