Files
loan-pricing/doc/implementation-report-2026-04-01-production-one-click-deploy-backend.md
2026-04-01 10:32:57 +08:00

1.7 KiB

生产一键部署脚本后端实施记录

修改内容

  • 新增生产一键部署脚本 bin/prod/deploy_from_package.sh
  • 新增部署脚本自测文件 bin/prod/deploy_from_package_test.sh
  • 脚本内固定 JAVA_BIN="/home/webapp/env/java/bin/java"
  • 新增脚本同目录唯一发布 zip 校验、包内唯一 jar 校验
  • 新增旧版后端 jar 时间戳备份规则
  • 新增后端 PID 文件、托管进程标记、停止旧进程、启动新进程和端口监听校验逻辑

实现说明

  • 新脚本执行目录固定为脚本所在目录,要求同目录存在:
    • backend/
    • frontend/
    • 1 个发布 zip
  • 后端目标文件固定落到 backend/ruoyi-admin.jar
  • 旧版后端 jar 通过 ruoyi-admin.jar.<时间戳>.bak 方式原地备份
  • 启动时附加 -Dloan.pricing.home=<脚本目录>,用于识别当前脚本托管进程
  • PID 文件固定写入 backend/backend.pid
  • 后端日志固定写入 backend/backend-console.log
  • 端口监听检测优先使用 ss,当前环境没有 ss 时改为使用 lsof 完成同一条校验

验证结果

  • 已执行 sh -n bin/prod/deploy_from_package.sh,语法校验通过
  • 已执行 sh bin/prod/deploy_from_package_test.sh
  • 自测覆盖以下场景:
    • 正常部署场景:
      • 旧版 jar 被重命名为时间戳备份文件
      • 新版 jar 落到 backend/ruoyi-admin.jar
      • 后端 PID 文件和日志文件生成成功
      • 假后端进程启动成功并监听测试端口
    • 异常场景:
      • 脚本同目录存在多个发布 zip 时,脚本按预期失败并输出错误信息
  • 自测使用临时目录和临时假 java 进程,测试结束后已自动清理对应进程和目录