64 lines
4.3 KiB
Markdown
64 lines
4.3 KiB
Markdown
> 历史记录:以下说明对应 2026-10-29 原始 UAT 构建及部署,当前仓库的构建入口和密钥配置请看根目录 README。
|
||
|
||
# syly2 独立 UAT 部署
|
||
|
||
目标:`ubuntu@192.168.68.223`。部署目录:`/home/ubuntu/apps/syly2-uat`。
|
||
|
||
## 组成
|
||
|
||
- 专用 Compose 项目 `syly2-uat`,数据库、Java 应用和 Nginx 各一个容器。
|
||
- MySQL **5.7.44**,与用户提供的线上版本一致;独立数据目录 `runtime/mysql-data`,不发布数据库端口。
|
||
- Corretto **8.512.09.1**、Tomcat **9.0.123**;使用已编译并校验的外层工程 WAR。
|
||
- Ubuntu 基础镜像和 Nginx 来自建木镜像仓库,固定 digest;MySQL 和 Tomcat 从厂商官方 HTTPS 地址下载。
|
||
- MySQL 官方包核验官方 MD5,再记录 SHA-256。`package-mysql.py` 从已验证的包提取必要运行文件,避免重复传输调试库、静态库和工具。运行包再核对 SHA-256。Tomcat 核验官方 SHA-512。
|
||
|
||
## 数据及边界
|
||
|
||
使用项目根目录的 `sanya_ch_full.sql`,128,389,799 字节。仅进行流式校验、传输、导入;不把备份正文写入报告。
|
||
|
||
原备份 SHA-256:`d6ec01e162f4b1c92350a0c97bd163b5deb633cdd187f96ff2aadb32e899c5d4`。
|
||
|
||
备份恢复到此项目自己的 MySQL 实例内,库名仍为 `sanya_ch`。部署脚本只允许首次恢复,拒绝覆盖已有 UAT 数据。恢复后保存所有表的精确行数,不输出用户或业务行。
|
||
|
||
创建专用 `uat_admin` 用户及测试组织、角色,保留恢复数据中的原账号及密码。部署过滤器仅允许专用测试用户登录。密码保存在权限 600 的 `secrets/credentials.json`,不写入 Compose 环境变量、日志或报告。
|
||
|
||
应用与数据库只连接 `internal` 网络。省级上报和邮件配置改为本地禁用地址,停用定时调度;浏览器 CSP 限制页面向外部地址请求。UAT 过滤器阻断免登录重置密码、修复清库、移动端绕过登录、同步、上传连接器及 Druid 入口,并对其余非公开资源检查 UAT 登录状态。
|
||
|
||
这些保护仅作用于部署副本,不能替代原系统安全修复。Web 应用文件以只读方式挂载,附件上传功能未在本次部署中开放。备份数据属于受限资料,UAT 不用于真实省级上报、短信或邮件发送。
|
||
|
||
## 首次部署顺序
|
||
|
||
脚本固定目标目录;不要在已有实例上重新运行初始化/恢复。
|
||
|
||
1. 保存原有容器 ID、启动时间、重启计数;检查端口和空间。建立权限 700 的部署目录及私有子目录。
|
||
2. 上传脚本、Compose、Nginx 配置以及 SQL 备份;在服务端再次核验 SQL SHA-256。
|
||
3. 下载官方发行包并校验。执行 `package-mysql.py`,上传生成的运行包和 manifest。
|
||
4. 构建 `Dockerfile.base`,执行 `prepare-runtime.py`,构建 `Dockerfile.mysql` 和 `Dockerfile.app`。
|
||
5. 使用 `docker compose -f compose.json run --rm --no-deps db --initialize-insecure` 初始化空数据目录;此时配置仍为 `skip_networking=ON`。
|
||
6. 只启动 `db`。执行 `database-uat.py restore`,核对版本、表数及精确行数,再执行 `database-uat.py seed` 设置新数据库密码与测试账号。
|
||
7. 将 `runtime/mysql.cnf` 中 `skip_networking=ON` 改为 `OFF`,只重建本项目 `db` 服务,启动 `app` 和 `web`。
|
||
8. 检查应用启动、登录页、验证码、登录、菜单和列表;验证阻断规则、外连隔离,并比较原有服务状态。
|
||
|
||
## 访问与运维
|
||
|
||
- 业务入口:`https://192.168.68.223:8445/syly/`。
|
||
- 本实例使用独立自签名证书,公钥证书在 `secrets/tls/server.crt`。浏览器首次访问可能提示证书不受信任。
|
||
- 直接访问上述 UAT HTTPS 地址,不需要 SSH 隧道。验证过程中使用的临时隧道及回环 HTTP 入口已移除。
|
||
|
||
```sh
|
||
cd /home/ubuntu/apps/syly2-uat
|
||
docker compose -f compose.json ps
|
||
docker compose -f compose.json logs --tail 100 app
|
||
docker compose -f compose.json up -d
|
||
```
|
||
|
||
只暂停本应用并保留恢复数据:
|
||
|
||
```sh
|
||
docker compose -f compose.json stop web app db
|
||
```
|
||
|
||
恢复运行使用上面的 `up -d`。不要全局 prune,也不要对其他 Compose 项目执行停启、清理或重建。
|
||
|
||
证据位于远程 `evidence/`;本地核验结果回收到项目 `.local/uat-deploy/evidence/`。密码另存私有交接文件。启动与页面验证不代表生产验收、全量报表正确性、历史附件完整性或外部接口联调通过。
|