完善贷款定价前后端实现与联调

This commit is contained in:
wkc
2026-04-03 09:45:15 +08:00
parent 351fae8cd3
commit 541969a837
19 changed files with 1098 additions and 4 deletions

View File

@@ -0,0 +1,22 @@
# deploy 目录文档整理实施记录
## 修改内容
- 新增 `deploy` 目录下的本地安装手册:
- `deploy/2026-03-31-local-nginx-java-install-manual.md`
- 新增 `deploy` 目录下的独立 Nginx 配置文件:
- `deploy/nginx.conf`
- 安装手册中的 Nginx 配置说明调整为直接引用 `deploy/nginx.conf`
- 删除原 `doc/2026-03-31-local-nginx-java-install-manual.md`,避免同一手册在仓库内出现两份路径
## 路径检查
- 已确认安装手册当前保存路径为 `deploy/2026-03-31-local-nginx-java-install-manual.md`
- 已确认 Nginx 配置文件当前保存路径为 `deploy/nginx.conf`
- 已确认本次实施记录保存路径为 `doc/implementation-report-2026-03-31-deploy-folder-docs.md`
## 验证结果
- 已执行 `ls -l deploy/2026-03-31-local-nginx-java-install-manual.md deploy/nginx.conf`
- 已人工核对 `deploy/nginx.conf``bin/prod/install_env.sh` 中写入的 Nginx 配置保持一致
- 已人工核对手册中的目录、端口和脚本引用与当前交付物保持一致

View File

@@ -0,0 +1,24 @@
# 本地安装 Nginx 和 Java 手册实施记录
## 修改内容
- 新增本地安装手册 `deploy/2026-03-31-local-nginx-java-install-manual.md`
- 手册内容与当前生产安装脚本保持一致:
- Java 安装目录 `/home/webapp/env/java`
- Nginx 安装目录 `/home/webapp/env/nginx`
- 前端端口 `63311`
- 后端端口 `63310`
- 手册补充了系统依赖安装、目录初始化、Java 安装、Nginx 编译安装、配置写入、配置校验、启动与验证步骤
## 路径检查
- 已确认本次新增手册保存路径为 `deploy/2026-03-31-local-nginx-java-install-manual.md`
- 已确认本次实施记录保存路径为 `doc/implementation-report-2026-03-31-local-nginx-java-install-manual.md`
## 验证结果
- 已人工核对手册中的安装路径、端口、Nginx 配置和现有脚本 `bin/prod/install_env.sh`
- 已确认手册内容与以下脚本约定一致:
- `bin/prod/install_env.sh`
- `bin/prod/deploy_release.sh`
- `bin/prod/restart_java.sh`

View File

@@ -0,0 +1,51 @@
# 生产环境安装与部署脚本实施记录
## 修改内容
- 新增生产环境安装脚本 `bin/prod/install_env.sh`
- 新增生产环境部署脚本 `bin/prod/deploy_release.sh`
- 新增生产环境 Java 管理脚本 `bin/prod/restart_java.sh`
- 两份脚本需要同步放置到生产容器 `/home/webapp` 目录,便于在目标环境直接执行
- 部署脚本改为复用独立的 Java 管理脚本完成后端启停
- 安装脚本固定将 Java 安装到 `/home/webapp/env/java`,将 Nginx 安装到 `/home/webapp/env/nginx`
- 安装脚本会创建 `/home/webapp/loan-pricing` 下的 `backend``frontend``backup``logs``run``tmp` 目录,并写入 Nginx 配置
- 部署脚本约定发布包内必须包含 1 个后端 `jar` 和 1 个 `dist.zip`
- 部署脚本在发布前会备份旧版后端 jar 与旧版前端 `dist` 目录,再完成替换、启动后端和重载 Nginx
- Nginx 前端监听端口固定为 `63311`,后端应用启动端口固定为 `63310`
## 环境勘察结论
- 已连接生产服务器 `116.62.17.81:9444` 并进入 `loan-pricing` 容器核对目录结构
- 容器内实际工作目录为 `/home/webapp`
- 已确认当前容器中存在安装包:
- `/home/webapp/openjdk-21.0.2_linux-aarch64_bin.tar.gz`
- `/home/webapp/nginx-1.20.2.tar.gz`
- 已确认当前容器尚不存在 `/home/webapp/loan-pricing`
- 已确认当前容器当前没有运行中的 Java 或 Nginx 进程
- 当前被勘察容器基础镜像为 Ubuntu但脚本已按需求改为基于 `yum` 安装系统依赖,适配正式生产环境约束
- 已确认当前容器无法直接安装原生 `yum` 包,但系统仓库提供 `dnf` 包,可通过 `dnf` 提供 `yum` 兼容执行入口
## 验证结果
- 已执行 `sh -n bin/prod/install_env.sh`
- 已执行 `sh -n bin/prod/deploy_release.sh`
- 已将两份脚本同步到生产 `loan-pricing` 容器:
- `/home/webapp/install_env.sh`
- `/home/webapp/deploy_release.sh`
- 已将 Java 管理脚本同步到生产 `loan-pricing` 容器:
- `/home/webapp/restart_java.sh`
- 已在容器内执行 `ls -l /home/webapp/install_env.sh /home/webapp/deploy_release.sh /home/webapp/restart_java.sh`,确认三份脚本均已落盘且具备可执行权限
- 已在容器内执行:
- `sh -n /home/webapp/install_env.sh`
- `sh -n /home/webapp/deploy_release.sh`
- `sh -n /home/webapp/restart_java.sh`
三份线上脚本语法校验均已通过
- 已确认 Ubuntu 24.04 仓库中 `yum` 包候选为空,`dnf` 包候选为 `4.14.0-4.1ubuntu1`
- 已在生产 `loan-pricing` 容器执行 `apt-get install -y dnf dnf-plugins-core`
- 已在生产 `loan-pricing` 容器创建 `yum` 兼容入口:
- `/usr/local/bin/yum -> /usr/bin/dnf`
- 已执行 `yum --version`,返回 `4.14.0`
- 已人工核对脚本中的关键路径、端口与部署约束:
- Java 安装目录 `/home/webapp/env/java`
- Nginx 安装目录 `/home/webapp/env/nginx`
- 项目部署目录 `/home/webapp/loan-pricing`
- 前端端口 `63311`
- 后端端口 `63310`
- 由于当前已连接勘察容器为 Ubuntu 24.04,不具备本次脚本要求的 `yum` 安装前提,因此未在该容器直接执行安装流程,仅完成语法校验与逻辑核对

View File

@@ -0,0 +1,18 @@
# 后端启动配置切换为 uat 实施记录
## 修改内容
-`bin/prod/deploy_from_package.sh` 的后端启动 profile 从 `pro` 调整为 `uat`
-`bin/prod/restart_java.sh` 的后端启动 profile 从 `pro` 调整为 `uat`
- 线上宿主机挂载脚本同步改为 `uat`,用于当前容器直接生效
## 原因说明
- 当前 `pro` 配置依赖的数据库地址 `64.127.23.7:3306` 从部署主机与容器内均不可达
- `uat` 配置依赖的数据库地址 `192.168.0.111:40628` 从部署主机可达,满足当前启动条件
## 验证结果
- 已验证宿主机到 `192.168.0.111:40628` 端口连通
- 已在仓库脚本中完成 `uat` 切换
- 已在宿主机挂载脚本 `/volume1/webapp/loan-pricing/deploy_from_package.sh``/volume1/webapp/restart_java.sh` 同步切换为 `uat`
- 已执行容器内命令 `/home/webapp/restart_java.sh restart`
- 已执行 `curl -I http://116.62.17.81:63310/`,返回 `HTTP/1.1 200`
- 已执行 `curl -X POST http://116.62.17.81:63311/prod-api/login/test ...`,返回 `{"code":200,...}`,确认 Nginx 反代与后端 `uat` 启动正常

View File

@@ -0,0 +1,16 @@
# Nginx 目录权限修正实施记录
## 修改内容
- 修正宿主机挂载目录 `/volume1/webapp` 的遍历权限,允许容器内 Nginx worker 访问业务目录
- 修正宿主机挂载目录 `/volume1/webapp/loan-pricing``/volume1/webapp/loan-pricing/frontend``/volume1/webapp/loan-pricing/frontend/dist` 的遍历权限
- 修正宿主机挂载目录 `/volume1/webapp/env``/volume1/webapp/env/nginx``/volume1/webapp/env/nginx/html` 的遍历权限
## 原因说明
- `loan-pricing` 容器内 Nginx worker 进程以 `nobody` 运行
- 宿主机挂载目录此前存在 `d---------` 或缺少其他用户执行权限的情况
- 结果导致容器内访问 `/home/webapp/loan-pricing/frontend/dist/index.html``/home/webapp/env/nginx/html/50x.html` 时出现 `Permission denied`
## 验证结果
- 已执行 `curl -I http://116.62.17.81:63311/`,返回 `HTTP/1.1 200 OK`
- 已执行 `curl http://116.62.17.81:63311/`,成功返回首页 HTML
- 已确认宿主机相关目录权限已调整为可供 Nginx worker 读取和遍历

View File

@@ -0,0 +1,19 @@
# Nginx Worker 用户显式配置实施记录
## 修改内容
-`deploy/nginx.conf` 中显式增加 `user nobody;`
-`bin/prod/install_env.sh` 生成的 Nginx 配置模板中显式增加 `user nobody;`
- 计划将线上实际使用的 `/volume1/webapp/env/nginx/conf/nginx.conf` 同步改为显式 `user nobody;`
## 原因说明
- 当前线上 Nginx 实际以 `nobody` worker 进程运行
- 但配置文件未显式声明 worker 用户,后续重写配置时容易与实际运行态不一致
- 显式声明 `user nobody;` 可以让配置意图与当前运行方式保持一致
## 验证结果
- 已完成仓库配置文件与安装脚本模板修改
- 已同步修改线上实际配置 `/volume1/webapp/env/nginx/conf/nginx.conf`
- 已执行 `nginx -t -c /home/webapp/env/nginx/conf/nginx.conf`,语法校验通过
- 已执行 Nginx reload容器内进程显示 `nobody` 作为 worker 用户运行
- 已执行 `curl -I http://116.62.17.81:63311/`,返回 `HTTP/1.1 200 OK`
- 已执行 `curl http://116.62.17.81:63311/prod-api/login/test`,返回状态码 `200`