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

368 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署指南
## 概述
本文档介绍如何将口译服务管理后台部署到生产环境。项目支持多种部署方式,推荐使用 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. 联系技术支持
---
**注意**: 请确保在生产环境中使用强密码和安全的配置。定期更新依赖包和安全补丁。