# 结伴客后台管理系统部署指南

## 部署方式

### 1. 本地开发环境部署

#### 使用 npm 脚本

```bash
# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

# 预览生产版本
npm run preview
```

#### 使用部署脚本

**Linux/Mac:**
```bash
chmod +x deploy.sh
./deploy.sh
```

**Windows PowerShell:**
```powershell
.\deploy.ps1
```

### 2. Docker 容器化部署

#### 开发环境
```bash
# 启动开发环境（包含前端、后端、数据库等所有服务）
docker-compose up frontend-dev backend mysql redis rabbitmq

# 或启动所有服务
docker-compose up
```

#### 生产环境
```bash
# 构建并启动生产环境
docker-compose up -d frontend backend mysql redis rabbitmq

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs frontend
```

### 3. 单独服务部署

#### 前端服务
```bash
# 开发模式
docker-compose up frontend-dev

# 生产模式
docker-compose up frontend
```

#### 后端服务
```bash
docker-compose up backend
```

#### 数据库服务
```bash
docker-compose up mysql redis rabbitmq
```

## 环境配置

### 环境变量文件

创建以下环境变量文件：

**.env.development** (开发环境):
```
VITE_APP_TITLE=结伴客后台管理系统(开发)
VITE_API_BASE_URL=https://webapi.jiebanke.com/api/v1
VITE_APP_VERSION=dev
```

**.env.production** (生产环境):
```
VITE_APP_TITLE=结伴客后台管理系统
VITE_API_BASE_URL=https://webapi.jiebanke.com
VITE_APP_VERSION=v1.0.0
```

### Docker 环境变量

在 `docker-compose.yml` 中配置：

```yaml
environment:
  - NODE_ENV=production
  - DB_HOST=mysql
  - DB_PORT=3306
  - DB_NAME=jiebanke
  - DB_USER=root
  - DB_PASSWORD=password
  - REDIS_HOST=redis
  - REDIS_PORT=6379
  - RABBITMQ_HOST=rabbitmq
  - RABBITMQ_PORT=5672
```

## 端口映射

| 服务 | 容器端口 | 主机端口 | 说明 |
|------|----------|----------|------|
| 前端 | 80 | 80 | 生产环境前端 |
| 前端开发 | 5173 | 5173 | 开发环境前端 |
| 后端API | 3000 | 3000 | Node.js后端服务 |
| MySQL | 3306 | 3306 | 数据库服务 |
| Redis | 6379 | 6379 | 缓存服务 |
| RabbitMQ | 5672 | 5672 | 消息队列服务 |
| RabbitMQ管理 | 15672 | 15672 | 管理界面 |

## 健康检查

系统提供健康检查端点：
- 前端: `https://admin.jiebanke.com/health`
- 后端: `https://webapi.jiebanke.com/health`

## 监控和日志

### 查看日志
```bash
# 查看所有服务日志
docker-compose logs

# 查看特定服务日志
docker-compose logs frontend
docker-compose logs backend
```

### 服务状态监控
```bash
# 查看服务状态
docker-compose ps

# 查看资源使用情况
docker stats
```

## 故障排除

### 常见问题

1. **端口冲突**
   - 检查端口是否被占用
   - 修改 `docker-compose.yml` 中的端口映射

2. **依赖安装失败**
   - 清除缓存: `npm cache clean --force`
   - 删除 node_modules 重新安装

3. **数据库连接失败**
   - 检查数据库服务是否启动
   - 验证环境变量配置

4. **构建失败**
   - 检查 Node.js 版本 (要求 >= 16)
   - 检查系统依赖

### 调试模式

启动服务时添加调试标志：
```bash
# 前端开发调试
npm run dev -- --debug

# Docker 调试模式
docker-compose up --build --force-recreate
```

## 备份和恢复

### 数据库备份
```bash
# 备份MySQL数据
docker exec -i mysql mysqldump -uroot -ppassword jiebanke > backup.sql

# 恢复MySQL数据
docker exec -i mysql mysql -uroot -ppassword jiebanke < backup.sql
```

### 卷备份
```bash
# 备份数据库卷
docker run --rm -v mysql_data:/source -v $(pwd):/backup alpine tar czf /backup/mysql_backup.tar.gz -C /source .
```

## 安全建议

1. **修改默认密码**
   - MySQL root 密码
   - RabbitMQ 默认用户密码
   - Redis 密码（如果需要）

2. **启用HTTPS**
   - 配置SSL证书
   - 使用反向代理

3. **防火墙配置**
   - 只开放必要的端口
   - 限制外部访问

4. **定期更新**
   - 更新Docker镜像
   - 更新依赖包

## 性能优化

1. **启用缓存**
   - 配置Redis缓存
   - 使用CDN加速静态资源

2. **负载均衡**
   - 使用nginx负载均衡
   - 配置多实例部署

3. **数据库优化**
   - 添加索引
   - 查询优化
   - 连接池配置

## 支持

如遇部署问题，请检查：
1. Docker 和 Docker Compose 版本
2. 系统资源（内存、磁盘空间）
3. 网络连接
4. 查看详细错误日志