# 一键部署脚本使用说明 ## 📋 概述 `deploy-all.sh` 是一个一键式部署脚本,可以同时部署后端和前端服务到远程服务器 `101.200.208.45`。 该脚本会自动执行以下操作: 1. 编译后端项目 2. 上传后端 JAR 包到服务器 3. 启动后端服务 4. 构建前端项目 5. 上传前端文件到服务器 6. 验证部署结果 ## 🚀 快速开始 ### 基本用法 ```bash # 部署所有服务(后端 + 前端 + 管理后台) bash deploy-all.sh # 或指定部署类型 bash deploy-all.sh all # 部署所有服务 bash deploy-all.sh backend # 仅部署后端 bash deploy-all.sh frontend # 仅部署前端 bash deploy-all.sh admin # 仅部署管理后台 ``` ### 完整部署流程 ```bash # 1. 进入项目根目录 cd /path/to/EmotionMuseum # 2. 执行一键部署 bash deploy-all.sh # 3. 等待部署完成(通常需要 2-5 分钟) # 4. 访问应用 # 前端: http://101.200.208.45/emotion-museum/ # 管理后台: http://101.200.208.45/emotion-museum-admin/ # 后端: http://101.200.208.45:19089/api ``` ## 📝 部署选项 ### 部署所有服务 ```bash bash deploy-all.sh all # 或 bash deploy-all.sh ``` 同时部署后端和前端,推荐用于完整的应用更新。 ### 仅部署后端 ```bash bash deploy-all.sh backend ``` 仅更新后端服务,适用于后端代码更新。 ### 仅部署前端 ```bash bash deploy-all.sh frontend ``` 仅更新前端应用,适用于前端代码更新。 ### 仅部署管理后台 ```bash bash deploy-all.sh admin ``` 仅更新管理后台,适用于管理后台代码更新。 ## 📊 部署流程详解 ### 后端部署流程 1. 检查 `backend-single/deploy.sh` 是否存在 2. 执行后端部署脚本 - 清理旧的构建文件 - 编译项目 (`mvn clean package`) - 上传 JAR 包到服务器 - 启动后端服务 - 验证服务是否正常运行 ### 前端部署流程 1. 检查 `web/deploy.sh` 是否存在 2. 执行前端部署脚本 - 构建前端项目 (`npm run build`) - 上传 `index.html` 到服务器 - 上传 `assets` 目录到服务器 - 验证文件是否上传成功 ### 管理后台部署流程 1. 检查 `web-admin/deploy.sh` 是否存在 2. 执行管理后台部署脚本 - 构建管理后台项目 (`npm run build`) - 创建远程目录 - 上传 `index.html` 到服务器 - 上传 `assets` 目录到服务器 - 设置文件权限 - 验证文件是否上传成功 ## ✅ 验证部署 ### 部署完成后的验证 ```bash # 1. 检查后端服务是否运行 curl http://101.200.208.45:19089/api/health # 2. 检查前端是否可访问 curl http://101.200.208.45/emotion-museum/ # 3. 检查管理后台是否可访问 curl http://101.200.208.45/emotion-museum-admin/ # 4. 在浏览器中访问 # 前端: http://101.200.208.45/emotion-museum/ # 管理后台: http://101.200.208.45/emotion-museum-admin/ # 登录页面应该正常显示 ``` ### 查看服务日志 ```bash # SSH 连接到服务器 ssh root@101.200.208.45 # 查看后端日志 tail -f /data/logs/emotion-museum/emotion-single.log # 查看前端文件是否存在 ls -lh /data/www/emotion-museum/ # 查看管理后台文件是否存在 ls -lh /data/www/emotion-museum-admin/ ``` ## 🔧 故障排查 ### 后端部署失败 **问题**: 后端部署失败,显示 "JAR 文件不存在" **解决方案**: ```bash # 1. 检查是否安装了 Maven mvn -v # 2. 手动编译项目 cd backend-single mvn clean package -DskipTests # 3. 检查 JAR 文件是否生成 ls -lh target/backend-single-1.0.0.jar # 4. 重新执行部署 bash deploy-all.sh backend ``` **问题**: SSH 连接失败 **解决方案**: ```bash # 1. 检查 SSH 密钥是否配置 ssh-keygen -t rsa -b 4096 # 2. 复制公钥到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub root@101.200.208.45 # 3. 测试 SSH 连接 ssh root@101.200.208.45 "echo 'SSH 连接成功'" ``` ### 前端部署失败 **问题**: 前端部署失败,显示 "dist 目录不存在" **解决方案**: ```bash # 1. 进入前端目录 cd web # 2. 安装依赖 npm install # 3. 构建项目 npm run build # 4. 检查 dist 目录 ls -lh dist/ # 5. 重新执行部署 bash deploy-all.sh frontend ``` **问题**: 前端访问 404 **解决方案**: ```bash # 1. 检查 Nginx 配置 (www/server/panel/vhost/nginx/emotion-museum.conf ) ssh root@101.200.208.45 "nginx -t" # 2. 重新加载 Nginx ssh root@101.200.208.45 "nginx -s reload" # 3. 检查前端文件是否存在 ssh root@101.200.208.45 "ls -lh /data/www/emotion-museum/" ``` ## 📊 部署日志 部署过程中会输出详细的日志信息: ``` [INFO] 情绪博物馆 - 一键式部署 [INFO] 部署类型: all [INFO] 部署时间: 2025-10-26 21:30:00 ╔════════════════════════════════════════════════════════════════╗ ║ 开始部署后端服务 ╚════════════════════════════════════════════════════════════════╝ [INFO] 执行后端部署脚本... [INFO] ✅ 后端部署成功 ╔════════════════════════════════════════════════════════════════╗ ║ 开始部署前端应用 ╚════════════════════════════════════════════════════════════════╝ [INFO] 执行前端部署脚本... [INFO] ✅ 前端部署成功 ╔════════════════════════════════════════════════════════════════╗ ║ 部署完成总结 ╚════════════════════════════════════════════════════════════════╝ [INFO] ✅ 后端部署: 成功 [INFO] ✅ 前端部署: 成功 [INFO] 部署耗时: 180秒 ╔════════════════════════════════════════════════════════════════╗ ║ 部署成功! ╚════════════════════════════════════════════════════════════════╝ [INFO] 📱 前端访问地址: http://101.200.208.45/emotion-museum/ [INFO] 🔌 后端API地址: http://101.200.208.45:19089/api [INFO] 📊 WebSocket地址: ws://101.200.208.45:19089/ws ``` ## 🔄 常见场景 ### 场景 1: 仅更新后端代码 ```bash # 1. 修改后端代码 # 2. 执行部署 bash deploy-all.sh backend # 3. 验证 curl http://101.200.208.45:19089/api/health ``` ### 场景 2: 仅更新前端代码 ```bash # 1. 修改前端代码 # 2. 执行部署 bash deploy-all.sh frontend # 3. 在浏览器中刷新页面 # http://101.200.208.45/emotion-museum/ ``` ### 场景 3: 仅更新管理后台代码 ```bash # 1. 修改管理后台代码 # 2. 执行部署 bash deploy-all.sh admin # 3. 在浏览器中刷新页面 # http://101.200.208.45/emotion-museum-admin/ ``` ### 场景 4: 同时更新所有服务 ```bash # 1. 修改前后端和管理后台代码 # 2. 执行部署 bash deploy-all.sh all # 3. 等待部署完成 # 4. 验证应用 ``` ## 📞 支持 如有问题,请参考以下文件: - `backend-single/部署说明.md` - 后端部署详情 - `web/部署说明.md` - 前端部署详情 - `web-admin/部署说明.md` - 管理后台部署详情 - `backend-single/deploy.sh` - 后端部署脚本 - `web/deploy.sh` - 前端部署脚本 - `web-admin/deploy.sh` - 管理后台部署脚本 --- **最后更新**: 2025-10-26 **版本**: 1.0 **状态**: ✅ 已完成