Files
wind_power_cal/.claude/skills/cloud-public-deploy/SKILL.md
T
2026-07-14 15:43:18 +08:00

3.5 KiB
Raw Blame History

name, description
name description
cloud-public-deploy edge_collector 云平台公网部署流程规范。用于整理、审查或执行云平台公网部署方案时参考 deploy_cloud.sh,覆盖 package.sh --cloud-only、runtime/cloud_server 同步、远端配置保护、Mosquitto Dynamic Security、systemd/nginx 初始化、cloud-server 重启和公网接口验证。

云平台公网部署

固定约定

  • 部署脚本:./deploy_cloud.sh
  • 默认目标:ubuntu@119.45.4.75
  • 远端目录:~/cloud_server
  • systemd 服务:cloud-server
  • 公网入口:http://119.45.4.75
  • 本地构建输出:runtime/cloud_server/

使用边界

  • 常规部署使用 ./deploy_cloud.sh
  • 只看流程或生成文档时可以参考本 skill,不直接执行。
  • 只有用户明确要求“初始化、清库、重置云端状态”时才允许加 --init
  • 不要手写 rsync、scp、systemctl 流程替代 deploy_cloud.sh

deploy_cloud.sh 实际流程

1. bash ./package.sh --cloud-only
2. 校验 runtime/cloud_server 和 cloud_server/config/server_config.json
3. 读取 MQTT dynsec、PostgreSQL、TDengine 配置
4. 检查 SSH 连通性
5. 备份远端 server_config.json 和 ai_config.json
6. rsync runtime/cloud_server/ 到 ~/cloud_server/
7. 恢复/生成远端运行密钥,保留远端 AI 配置
8. 迁移并校验 Mosquitto Dynamic Security
9. --init 模式下安装 systemd 服务和 nginx
10. 重启 cloud-server 并输出公网 URL

运行配置保护

部署脚本会保护:

  • ~/cloud_server/config/server_config.json 中的 jwt_secret
  • custom_config.terminal.credential_key
  • ~/cloud_server/config/ai_config.json

审查或修改部署逻辑时,必须确认这些运行态配置不会被打包产物覆盖。

MQTT Dynamic Security

脚本会根据 server_config.json 配置:

  • 禁用旧的 Mosquitto 静态账号/ACL 配置。
  • 初始化或更新 /var/lib/mosquitto/dynamic-security.json
  • 创建 gateway/cloud 角色和 cloud MQTT client。
  • 设置 /data/#/status/#/ack/#/cmd/# 相关权限。

如果部署失败,先查 mosquitto_ctrlmosquitto_dynamic_security.so 和 Mosquitto 服务状态。

初始化模式

--init 会执行高风险动作:

  • 停止 cloud-servermosquitto
  • 重置 PostgreSQL 数据库。
  • 重置 TDengine 数据库。
  • 清理 MQTT dynsec 状态。
  • 安装/覆盖 systemd service。
  • 配置 nginx 80 端口反代到 8081443 自签名证书重定向到 HTTP。

未获用户明确确认时禁止使用 --init

验证步骤

部署完成后至少验证:

ssh ubuntu@119.45.4.75 'sudo systemctl is-active cloud-server'
ssh ubuntu@119.45.4.75 'sudo systemctl is-active mosquitto'
curl -s http://119.45.4.75/api/health

按改动范围补充:

  • 登录接口:POST /api/auth/login
  • AI 配置/分析接口。
  • OTA 包列表接口。
  • MQTT 网关连接和设备在线状态。
  • 前端页面静态资源是否刷新。

故障排查

服务启动失败:

ssh ubuntu@119.45.4.75 'sudo journalctl -u cloud-server --since "10 min ago" --no-pager'

nginx 异常:

ssh ubuntu@119.45.4.75 'sudo nginx -t && sudo systemctl status nginx --no-pager'

MQTT dynsec 异常:

ssh ubuntu@119.45.4.75 'sudo systemctl status mosquitto --no-pager'

文档输出

整理公网部署文档时必须写清:

  • 目标主机和远端目录。
  • 是否使用 --init
  • 会保留哪些远端配置。
  • 会重启哪些服务。
  • 公网访问入口和验证接口。
  • 回滚方式和日志位置。