- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
408 lines
9.8 KiB
Markdown
408 lines
9.8 KiB
Markdown
# 双系统部署完成报告
|
||
|
||
## 部署概览
|
||
|
||
✅ **部署完成时间**: 2025年11月2日
|
||
✅ **部署状态**: 成功
|
||
|
||
本次部署实现了两套完全隔离的考培练系统:
|
||
1. **演示系统**(aiedu.ireborn.com.cn)- 生产模式,无热重载
|
||
2. **开发系统**(kpl.ireborn.com.cn)- 开发模式,支持热重载
|
||
|
||
---
|
||
|
||
## 一、演示系统(aiedu.ireborn.com.cn)
|
||
|
||
### 系统配置
|
||
- **模式**: 生产模式(无热重载)
|
||
- **用途**: 对外演示系统
|
||
- **配置文件**: `docker-compose.yml`
|
||
|
||
### 容器列表
|
||
| 容器名 | 状态 | 端口映射 | 说明 |
|
||
|--------|------|----------|------|
|
||
| kaopeilian-nginx | ✅ 运行中 | 80, 443 | Nginx反向代理 |
|
||
| kaopeilian-frontend | ✅ 运行中 | 内部80 | 前端静态资源 |
|
||
| kaopeilian-backend | ✅ 运行中 | 8000 | 后端API服务 |
|
||
| kaopeilian-mysql | ✅ 运行中 | 3307 | MySQL数据库 |
|
||
| kaopeilian-redis | ✅ 运行中 | 6379 | Redis缓存 |
|
||
|
||
### 访问地址
|
||
- 🌐 **HTTPS访问**: https://aiedu.ireborn.com.cn
|
||
- 🔧 **后端API**: http://120.79.247.16:8000
|
||
- 🗄️ **MySQL**: 120.79.247.16:3307
|
||
|
||
### 特点
|
||
- ✅ 生产模式运行,稳定可靠
|
||
- ✅ 前端为构建后的静态资源
|
||
- ✅ 后端无热重载,性能优化
|
||
- ✅ 适合对外演示和测试
|
||
|
||
---
|
||
|
||
## 二、开发系统(kpl.ireborn.com.cn)
|
||
|
||
### 系统配置
|
||
- **模式**: 开发模式(支持热重载)
|
||
- **用途**: 瑞小美团队日常开发
|
||
- **配置文件**: `docker-compose.kpl.yml`
|
||
|
||
### 容器列表
|
||
| 容器名 | 状态 | 端口映射 | 说明 |
|
||
|--------|------|----------|------|
|
||
| kpl-frontend-dev | ✅ 运行中 | 3002→3001 | Vite开发服务器(HMR) |
|
||
| kpl-backend-dev | ✅ 运行中 | 8001→8000 | 后端开发服务器 |
|
||
| kpl-mysql-dev | ✅ 运行中 | 3308→3306 | MySQL数据库 |
|
||
| kpl-redis-dev | ✅ 运行中 | 6380→6379 | Redis缓存 |
|
||
|
||
### 访问地址
|
||
- 🌐 **HTTPS访问**: https://kpl.ireborn.com.cn
|
||
- 🖥️ **本地前端**: http://localhost:3002
|
||
- 🔧 **本地后端**: http://localhost:8001
|
||
- 📚 **API文档**: http://localhost:8001/docs
|
||
- 🗄️ **MySQL**: 120.79.247.16:3308
|
||
- 🔄 **Redis**: 120.79.247.16:6380
|
||
|
||
### 特点
|
||
- ✅ 完整热重载支持(前后端)
|
||
- ✅ 代码修改实时生效
|
||
- ✅ 独立的数据库和缓存
|
||
- ✅ 完全隔离,不影响演示系统
|
||
|
||
---
|
||
|
||
## 三、系统隔离验证
|
||
|
||
### 网络隔离
|
||
```
|
||
kaopeilian-network - 演示系统专用网络
|
||
kpl-dev-network - 开发系统专用网络
|
||
nginx - 连接两个网络,提供路由
|
||
```
|
||
|
||
### 数据隔离
|
||
| 资源 | 演示系统 | 开发系统 | 隔离状态 |
|
||
|------|----------|----------|----------|
|
||
| MySQL | 端口3307 | 端口3308 | ✅ 完全隔离 |
|
||
| Redis | 端口6379 | 端口6380 | ✅ 完全隔离 |
|
||
| 数据卷 | kaopeilian-mysql-data | kpl-mysql-dev-data | ✅ 完全隔离 |
|
||
| 网络 | kaopeilian-network | kpl-dev-network | ✅ 完全隔离 |
|
||
|
||
### 健康检查结果
|
||
```bash
|
||
# 演示系统后端
|
||
curl http://localhost:8000/health
|
||
{"status":"healthy","service":"考培练系统后端","version":"1.0.0"}
|
||
|
||
# 开发系统后端
|
||
curl http://localhost:8001/health
|
||
{"status":"healthy","service":"KaoPeiLian","version":"1.0.0"}
|
||
```
|
||
|
||
---
|
||
|
||
## 四、SSL证书配置
|
||
|
||
### 已申请证书
|
||
| 域名 | 证书状态 | 有效期至 | 证书路径 |
|
||
|------|----------|----------|----------|
|
||
| aiedu.ireborn.com.cn | ✅ 有效 | 原有证书 | /etc/letsencrypt/live/aiedu.ireborn.com.cn/ |
|
||
| kpl.ireborn.com.cn | ✅ 有效 | 2026-01-31 | /etc/letsencrypt/live/kpl.ireborn.com.cn/ |
|
||
|
||
### 证书自动续期
|
||
Certbot已配置自动续期,无需手动操作。
|
||
|
||
---
|
||
|
||
## 五、管理脚本
|
||
|
||
### KPL开发系统管理
|
||
|
||
#### 启动服务
|
||
```bash
|
||
cd /root/aiedu
|
||
./start-kpl.sh # 启动基础服务
|
||
./start-kpl.sh --with-admin # 启动服务 + phpMyAdmin
|
||
```
|
||
|
||
#### 停止服务
|
||
```bash
|
||
./stop-kpl.sh # 停止服务,保留数据
|
||
./stop-kpl.sh --keep-data # 停止服务,保留数据
|
||
```
|
||
|
||
#### 查看日志
|
||
```bash
|
||
# 查看所有日志
|
||
docker compose -f docker-compose.kpl.yml logs -f
|
||
|
||
# 查看特定服务日志
|
||
docker compose -f docker-compose.kpl.yml logs -f kpl-frontend-dev
|
||
docker compose -f docker-compose.kpl.yml logs -f kpl-backend-dev
|
||
```
|
||
|
||
#### 重启服务
|
||
```bash
|
||
# 重启特定服务
|
||
docker compose -f docker-compose.kpl.yml restart kpl-frontend-dev
|
||
docker compose -f docker-compose.kpl.yml restart kpl-backend-dev
|
||
```
|
||
|
||
### 演示系统管理
|
||
|
||
#### 查看状态
|
||
```bash
|
||
docker compose -f docker-compose.yml ps
|
||
```
|
||
|
||
#### 重启服务
|
||
```bash
|
||
docker compose -f docker-compose.yml restart [service_name]
|
||
```
|
||
|
||
---
|
||
|
||
## 六、热重载功能验证
|
||
|
||
### 前端热重载
|
||
- ✅ 使用Vite开发服务器
|
||
- ✅ 支持HMR(热模块替换)
|
||
- ✅ WebSocket连接正常
|
||
- ✅ 修改代码立即生效
|
||
|
||
**测试方法**:
|
||
```bash
|
||
# 1. 访问 https://kpl.ireborn.com.cn
|
||
# 2. 修改 kaopeilian-frontend/src/App.vue
|
||
# 3. 观察浏览器自动刷新
|
||
```
|
||
|
||
### 后端热重载
|
||
- ✅ 使用uvicorn --reload模式
|
||
- ✅ 监听/app/app目录
|
||
- ✅ Python文件修改自动重启
|
||
- ✅ 重启时间约2-3秒
|
||
|
||
**测试方法**:
|
||
```bash
|
||
# 1. 查看后端日志
|
||
docker compose -f docker-compose.kpl.yml logs -f kpl-backend-dev
|
||
|
||
# 2. 修改 kaopeilian-backend/app/main.py
|
||
# 3. 观察日志显示自动重启
|
||
```
|
||
|
||
---
|
||
|
||
## 七、端口分配总结
|
||
|
||
| 服务 | 演示系统端口 | 开发系统端口 | 说明 |
|
||
|------|--------------|--------------|------|
|
||
| HTTP | 80 | 80 | 共享(nginx) |
|
||
| HTTPS | 443 | 443 | 共享(nginx) |
|
||
| 前端 | 内部 | 3002 | 开发系统可本地访问 |
|
||
| 后端 | 8000 | 8001 | 两套系统独立 |
|
||
| MySQL | 3307 | 3308 | 完全隔离 |
|
||
| Redis | 6379 | 6380 | 完全隔离 |
|
||
| phpMyAdmin | - | 8081 | 仅开发系统 |
|
||
|
||
---
|
||
|
||
## 八、关键配置文件
|
||
|
||
### 新增文件
|
||
```
|
||
/root/aiedu/docker-compose.kpl.yml # KPL系统配置
|
||
/root/aiedu/nginx/conf.d/kpl.conf # KPL域名配置
|
||
/root/aiedu/start-kpl.sh # KPL启动脚本
|
||
/root/aiedu/stop-kpl.sh # KPL停止脚本
|
||
```
|
||
|
||
### 修改文件
|
||
```
|
||
/root/aiedu/docker-compose.yml # 添加kpl-dev-network
|
||
/root/aiedu/nginx/conf.d/kaopeilian.conf # 指向生产容器
|
||
```
|
||
|
||
---
|
||
|
||
## 九、开发工作流
|
||
|
||
### 日常开发流程
|
||
|
||
1. **访问开发环境**
|
||
```
|
||
https://kpl.ireborn.com.cn
|
||
```
|
||
|
||
2. **修改代码**
|
||
- 前端: `kaopeilian-frontend/src/`
|
||
- 后端: `kaopeilian-backend/app/`
|
||
|
||
3. **观察效果**
|
||
- 前端: 浏览器自动刷新
|
||
- 后端: 自动重启服务
|
||
|
||
4. **调试工具**
|
||
- API文档: http://localhost:8001/docs
|
||
- 浏览器DevTools
|
||
- 容器日志
|
||
|
||
### 数据库管理
|
||
|
||
#### 方式1: 命令行
|
||
```bash
|
||
# 连接演示系统数据库
|
||
mysql -h 120.79.247.16 -P 3307 -u root -p'Kaopeilian2025!@#' kaopeilian
|
||
|
||
# 连接开发系统数据库
|
||
mysql -h 120.79.247.16 -P 3308 -u root -p'nj861021' kaopeilian
|
||
```
|
||
|
||
#### 方式2: phpMyAdmin
|
||
```bash
|
||
# 启动phpMyAdmin
|
||
docker compose -f docker-compose.kpl.yml --profile admin up -d
|
||
|
||
# 访问 http://localhost:8081
|
||
```
|
||
|
||
---
|
||
|
||
## 十、故障排查
|
||
|
||
### 域名访问返回403错误
|
||
|
||
**症状**: 访问 https://kpl.ireborn.com.cn 返回403 Forbidden
|
||
|
||
**原因**: Vite开发服务器的`allowedHosts`配置中缺少该域名
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 1. 编辑 vite.config.ts,在allowedHosts数组中添加域名
|
||
# 2. 重启前端容器
|
||
docker restart kpl-frontend-dev
|
||
```
|
||
|
||
### 容器无法启动
|
||
```bash
|
||
# 查看容器状态
|
||
docker ps -a
|
||
|
||
# 查看容器日志
|
||
docker logs <container_name>
|
||
|
||
# 重启容器
|
||
docker restart <container_name>
|
||
```
|
||
|
||
### 热重载不工作
|
||
```bash
|
||
# 检查文件挂载
|
||
docker inspect kpl-frontend-dev | grep Mounts -A 20
|
||
|
||
# 重启容器
|
||
docker compose -f docker-compose.kpl.yml restart kpl-frontend-dev
|
||
```
|
||
|
||
### Nginx配置错误
|
||
```bash
|
||
# 测试配置
|
||
docker exec kaopeilian-nginx nginx -t
|
||
|
||
# 重新加载配置
|
||
docker exec kaopeilian-nginx nginx -s reload
|
||
```
|
||
|
||
### 网络问题
|
||
```bash
|
||
# 检查网络
|
||
docker network ls
|
||
docker network inspect kpl-dev-network
|
||
|
||
# 重建网络(慎用)
|
||
docker compose -f docker-compose.kpl.yml down
|
||
docker network rm kpl-dev-network
|
||
docker network create kpl-dev-network
|
||
docker compose -f docker-compose.kpl.yml up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 十一、安全注意事项
|
||
|
||
1. ✅ 所有对外服务均使用HTTPS
|
||
2. ✅ 数据库密码已配置(请定期更换)
|
||
3. ✅ Redis未开放外网访问
|
||
4. ✅ 开发环境与生产环境隔离
|
||
5. ⚠️ 开发环境密码较简单(nj861021),仅用于内网
|
||
|
||
---
|
||
|
||
## 十二、后续建议
|
||
|
||
### 短期(1周内)
|
||
- [ ] 测试所有功能模块是否正常
|
||
- [ ] 验证热重载在实际开发中的效果
|
||
- [ ] 团队成员熟悉新的开发环境
|
||
|
||
### 中期(1个月内)
|
||
- [ ] 根据使用情况优化资源配置
|
||
- [ ] 考虑添加监控和日志收集
|
||
- [ ] 完善备份策略
|
||
|
||
### 长期
|
||
- [ ] 考虑使用CI/CD自动化部署
|
||
- [ ] 增强安全配置(防火墙、访问控制)
|
||
- [ ] 性能优化和成本控制
|
||
|
||
---
|
||
|
||
## 附录:快速参考
|
||
|
||
### 常用命令速查
|
||
```bash
|
||
# 查看所有容器
|
||
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||
|
||
# 查看KPL系统日志
|
||
docker compose -f docker-compose.kpl.yml logs -f
|
||
|
||
# 重启nginx
|
||
docker restart kaopeilian-nginx
|
||
|
||
# 进入容器
|
||
docker exec -it kpl-backend-dev bash
|
||
docker exec -it kpl-mysql-dev mysql -uroot -p
|
||
|
||
# 清理未使用的资源
|
||
docker system prune -a
|
||
```
|
||
|
||
### 重要路径
|
||
```
|
||
配置文件:
|
||
/root/aiedu/docker-compose.yml # 演示系统
|
||
/root/aiedu/docker-compose.kpl.yml # 开发系统
|
||
/root/aiedu/nginx/conf.d/ # Nginx配置
|
||
|
||
源代码:
|
||
/root/aiedu/kaopeilian-frontend/ # 前端代码
|
||
/root/aiedu/kaopeilian-backend/ # 后端代码
|
||
|
||
日志:
|
||
/root/aiedu/kaopeilian-backend/logs/ # 后端日志
|
||
/root/aiedu/kaopeilian-frontend/logs/ # 前端日志
|
||
|
||
证书:
|
||
/etc/letsencrypt/live/ # SSL证书
|
||
```
|
||
|
||
---
|
||
|
||
**部署人员**: AI Assistant
|
||
**审核人员**: 待审核
|
||
**部署日期**: 2025-11-02
|
||
**报告版本**: 1.0
|
||
|