# IoT Platform 部署文档 ## 概述 本项目使用 systemd 管理进程,通过 `deploy.sh` 脚本实现一键构建、上传、备份、健康检查和自动回滚。 ## 服务器环境 - **服务器**: online180 (47.104.204.180) - **OS**: Alibaba Cloud Linux 3 - **Java**: OpenJDK 1.8.0_412 - **安装目录**: `/opt/iot-platform/` - **服务名称**: `iot-platform` ## 目录结构 ``` /opt/iot-platform/ ├── iot-platform.jar # 当前运行版本 ├── .env # 环境变量(密码、凭据) ├── backup/ # 版本备份(自动创建) ├── bin/ │ ├── deploy.sh # 一键部署脚本(本地运行) │ └── health-check.sh # 健康检查脚本 ├── config/ # 线上专属配置 └── logs/ # 日志输出 ``` ## 快速开始 ### 首次部署(服务器初始化) 如果服务器上还没有安装 systemd 服务,执行初始化: ```bash cd deploy scp setup-server.sh root@47.104.204.180:/tmp/ scp iot-platform.service root@47.104.204.180:/tmp/ scp ../.env root@47.104.204.180:/tmp/iot-platform.env ssh root@47.104.204.180 "chmod +x /tmp/setup-server.sh && /tmp/setup-server.sh" ``` ### 日常部署 #### 方式一:本地构建后部署 ```bash cd deploy ./deploy.sh --build ``` 流程: 1. 本地执行 `mvn clean package` 2. 上传 jar 到服务器 3. 备份当前版本(带时间戳) 4. 停止 systemd 服务 5. 替换 jar 6. 启动服务 7. 健康检查(`/actuator/health`) 8. 失败则自动回滚到上一个版本 #### 方式二:指定 jar 部署 ```bash cd deploy ./deploy.sh --jar ../iot-platform/target/iot-platform.jar ``` #### 方式三:CI/CD 构建后部署 ```bash cd deploy ./deploy.sh --jar /path/to/ci/artifacts/iot-platform.jar ``` ## 环境变量 `.env` 文件位于项目根目录和服务器 `/opt/iot-platform/.env`,包含所有敏感凭据: ```bash # MySQL MYSQL_USERNAME=root MYSQL_PASSWORD="..." # Redis REDIS_PASSWORD= # MQTT MQTT_USERNAME=... MQTT_PASSWORD=... # TDengine TDENGINE_USERNAME=root TDENGINE_PASSWORD=taosdata # Druid 监控 DRUID_STAT_ENABLED=false DRUID_USERNAME=ruoyi DRUID_PASSWORD=... ``` **注意**:`.env` 文件已加入 `.gitignore`,**切勿提交到 Git**。 ## 服务器管理 ```bash # 查看状态 systemctl status iot-platform # 重启 systemctl restart iot-platform # 停止 systemctl stop iot-platform # 查看日志 journalctl -u iot-platform -f # 查看历史日志 journalctl -u iot-platform --since "1 hour ago" ``` ## 健康检查 ```bash # 在服务器上执行 bash /opt/iot-platform/bin/health-check.sh localhost 8887 30 # 或从本地检查 curl -s http://47.104.204.180:8887/actuator/health ``` 健康检查策略: 1. 优先检查 `/actuator/health`(Spring Boot Actuator) 2. 如果 Actuator 未启用,降级为 TCP 端口监听检查 ## 回滚 如果部署失败,`deploy.sh` 会自动回滚到上一个版本。 手动回滚: ```bash ssh root@47.104.204.180 systemctl stop iot-platform ls /opt/iot-platform/backup/ # 查看可用备份 cp /opt/iot-platform/backup/iot-platform-XXXX.jar /opt/iot-platform/iot-platform.jar systemctl start iot-platform ``` ## 配置文件说明 | 文件 | 说明 | |------|------| | `deploy.sh` | 一键部署脚本(本地执行) | | `setup-server.sh` | 服务器初始化脚本(服务器执行) | | `health-check.sh` | 健康检查脚本 | | `iot-platform.service` | systemd 服务定义 |