# 情感博物馆部署脚本使用说明 ## 概述 本项目提供了完整的自动化部署脚本,支持本地部署和Jenkins CI/CD部署。所有脚本都经过优化,支持错误处理、详细日志输出和部署状态报告。 ## 脚本列表 ### 后端微服务部署脚本 #### 1. 全量部署脚本 - **路径**: `backend/deploy-all.sh` - **功能**: 一键部署所有后端微服务 - **特性**: - ✅ 单个服务失败不影响其他服务 - ✅ 详细的部署报告和错误日志 - ✅ 支持Jenkins环境变量 - ✅ 容器化部署 #### 2. 单服务部署脚本 每个微服务都有独立的部署脚本: - `backend/emotion-gateway/deploy.sh` - API网关服务 - `backend/emotion-user/deploy.sh` - 用户管理服务 - `backend/emotion-ai/deploy.sh` - AI聊天服务 - `backend/emotion-record/deploy.sh` - 记录管理服务 - `backend/emotion-growth/deploy.sh` - 成长跟踪服务 - `backend/emotion-websocket/deploy.sh` - WebSocket服务 - `backend/emotion-auth/deploy.sh` - 认证服务 ### 前端应用部署脚本 #### 3. 前端部署脚本 - **路径**: `web-flowith/deploy.sh` - **功能**: 构建并部署Vue前端应用 - **特性**: - ✅ 自动构建和优化 - ✅ 备份旧版本 - ✅ Nginx配置 - ✅ 健康检查 ## 使用方法 ### 本地部署 #### 部署所有后端服务 ```bash cd backend ./deploy-all.sh ``` #### 部署单个后端服务 ```bash cd backend/emotion-gateway ./deploy.sh ``` #### 部署前端应用 ```bash cd web-flowith ./deploy.sh ``` ### Jenkins部署 #### 环境变量配置 在Jenkins中设置以下环境变量: ```bash # 必需变量 DEPLOY_HOST=root@47.111.10.27 DEPLOY_ENV=test PROJECT_NAME=emotion-museum # 可选变量(使用默认值) REMOTE_BUILD_DIR=/data/builds REMOTE_DOCKER_DIR=/data/docker REMOTE_WEB_DIR=/data/www/emotion-museum ``` #### Pipeline脚本示例 ```groovy pipeline { agent any environment { DEPLOY_HOST = 'root@47.111.10.27' DEPLOY_ENV = 'test' } stages { stage('Deploy Backend') { steps { dir('backend') { sh './deploy-all.sh' } } } stage('Deploy Frontend') { steps { dir('web-flowith') { sh './deploy.sh' } } } } } ``` ## 部署配置 ### 服务端口分配 - **API网关**: 19000 - **用户服务**: 19001 - **AI服务**: 19002 - **记录服务**: 19003 - **成长服务**: 19004 - **WebSocket服务**: 19007 - **认证服务**: 19008 ### 远程服务器目录结构 ``` /data/ ├── builds/ # JAR包存储目录 │ ├── emotion-gateway-1.0.0.jar │ ├── emotion-user-1.0.0.jar │ └── ... ├── docker/ # Docker配置目录 │ ├── Dockerfile.emotion-gateway │ ├── Dockerfile.emotion-user │ └── ... ├── www/emotion-museum/ # 前端文件目录 │ ├── web-flowith/ # 前端应用 │ └── backup/ # 前端备份 └── logs/ # 日志目录 ├── emotion-museum/ # 应用日志 └── nginx/ # Nginx日志 ``` ## 部署报告示例 ### 后端服务部署报告 ``` ======================================== 部署完成报告 ======================================== 项目名称: emotion-museum 部署环境: test 目标服务器: root@47.111.10.27 部署时间: 2025-07-18 14:30:25 总耗时: 180s Jenkins构建: #42 ======================================== 📊 部署统计: 总服务数: 7 成功部署: 6 失败部署: 1 成功率: 85% 📋 服务部署详情: 服务名称 状态 耗时 备注 ---------------------------------------- emotion-gateway ✅ 成功 25s http://47.111.10.27:19000 emotion-user ✅ 成功 30s http://47.111.10.27:19001 emotion-ai ✅ 成功 35s http://47.111.10.27:19002 emotion-record ✅ 成功 28s http://47.111.10.27:19003 emotion-growth ✅ 成功 32s http://47.111.10.27:19004 emotion-websocket ✅ 成功 20s http://47.111.10.27:19007 emotion-auth ❌ 失败 10s 查看错误日志 🐳 当前容器运行状态: ---------------------------------------- NAMES STATUS PORTS emotion-gateway Up 2 minutes 0.0.0.0:19000->19000/tcp emotion-user Up 2 minutes 0.0.0.0:19001->19001/tcp emotion-ai Up 1 minute 0.0.0.0:19002->19002/tcp ... ``` ### 前端部署报告 ``` ======================================== 前端部署完成报告 ======================================== 项目名称: emotion-museum-frontend 目标服务器: root@47.111.10.27 部署路径: /data/www/emotion-museum/web-flowith 部署时间: 2025-07-18 14:35:10 总耗时: 45s ======================================== 🌐 访问地址: 前端页面: http://47.111.10.27/emotion-museum/ API接口: http://47.111.10.27/api/ 📁 远程文件信息: 部署目录大小: 2.3M 主要文件: -rw-r--r-- 1 www-data www-data 1.2K index.html drwxr-xr-x 2 www-data www-data 4.0K assets/ drwxr-xr-x 2 www-data www-data 4.0K images/ ``` ## 故障排查 ### 常见问题及解决方案 #### 1. SSH连接失败 ```bash # 检查SSH密钥 ssh -T root@47.111.10.27 # 检查网络连通性 ping 47.111.10.27 ``` #### 2. 服务构建失败 ```bash # 检查Java版本 java -version # 检查Maven配置 mvn -version # 清理并重新构建 mvn clean compile ``` #### 3. 容器启动失败 ```bash # 查看容器日志 docker logs # 检查端口占用 netstat -tlnp | grep # 检查Docker网络 docker network ls ``` #### 4. 前端构建失败 ```bash # 检查Node.js版本 node --version # 清理依赖重新安装 rm -rf node_modules package-lock.json npm install ``` ### 日志查看 #### 部署日志 - Jenkins构建日志中包含完整的部署过程 - 每个步骤都有详细的时间戳和状态信息 #### 应用日志 ```bash # 查看容器日志 docker logs -f # 查看应用日志文件 tail -f /data/logs/emotion-museum/.log # 查看Nginx日志 tail -f /data/logs/nginx/emotion-museum-access.log ``` ## 最佳实践 ### 1. 部署前检查 - ✅ 确认代码已提交到正确分支 - ✅ 检查远程服务器资源使用情况 - ✅ 备份重要数据 - ✅ 通知相关人员部署计划 ### 2. 部署过程监控 - ✅ 实时查看部署日志 - ✅ 监控服务器资源使用 - ✅ 检查服务健康状态 - ✅ 验证功能正常性 ### 3. 部署后验证 - ✅ 访问前端页面确认正常 - ✅ 测试API接口功能 - ✅ 检查日志无异常 - ✅ 监控服务性能指标 ### 4. 回滚准备 - ✅ 保留旧版本备份 - ✅ 准备回滚脚本 - ✅ 制定回滚计划 - ✅ 测试回滚流程 ## 联系支持 如遇到部署问题,请: 1. **查看部署日志**: 详细的错误信息通常在日志中 2. **检查服务状态**: 使用健康检查接口验证服务状态 3. **联系开发团队**: 提供完整的错误日志和环境信息 --- **文档版本**: v1.0 **更新时间**: 2025-07-18 **维护团队**: 情感博物馆开发团队