复现已有算法

This commit is contained in:
cloud
2026-07-14 15:43:18 +08:00
parent abebd2a683
commit 50b8111fd9
860 changed files with 182250 additions and 18 deletions
+120
View File
@@ -0,0 +1,120 @@
---
name: cloud-public-deploy
description: 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 实际流程
```text
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_ctrl``mosquitto_dynamic_security.so` 和 Mosquitto 服务状态。
## 初始化模式
`--init` 会执行高风险动作:
- 停止 `cloud-server``mosquitto`
- 重置 PostgreSQL 数据库。
- 重置 TDengine 数据库。
- 清理 MQTT dynsec 状态。
- 安装/覆盖 systemd service。
- 配置 nginx 80 端口反代到 8081443 自签名证书重定向到 HTTP。
未获用户明确确认时禁止使用 `--init`
## 验证步骤
部署完成后至少验证:
```bash
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 网关连接和设备在线状态。
- 前端页面静态资源是否刷新。
## 故障排查
服务启动失败:
```bash
ssh ubuntu@119.45.4.75 'sudo journalctl -u cloud-server --since "10 min ago" --no-pager'
```
nginx 异常:
```bash
ssh ubuntu@119.45.4.75 'sudo nginx -t && sudo systemctl status nginx --no-pager'
```
MQTT dynsec 异常:
```bash
ssh ubuntu@119.45.4.75 'sudo systemctl status mosquitto --no-pager'
```
## 文档输出
整理公网部署文档时必须写清:
- 目标主机和远端目录。
- 是否使用 `--init`
- 会保留哪些远端配置。
- 会重启哪些服务。
- 公网访问入口和验证接口。
- 回滚方式和日志位置。