feat:CISD配置初始化
This commit is contained in:
@@ -0,0 +1,521 @@
|
||||
# TMS 部署手册
|
||||
|
||||
## 1. 文档目的
|
||||
|
||||
本文档用于说明如何在 CentOS Linux 主机上按标准运行路径 `/home/tms` 部署 TMS,以及如何准备 CISD 初始化所需的相关脚本、目录、文件和配置。
|
||||
|
||||
本文档覆盖以下内容:
|
||||
- TMS jar 包部署
|
||||
- `/home/tms` 运行目录结构
|
||||
- 外部配置文件
|
||||
- `/home/tms/bin` 下的标准初始化辅助脚本
|
||||
- 文件上传与 `fileId` 存储规则
|
||||
- 启动、停止、状态检查
|
||||
- 初始化前置检查和常见故障排查
|
||||
|
||||
本文档不替代厂商提供的 CIPS 部署手册。中间件和标准收发器基础安装仍属于预置工作。
|
||||
|
||||
## 2. 部署边界
|
||||
|
||||
TMS 负责:
|
||||
- 提供 internal/openapi HTTP 服务
|
||||
- 管理 CISD 初始化任务
|
||||
- 渲染客户化配置
|
||||
- 调用已配置的初始化后置脚本
|
||||
- 按 `fileId` 解析上传文件
|
||||
|
||||
预置层负责:
|
||||
- JDK 安装
|
||||
- TiDB/MySQL 客户端可用
|
||||
- RabbitMQ/TLQ/nginx 安装
|
||||
- 标准收发器介质解压到 `/home/cemp4i`
|
||||
- 直参版介质解压到厂商约定目录
|
||||
- 数据库凭据和 RabbitMQ 管理员凭据
|
||||
|
||||
## 3. 环境要求
|
||||
|
||||
### 3.1 操作系统
|
||||
|
||||
推荐环境:
|
||||
- CentOS 或兼容 Linux 发行版
|
||||
|
||||
### 3.2 Java
|
||||
|
||||
运行时要求:
|
||||
- JDK 17
|
||||
|
||||
检查命令:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
```
|
||||
|
||||
### 3.3 网络与端口
|
||||
|
||||
TMS 默认监听端口:
|
||||
- `8080`
|
||||
|
||||
检查命令:
|
||||
|
||||
```bash
|
||||
ss -lntp | grep 8080
|
||||
```
|
||||
|
||||
### 3.4 建议具备的系统命令
|
||||
|
||||
建议系统具备以下命令:
|
||||
- `java`
|
||||
- `bash`
|
||||
- `curl`
|
||||
- `jq`
|
||||
- `mysql`
|
||||
- `pgrep`
|
||||
- `unzip`
|
||||
|
||||
可选但推荐:
|
||||
- `ss`
|
||||
- `lsof`
|
||||
|
||||
## 4. 标准运行目录结构
|
||||
|
||||
TMS 统一部署到 `/home/tms`:
|
||||
|
||||
```text
|
||||
/home/tms
|
||||
├── tms-framework.jar
|
||||
├── bin
|
||||
│ ├── apply_standard_db.sh
|
||||
│ ├── start_standard_apps.sh
|
||||
│ ├── start_standard_nginx.sh
|
||||
│ └── check_standard_runtime.sh
|
||||
├── config
|
||||
│ └── application.yml
|
||||
├── logs
|
||||
│ ├── tms-framework.out.log
|
||||
│ └── tms-framework.err.log
|
||||
├── run
|
||||
│ └── tms-framework.pid
|
||||
├── scripts
|
||||
│ └── tms.sh
|
||||
├── tmp
|
||||
│ └── tms-init-logs
|
||||
└── uploads
|
||||
└── <fileId>
|
||||
└── <originalFilename>
|
||||
```
|
||||
|
||||
目录用途:
|
||||
- `/home/tms/bin`:初始化后置辅助脚本目录,由 `tms.init.executor.*command` 引用
|
||||
- `/home/tms/config`:Spring Boot 外部配置目录
|
||||
- `/home/tms/logs`:TMS 运行日志
|
||||
- `/home/tms/run`:PID 文件目录
|
||||
- `/home/tms/scripts`:TMS 启停控制脚本目录
|
||||
- `/home/tms/tmp`:初始化执行日志和临时目录
|
||||
- `/home/tms/uploads`:上传文件目录,初始化阶段按 `fileId` 解析
|
||||
|
||||
## 5. 部署物来源映射
|
||||
|
||||
| 部署目标 | 仓库来源 |
|
||||
|---|---|
|
||||
| `/home/tms/tms-framework.jar` | `target/tms-framework-*.jar` |
|
||||
| `/home/tms/scripts/tms.sh` | `scripts/tms.sh` |
|
||||
| `/home/tms/bin/apply_standard_db.sh` | `scripts/standard-init/apply_standard_db.sh` |
|
||||
| `/home/tms/bin/start_standard_apps.sh` | `scripts/standard-init/start_standard_apps.sh` |
|
||||
| `/home/tms/bin/start_standard_nginx.sh` | `scripts/standard-init/start_standard_nginx.sh` |
|
||||
| `/home/tms/bin/check_standard_runtime.sh` | `scripts/standard-init/check_standard_runtime.sh` |
|
||||
| `/home/tms/config/application.yml` | 由 `config/application.yml.example` 复制生成 |
|
||||
|
||||
## 6. 部署步骤
|
||||
|
||||
### 6.1 构建 jar 包
|
||||
|
||||
```bash
|
||||
cd /Users/waner/Work/CISD/文档/tms-framework
|
||||
mvn -q -DskipTests package
|
||||
```
|
||||
|
||||
### 6.2 创建运行目录
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /home/tms/{bin,config,scripts,logs,run,tmp,uploads}
|
||||
sudo chown -R "$(whoami)":"$(whoami)" /home/tms
|
||||
```
|
||||
|
||||
### 6.3 拷贝运行文件
|
||||
|
||||
```bash
|
||||
cp target/tms-framework-*.jar /home/tms/tms-framework.jar
|
||||
cp scripts/tms.sh /home/tms/scripts/tms.sh
|
||||
cp scripts/standard-init/*.sh /home/tms/bin/
|
||||
cp config/application.yml.example /home/tms/config/application.yml
|
||||
chmod +x /home/tms/scripts/tms.sh
|
||||
chmod +x /home/tms/bin/*.sh
|
||||
```
|
||||
|
||||
### 6.4 检查部署结果
|
||||
|
||||
```bash
|
||||
ls -l /home/tms/tms-framework.jar
|
||||
ls -l /home/tms/scripts/tms.sh
|
||||
ls -l /home/tms/bin
|
||||
ls -l /home/tms/config/application.yml
|
||||
```
|
||||
|
||||
## 7. 外部配置文件
|
||||
|
||||
TMS 从以下位置加载外部配置:
|
||||
- `/home/tms/config/application.yml`
|
||||
|
||||
运行控制脚本:
|
||||
- [tms.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/tms.sh)
|
||||
|
||||
### 7.1 最低必配项
|
||||
|
||||
至少需要检查并设置:
|
||||
|
||||
```yaml
|
||||
tms:
|
||||
security:
|
||||
internal-token: change-me-internal-token
|
||||
file:
|
||||
storage:
|
||||
upload-base-dir: /home/tms/uploads
|
||||
max-file-size-bytes: 104857600
|
||||
init:
|
||||
executor:
|
||||
mode: LOCAL
|
||||
log-dir: /home/tms/tmp/tms-init-logs
|
||||
upload-base-dir: /home/tms/uploads
|
||||
staging-root-dir: /home/tmp/tms-init-staging
|
||||
standard-db-apply-command: /home/tms/bin/apply_standard_db.sh
|
||||
standard-app-start-command: /home/tms/bin/start_standard_apps.sh
|
||||
standard-nginx-start-command: /home/tms/bin/start_standard_nginx.sh
|
||||
standard-post-check-command: /home/tms/bin/check_standard_runtime.sh
|
||||
```
|
||||
|
||||
### 7.2 必须保持一致的配置
|
||||
|
||||
以下两个路径必须保持一致:
|
||||
- `tms.file.storage.upload-base-dir`
|
||||
- `tms.init.executor.upload-base-dir`
|
||||
|
||||
如果两者不一致,会出现“上传成功,但初始化执行阶段找不到文件”的问题。
|
||||
|
||||
### 7.3 标准版初始化关键配置
|
||||
|
||||
标准版初始化重点配置项:
|
||||
- `standard-home-dir`:默认 `/home/cemp4i`
|
||||
- `standard-cpconfig-path`:标准版 `cpconfig.cfg` 路径
|
||||
- `standard-db-script-base-dir`:默认 `${standard-home-dir}/cpackage`
|
||||
- `standard-db-load-dir`:默认 `${standard-home-dir}/mysql/loadfilepath`
|
||||
- `standard-nginx-template-path`:nginx 模板路径
|
||||
- `standard-web-front-zip-path`:默认 `${standard-home-dir}/cpackage/front/front.zip`
|
||||
- `standard-web-target-dir`:默认 `/usr/local/nginx/html`
|
||||
- `standard-web-organization-json-path`:默认 `/usr/local/nginx/html/organization.json`
|
||||
|
||||
### 7.4 不建议直接写入 application.yml 的凭据
|
||||
|
||||
除非现场策略允许,否则不建议把以下信息直接写进 `/home/tms/config/application.yml`:
|
||||
- `apply_standard_db.sh` 使用的数据库密码
|
||||
- 跨主机共享的数据库用户名
|
||||
- 辅助脚本依赖的其他敏感环境变量
|
||||
|
||||
推荐方式:
|
||||
- 在启动 TMS 前通过环境变量导出
|
||||
- 或通过独立受保护的环境文件,由辅助脚本自行加载
|
||||
|
||||
## 8. 标准初始化辅助脚本
|
||||
|
||||
这些脚本部署到 `/home/tms/bin`,由 TMS 初始化执行器在标准版流程中调用。
|
||||
|
||||
### 8.1 `apply_standard_db.sh`
|
||||
|
||||
来源:
|
||||
- [apply_standard_db.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/apply_standard_db.sh)
|
||||
|
||||
作用:
|
||||
- 不存在时创建 `CMEP` 数据库
|
||||
- 导入 `SCHEMA-DDL.sql`
|
||||
- 导入 `CMEP.sql`
|
||||
- 导入 `UP-ORG-INFO.sql`
|
||||
|
||||
必需环境变量:
|
||||
- `DB_USER`
|
||||
- `DB_PASSWORD`
|
||||
|
||||
可选环境变量:
|
||||
- `DB_HOST`,默认 `127.0.0.1`
|
||||
- `DB_PORT`,默认 `4000`
|
||||
- `DB_NAME`,默认 `CMEP`
|
||||
- `LOAD_DIR`,默认 `/home/cemp4i/mysql/loadfilepath`
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
export DB_USER=app_user
|
||||
export DB_PASSWORD='secret'
|
||||
/home/tms/bin/apply_standard_db.sh
|
||||
```
|
||||
|
||||
### 8.2 `start_standard_apps.sh`
|
||||
|
||||
来源:
|
||||
- [start_standard_apps.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/start_standard_apps.sh)
|
||||
|
||||
作用:
|
||||
- 启动 CMSP
|
||||
- 启动 CMTP
|
||||
|
||||
依赖:
|
||||
- `/home/cemp4i/cmsp/start_cmsp.sh`
|
||||
- `/home/cemp4i/cmtp/start_cmtp.sh`
|
||||
- 用户 `cmep4i`
|
||||
|
||||
### 8.3 `start_standard_nginx.sh`
|
||||
|
||||
来源:
|
||||
- [start_standard_nginx.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/start_standard_nginx.sh)
|
||||
|
||||
作用:
|
||||
- 如果 nginx 已运行则执行 reload
|
||||
- 如果 nginx 未运行则按 `/usr/local/nginx/conf/nginx.conf` 启动
|
||||
|
||||
依赖:
|
||||
- `/usr/local/nginx/sbin/nginx`
|
||||
|
||||
### 8.4 `check_standard_runtime.sh`
|
||||
|
||||
来源:
|
||||
- [check_standard_runtime.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/standard-init/check_standard_runtime.sh)
|
||||
|
||||
作用:
|
||||
- 检查 CMSP 进程是否存在
|
||||
- 检查 CMTP 进程是否存在
|
||||
- 检查 nginx 进程是否存在
|
||||
- 检查 `/usr/local/nginx/html/organization.json` 是否存在
|
||||
|
||||
该脚本仅用于初始化后的结果校验,不负责修复。
|
||||
|
||||
## 9. 文件上传与 `fileId` 模型
|
||||
|
||||
### 9.1 核心原则
|
||||
|
||||
CISD 初始化接口本身不接收 multipart 文件。
|
||||
|
||||
前端正确流程是:
|
||||
1. 用户选择文件
|
||||
2. 前端先调用文件上传接口
|
||||
3. 后端返回 `fileId`
|
||||
4. 前端在初始化 JSON 中提交 `fileId`
|
||||
|
||||
### 9.2 存储结构
|
||||
|
||||
上传文件统一保存为:
|
||||
|
||||
```text
|
||||
/home/tms/uploads/<fileId>/<originalFilename>
|
||||
```
|
||||
|
||||
### 9.3 初始化常用文件字段
|
||||
|
||||
初始化请求中常见的文件引用字段:
|
||||
- `licenses.receiverLicenseFileId`
|
||||
- `mq.tlqLicenseFileId`
|
||||
- `mq.cfmqConfigFileId`
|
||||
- `licenses.cfgZipFileId`
|
||||
|
||||
### 9.4 初始化执行阶段的解析规则
|
||||
|
||||
执行器会依次尝试解析:
|
||||
- `/home/tms/uploads/<fileId>`
|
||||
- `/home/tms/uploads/<fileId>/<preferredFileName>`
|
||||
|
||||
因此文件上传服务和初始化执行器必须使用同一个上传根目录。
|
||||
|
||||
## 10. 启动、停止与状态检查
|
||||
|
||||
### 10.1 启动
|
||||
|
||||
```bash
|
||||
/home/tms/scripts/tms.sh start
|
||||
```
|
||||
|
||||
### 10.2 停止
|
||||
|
||||
```bash
|
||||
/home/tms/scripts/tms.sh stop
|
||||
```
|
||||
|
||||
### 10.3 重启
|
||||
|
||||
```bash
|
||||
/home/tms/scripts/tms.sh restart
|
||||
```
|
||||
|
||||
### 10.4 状态
|
||||
|
||||
```bash
|
||||
/home/tms/scripts/tms.sh status
|
||||
```
|
||||
|
||||
### 10.5 运行日志
|
||||
|
||||
主要日志:
|
||||
- `/home/tms/logs/tms-framework.out.log`
|
||||
- `/home/tms/logs/tms-framework.err.log`
|
||||
|
||||
常用查看命令:
|
||||
|
||||
```bash
|
||||
tail -n 100 /home/tms/logs/tms-framework.out.log
|
||||
tail -n 100 /home/tms/logs/tms-framework.err.log
|
||||
```
|
||||
|
||||
## 11. 初始化前置检查
|
||||
|
||||
预检查脚本:
|
||||
- [cisd_init_precheck.sh](/Users/waner/Work/CISD/文档/tms-framework/scripts/cisd_init_precheck.sh)
|
||||
|
||||
执行方式:
|
||||
|
||||
```bash
|
||||
chmod +x /Users/waner/Work/CISD/文档/tms-framework/scripts/cisd_init_precheck.sh
|
||||
PRODUCT_TYPE=ENTERPRISE /Users/waner/Work/CISD/文档/tms-framework/scripts/cisd_init_precheck.sh
|
||||
```
|
||||
|
||||
检查内容包括:
|
||||
- 产品类型是否合法
|
||||
- 执行模式是否正确
|
||||
- 日志目录是否可写
|
||||
- 标准版基础文件是否存在
|
||||
- RabbitMQ 工具是否可用
|
||||
- 直参版场景下的脚本目录是否存在
|
||||
|
||||
建议在首次联调前执行一次。
|
||||
|
||||
## 12. 初始化运行期目录与日志
|
||||
|
||||
### 12.1 初始化步骤日志
|
||||
|
||||
由以下配置控制:
|
||||
- `tms.init.executor.log-dir`
|
||||
|
||||
推荐路径:
|
||||
- `/home/tms/tmp/tms-init-logs`
|
||||
|
||||
### 12.2 初始化 staging 目录
|
||||
|
||||
由以下配置控制:
|
||||
- `tms.init.executor.staging-root-dir`
|
||||
|
||||
默认路径:
|
||||
- `/home/tmp/tms-init-staging`
|
||||
|
||||
staging 中通常包含:
|
||||
- 渲染后的 `cpconfig.cfg`
|
||||
- 暂存的 license / 配置文件
|
||||
- 渲染后的 SQL 包
|
||||
- 渲染后的 nginx 配置
|
||||
- 暂存的 web 静态资源
|
||||
|
||||
## 13. 常见故障排查
|
||||
|
||||
### 13.1 TMS 无法启动
|
||||
|
||||
现象:
|
||||
- `tms.sh start` 失败
|
||||
- 未生成 PID 文件
|
||||
|
||||
检查:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
ls -l /home/tms/tms-framework.jar
|
||||
ls -l /home/tms/config/application.yml
|
||||
tail -n 200 /home/tms/logs/tms-framework.err.log
|
||||
```
|
||||
|
||||
### 13.2 `DB_APPLY` 报错 `standardDbApplyCommand is blank`
|
||||
|
||||
含义:
|
||||
- SQL 已经渲染并复制成功
|
||||
- 但未配置真实导库命令
|
||||
|
||||
修复:
|
||||
- 确保 `/home/tms/config/application.yml` 中存在:
|
||||
|
||||
```yaml
|
||||
standard-db-apply-command: /home/tms/bin/apply_standard_db.sh
|
||||
```
|
||||
|
||||
- 确保脚本存在并可执行
|
||||
- 确保 `DB_USER`、`DB_PASSWORD` 已经提供
|
||||
|
||||
### 13.3 `cpconfig not found`
|
||||
|
||||
检查:
|
||||
- `standard-cpconfig-path`
|
||||
- 直参版 `cfgZipFileId`
|
||||
- 标准版介质是否已解压到 `/home/cemp4i/cpconfig.cfg`
|
||||
|
||||
### 13.4 初始化阶段按 `fileId` 找不到文件
|
||||
|
||||
现象:
|
||||
- 步骤日志显示已尝试 `/home/tms/uploads/...`
|
||||
- 但所有候选路径都不存在
|
||||
|
||||
检查命令:
|
||||
|
||||
```bash
|
||||
find /home/tms/uploads -maxdepth 2 -type f | sort
|
||||
```
|
||||
|
||||
重点确认:
|
||||
- 上传接口的落盘根目录是否正确
|
||||
- 初始化请求中的 `fileId` 是否与上传返回值一致
|
||||
- `tms.file.storage.upload-base-dir` 是否与 `tms.init.executor.upload-base-dir` 一致
|
||||
|
||||
### 13.5 RabbitMQ 命令或队列步骤失败
|
||||
|
||||
检查:
|
||||
- `rabbitmqctl`
|
||||
- `rabbitmqadmin`
|
||||
- `standard-rabbit-setup-script-path`
|
||||
- `standard-rabbit-queue-script-path`
|
||||
- 步骤日志内容
|
||||
|
||||
### 13.6 WEB 发布或 nginx 启动失败
|
||||
|
||||
检查:
|
||||
|
||||
```bash
|
||||
ls -l /home/cemp4i/cpackage/front/front.zip
|
||||
ls -l /usr/local/nginx/conf/nginx.conf
|
||||
ls -l /usr/local/nginx/html
|
||||
pgrep -f '/usr/local/nginx/sbin/nginx'
|
||||
```
|
||||
|
||||
同时确认:
|
||||
- `/home/tms/bin/start_standard_nginx.sh` 存在
|
||||
- `standard-web-front-zip-path` 指向正确的标准版前端包
|
||||
- 发布后 `organization.json` 已生成
|
||||
|
||||
## 14. 推荐的本机检查命令
|
||||
|
||||
```bash
|
||||
/home/tms/scripts/tms.sh status
|
||||
ss -lntp | grep 8080
|
||||
curl -s http://127.0.0.1:8080/api/v1/device/status
|
||||
find /home/tms/uploads -maxdepth 2 -type f | sort
|
||||
ls -l /home/tms/bin
|
||||
ls -l /home/tms/config/application.yml
|
||||
```
|
||||
|
||||
对标准初始化辅助脚本做语法检查:
|
||||
|
||||
```bash
|
||||
bash -n /home/tms/bin/apply_standard_db.sh
|
||||
bash -n /home/tms/bin/start_standard_apps.sh
|
||||
bash -n /home/tms/bin/start_standard_nginx.sh
|
||||
bash -n /home/tms/bin/check_standard_runtime.sh
|
||||
```
|
||||
Reference in New Issue
Block a user