提交 a675bb6b authored 作者: 陈泽健's avatar 陈泽健

feat(deploy): 添加ARM Ubuntu和X86国产化系统部署支持,拆分ARM架构和X86架构以及不同操作系统,输出计划执行文档

- 新增x86_uos(192.168.5.70)和x86_kylin(192.168.5.69)架构配置
- 添加ARM Ubuntu(192.168.9.76)自动化部署支持,使用admin用户sudo权限
- 创建ARM Ubuntu和ARM欧拉部署计划执行文档
- 修改PRD文档聚焦ARM架构升级,移除X86相关描述
- 删除原有的X86升级计划执行文档
- 更新部署脚本帮助信息,添加国产化系统部署选项
上级 0801482e
......@@ -12,7 +12,9 @@ X86 + ARM 双架构统一自动化部署脚本
python full_deploy.py --security # 仅安全修复(Nacos+MQTT)
python full_deploy.py --package # 仅打包输出(压缩+MD5+下载)
python full_deploy.py --arch arm,arm_ubuntu --deploy # 仅部署指定架构(arm=75,arm_ubuntu=76)
可选架构: x86, arm, arm_ubuntu
python full_deploy.py --arch x86_uos --full # 仅部署X86-统信(5.70)
python full_deploy.py --arch x86_kylin --full # 仅部署X86-麒麟V10(5.69)
可选架构: x86, x86_uos, x86_kylin, arm, arm_ubuntu
"""
import sys
......@@ -74,6 +76,40 @@ CONFIGS = {
'label': 'ARM-欧拉 (192.168.9.75)',
'use_sudo': False,
},
'x86_uos': {
'host': '192.168.5.70',
'username': 'root',
'password': 'Ubains@123',
'deploy_dir': '/data/offline_auto_unifiedPlatform',
'deploy_pkg': 'offline_auto_unifiedPlatform.tar.gz',
'deploy_md5': 'offline_auto_unifiedPlatform.tar.gz.md5',
'nas_dir': r'Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证',
'deploy_script': 'new_auto.sh',
'deploy_answers': "y\ny\ny\ny\ny\ny\ny\nn\n",
'deploy_log': '/data/offline_auto_unifiedPlatform/deploy_output.log',
'license_path': r'E:\自动化部署\X86-5.70\license.zip',
'output_dir': r'E:\自动化部署\X86-5.70',
'timeout': 3600, # 60分钟
'label': 'X86-统信 (192.168.5.70)',
'use_sudo': False,
},
'x86_kylin': {
'host': '192.168.5.69',
'username': 'root',
'password': 'Ubains@123',
'deploy_dir': '/data/offline_auto_unifiedPlatform',
'deploy_pkg': 'offline_auto_unifiedPlatform.tar.gz',
'deploy_md5': 'offline_auto_unifiedPlatform.tar.gz.md5',
'nas_dir': r'Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证',
'deploy_script': 'new_auto.sh',
'deploy_answers': "y\ny\ny\ny\ny\ny\ny\nn\n",
'deploy_log': '/data/offline_auto_unifiedPlatform/deploy_output.log',
'license_path': r'E:\自动化部署\X86-5.69\license.zip',
'output_dir': r'E:\自动化部署\X86-5.69',
'timeout': 3600, # 60分钟
'label': 'X86-麒麟V10 (192.168.5.69)',
'use_sudo': False,
},
'arm_ubuntu': {
'host': '192.168.9.76',
'username': 'admin',
......@@ -94,8 +130,9 @@ CONFIGS = {
}
# 所有架构列表(默认值,可通过--arch参数覆盖)
# 注意:默认仅部署 x86(5.52), arm(9.75), arm_ubuntu(9.76) 三台
# 新增的 x86_uos(5.70), x86_kylin(5.69) 需通过 --arch 显式指定
DEFAULT_ARCHS = ['x86', 'arm', 'arm_ubuntu']
# 当前执行的架构列表
ACTIVE_ARCHS = DEFAULT_ARCHS
# 超管配置
......
# 计划执行_ARM_欧拉远程自动化部署
> 版本:V1.0
> 创建日期:2026-06-04
> 基于文档:`_PRD_ARM_欧拉远程自动化部署_需求文档.md`
> 部署文档:`ARM架构_新统一平台自动化部署操作指导.md`
> 交付物:
> - `full_deploy.py` (统一部署主脚本)
> - `deploy_config.json` (凭据配置)
> - `reports/` (报告输出目录)
---
## 一、任务概述
对 ARM架构-欧拉服务器(192.168.9.75)执行远程自动化部署全流程,包括部署包上传、解压、脚本执行、容器验证、API接口测试、安全扫描修复、打包输出及报告生成。部署严格按照部署文档操作,解压过程禁止中断。
### 目标服务器信息
| 项目 | 值 |
|------|------|
| 架构 | ARM |
| 操作系统 | 欧拉(EulerOS) |
| 服务器IP | 192.168.9.75 |
| 登录用户 | root |
| 登录密码 | Ubains@123 |
| root切换 | 无需(直接root登录) |
| 部署目录 | /data/arm_offline_auto_unifiedPlatform |
| 部署脚本 | arm_new_auto.sh |
| 部署包名 | arm_offline_auto_unifiedPlatform.tar.gz |
### 资源路径
| 资源 | 路径 |
|------|------|
| 部署包来源 | Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版\版本更新-待验证 |
| 授权文件 | E:\自动化部署\ARM-9.75\license.zip |
| 输出目录 | E:\自动化部署\ARM-9.75 |
| 部署文档 | Docs/PRD/远程自动化部署/ARM架构_新统一平台自动化部署操作指导.md |
---
## 二、执行阶段划分
### 阶段一:前置准备与部署(预计60分钟,ARM Java启动较慢)
| 序号 | 步骤 | 描述 | 执行方式 |
|------|------|------|----------|
| 1.1 | SSH连接 | 连接目标服务器192.168.9.75,root用户登录 | `paramiko` SSH |
| 1.2 | 磁盘检查 | 检查/data分区是否存在且空间充足 | `df -h /data` |
| 1.3 | 上传部署包 | 从网盘将 arm_offline_auto_unifiedPlatform.tar.gz 和 md5 文件通过 SFTP 上传到 /data/ | `paramiko` SFTP |
| 1.4 | MD5校验 | 校验上传的部署包MD5是否一致 | `md5sum -c` |
| 1.5 | Nacos cron检查 | 检查Nacos cron监控间隔,防止竞态条件 | 如为*/3调整为*/10 |
| 1.6 | 解压部署包 | 解压 tar.gz 到 /data/ 目录,**禁止中断** | `tar -zxvf`,后台执行 |
| 1.7 | ARM空间检查修补 | 将 arm_auto_check_space.sh 中磁盘阈值从100GB调整为70GB | `sed` 替换 |
| 1.8 | 运行部署脚本 | 执行 `arm_new_auto.sh --all`,设置 `TERM=dumb`,管道输入交互应答 | 后台执行,监控日志 |
**ARM架构特殊注意事项:**
- ARM部署超时设置为90分钟(Java启动慢)
- 设置 `export TERM=dumb` 解决 whiptail 组件在非交互SSH下卡住的问题
- 部署脚本自动应答:`y\ny\ny\ny\ny\ny\ny\nn\n`
- 解压和部署过程禁止中断
- Nacos cron监控间隔需检查,防止与部署进程竞态导致Nacos反复被杀
- ARM服务器磁盘空间可能仅79GB,需将空间检查阈值从100GB调整为70GB
---
### 阶段二:容器验证与服务检查(预计10-15分钟)
| 序号 | 步骤 | 描述 | 验证标准 |
|------|------|------|----------|
| 2.1 | 容器状态检查 | 检查所有Docker容器是否正常运行 | `docker ps` 无Exited容器 |
| 2.2 | EMQX架构验证 | 验证EMQX容器是否为ARM架构,检查exec format error | 无架构不匹配错误 |
| 2.3 | 容器日志检查 | 核查容器日志是否存在异常 | 无异常ERROR日志 |
| 2.4 | 等待服务启动 | 等待10分钟让服务完全启动 | — |
**ARM专项检查:**
- EMQX容器可能存在架构不匹配(exec format error),需特别验证
- 如EMQX异常,需使用 pull_emqx_arm.py 拉取正确架构的ARM64镜像
---
### 阶段三:API接口验证(预计5-10分钟)
| 序号 | 接口 | 调用地址 | 成功标识 | 重试机制 |
|------|------|---------|---------|---------|
| 3.1 | 对外接口 | `https://192.168.9.75/exapi/message/getMsgPageList` | `无效token``Full authentication` | 5次/30秒间隔 |
| 3.2 | 预定系统 | `https://192.168.9.75/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201` | `accessToken为空` | 5次/30秒间隔 |
| 3.3 | 运维集控 | `https://192.168.9.75/monitor/api2/api/servermonitor/` | `用户不存在` | 5次/30秒间隔 |
| 3.4 | 讯飞转录 | `https://192.168.9.75/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=...&getall=1` | `缺少关键参数` | 5次/30秒间隔 |
**重试规则:**
- 调用失败或成功后均等待30秒再执行下一次测试
- 记录每次测试结果
- 当结果为成功时,标识为服务启动正常,结束该接口测试
---
### 阶段四:系统授权(预计10分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 4.1 | 登录维护平台 | 访问 `https://192.168.9.75/#/LoginConfig`,超管登录 |
| 4.2 | 下载激活文件 | 按部署文档第三章操作,验证码填入 `csba` |
| 4.3 | 上传授权文件 | 上传 `E:\自动化部署\ARM-9.75\license.zip` |
| 4.4 | 重启服务 | 按文档执行服务重启,等待10分钟 |
**授权操作凭证:**
- 超管账号:`superadmin`
- 超管密码:`Ubains@1357`
- 验证码:`csba`
---
### 阶段五:服务日志验证(预计5分钟)
| 序号 | 检查项 | 日志路径 |
|------|--------|---------|
| 5.1 | 预定对外服务 | /data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log |
| 5.2 | 预定对内服务 | /data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| 5.3 | 运维服务 | /data/services/api/python-cmdb/log/uinfo.log |
| 5.4 | 讯飞服务 | /data/services/api/python-voice/log/uinfo.log |
**检查标准:** 日志无异常ERROR输出
---
### 阶段六:安全扫描与修复(预计10分钟)
| 序号 | 安全项 | 描述 | 修复方式 |
|------|--------|------|---------|
| 6.1 | Nacos认证绕过 | 默认identity密钥可被利用绕过认证 | 随机化identity key/value + token secret + Nginx IP限制 |
| 6.2 | EMQX MQTT弱密码 | 允许匿名MQTT连接 | 启用built_in_database认证,SHA256,注册业务凭据 |
**ARM EMQX特殊处理:**
- 如EMQX容器存在 exec format error(架构不匹配),则跳过MQTT修复
- 需先通过 pull_emqx_arm.py 拉取正确架构的EMQX镜像后才能执行修复
**修复操作记录:** 需输出漏洞记录及处理结果的md文件
---
### 阶段七:部署包输出(预计20-30分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 7.1 | 压缩部署目录 | 将 /data/arm_offline_auto_unifiedPlatform 压缩为 arm_offline_auto_unifiedPlatform.tar.gz |
| 7.2 | 生成MD5 | 生成 arm_offline_auto_unifiedPlatform.tar.gz.md5 |
| 7.3 | SFTP下载 | 下载到本地 E:\自动化部署\ARM-9.75 |
**命名规则:**
- ARM架构:`arm_offline_auto_unifiedPlatform.tar.gz` + `arm_offline_auto_unifiedPlatform.tar.gz.md5`
**输出目标:**
- 网盘路径:`Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版`
- 如存在旧文件,备份到同级目录 `备份+年份+日期` 文件夹
---
### 阶段八:报告生成(预计5分钟)
| 序号 | 报告 | 内容 |
|------|------|------|
| 8.1 | 部署分析报告 | 部署执行情况、容器状态、EMQX状态、API验证结果、日志检查、用时统计 |
| 8.2 | 安全测试报告 | 漏洞扫描结果、修复操作记录、验证结果 |
---
## 三、分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
6. 多个维度来分析。
---
## 四、验收标准
- [ ] SSH连接成功,磁盘空间充足
- [ ] 部署包上传并校验通过
- [ ] Nacos cron监控间隔已调整
- [ ] 解压完成,ARM空间检查阈值已修正
- [ ] `arm_new_auto.sh --all` 执行完成
- [ ] 所有Docker容器正常运行
- [ ] EMQX容器架构正确,无 exec format error
- [ ] 4个API接口全部验证通过(5次重试内)
- [ ] 授权文件上传成功,服务重启正常
- [ ] 4个服务日志无异常
- [ ] Nacos认证绕过已修复
- [ ] EMQX弱密码已修复(或已记录跳过原因)
- [ ] 部署包已压缩、MD5已生成、已下载到本地
- [ ] 部署分析报告和安全测试报告已生成
---
## 五、执行命令
```bash
# 全流程执行
python full_deploy.py --arch arm --full
# 分步执行
python full_deploy.py --arch arm --deploy # 部署阶段
# (手动执行授权操作)
python full_deploy.py --arch arm --verify # 验证阶段
python full_deploy.py --arch arm --security # 安全修复
python full_deploy.py --arch arm --package # 打包输出
```
---
## 六、风险评估
| 风险 | 影响 | 应对措施 |
|------|------|---------|
| 部署包MD5校验失败 | 部署中断 | 重新从网盘上传 |
| ARM Java启动慢 | 部署超时 | 超时设为90分钟,监控日志进度 |
| EMQX架构不匹配 | MQTT服务异常 | 使用 pull_emqx_arm.py 拉取ARM64镜像 |
| Nacos cron竞态 | Nacos反复被杀 | 部署前检查并调整cron间隔 |
| 磁盘空间不足 | 解压失败 | ARM空间阈值调整为70GB |
| 容器启动异常 | 服务不可用 | 查看容器日志排查 |
| API接口超时 | 验证失败 | 等待更长时间,手动验证 |
| 授权文件不匹配 | 服务异常 | 确认授权文件与服务器IP对应 |
# 计划执行_ARM_麒麟V10远程自动化部署
> 版本:V1.0
> 创建日期:2026-06-04
> 基于文档:`_PRD_ARM_麒麟V10远程自动化部署_需求文档.md`
> 部署文档:`ARM架构_新统一平台自动化部署操作指导.md`
> 状态:**暂不部署**(PRD标注"先不部署")
> 交付物:
> - `full_deploy.py` (统一部署主脚本)
> - `deploy_config.json` (凭据配置)
> - `reports/` (报告输出目录)
---
## 一、任务概述
对 ARM架构-麒麟V10服务器(192.168.9.83)执行远程自动化部署全流程,包括部署包上传、解压、脚本执行、容器验证、API接口测试、安全扫描修复、打包输出及报告生成。部署严格按照部署文档操作,解压过程禁止中断。
> ⚠️ **当前状态:暂不部署** — PRD文档标注"先不部署",待后续需求激活时再执行。
### 目标服务器信息
| 项目 | 值 |
|------|------|
| 架构 | ARM |
| 操作系统 | 麒麟V10(Kylin V10) |
| 服务器IP | 192.168.9.83 |
| 登录用户 | root |
| 登录密码 | Ubains@123 |
| root切换 | 无需(直接root登录) |
| 部署目录 | /data/arm_offline_auto_unifiedPlatform |
| 部署脚本 | arm_new_auto.sh |
| 部署包名 | arm_offline_auto_unifiedPlatform.tar.gz |
### 资源路径
| 资源 | 路径 |
|------|------|
| 部署包来源 | Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版\版本更新-待验证 |
| 授权文件 | E:\自动化部署\ARM-9.83\license.zip |
| 输出目录 | E:\自动化部署\ARM-9.83 |
| 部署文档 | Docs/PRD/远程自动化部署/ARM架构_新统一平台自动化部署操作指导.md |
---
## 二、执行阶段划分
### 阶段一:前置准备与部署(预计60分钟,ARM Java启动较慢)
| 序号 | 步骤 | 描述 | 执行方式 |
|------|------|------|----------|
| 1.1 | SSH连接 | 连接目标服务器192.168.9.83,root用户登录 | `paramiko` SSH |
| 1.2 | 磁盘检查 | 检查/data分区是否存在且空间充足 | `df -h /data` |
| 1.3 | 上传部署包 | 从网盘将 arm_offline_auto_unifiedPlatform.tar.gz 和 md5 文件通过 SFTP 上传到 /data/ | `paramiko` SFTP |
| 1.4 | MD5校验 | 校验上传的部署包MD5是否一致 | `md5sum -c` |
| 1.5 | Nacos cron检查 | 检查Nacos cron监控间隔,防止竞态条件 | 如为*/3调整为*/10 |
| 1.6 | 解压部署包 | 解压 tar.gz 到 /data/ 目录,**禁止中断** | `tar -zxvf`,后台执行 |
| 1.7 | ARM空间检查修补 | 将 arm_auto_check_space.sh 中磁盘阈值从100GB调整为70GB | `sed` 替换 |
| 1.8 | 运行部署脚本 | 执行 `arm_new_auto.sh --all`,设置 `TERM=dumb`,管道输入交互应答 | 后台执行,监控日志 |
**ARM架构特殊注意事项:**
- ARM部署超时设置为90分钟(Java启动慢)
- 设置 `export TERM=dumb` 解决 whiptail 组件在非交互SSH下卡住的问题
- 部署脚本自动应答:`y\ny\ny\ny\ny\ny\ny\nn\n`
- 解压和部署过程禁止中断
- Nacos cron监控间隔需检查,防止与部署进程竞态导致Nacos反复被杀
- ARM服务器磁盘空间可能仅79GB,需将空间检查阈值从100GB调整为70GB
---
### 阶段二:容器验证与服务检查(预计10-15分钟)
| 序号 | 步骤 | 描述 | 验证标准 |
|------|------|------|----------|
| 2.1 | 容器状态检查 | 检查所有Docker容器是否正常运行 | `docker ps` 无Exited容器 |
| 2.2 | EMQX架构验证 | 验证EMQX容器是否为ARM架构,检查exec format error | 无架构不匹配错误 |
| 2.3 | 容器日志检查 | 核查容器日志是否存在异常 | 无异常ERROR日志 |
| 2.4 | 等待服务启动 | 等待10分钟让服务完全启动 | — |
**ARM专项检查:**
- EMQX容器可能存在架构不匹配(exec format error),需特别验证
- 如EMQX异常,需使用 pull_emqx_arm.py 拉取正确架构的ARM64镜像
---
### 阶段三:API接口验证(预计5-10分钟)
| 序号 | 接口 | 调用地址 | 成功标识 | 重试机制 |
|------|------|---------|---------|---------|
| 3.1 | 对外接口 | `https://192.168.9.83/exapi/message/getMsgPageList` | `无效token``Full authentication` | 5次/30秒间隔 |
| 3.2 | 预定系统 | `https://192.168.9.83/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201` | `accessToken为空` | 5次/30秒间隔 |
| 3.3 | 运维集控 | `https://192.168.9.83/monitor/api2/api/servermonitor/` | `用户不存在` | 5次/30秒间隔 |
| 3.4 | 讯飞转录 | `https://192.168.9.83/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=...&getall=1` | `缺少关键参数` | 5次/30秒间隔 |
**重试规则:**
- 调用失败或成功后均等待30秒再执行下一次测试
- 记录每次测试结果
- 当结果为成功时,标识为服务启动正常,结束该接口测试
---
### 阶段四:系统授权(预计10分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 4.1 | 登录维护平台 | 访问 `https://192.168.9.83/#/LoginConfig`,超管登录 |
| 4.2 | 下载激活文件 | 按部署文档第三章操作,验证码填入 `csba` |
| 4.3 | 上传授权文件 | 上传 `E:\自动化部署\ARM-9.83\license.zip` |
| 4.4 | 重启服务 | 按文档执行服务重启,等待10分钟 |
**授权操作凭证:**
- 超管账号:`superadmin`
- 超管密码:`Ubains@1357`
- 验证码:`csba`
---
### 阶段五:服务日志验证(预计5分钟)
| 序号 | 检查项 | 日志路径 |
|------|--------|---------|
| 5.1 | 预定对外服务 | /data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log |
| 5.2 | 预定对内服务 | /data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| 5.3 | 运维服务 | /data/services/api/python-cmdb/log/uinfo.log |
| 5.4 | 讯飞服务 | /data/services/api/python-voice/log/uinfo.log |
**检查标准:** 日志无异常ERROR输出
---
### 阶段六:安全扫描与修复(预计10分钟)
| 序号 | 安全项 | 描述 | 修复方式 |
|------|--------|------|---------|
| 6.1 | Nacos认证绕过 | 默认identity密钥可被利用绕过认证 | 随机化identity key/value + token secret + Nginx IP限制 |
| 6.2 | EMQX MQTT弱密码 | 允许匿名MQTT连接 | 启用built_in_database认证,SHA256,注册业务凭据 |
**ARM EMQX特殊处理:**
- 如EMQX容器存在 exec format error(架构不匹配),则跳过MQTT修复
- 需先通过 pull_emqx_arm.py 拉取正确架构的EMQX镜像后才能执行修复
**修复操作记录:** 需输出漏洞记录及处理结果的md文件
---
### 阶段七:部署包输出(预计20-30分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 7.1 | 压缩部署目录 | 将 /data/arm_offline_auto_unifiedPlatform 压缩为 arm_offline_auto_unifiedPlatform.tar.gz |
| 7.2 | 生成MD5 | 生成 arm_offline_auto_unifiedPlatform.tar.gz.md5 |
| 7.3 | SFTP下载 | 下载到本地 E:\自动化部署\ARM-9.83 |
**命名规则:**
- ARM架构:`arm_offline_auto_unifiedPlatform.tar.gz` + `arm_offline_auto_unifiedPlatform.tar.gz.md5`
**输出目标:**
- 网盘路径:`Z:\发布版本\03服务器部署\15新统一平台\ARM部署包\全量版`
- 如存在旧文件,备份到同级目录 `备份+年份+日期` 文件夹
---
### 阶段八:报告生成(预计5分钟)
| 序号 | 报告 | 内容 |
|------|------|------|
| 8.1 | 部署分析报告 | 部署执行情况、容器状态、EMQX状态、API验证结果、日志检查、用时统计 |
| 8.2 | 安全测试报告 | 漏洞扫描结果、修复操作记录、验证结果 |
---
## 三、分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
6. 多个维度来分析。
---
## 四、验收标准
- [ ] SSH连接成功,磁盘空间充足
- [ ] 部署包上传并校验通过
- [ ] Nacos cron监控间隔已调整
- [ ] 解压完成,ARM空间检查阈值已修正
- [ ] `arm_new_auto.sh --all` 执行完成
- [ ] 所有Docker容器正常运行
- [ ] EMQX容器架构正确,无 exec format error
- [ ] 4个API接口全部验证通过(5次重试内)
- [ ] 授权文件上传成功,服务重启正常
- [ ] 4个服务日志无异常
- [ ] Nacos认证绕过已修复
- [ ] EMQX弱密码已修复(或已记录跳过原因)
- [ ] 部署包已压缩、MD5已生成、已下载到本地
- [ ] 部署分析报告和安全测试报告已生成
---
## 五、执行命令
```bash
# 全流程执行
python full_deploy.py --arch arm_kylin --full
# 分步执行
python full_deploy.py --arch arm_kylin --deploy # 部署阶段
# (手动执行授权操作)
python full_deploy.py --arch arm_kylin --verify # 验证阶段
python full_deploy.py --arch arm_kylin --security # 安全修复
python full_deploy.py --arch arm_kylin --package # 打包输出
```
> **注意:** `arm_kylin` 配置需要添加到 `full_deploy.py` 的 CONFIGS 中,当前代码尚未包含此配置。且PRD标注"先不部署",待激活时再添加。
---
## 六、风险评估
| 风险 | 影响 | 应对措施 |
|------|------|---------|
| 部署包MD5校验失败 | 部署中断 | 重新从网盘上传 |
| ARM Java启动慢 | 部署超时 | 超时设为90分钟,监控日志进度 |
| EMQX架构不匹配 | MQTT服务异常 | 使用 pull_emqx_arm.py 拉取ARM64镜像 |
| Nacos cron竞态 | Nacos反复被杀 | 部署前检查并调整cron间隔 |
| 磁盘空间不足 | 解压失败 | ARM空间阈值调整为70GB |
| 容器启动异常 | 服务不可用 | 查看容器日志排查 |
| API接口超时 | 验证失败 | 等待更长时间,手动验证 |
| 授权文件不匹配 | 服务异常 | 确认授权文件与服务器IP对应 |
| 麒麟V10兼容性 | 部署脚本异常 | 参考ARM架构部署文档,麒麟V10基于CentOS兼容 |
# 计划执行_X86_欧拉远程自动化部署
> 版本:V1.0
> 创建日期:2026-06-04
> 基于文档:`_PRD_X86_欧拉远程自动化部署_需求文档.md`
> 部署文档:`X86架构_新统一平台自动化部署操作指导.md`
> 交付物:
> - `full_deploy.py` (统一部署主脚本)
> - `deploy_config.json` (凭据配置)
> - `reports/` (报告输出目录)
---
## 一、任务概述
对 X86架构-欧拉服务器(192.168.5.52)执行远程自动化部署全流程,包括部署包上传、解压、脚本执行、容器验证、API接口测试、安全扫描修复、打包输出及报告生成。部署严格按照部署文档操作,解压过程禁止中断。
### 目标服务器信息
| 项目 | 值 |
|------|------|
| 架构 | X86 |
| 操作系统 | 欧拉(EulerOS) |
| 服务器IP | 192.168.5.52 |
| 登录用户 | root |
| 登录密码 | Ubains@123 |
| root切换 | 无需(直接root登录) |
| 部署目录 | /data/offline_auto_unifiedPlatform |
| 部署脚本 | new_auto.sh |
| 部署包名 | offline_auto_unifiedPlatform.tar.gz |
### 资源路径
| 资源 | 路径 |
|------|------|
| 部署包来源 | Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证 |
| 授权文件 | E:\自动化部署\X86-5.52\license.zip |
| 输出目录 | E:\自动化部署\X86-5.52 |
| 部署文档 | Docs/PRD/远程自动化部署/X86架构_新统一平台自动化部署操作指导.md |
---
## 二、执行阶段划分
### 阶段一:前置准备与部署(预计40分钟)
| 序号 | 步骤 | 描述 | 执行方式 |
|------|------|------|----------|
| 1.1 | SSH连接 | 连接目标服务器192.168.5.52,root用户登录 | `paramiko` SSH |
| 1.2 | 磁盘检查 | 检查/data分区是否存在且空间充足 | `df -h /data` |
| 1.3 | 上传部署包 | 从网盘将 offline_auto_unifiedPlatform.tar.gz 和 md5 文件通过 SFTP 上传到 /data/ | `paramiko` SFTP |
| 1.4 | MD5校验 | 校验上传的部署包MD5是否一致 | `md5sum -c` |
| 1.5 | 解压部署包 | 解压 tar.gz 到 /data/ 目录,**禁止中断** | `tar -zxvf`,后台执行 |
| 1.6 | 运行部署脚本 | 执行 `new_auto.sh --all`,设置 `TERM=dumb`,管道输入交互应答 | 后台执行,监控日志 |
**关键注意事项:**
- 设置 `export TERM=dumb` 解决 whiptail 组件在非交互SSH下卡住的问题
- 部署脚本自动应答:`y\ny\ny\ny\ny\ny\ny\nn\n`
- 解压和部署过程禁止中断
---
### 阶段二:容器验证与服务检查(预计10-15分钟)
| 序号 | 步骤 | 描述 | 验证标准 |
|------|------|------|----------|
| 2.1 | 容器状态检查 | 检查所有Docker容器是否正常运行 | `docker ps` 无Exited容器 |
| 2.2 | 容器日志检查 | 核查容器日志是否存在异常 | 无异常ERROR日志 |
| 2.3 | 等待服务启动 | 等待10分钟让服务完全启动 | — |
---
### 阶段三:API接口验证(预计5-10分钟)
| 序号 | 接口 | 调用地址 | 成功标识 | 重试机制 |
|------|------|---------|---------|---------|
| 3.1 | 对外接口 | `https://192.168.5.52/exapi/message/getMsgPageList` | `无效token``Full authentication` | 5次/30秒间隔 |
| 3.2 | 预定系统 | `https://192.168.5.52/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201` | `accessToken为空` | 5次/30秒间隔 |
| 3.3 | 运维集控 | `https://192.168.5.52/monitor/api2/api/servermonitor/` | `用户不存在` | 5次/30秒间隔 |
| 3.4 | 讯飞转录 | `https://192.168.5.52/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=...&getall=1` | `缺少关键参数` | 5次/30秒间隔 |
**重试规则:**
- 调用失败或成功后均等待30秒再执行下一次测试
- 记录每次测试结果
- 当结果为成功时,标识为服务启动正常,结束该接口测试
---
### 阶段四:系统授权(预计10分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 4.1 | 登录维护平台 | 访问 `https://192.168.5.52/#/LoginConfig`,超管登录 |
| 4.2 | 下载激活文件 | 按部署文档第三章操作,验证码填入 `csba` |
| 4.3 | 上传授权文件 | 上传 `E:\自动化部署\X86-5.52\license.zip` |
| 4.4 | 重启服务 | 按文档执行服务重启,等待10分钟 |
**授权操作凭证:**
- 超管账号:`superadmin`
- 超管密码:`Ubains@1357`
- 验证码:`csba`
---
### 阶段五:服务日志验证(预计5分钟)
| 序号 | 检查项 | 日志路径 |
|------|--------|---------|
| 5.1 | 预定对外服务 | /data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log |
| 5.2 | 预定对内服务 | /data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| 5.3 | 运维服务 | /data/services/api/python-cmdb/log/uinfo.log |
| 5.4 | 讯飞服务 | /data/services/api/python-voice/log/uinfo.log |
**检查标准:** 日志无异常ERROR输出
---
### 阶段六:安全扫描与修复(预计10分钟)
| 序号 | 安全项 | 描述 | 修复方式 |
|------|--------|------|---------|
| 6.1 | Nacos认证绕过 | 默认identity密钥可被利用绕过认证 | 随机化identity key/value + token secret + Nginx IP限制 |
| 6.2 | EMQX MQTT弱密码 | 允许匿名MQTT连接 | 启用built_in_database认证,SHA256,注册业务凭据 |
**修复操作记录:** 需输出漏洞记录及处理结果的md文件
---
### 阶段七:部署包输出(预计20-30分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 7.1 | 压缩部署目录 | 将 /data/offline_auto_unifiedPlatform 压缩为 offline_auto_unifiedPlatform.tar.gz |
| 7.2 | 生成MD5 | 生成 offline_auto_unifiedPlatform.tar.gz.md5 |
| 7.3 | SFTP下载 | 下载到本地 E:\自动化部署\X86-5.52 |
**命名规则:**
- X86架构:`offline_auto_unifiedPlatform.tar.gz` + `offline_auto_unifiedPlatform.tar.gz.md5`
**输出目标:**
- 网盘路径:`Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版`
- 如存在旧文件,备份到同级目录 `备份+年份+日期` 文件夹
---
### 阶段八:报告生成(预计5分钟)
| 序号 | 报告 | 内容 |
|------|------|------|
| 8.1 | 部署分析报告 | 部署执行情况、容器状态、API验证结果、日志检查、用时统计 |
| 8.2 | 安全测试报告 | 漏洞扫描结果、修复操作记录、验证结果 |
---
## 三、分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
6. 多个维度来分析。
---
## 四、验收标准
- [ ] SSH连接成功,磁盘空间充足
- [ ] 部署包上传并校验通过
- [ ] 解压完成,脚本赋权正确
- [ ] `new_auto.sh --all` 执行完成
- [ ] 所有Docker容器正常运行
- [ ] 4个API接口全部验证通过(5次重试内)
- [ ] 授权文件上传成功,服务重启正常
- [ ] 4个服务日志无异常
- [ ] Nacos认证绕过已修复
- [ ] EMQX弱密码已修复
- [ ] 部署包已压缩、MD5已生成、已下载到本地
- [ ] 部署分析报告和安全测试报告已生成
- [ ] 全流程在1小时内完成
---
## 五、执行命令
```bash
# 全流程执行
python full_deploy.py --arch x86 --full
# 分步执行
python full_deploy.py --arch x86 --deploy # 部署阶段
# (手动执行授权操作)
python full_deploy.py --arch x86 --verify # 验证阶段
python full_deploy.py --arch x86 --security # 安全修复
python full_deploy.py --arch x86 --package # 打包输出
```
---
## 六、风险评估
| 风险 | 影响 | 应对措施 |
|------|------|---------|
| 部署包MD5校验失败 | 部署中断 | 重新从网盘上传 |
| 解压超时 | 部署失败 | 检查磁盘空间和网络 |
| 容器启动异常 | 服务不可用 | 查看容器日志排查 |
| API接口超时 | 验证失败 | 等待更长时间,手动验证 |
| 授权文件不匹配 | 服务异常 | 确认授权文件与服务器IP对应 |
# 计划执行_X86_统信远程自动化部署
> 版本:V1.0
> 创建日期:2026-06-04
> 基于文档:`_PRD_X86_统信远程自动化部署_需求文档.md`
> 部署文档:`X86架构_新统一平台自动化部署操作指导.md`
> 交付物:
> - `full_deploy.py` (统一部署主脚本)
> - `deploy_config.json` (凭据配置)
> - `reports/` (报告输出目录)
---
## 一、任务概述
对 X86架构-统信UOS服务器(192.168.5.70)执行远程自动化部署全流程,包括部署包上传、解压、脚本执行、容器验证、API接口测试、安全扫描修复、打包输出及报告生成。部署严格按照部署文档操作,解压过程禁止中断。
### 目标服务器信息
| 项目 | 值 |
|------|------|
| 架构 | X86 |
| 操作系统 | 统信UOS |
| 服务器IP | 192.168.5.70 |
| 登录用户 | root |
| 登录密码 | Ubains@123 |
| root切换 | 无需(直接root登录) |
| 部署目录 | /data/offline_auto_unifiedPlatform |
| 部署脚本 | new_auto.sh |
| 部署包名 | offline_auto_unifiedPlatform.tar.gz |
### 资源路径
| 资源 | 路径 |
|------|------|
| 部署包来源 | Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证 |
| 授权文件 | E:\自动化部署\X86-5.70\license.zip |
| 输出目录 | E:\自动化部署\X86-5.70 |
| 部署文档 | Docs/PRD/远程自动化部署/X86架构_新统一平台自动化部署操作指导.md |
---
## 二、执行阶段划分
### 阶段一:前置准备与部署(预计40分钟)
| 序号 | 步骤 | 描述 | 执行方式 |
|------|------|------|----------|
| 1.1 | SSH连接 | 连接目标服务器192.168.5.70,root用户登录 | `paramiko` SSH |
| 1.2 | 磁盘检查 | 检查/data分区是否存在且空间充足 | `df -h /data` |
| 1.3 | 上传部署包 | 从网盘将 offline_auto_unifiedPlatform.tar.gz 和 md5 文件通过 SFTP 上传到 /data/ | `paramiko` SFTP |
| 1.4 | MD5校验 | 校验上传的部署包MD5是否一致 | `md5sum -c` |
| 1.5 | 解压部署包 | 解压 tar.gz 到 /data/ 目录,**禁止中断** | `tar -zxvf`,后台执行 |
| 1.6 | 运行部署脚本 | 执行 `new_auto.sh --all`,设置 `TERM=dumb`,管道输入交互应答 | 后台执行,监控日志 |
**关键注意事项:**
- 设置 `export TERM=dumb` 解决 whiptail 组件在非交互SSH下卡住的问题
- 部署脚本自动应答:`y\ny\ny\ny\ny\ny\ny\nn\n`
- 解压和部署过程禁止中断
---
### 阶段二:容器验证与服务检查(预计10-15分钟)
| 序号 | 步骤 | 描述 | 验证标准 |
|------|------|------|----------|
| 2.1 | 容器状态检查 | 检查所有Docker容器是否正常运行 | `docker ps` 无Exited容器 |
| 2.2 | 容器日志检查 | 核查容器日志是否存在异常 | 无异常ERROR日志 |
| 2.3 | 等待服务启动 | 等待10分钟让服务完全启动 | — |
---
### 阶段三:API接口验证(预计5-10分钟)
| 序号 | 接口 | 调用地址 | 成功标识 | 重试机制 |
|------|------|---------|---------|---------|
| 3.1 | 对外接口 | `https://192.168.5.70/exapi/message/getMsgPageList` | `无效token``Full authentication` | 5次/30秒间隔 |
| 3.2 | 预定系统 | `https://192.168.5.70/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201` | `accessToken为空` | 5次/30秒间隔 |
| 3.3 | 运维集控 | `https://192.168.5.70/monitor/api2/api/servermonitor/` | `用户不存在` | 5次/30秒间隔 |
| 3.4 | 讯飞转录 | `https://192.168.5.70/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=...&getall=1` | `缺少关键参数` | 5次/30秒间隔 |
**重试规则:**
- 调用失败或成功后均等待30秒再执行下一次测试
- 记录每次测试结果
- 当结果为成功时,标识为服务启动正常,结束该接口测试
---
### 阶段四:系统授权(预计10分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 4.1 | 登录维护平台 | 访问 `https://192.168.5.70/#/LoginConfig`,超管登录 |
| 4.2 | 下载激活文件 | 按部署文档第三章操作,验证码填入 `csba` |
| 4.3 | 上传授权文件 | 上传 `E:\自动化部署\X86-5.70\license.zip` |
| 4.4 | 重启服务 | 按文档执行服务重启,等待10分钟 |
**授权操作凭证:**
- 超管账号:`superadmin`
- 超管密码:`Ubains@1357`
- 验证码:`csba`
---
### 阶段五:服务日志验证(预计5分钟)
| 序号 | 检查项 | 日志路径 |
|------|--------|---------|
| 5.1 | 预定对外服务 | /data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log |
| 5.2 | 预定对内服务 | /data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| 5.3 | 运维服务 | /data/services/api/python-cmdb/log/uinfo.log |
| 5.4 | 讯飞服务 | /data/services/api/python-voice/log/uinfo.log |
**检查标准:** 日志无异常ERROR输出
---
### 阶段六:安全扫描与修复(预计10分钟)
| 序号 | 安全项 | 描述 | 修复方式 |
|------|--------|------|---------|
| 6.1 | Nacos认证绕过 | 默认identity密钥可被利用绕过认证 | 随机化identity key/value + token secret + Nginx IP限制 |
| 6.2 | EMQX MQTT弱密码 | 允许匿名MQTT连接 | 启用built_in_database认证,SHA256,注册业务凭据 |
**修复操作记录:** 需输出漏洞记录及处理结果的md文件
---
### 阶段七:部署包输出(预计20-30分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 7.1 | 压缩部署目录 | 将 /data/offline_auto_unifiedPlatform 压缩为 offline_auto_unifiedPlatform.tar.gz |
| 7.2 | 生成MD5 | 生成 offline_auto_unifiedPlatform.tar.gz.md5 |
| 7.3 | SFTP下载 | 下载到本地 E:\自动化部署\X86-5.70 |
**命名规则:**
- X86架构:`offline_auto_unifiedPlatform.tar.gz` + `offline_auto_unifiedPlatform.tar.gz.md5`
**输出目标:**
- 网盘路径:`Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版`
- 如存在旧文件,备份到同级目录 `备份+年份+日期` 文件夹
---
### 阶段八:报告生成(预计5分钟)
| 序号 | 报告 | 内容 |
|------|------|------|
| 8.1 | 部署分析报告 | 部署执行情况、容器状态、API验证结果、日志检查、用时统计 |
| 8.2 | 安全测试报告 | 漏洞扫描结果、修复操作记录、验证结果 |
---
## 三、分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
6. 多个维度来分析。
---
## 四、验收标准
- [ ] SSH连接成功,磁盘空间充足
- [ ] 部署包上传并校验通过
- [ ] 解压完成,脚本赋权正确
- [ ] `new_auto.sh --all` 执行完成
- [ ] 所有Docker容器正常运行
- [ ] 4个API接口全部验证通过(5次重试内)
- [ ] 授权文件上传成功,服务重启正常
- [ ] 4个服务日志无异常
- [ ] Nacos认证绕过已修复
- [ ] EMQX弱密码已修复
- [ ] 部署包已压缩、MD5已生成、已下载到本地
- [ ] 部署分析报告和安全测试报告已生成
- [ ] 全流程在1小时内完成
---
## 五、执行命令
```bash
# 全流程执行
python full_deploy.py --arch x86_uos --full
# 分步执行
python full_deploy.py --arch x86_uos --deploy # 部署阶段
# (手动执行授权操作)
python full_deploy.py --arch x86_uos --verify # 验证阶段
python full_deploy.py --arch x86_uos --security # 安全修复
python full_deploy.py --arch x86_uos --package # 打包输出
```
> **注意:** `x86_uos` 配置需要添加到 `full_deploy.py` 的 CONFIGS 中,当前代码尚未包含此配置。
---
## 六、风险评估
| 风险 | 影响 | 应对措施 |
|------|------|---------|
| 部署包MD5校验失败 | 部署中断 | 重新从网盘上传 |
| 解压超时 | 部署失败 | 检查磁盘空间和网络 |
| 容器启动异常 | 服务不可用 | 查看容器日志排查 |
| API接口超时 | 验证失败 | 等待更长时间,手动验证 |
| 授权文件不匹配 | 服务异常 | 确认授权文件与服务器IP对应 |
| 统信UOS兼容性 | 部署脚本异常 | 参考X86架构部署文档,统信基于CentOS兼容 |
# 计划执行_X86_麒麟V10远程自动化部署
> 版本:V1.0
> 创建日期:2026-06-04
> 基于文档:`_PRD_X86_麒麟V10远程自动化部署_需求文档.md`
> 部署文档:`X86架构_新统一平台自动化部署操作指导.md`
> 交付物:
> - `full_deploy.py` (统一部署主脚本)
> - `deploy_config.json` (凭据配置)
> - `reports/` (报告输出目录)
---
## 一、任务概述
对 X86架构-麒麟V10服务器(192.168.5.69)执行远程自动化部署全流程,包括部署包上传、解压、脚本执行、容器验证、API接口测试、安全扫描修复、打包输出及报告生成。部署严格按照部署文档操作,解压过程禁止中断。
### 目标服务器信息
| 项目 | 值 |
|------|------|
| 架构 | X86 |
| 操作系统 | 麒麟V10(Kylin V10) |
| 服务器IP | 192.168.5.69 |
| 登录用户 | root |
| 登录密码 | Ubains@123 |
| root切换 | 无需(直接root登录) |
| 部署目录 | /data/offline_auto_unifiedPlatform |
| 部署脚本 | new_auto.sh |
| 部署包名 | offline_auto_unifiedPlatform.tar.gz |
### 资源路径
| 资源 | 路径 |
|------|------|
| 部署包来源 | Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版\版本更新-待验证 |
| 授权文件 | E:\自动化部署\X86-5.69\license.zip |
| 输出目录 | E:\自动化部署\X86-5.69 |
| 部署文档 | Docs/PRD/远程自动化部署/X86架构_新统一平台自动化部署操作指导.md |
---
## 二、执行阶段划分
### 阶段一:前置准备与部署(预计40分钟)
| 序号 | 步骤 | 描述 | 执行方式 |
|------|------|------|----------|
| 1.1 | SSH连接 | 连接目标服务器192.168.5.69,root用户登录 | `paramiko` SSH |
| 1.2 | 磁盘检查 | 检查/data分区是否存在且空间充足 | `df -h /data` |
| 1.3 | 上传部署包 | 从网盘将 offline_auto_unifiedPlatform.tar.gz 和 md5 文件通过 SFTP 上传到 /data/ | `paramiko` SFTP |
| 1.4 | MD5校验 | 校验上传的部署包MD5是否一致 | `md5sum -c` |
| 1.5 | 解压部署包 | 解压 tar.gz 到 /data/ 目录,**禁止中断** | `tar -zxvf`,后台执行 |
| 1.6 | 运行部署脚本 | 执行 `new_auto.sh --all`,设置 `TERM=dumb`,管道输入交互应答 | 后台执行,监控日志 |
**关键注意事项:**
- 设置 `export TERM=dumb` 解决 whiptail 组件在非交互SSH下卡住的问题
- 部署脚本自动应答:`y\ny\ny\ny\ny\ny\ny\nn\n`
- 解压和部署过程禁止中断
---
### 阶段二:容器验证与服务检查(预计10-15分钟)
| 序号 | 步骤 | 描述 | 验证标准 |
|------|------|------|----------|
| 2.1 | 容器状态检查 | 检查所有Docker容器是否正常运行 | `docker ps` 无Exited容器 |
| 2.2 | 容器日志检查 | 核查容器日志是否存在异常 | 无异常ERROR日志 |
| 2.3 | 等待服务启动 | 等待10分钟让服务完全启动 | — |
---
### 阶段三:API接口验证(预计5-10分钟)
| 序号 | 接口 | 调用地址 | 成功标识 | 重试机制 |
|------|------|---------|---------|---------|
| 3.1 | 对外接口 | `https://192.168.5.69/exapi/message/getMsgPageList` | `无效token``Full authentication` | 5次/30秒间隔 |
| 3.2 | 预定系统 | `https://192.168.5.69/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201` | `accessToken为空` | 5次/30秒间隔 |
| 3.3 | 运维集控 | `https://192.168.5.69/monitor/api2/api/servermonitor/` | `用户不存在` | 5次/30秒间隔 |
| 3.4 | 讯飞转录 | `https://192.168.5.69/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=...&getall=1` | `缺少关键参数` | 5次/30秒间隔 |
**重试规则:**
- 调用失败或成功后均等待30秒再执行下一次测试
- 记录每次测试结果
- 当结果为成功时,标识为服务启动正常,结束该接口测试
---
### 阶段四:系统授权(预计10分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 4.1 | 登录维护平台 | 访问 `https://192.168.5.69/#/LoginConfig`,超管登录 |
| 4.2 | 下载激活文件 | 按部署文档第三章操作,验证码填入 `csba` |
| 4.3 | 上传授权文件 | 上传 `E:\自动化部署\X86-5.69\license.zip` |
| 4.4 | 重启服务 | 按文档执行服务重启,等待10分钟 |
**授权操作凭证:**
- 超管账号:`superadmin`
- 超管密码:`Ubains@1357`
- 验证码:`csba`
---
### 阶段五:服务日志验证(预计5分钟)
| 序号 | 检查项 | 日志路径 |
|------|--------|---------|
| 5.1 | 预定对外服务 | /data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log |
| 5.2 | 预定对内服务 | /data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| 5.3 | 运维服务 | /data/services/api/python-cmdb/log/uinfo.log |
| 5.4 | 讯飞服务 | /data/services/api/python-voice/log/uinfo.log |
**检查标准:** 日志无异常ERROR输出
---
### 阶段六:安全扫描与修复(预计10分钟)
| 序号 | 安全项 | 描述 | 修复方式 |
|------|--------|------|---------|
| 6.1 | Nacos认证绕过 | 默认identity密钥可被利用绕过认证 | 随机化identity key/value + token secret + Nginx IP限制 |
| 6.2 | EMQX MQTT弱密码 | 允许匿名MQTT连接 | 启用built_in_database认证,SHA256,注册业务凭据 |
**修复操作记录:** 需输出漏洞记录及处理结果的md文件
---
### 阶段七:部署包输出(预计20-30分钟)
| 序号 | 步骤 | 描述 |
|------|------|------|
| 7.1 | 压缩部署目录 | 将 /data/offline_auto_unifiedPlatform 压缩为 offline_auto_unifiedPlatform.tar.gz |
| 7.2 | 生成MD5 | 生成 offline_auto_unifiedPlatform.tar.gz.md5 |
| 7.3 | SFTP下载 | 下载到本地 E:\自动化部署\X86-5.69 |
**命名规则:**
- X86架构:`offline_auto_unifiedPlatform.tar.gz` + `offline_auto_unifiedPlatform.tar.gz.md5`
**输出目标:**
- 网盘路径:`Z:\发布版本\03服务器部署\15新统一平台\X86部署包\全量版`
- 如存在旧文件,备份到同级目录 `备份+年份+日期` 文件夹
---
### 阶段八:报告生成(预计5分钟)
| 序号 | 报告 | 内容 |
|------|------|------|
| 8.1 | 部署分析报告 | 部署执行情况、容器状态、API验证结果、日志检查、用时统计 |
| 8.2 | 安全测试报告 | 漏洞扫描结果、修复操作记录、验证结果 |
---
## 三、分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
6. 多个维度来分析。
---
## 四、验收标准
- [ ] SSH连接成功,磁盘空间充足
- [ ] 部署包上传并校验通过
- [ ] 解压完成,脚本赋权正确
- [ ] `new_auto.sh --all` 执行完成
- [ ] 所有Docker容器正常运行
- [ ] 4个API接口全部验证通过(5次重试内)
- [ ] 授权文件上传成功,服务重启正常
- [ ] 4个服务日志无异常
- [ ] Nacos认证绕过已修复
- [ ] EMQX弱密码已修复
- [ ] 部署包已压缩、MD5已生成、已下载到本地
- [ ] 部署分析报告和安全测试报告已生成
- [ ] 全流程在1小时内完成
---
## 五、执行命令
```bash
# 全流程执行
python full_deploy.py --arch x86_kylin --full
# 分步执行
python full_deploy.py --arch x86_kylin --deploy # 部署阶段
# (手动执行授权操作)
python full_deploy.py --arch x86_kylin --verify # 验证阶段
python full_deploy.py --arch x86_kylin --security # 安全修复
python full_deploy.py --arch x86_kylin --package # 打包输出
```
> **注意:** `x86_kylin` 配置需要添加到 `full_deploy.py` 的 CONFIGS 中,当前代码尚未包含此配置。
---
## 六、风险评估
| 风险 | 影响 | 应对措施 |
|------|------|---------|
| 部署包MD5校验失败 | 部署中断 | 重新从网盘上传 |
| 解压超时 | 部署失败 | 检查磁盘空间和网络 |
| 容器启动异常 | 服务不可用 | 查看容器日志排查 |
| API接口超时 | 验证失败 | 等待更长时间,手动验证 |
| 授权文件不匹配 | 服务异常 | 确认授权文件与服务器IP对应 |
| 麒麟V10兼容性 | 部署脚本异常 | 参考X86架构部署文档,麒麟V10基于CentOS兼容 |
# ARM架构_远程升级镜像组件版本_计划执行文档
## 上下文
根据 `_PRD_ARM架构_远程升级镜像组件版本_需求文档.md` 的要求,对ARM(192.168.9.75)服务器的镜像组件进行版本升级。
## 实现方式说明
> **本需求无代码实现。** 所有升级操作均通过SSH远程连接服务器,手动执行docker命令完成。不涉及自动化脚本或代码开发。
---
## 一、版本对照表
| 组件 | ARM当前 | 升级目标版本 | 备注 |
|------|---------|-------------|------|
| JDK(容器) | 1.8.0_321 | **1.8.0_492** | Temurin(Adoptium)最新8u版本 |
| MySQL | 8.0.28 | **8.0.46** | 只能升级8.x,禁止跨非8.x |
| Nginx | 1.30.0 | **1.30.2** | 官方stable最新 |
| Redis | 8.2.2 | **8.8.0** | 官方最新开源版 |
| EMQX | 5.8.7 | **6.0.0** | 官方最新主版本(Enterprise) |
| Nacos | v2.5.1 | **v2.5.2** | 禁止跨3.x,ARM需从2.5.1升到2.5.2 |
| Docker | 29.4.3 | **仅记录最新版本,不执行升级** | 当前不升级,记录备查 |
---
## 二、升级执行计划
### 步骤1:升级JDK(容器内)
**ARM服务器 (192.168.9.75)**
- [x] 1.1 使用已有包 `jdk-8u492-linux-arm.tar.gz` (98MB)
- [x] 1.2 通过临时容器完成JDK替换(原容器docker exec超时),新镜像:`139.9.60.86:5000/ujava:v5`
- [x] 1.3 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_java_new.tar.gz`
- [x] 1.4 ARM宿主机JDK安装:`/usr/local/java/jdk8u492-b09`,环境变量配置到 `/etc/profile`
### 步骤2:升级MySQL
> 需求:只能升级到8.x版本,禁止升级非8.x版本。
**ARM服务器 (192.168.9.75)**
- [x] 2.1 同X86流程,使用ARM版mysql:8.0.46镜像(需用特定版本tag拉取)
- [x] 2.2 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_mysql8.0.46.tar.gz`
### 步骤3:升级Nginx
**ARM服务器 (192.168.9.75)**
- [x] 3.1 拉取ARM版镜像:`docker pull nginx:1.30.2`
- [x] 3.2 备份/替换/验证/打包流程,接口验证通过
- [x] 3.3 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nginx_v1.30.2.tar.gz`
### 步骤4:升级Redis
**ARM服务器 (192.168.9.75)**
- [x] 4.1 同X86流程,使用ARM版redis:8镜像(需调整日志文件权限 chown 999:999)
- [x] 4.2 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_redis8.8.0.tar.gz`
### 步骤5:升级EMQX
**ARM服务器 (192.168.9.75)**
- [x] 5.1 同X86流程,使用ARM版emqx/emqx:latest镜像
- [x] 5.2 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_uemqx-6.0.0.tar.gz`
### 步骤6:升级Nacos
**ARM服务器 (192.168.9.75)** — 需从v2.5.1升级到v2.5.2
- [x] 6.1 备份Nacos数据卷和配置
- [x] 6.2 备份完整容器参数:`docker inspect unacos > /tmp/unacos_inspect.json`
- [x] 6.3 拉取新镜像:`docker pull nacos/nacos-server:v2.5.2`
- [x] 6.4 停止旧容器:`docker stop unacos && docker rm unacos`
- [x] 6.5 用新镜像+原配置启动新容器
- [x] 6.6 验证Nacos控制台可访问 ✅
- [x] 6.7 检查服务注册列表正常 ✅
- [x] 6.8 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nacos-server-v2.5.2.tar.gz`
---
## 三、每步验证清单
- [x] 容器运行状态:`docker ps` 确认 Up(ARM 11个)
- [x] 版本确认:对应版本命令确认新版本
- [x] 日志检查:`docker logs <container> --tail 50`(MQTT重连属正常现象)
- [x] 服务日志检查:预定/运维服务日志无异常
- [x] 接口测试:
- `curl -k https://192.168.9.75/exapi/message/getMsgPageList` → 返回"无效token" ✅
- `curl -k https://192.168.9.75/monitor/api2/api/servermonitor/` → 正常响应 ✅
---
## 四、回滚方案
每个组件升级前:
1. 导出容器完整参数 `docker inspect <container> > /tmp/<container>_inspect.json`
2. 备份配置文件到 `/tmp/`
3. 保留旧镜像不删除
4. 异常时用旧镜像+备份配置重新启动容器
---
## 五、风险点
| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| EMQX 5.8.7→6.0.2 主版本升级 | MQTT协议/配置不兼容 | 参照X86测试结果,确认兼容后再执行 |
| MySQL 8.0.x→8.x最新 | 数据兼容性、Nacos等服务连接 | 先mysqldump全量备份,保留旧容器 |
| JDK容器替换 | 可能影响Java服务 | 先commit备份,失败可回滚 |
| Redis 8.2→8.8 | 数据兼容性 | dump.rdb通常向后兼容 |
| Nacos 2.5.1→2.5.2 | 配置/数据兼容性 | 备份数据卷和配置,保留旧镜像 |
---
## 六、输出物
- 升级日志:`AuxiliaryTool/ScriptTool/RemoteDeploy/reports/镜像组件升级日志_YYYYMMDD.log`
- 升级分析报告:`AuxiliaryTool/ScriptTool/RemoteDeploy/reports/镜像组件升级报告_YYYYMMDD.md`
......@@ -3,11 +3,8 @@
### 部署包路径
- ARM架构:/data/arm_offline_auto_unifiedPlatform。
- ARM架构-镜像目录:/data/arm_offline_auto_unifiedPlatform/data/temp
- X86架构:/data/offline_auto_unifiedPlatform。
- X86架构-镜像目录:/data/offline_auto_unifiedPlatform/data/temp
### 目标服务器
- X86架构服务器:192.168.5.52 root Ubains@123
- ARM架构服务器:192.168.9.75 root Ubains@123
### 相关服务路径
......@@ -39,7 +36,7 @@
- 需升级jdk版本,按照官网升级为1.8.X版本。
## 升级目标
- X86架构服务器和ARM架构服务器均需执行升级
- ARM架构服务器均需执行升级,且保证更新的镜像和组件都是ARM架构的
## 升级流程
1. 升级jdk
......
# 远程升级镜像组件版本_计划执行文档
# X86架构_远程升级镜像组件版本_计划执行文档
## 上下文
根据 `_PRD_远程升级镜像组件版本_需求文档.md` 的要求,对X86(192.168.5.52)和ARM(192.168.9.75)两台服务器的镜像组件进行版本升级。
根据 `_PRD_X86架构_远程升级镜像组件版本_需求文档.md` 的要求,对X86(192.168.5.52)服务器的镜像组件进行版本升级。
## 实现方式说明
> **本需求无代码实现。** 所有升级操作均通过SSH远程连接服务器,手动执行docker命令完成。不涉及自动化脚本或代码开发。
---
## 一、版本对照表
| 组件 | X86当前 | ARM当前 | 升级目标版本 | 备注 |
|------|---------|---------|-------------|------|
| JDK(容器) | 1.8.0_201 | 1.8.0_321 | **1.8.0_492** | Temurin(Adoptium)最新8u版本 |
| MySQL | 8.0.x | 8.0.28 | **8.0.46** | 只能升级8.x,禁止跨非8.x |
| Nginx | 1.29.3 | 1.30.0 | **1.30.2** | 官方stable最新 |
| Redis | 8.2.2 | 8.2.2 | **8.8.0** | 官方最新开源版 |
| EMQX | 5.8.7 | 5.8.7 | **6.0.0** | 官方最新主版本(Enterprise) |
| Nacos | v2.5.2 | v2.5.1 | **v2.5.2**(ARM升级) | 禁止跨3.x,ARM需从2.5.1升到2.5.2 |
| Docker | 29.1.3 | 29.4.3 | **仅记录最新版本,不执行升级** | 当前不升级,记录备查 |
| 组件 | X86当前 | 升级目标版本 | 备注 |
|------|---------|-------------|------|
| JDK(容器) | 1.8.0_201 | **1.8.0_492** | Temurin(Adoptium)最新8u版本 |
| MySQL | 8.0.28 | **8.0.46** | 只能升级8.x,禁止跨非8.x |
| Nginx | 1.29.3 | **1.30.2** | 官方stable最新 |
| Redis | 8.2.2 | **8.8.0** | 官方最新开源版 |
| EMQX | 5.8.7 | **6.0.0** | 官方最新主版本(Enterprise) |
| Nacos | v2.5.2 | — | 当前已是v2.5.2,无需升级 |
| Docker | 29.1.3 | **仅记录最新版本,不执行升级** | 当前不升级,记录备查 |
---
......@@ -35,15 +38,9 @@
- [x] 1.9 旧包 `jdk-8u472-linux-x64.tar.gz` 保留,新包 `jdk-8u492-linux-x64.tar.gz` 同时保留
- [x] 1.10 宿主机JDK安装:`/usr/local/java/jdk8u492-b09`,环境变量配置到 `/etc/profile`
**ARM服务器 (192.168.9.75)**
- [x] 1.10 使用已有包 `jdk-8u492-linux-arm.tar.gz` (98MB)
- [x] 1.11 通过临时容器完成JDK替换(原容器docker exec超时),新镜像:`139.9.60.86:5000/ujava:v5`
- [x] 1.12 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_java_new.tar.gz`
- [x] 1.13 ARM宿主机JDK安装:`/usr/local/java/jdk8u492-b09`,环境变量配置到 `/etc/profile`
### 步骤2:升级MySQL
> 需求:只能升级到8.x版本,禁止升级非8.x版本。需先确认当前MySQL容器具体版本。
> 需求:只能升级到8.x版本,禁止升级非8.x版本。
**X86服务器 (192.168.5.52)**
- [x] 2.1 确认当前MySQL版本:8.0.28
......@@ -56,12 +53,9 @@
- [x] 2.8 自动执行版本升级(Server upgrade from '80028' to '80046'),Nacos等服务连接正常
- [x] 2.9 打包:`/data/offline_auto_unifiedPlatform/data/temp/mysql-8.0.46.tar.gz` (224MB)
**ARM服务器 (192.168.9.75)**
- [x] 2.10 同上述流程,使用ARM版mysql:8.0.46镜像(需用特定版本tag拉取)
- [x] 2.11 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_mysql8.0.46.tar.gz`
### 步骤3:升级Nginx
**X86服务器 (192.168.5.52)**
- [x] 3.1 备份配置:`docker cp unginx:/etc/nginx/nginx.conf /tmp/nginx.conf.bak`
- [x] 3.2 备份完整容器参数:`docker inspect unginx > /tmp/unginx_inspect.json`
- [x] 3.3 拉取新镜像:`docker pull nginx:1.30.2`
......@@ -72,12 +66,9 @@
- [x] 3.8 打包:`/data/offline_auto_unifiedPlatform/data/temp/nginx-1.30.2.tar.gz`
- [x] 3.9 旧包 `nginx-1.29.3.tar.gz` 保留
- [x] 3.10 拉取ARM版镜像:`docker pull nginx:1.30.2`
- [x] 3.11 同上述备份/替换/验证/打包流程,接口验证通过
- [x] 3.12 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nginx_v1.30.2.tar.gz`
### 步骤4:升级Redis
**X86服务器 (192.168.5.52)**
- [x] 4.1 备份配置
- [x] 4.2 备份完整容器参数:`docker inspect uredis > /tmp/uredis_inspect.json`
- [x] 4.3 拉取新镜像:`docker pull redis:8`(版本8.8.0)
......@@ -88,11 +79,9 @@
- [x] 4.8 依赖Redis的服务正常
- [x] 4.9 打包:`/data/offline_auto_unifiedPlatform/data/temp/redis-8.8.0.tar.gz`
- [x] 4.10 同上述流程,使用ARM版redis:8镜像(需调整日志文件权限 chown 999:999)
- [x] 4.11 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_redis8.8.0.tar.gz`
### 步骤5:升级EMQX
**X86服务器 (192.168.5.52)**
- [x] 5.1 备份EMQX数据卷和配置
- [x] 5.2 备份完整容器参数:`docker inspect uemqx > /tmp/uemqx_inspect.json`
- [x] 5.3 拉取新镜像:`docker pull emqx/emqx:latest`(版本6.0.0 Enterprise)
......@@ -103,33 +92,21 @@
- [x] 5.8 重启依赖MQTT的服务(ujava2等),检查重连成功
- [x] 5.9 打包:`/data/offline_auto_unifiedPlatform/data/temp/uemqx-6.0.0.tar.gz`
- [x] 5.10 同上述流程,使用ARM版emqx/emqx:latest镜像
- [x] 5.11 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_uemqx-6.0.0.tar.gz`
### 步骤6:升级Nacos(仅ARM需升级)
### 步骤6:升级Nacos
**X86服务器** — 当前已是v2.5.2,无需升级。
- [x] 6.1 备份Nacos数据卷和配置
- [x] 6.2 备份完整容器参数:`docker inspect unacos > /tmp/unacos_inspect.json`
- [x] 6.3 拉取新镜像:`docker pull nacos/nacos-server:v2.5.2`
- [x] 6.4 停止旧容器:`docker stop unacos && docker rm unacos`
- [x] 6.5 用新镜像+原配置启动新容器
- [x] 6.6 验证Nacos控制台可访问 ✅
- [x] 6.7 检查服务注册列表正常 ✅
- [x] 6.8 打包:`/data/arm_offline_auto_unifiedPlatform/data/temp/arm_nacos-server-v2.5.2.tar.gz`
---
## 三、每步验证清单
- [x] 容器运行状态:`docker ps` 确认 Up(X86 13个,ARM 11个
- [x] 容器运行状态:`docker ps` 确认 Up(X86 13个)
- [x] 版本确认:对应版本命令确认新版本
- [x] 日志检查:`docker logs <container> --tail 50`(MQTT重连属正常现象)
- [x] 服务日志检查:预定/运维服务日志无异常
- [x] 接口测试:
- `curl -k https://服务器IP/exapi/message/getMsgPageList` → 返回"无效token" ✅
- `curl -k https://服务器IP/monitor/api2/api/servermonitor/` → 正常响应 ✅
- `curl -k https://192.168.5.52/exapi/message/getMsgPageList` → 返回"无效token" ✅
- `curl -k https://192.168.5.52/monitor/api2/api/servermonitor/` → 正常响应 ✅
---
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论