13 KiB
13 KiB
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
检查命令:
java -version
3.3 网络与端口
TMS 默认监听端口:
8080
检查命令:
ss -lntp | grep 8080
3.4 建议具备的系统命令
建议系统具备以下命令:
javabashcurljqmysqlpgrepunzip
可选但推荐:
sslsof
4. 标准运行目录结构
TMS 统一部署到 /home/tms:
/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 包
cd /Users/waner/Work/CISD/文档/tms-framework
mvn -q -DskipTests package
6.2 创建运行目录
sudo mkdir -p /home/tms/{bin,config,scripts,logs,run,tmp,uploads,libs}
sudo chown -R "$(whoami)":"$(whoami)" /home/tms
6.3 拷贝运行文件
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 检查部署结果
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- 显式设置
SPRING_PROFILES_ACTIVE时,额外加载/home/tms/config/application-\${SPRING_PROFILES_ACTIVE}.yml
运行控制脚本:
7.1 最低必配项
至少需要检查并设置:
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-dirtms.init.executor.upload-base-dir
如果两者不一致,会出现“上传成功,但初始化执行阶段找不到文件”的问题。
7.3 标准版初始化关键配置
标准版初始化重点配置项:
standard-home-dir:默认/home/cemp4istandard-cpconfig-path:标准版cpconfig.cfg路径standard-db-script-base-dir:默认${standard-home-dir}/cpackagestandard-db-load-dir:默认${standard-home-dir}/mysql/loadfilepathstandard-nginx-template-path:nginx 模板路径standard-web-front-zip-path:默认${standard-home-dir}/cpackage/front/front.zipstandard-web-target-dir:默认/usr/local/nginx/htmlstandard-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
来源:
作用:
- 不存在时创建
CMEP数据库 - 导入
SCHEMA-DDL.sql - 导入
CMEP.sql - 导入
UP-ORG-INFO.sql
必需环境变量:
DB_USERDB_PASSWORD
可选环境变量:
DB_HOST,默认127.0.0.1DB_PORT,默认4000DB_NAME,默认CMEPLOAD_DIR,默认/home/cemp4i/mysql/loadfilepath
示例:
export DB_USER=app_user
export DB_PASSWORD='secret'
/home/tms/bin/apply_standard_db.sh
8.2 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
来源:
作用:
- 如果 nginx 已运行则执行 reload
- 如果 nginx 未运行则按
/usr/local/nginx/conf/nginx.conf启动
依赖:
/usr/local/nginx/sbin/nginx
8.4 check_standard_runtime.sh
来源:
作用:
- 检查 CMSP 进程是否存在
- 检查 CMTP 进程是否存在
- 检查 nginx 进程是否存在
- 检查
/usr/local/nginx/html/organization.json是否存在
该脚本仅用于初始化后的结果校验,不负责修复。
9. 文件上传与 fileId 模型
9.1 核心原则
CISD 初始化接口本身不接收 multipart 文件。
前端正确流程是:
- 用户选择文件
- 前端先调用文件上传接口
- 后端返回
fileId - 前端在初始化 JSON 中提交
fileId
9.2 存储结构
上传文件统一保存为:
/home/tms/uploads/<fileId>/<originalFilename>
9.3 初始化常用文件字段
初始化请求中常见的文件引用字段:
licenses.receiverLicenseFileIdmq.tlqLicenseFileIdmq.cfmqConfigFileIdlicenses.cfgZipFileId
9.4 初始化执行阶段的解析规则
执行器会依次尝试解析:
/home/tms/uploads/<fileId>/home/tms/uploads/<fileId>/<preferredFileName>
因此文件上传服务和初始化执行器必须使用同一个上传根目录。
10. 启动、停止与状态检查
10.1 启动
/home/tms/scripts/tms.sh start
10.2 停止
/home/tms/scripts/tms.sh stop
10.3 重启
/home/tms/scripts/tms.sh restart
10.4 状态
/home/tms/scripts/tms.sh status
10.5 运行日志
主要日志:
/home/tms/logs/tms-framework.out.log/home/tms/logs/tms-framework.err.log
常用查看命令:
tail -n 100 /home/tms/logs/tms-framework.out.log
tail -n 100 /home/tms/logs/tms-framework.err.log
11. 初始化前置检查
预检查脚本:
执行方式:
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 文件
检查:
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中存在:
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/... - 但所有候选路径都不存在
检查命令:
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 命令或队列步骤失败
检查:
rabbitmqctlrabbitmqadminstandard-rabbit-setup-script-pathstandard-rabbit-queue-script-path- 步骤日志内容
13.6 WEB 发布或 nginx 启动失败
检查:
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. 推荐的本机检查命令
/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 -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