69 lines
2.6 KiB
Markdown
69 lines
2.6 KiB
Markdown
|
|
# 生产上线部署脚本实施记录
|
||
|
|
|
||
|
|
## 保存路径确认
|
||
|
|
|
||
|
|
- 本次为生产上线部署脚本改动,实施记录保存到 `docs/reports/implementation/`,符合仓库实施文档目录规范。
|
||
|
|
|
||
|
|
## 修改目标
|
||
|
|
|
||
|
|
- 生成一个可放在上线环境执行的部署脚本。
|
||
|
|
- 上线环境目录下已有 `backend/`、`frontend/` 和一个上线压缩包。
|
||
|
|
- 上线压缩包根层包含 `ruoyi-admin.jar` 和 `dist.zip`。
|
||
|
|
- 执行脚本后先备份 `backend/` 与 `frontend/` 旧文件,再解压上线包并部署到对应目录,最后调用 `start-java-backend-prod.sh` 重启后端并输出日志。
|
||
|
|
|
||
|
|
## 修改内容
|
||
|
|
|
||
|
|
- 新增 `deploy/deploy-release-prod.sh`
|
||
|
|
- 默认按脚本同级目录解析 `backend/`、`frontend/`、`start-java-backend-prod.sh` 和上线压缩包。
|
||
|
|
- 使用 `/bin/sh` 写法,避免依赖 Bash 进程替换等服务器环境不一定支持的语法。
|
||
|
|
- 支持显式传入上线压缩包路径:`./deploy-release-prod.sh /path/to/ccdi_YYYYMMDD.zip`。
|
||
|
|
- 未传入压缩包时,自动使用脚本同级目录下唯一的 `.zip` 文件,并排除 `dist.zip`。
|
||
|
|
- 部署前将 `backend/` 和 `frontend/` 当前内容备份到 `backups/YYYYMMDDHHMMSS/`。
|
||
|
|
- 解压上线包后校验根层必须存在 `ruoyi-admin.jar` 和 `dist.zip`。
|
||
|
|
- 解压 `dist.zip` 后校验必须存在 `dist/index.html`。
|
||
|
|
- 后端部署为覆盖 `backend/ruoyi-admin.jar`。
|
||
|
|
- 前端部署为清空 `frontend/` 后复制 `dist/` 内文件到 `frontend/`。
|
||
|
|
- 部署完成后执行 `bash start-java-backend-prod.sh restart`,由现有启动脚本完成后端重启并持续输出后端日志。
|
||
|
|
|
||
|
|
## 使用方式
|
||
|
|
|
||
|
|
生产环境目录结构:
|
||
|
|
|
||
|
|
```text
|
||
|
|
上线目录/
|
||
|
|
├── deploy-release-prod.sh
|
||
|
|
├── start-java-backend-prod.sh
|
||
|
|
├── backend/
|
||
|
|
├── frontend/
|
||
|
|
└── ccdi_YYYYMMDD.zip
|
||
|
|
```
|
||
|
|
|
||
|
|
执行:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./deploy-release-prod.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
或显式指定压缩包:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./deploy-release-prod.sh /path/to/ccdi_YYYYMMDD.zip
|
||
|
|
```
|
||
|
|
|
||
|
|
## 验证记录
|
||
|
|
|
||
|
|
- 执行 `sh -n deploy/deploy-release-prod.sh`
|
||
|
|
- 结果:通过
|
||
|
|
- 说明:脚本 Shell 语法正确。
|
||
|
|
- 执行 `sh deploy/deploy-release-prod.sh --help`
|
||
|
|
- 结果:通过
|
||
|
|
- 说明:帮助信息正常输出。
|
||
|
|
- 使用 `/tmp` 构造最小上线目录、旧 `backend/`、旧 `frontend/`、上线压缩包和假的 `start-java-backend-prod.sh` 后执行部署脚本
|
||
|
|
- 结果:通过
|
||
|
|
- 说明:已验证旧文件备份、新 Jar 覆盖、前端 `dist/` 文件部署,以及最终调用启动脚本 `restart`。
|
||
|
|
|
||
|
|
## 影响范围
|
||
|
|
|
||
|
|
- 仅新增生产上线部署脚本与本实施记录。
|
||
|
|
- 不修改 Java 业务代码、前端业务代码、数据库脚本和现有后端启动脚本。
|