# 本地安装 Nginx 和 Java 手册

## 适用范围

本手册适用于需要在本地 Linux 环境手动安装贷款定价系统运行环境的场景，安装结果与当前生产脚本约定保持一致：

- Java 安装到 `/home/webapp/env/java`
- Nginx 安装到 `/home/webapp/env/nginx`
- 项目部署目录使用 `/home/webapp/loan-pricing`
- 后端服务端口固定为 `63310`
- 前端 Nginx 端口固定为 `63311`

## 前置条件

安装前请先确认：

- 当前用户具备 `root` 权限
- 本机已配置可用的 `yum` 源
- `/home/webapp` 目录已存在
- `/home/webapp` 下已准备安装包：
  - `openjdk-21.0.2_linux-aarch64_bin.tar.gz`
  - `nginx-1.20.2.tar.gz`

如果安装包文件名不同，只要仍是 Java 的 `tar.gz` 包和 Nginx 的源码 `tar.gz` 包，也可以使用同样步骤。

## 目录规划

安装完成后目录结构如下：

```text
/home/webapp
├── env
│   ├── java
│   └── nginx
└── loan-pricing
    ├── backend
    ├── frontend
    ├── backup
    ├── logs
    ├── run
    └── tmp
```

## 第一步：安装系统依赖

执行以下命令安装编译 Nginx 和运行部署脚本所需依赖：

```sh
yum install -y \
  gcc \
  make \
  pcre \
  pcre-devel \
  zlib \
  zlib-devel \
  openssl \
  openssl-devel \
  tar \
  gzip \
  unzip \
  which \
  findutils \
  procps-ng \
  iproute
```

## 第二步：创建目录

执行以下命令初始化目录：

```sh
mkdir -p \
  /home/webapp/env \
  /home/webapp/loan-pricing/backend \
  /home/webapp/loan-pricing/frontend \
  /home/webapp/loan-pricing/backup \
  /home/webapp/loan-pricing/logs \
  /home/webapp/loan-pricing/run \
  /home/webapp/loan-pricing/tmp
```

## 第三步：安装 Java

解压 Java 安装包到目标目录：

```sh
rm -rf /home/webapp/env/java
mkdir -p /home/webapp/env/java
tar -xzf /home/webapp/openjdk-21.0.2_linux-aarch64_bin.tar.gz -C /home/webapp/env/java --strip-components=1
```

验证安装结果：

```sh
/home/webapp/env/java/bin/java -version
```

如果能正常输出 Java 版本，说明安装成功。

## 第四步：安装 Nginx

Nginx 安装包为源码包，需要先解压、编译、安装：

```sh
rm -rf /home/webapp/env/nginx
mkdir -p /home/webapp/env/nginx
mkdir -p /home/webapp/env/nginx-build
tar -xzf /home/webapp/nginx-1.20.2.tar.gz -C /home/webapp/env/nginx-build
cd /home/webapp/env/nginx-build/nginx-1.20.2
./configure --prefix=/home/webapp/env/nginx --with-http_ssl_module
make -j"$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)"
make install
```

安装完成后可执行文件位置为：

```text
/home/webapp/env/nginx/sbin/nginx
```

## 第五步：写入 Nginx 配置

仓库已提供可直接参考的配置文件：

```text
deploy/nginx.conf
```

将该文件内容写入 `/home/webapp/env/nginx/conf/nginx.conf` 即可。

## 第六步：校验 Nginx 配置

执行：

```sh
/home/webapp/env/nginx/sbin/nginx -t -c /home/webapp/env/nginx/conf/nginx.conf
```

如果输出 `syntax is ok` 和 `test is successful`，说明配置可用。

## 第七步：启动 Nginx

执行：

```sh
/home/webapp/env/nginx/sbin/nginx -c /home/webapp/env/nginx/conf/nginx.conf
```

如果后续修改了配置，可执行：

```sh
/home/webapp/env/nginx/sbin/nginx -c /home/webapp/env/nginx/conf/nginx.conf -s reload
```

## 第八步：验证端口

执行：

```sh
ss -lnt | grep 63311
```

如果能看到 `63311` 监听记录，说明前端 Nginx 已启动成功。

## 建议执行方式

如果本机已经放置了以下脚本，也可以直接使用脚本完成安装：

```sh
cd /home/webapp
./install_env.sh
```

如果只需要管理后端 Java 进程，可执行：

```sh
cd /home/webapp
./restart_java.sh start
./restart_java.sh stop
./restart_java.sh restart
./restart_java.sh status
```

## 常见检查项

- `yum` 不可用：先确认系统已配置可用的 `yum` 源
- Java 未安装成功：检查 `/home/webapp/openjdk-*.tar.gz` 是否存在且未损坏
- Nginx 编译失败：检查 `gcc`、`make`、`pcre-devel`、`zlib-devel`、`openssl-devel` 是否已安装
- Nginx 启动失败：先执行 `nginx -t` 查看配置是否正确
- 前端无法访问后端：检查本机 `63310` 端口是否已有 Java 服务监听
