# 情绪博物馆自定义目录部署指南 ## 📋 部署架构 根据您的要求,本部署方案采用以下目录结构: ``` /data/ ├── www/emotion-museum/ # 前端静态文件目录 │ ├── index.html │ ├── assets/ │ └── ... ├── builds/ # 后端JAR文件目录 │ ├── emotion-gateway.jar │ ├── emotion-ai.jar │ └── emotion-user.jar └── logs/emotion-museum/ # 日志目录 ├── nginx/ ├── gateway/ ├── ai/ ├── user/ ├── mysql/ ├── redis/ └── nacos/ ``` ## 🏗️ 服务架构 ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 用户访问 │───▶│ Nginx │───▶│ 静态文件 │ └─────────────┘ │ (80/443) │ │ /data/www/ │ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ │ API代理 │───▶│ Gateway │ │ /api/* │ │ (9000) │ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ │ 微服务集群 │ │ JAR文件 │ │ AI/User/... │ │ /data/builds│ └─────────────┘ └─────────────┘ ``` ## 🚀 快速部署 ### 1. 准备环境 ```bash # 确保Docker和Docker Compose已安装 docker --version docker-compose --version # 创建必要目录 sudo mkdir -p /data/www/emotion-museum sudo mkdir -p /data/builds sudo mkdir -p /data/logs/emotion-museum ``` ### 2. 配置环境变量 ```bash # 编辑环境变量文件 vim .env ``` **配置说明**: ```bash # Coze API配置(已配置为与开发环境一致) COZE_API_TOKEN=pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO # 数据库密码(可根据需要修改) MYSQL_ROOT_PASSWORD=123456 MYSQL_PASSWORD=emotion123 ``` ### 3. 一键部署 ```bash # 给脚本执行权限 chmod +x deploy-custom.sh # 执行自定义部署 ./deploy-custom.sh ``` ## 📁 文件说明 ### 新增配置文件 1. **`docker-compose.custom.yml`** - 自定义Docker配置 - 前端文件直接从宿主机目录提供 - 后端JAR文件挂载到容器 - 日志统一保存到指定目录 2. **`deploy-custom.sh`** - 自定义部署脚本 - 自动检查和构建前后端 - 部署文件到指定目录 - 启动Docker服务 3. **`manage-custom.sh`** - 自定义管理脚本 - 服务管理和监控 - 日志查看和健康检查 - 数据备份和恢复 ### 修改的配置文件 1. **`deploy/nginx/conf.d/emotion-museum.conf`** - Nginx配置 - 前端文件直接从 `/data/www/emotion-museum` 提供 - API请求代理到Docker容器内的服务 - 日志保存到 `/data/logs/emotion-museum/nginx/` 2. **`deploy/nginx/nginx.conf`** - Nginx主配置 - 更新上游服务器定义 - 支持容器间通信 ## 🔧 端口配置 | 服务 | 容器端口 | 宿主机端口 | 说明 | |------|----------|------------|------| | Nginx | 80/443 | 80/443 | Web访问 | | Gateway | 9000 | 9000 | API网关 | | AI Service | 9002 | 9002 | AI服务 | | User Service | 9001 | 9001 | 用户服务 | | MySQL | 3306 | 3306 | 数据库 | | Redis | 6379 | 6379 | 缓存 | | Nacos | 8848 | 8848 | 注册中心 | ## 🛠️ 管理命令 ### 服务管理 ```bash # 启动所有服务 ./manage-custom.sh start # 停止所有服务 ./manage-custom.sh stop # 重启所有服务 ./manage-custom.sh restart # 重启指定服务 ./manage-custom.sh restart emotion-ai # 查看服务状态 ./manage-custom.sh status ``` ### 日志管理 ```bash # 查看所有日志 ./manage-custom.sh logs # 跟踪日志输出 ./manage-custom.sh logs -f # 查看指定服务日志 ./manage-custom.sh logs -s nginx ./manage-custom.sh logs -s emotion-gateway ``` ### 健康检查 ```bash # 执行健康检查 ./manage-custom.sh health # 实时监控 ./manage-custom.sh monitor ``` ### 数据管理 ```bash # 备份数据 ./manage-custom.sh backup # 更新服务 ./manage-custom.sh update # 清理资源 ./manage-custom.sh clean ``` ## 📊 目录详情 ### 前端目录 `/data/www/emotion-museum/` ``` /data/www/emotion-museum/ ├── index.html # 主页面 ├── assets/ # 静态资源 │ ├── css/ # 样式文件 │ ├── js/ # JavaScript文件 │ └── images/ # 图片文件 └── favicon.ico # 网站图标 ``` ### 后端目录 `/data/builds/` ``` /data/builds/ ├── emotion-gateway.jar # 网关服务JAR ├── emotion-ai.jar # AI服务JAR └── emotion-user.jar # 用户服务JAR ``` ### 日志目录 `/data/logs/emotion-museum/` ``` /data/logs/emotion-museum/ ├── nginx/ # Nginx日志 │ ├── access.log │ └── error.log ├── gateway/ # 网关服务日志 ├── ai/ # AI服务日志 ├── user/ # 用户服务日志 ├── mysql/ # MySQL日志 ├── redis/ # Redis日志 └── nacos/ # Nacos日志 ``` ## 🔄 更新流程 ### 更新前端 ```bash # 1. 重新构建前端 cd web npm run build # 2. 部署到目标目录 sudo rm -rf /data/www/emotion-museum/* sudo cp -r dist/* /data/www/emotion-museum/ sudo chown -R www-data:www-data /data/www/emotion-museum # 3. 重启Nginx(可选) ./manage-custom.sh restart nginx ``` ### 更新后端 ```bash # 1. 重新构建后端 cd backend mvn clean package -DskipTests # 2. 部署JAR文件 sudo cp emotion-gateway/target/emotion-gateway-1.0.0.jar /data/builds/emotion-gateway.jar sudo cp emotion-ai/target/emotion-ai-1.0.0.jar /data/builds/emotion-ai.jar sudo cp emotion-user/target/emotion-user-1.0.0.jar /data/builds/emotion-user.jar # 3. 重启相关服务 ./manage-custom.sh restart emotion-gateway ./manage-custom.sh restart emotion-ai ./manage-custom.sh restart emotion-user ``` ### 一键更新 ```bash # 自动构建和部署 ./manage-custom.sh update ``` ## 🚨 故障排除 ### 常见问题 #### 1. 前端访问404 ```bash # 检查前端文件是否存在 ls -la /data/www/emotion-museum/ # 检查Nginx配置 ./manage-custom.sh logs -s nginx # 检查文件权限 sudo chown -R www-data:www-data /data/www/emotion-museum ``` #### 2. API调用失败 ```bash # 检查网关服务状态 ./manage-custom.sh logs -s emotion-gateway # 检查服务健康状态 curl http://localhost:9000/actuator/health ``` #### 3. 服务启动失败 ```bash # 检查JAR文件是否存在 ls -la /data/builds/ # 检查服务日志 ./manage-custom.sh logs -s emotion-ai # 检查容器状态 docker-compose -f docker-compose.custom.yml ps ``` #### 4. 日志文件过大 ```bash # 清理日志文件 sudo find /data/logs/emotion-museum -name "*.log" -size +100M -delete # 设置日志轮转 sudo logrotate -f /etc/logrotate.conf ``` ## 📞 技术支持 ### 快速诊断 ```bash # 执行健康检查 ./manage-custom.sh health # 查看服务状态 ./manage-custom.sh status # 查看实时监控 ./manage-custom.sh monitor ``` ### 获取帮助 ```bash # 查看管理命令帮助 ./manage-custom.sh --help # 查看部署脚本帮助 ./deploy-custom.sh --help ``` --- ## ✅ 部署检查清单 - [ ] **目录创建**: `/data/www/emotion-museum`, `/data/builds`, `/data/logs/emotion-museum` - [ ] **环境配置**: `COZE_API_TOKEN` 已配置为与开发环境一致 - [ ] **前端部署**: 静态文件已复制到 `/data/www/emotion-museum/` - [ ] **后端部署**: JAR文件已复制到 `/data/builds/` - [ ] **服务启动**: 所有Docker容器正常运行 - [ ] **访问测试**: 前端页面和API接口正常访问 - [ ] **日志检查**: 日志文件正常生成到 `/data/logs/emotion-museum/` **🎉 恭喜!您的情绪博物馆项目已成功部署到自定义目录结构!**