# 生产环境安装与部署脚本实施记录

## 修改内容
- 新增生产环境安装脚本 `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` 安装前提，因此未在该容器直接执行安装流程，仅完成语法校验与逻辑核对
