# 生产一键部署脚本后端实施记录 ## 修改内容 - 新增生产一键部署脚本 `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` 进程,测试结束后已自动清理对应进程和目录