Files
server/docs/deploy-springboot.md
2025-11-02 19:34:16 +08:00

4.6 KiB
Raw Blame History

小智ESP32服务器部署脚本说明

本项目提供两个自动化部署脚本用于快速部署后端Java服务和前端Web应用。

deploy-java.sh - 后端服务部署脚本

核心功能

自动化部署Spring Boot后端服务实现智能进程管理和无缝服务重启。

主要特性

  • 智能JAR文件发现: 自动在target目录中查找最新的JAR文件排除.original文件)
  • 灵活进程匹配: 使用应用名称前缀JAR文件名中"-"之前的部分)匹配进程,支持不同版本的应用
  • 优雅停止机制: 先尝试正常终止进程,如果失败则强制杀死进程
  • 后台启动: 使用nohup在后台启动服务,输出日志到output.log
  • 启动状态检查: 自动验证服务是否成功启动

使用方法

# 给脚本执行权限
chmod +x deploy-java.sh

# 执行部署
./deploy-java.sh

执行流程

  1. target目录中查找JAR文件
  2. 提取应用名称前缀用于进程匹配
  3. 查找并停止正在运行的相关进程
  4. 启动新的服务实例
  5. 验证服务启动状态

前置条件

  • 项目已通过mvn clean package构建完成
  • target目录中存在可执行的JAR文件

deploy-web.sh - 前端应用部署脚本

核心功能

自动化构建和部署Vue.js前端应用实现安全的生产环境更新。

主要特性

  • 自动构建: 执行npm run build构建生产版本
  • 安全备份: 部署前自动备份现有的生产文件到/tmp/dist_backup
  • 无缝部署: 将新构建的文件部署到/var/www/html/dist
  • Nginx重载: 自动测试和重载Nginx配置确保服务连续性

使用方法

# 给脚本执行权限
chmod +x deploy-web.sh

# 执行部署
./deploy-web.sh

执行流程

  1. 进入web目录
  2. 执行npm run build构建前端应用
  3. 备份现有的部署文件(如果存在)
  4. 将新构建的文件移动到生产目录
  5. 测试并重载Nginx配置

前置条件

  • Node.js和npm已正确安装
  • web目录中的依赖包已安装(npm install
  • Nginx服务正在运行
  • 具有/var/www/html目录的写入权限

stop-java.sh - 后端服务停止脚本

核心功能

安全停止Spring Boot后端服务提供优雅的服务关闭机制。

主要特性

  • 智能进程查找: 自动查找target目录中的JAR文件或通过xiaozhi关键字匹配进程
  • 优雅停止机制: 先发送TERM信号优雅停止失败后强制杀死进程
  • PID文件清理: 自动清理可能存在的PID文件
  • 详细状态反馈: 提供完整的停止过程信息

使用方法

# 停止后端服务
./stop-java.sh

执行流程

  1. 查找target目录中的JAR文件
  2. 根据JAR文件名或xiaozhi关键字查找运行中的进程
  3. 优雅停止进程发送TERM信号
  4. 如果优雅停止失败,强制杀死进程
  5. 清理PID文件

stop-web.sh - 前端服务停止脚本

核心功能

停止Web前端服务保持Nginx运行状态提供服务维护页面。

主要特性

  • 安全备份: 停止前自动备份现有的Web服务文件
  • 维护页面: 自动创建友好的维护页面
  • 保持Nginx: 不停止Nginx服务只清理Web应用文件
  • 状态检查: 检查Nginx运行状态并提供相应提示

使用方法

# 停止前端服务
./stop-web.sh

执行流程

  1. 检查Web服务目录是否存在
  2. 备份当前的Web服务文件到临时目录
  3. 清理Web服务目录中的所有文件
  4. 创建维护页面
  5. 检查Nginx状态不停止Nginx

快速部署

完整部署流程

# 1. 构建后端项目
mvn clean package -DskipTests

# 2. 部署后端服务
./deploy-java.sh

# 3. 部署前端应用
./deploy-web.sh

服务管理

# 停止后端服务
./stop-java.sh

# 停止前端服务保持Nginx运行
./stop-web.sh

# 重新部署后端
./stop-java.sh && ./deploy-java.sh

# 重新部署前端
./stop-web.sh && ./deploy-web.sh

服务验证

# 检查后端服务状态
ps -ef | grep xiaozhi

# 检查前端部署
ls -la /var/www/html/dist

# 查看后端服务日志
tail -f output.log

# 检查Nginx状态
nginx -t && systemctl status nginx

故障排除

# 如果后端服务无法停止
ps -ef | grep java | grep xiaozhi
kill -9 <PID>

# 如果前端服务异常
ls -la /tmp/web_backup_*  # 查看备份文件
cp -r /tmp/web_backup_<timestamp>/dist/* /var/www/html/dist/  # 恢复备份

# 检查端口占用
netstat -tlnp | grep :8091  # 后端端口
netstat -tlnp | grep :80    # 前端端口

最后更新: 2024年12月