# 🚀 IoT 平台快速启动指南(端口错开版) > ⚠️ 本机已有 OpenCart 项目占用了 80/3306/8080/8081,本文档中的端口已全部错开。 ## 📋 端口分配总览 ### 本机已占用的端口(不要使用) | 端口 | 服务 | |------|------| | 80 | OpenCart (Apache) | | 3306 | MySQL 5.7 (OpenCart) | | 8080 | Adminer (OpenCart) | | 8081 | phpMyAdmin (OpenCart) | ### IoT 平台使用的端口 | 服务 | 端口 | 访问地址 | |------|------|----------| | MySQL 8.0 (iot) | **33060** | localhost:33060 | | Redis | 6379 | localhost:6379 | | RabbitMQ AMQP | 5672 | - | | RabbitMQ 管理 | **15673** | http://localhost:15673 | | EMQX MQTT | 1883 | - | | EMQX WebSocket | **8084** | - | | EMQX Dashboard | **18084** | http://localhost:18084 | | InfluxDB | **8083** | http://localhost:8083 | | XXL-Job | **8082** | http://localhost:8082/xxl-job-admin | | Grafana | **3001** | http://localhost:3001 | | iot-device (后端) | **9081** | http://localhost:9081/doc.html | | iot-data (后端) | **9082** | http://localhost:9082/doc.html | | iot-rule (后端) | **9083** | http://localhost:9083/doc.html | | iot-alarm (后端) | **9084** | http://localhost:9084/doc.html | | uniapp H5 | 9000 | http://localhost:9000 | ## 🐳 第一步:启动 Docker 中间件 ```powershell cd f:\work\iotsaas\docker # 启动所有 IoT 平台中间件 docker-compose -f docker-compose.dev.yml up -d # 查看启动状态 docker-compose -f docker-compose.dev.yml ps # 查看日志(可选) docker-compose -f docker-compose.dev.yml logs -f mysql ``` **首次启动 MySQL 会自动执行初始化脚本**,约 30 秒后完成。 ### 验证容器 ```powershell docker ps --filter "name=iot-" ``` 应该看到以下容器: - iot-mysql (端口 33060) - iot-redis (端口 6379) - iot-rabbitmq (端口 5672, 15673) - iot-emqx (端口 1883, 18084) - iot-influxdb (端口 8083) - iot-xxl-job-admin (端口 8082) - iot-grafana (端口 3001) ### 验证数据库初始化 ```powershell # 等待 30 秒后,执行 docker exec -it iot-mysql mysql -uroot -proot -e "SHOW DATABASES;" # 应该能看到 iot_platform 数据库 ``` ### 验证 InfluxDB 初始化 浏览器访问:http://localhost:8083 - 用户名: admin - 密码: admin123456 - Organization: iot-platform - Bucket: device-data ## ☕ 第二步:启动后端服务 ### 前置条件 - JDK 17+ 已安装 - Maven 3.6+ 已安装 - JAVA_HOME 环境变量已配置 ### 检查环境 ```powershell java -version mvn -version ``` ### 编译项目 ```powershell cd f:\work\iotsaas\backend # 清理并编译(首次约需 3-5 分钟) mvn clean install -DskipTests ``` 如果遇到依赖下载慢,配置阿里云镜像(Maven 的 `~/.m2/settings.xml`): ```xml aliyun central https://maven.aliyun.com/repository/public ``` ### 启动 4 个后端服务 #### 方式 A:IDEA 启动(推荐) 依次启动以下 4 个 `main` 方法(每个开一个 Run 窗口): | 顺序 | 启动类 | 端口 | 访问地址 | |------|--------|------|----------| | 1 | `com.iot.device.DeviceApplication` | 9081 | http://localhost:9081/doc.html | | 2 | `com.iot.data.DataApplication` | 9082 | http://localhost:9082/doc.html | | 3 | `com.iot.rule.RuleApplication` | 9083 | http://localhost:9083/doc.html | | 4 | `com.iot.alarm.AlarmApplication` | 9084 | http://localhost:9084/doc.html | #### 方式 B:命令行启动 打开 4 个 PowerShell 窗口: **窗口 1 - 设备服务:** ```powershell cd f:\work\iotsaas\backend\iot-device mvn spring-boot:run ``` **窗口 2 - 数据服务:** ```powershell cd f:\work\iotsaas\backend\iot-data mvn spring-boot:run ``` **窗口 3 - 规则服务:** ```powershell cd f:\work\iotsaas\backend\iot-rule mvn spring-boot:run ``` **窗口 4 - 告警服务:** ```powershell cd f:\work\iotsaas\backend\iot-alarm mvn spring-boot:run ``` #### 方式 C:打包后启动 ```powershell cd f:\work\iotsaas\backend mvn clean package -DskipTests # 启动(分别在不同窗口) java -jar iot-device\target\iot-device-1.0.0.jar java -jar iot-data\target\iot-data-1.0.0.jar java -jar iot-rule\target\iot-rule-1.0.0.jar java -jar iot-alarm\target\iot-alarm-1.0.0.jar ``` ### 验证后端启动成功 启动成功后会看到类似日志: ``` ======================================== IoT Device Service 启动成功! 访问地址: http://localhost:9081 API文档: http://localhost:9081/doc.html ======================================== ``` ## 📱 第三步:启动前端 (uniapp) ### 安装依赖 ```powershell cd f:\work\iotsaas\uniapp npm install ``` ### H5 模式启动 ```powershell npm run dev:h5 ``` 访问:http://localhost:9000 > ⚠️ Vite 代理已配置:`/api` → `http://localhost:9081`(设备服务) ## 🧪 第四步:测试验证 ### 1. 测试后端 API ```powershell # 设备服务 - 设备列表 curl http://localhost:9081/device/list # 数据服务 - 设备状态 curl http://localhost:9082/data/latest?deviceId=test001 # 规则服务 - 规则列表 curl http://localhost:9083/rule/list # 告警服务 - 告警列表 curl http://localhost:9084/alarm/list ``` ### 2. 访问 Swagger 文档 | 服务 | 文档地址 | |------|----------| | 设备 | http://localhost:9081/doc.html | | 数据 | http://localhost:9082/doc.html | | 规则 | http://localhost:9083/doc.html | | 告警 | http://localhost:9084/doc.html | ### 3. 访问运维管理 | 服务 | 地址 | 账号 | |------|------|------| | RabbitMQ | http://localhost:15673 | guest/guest | | EMQX Dashboard | http://localhost:18084 | admin/public | | InfluxDB UI | http://localhost:8083 | admin/admin123456 | | XXL-Job | http://localhost:8082/xxl-job-admin | admin/123456 | | Grafana | http://localhost:3001 | admin/admin | ### 4. 测试 MQTT 连接 ```powershell # 安装 MQTT 测试工具 # 或使用浏览器访问 EMQX Dashboard 的 WebSocket 客户端 # 连接地址: ws://localhost:8084/mqtt ``` ## ⚠️ 常见问题 ### 1. MySQL 连接失败 **错误**:`Communications link failure` **原因**:MySQL 还在初始化(约 30 秒),或 33060 端口未开放 **解决**: ```powershell # 检查容器状态 docker ps --filter "name=iot-mysql" # 等待 30-60 秒后重试 # 或重启服务 docker-compose -f docker-compose.dev.yml restart mysql ``` ### 2. 端口被占用 **错误**:`Port 9081 was already in use` **解决**: ```powershell # 查找占用进程 netstat -ano | findstr ":9081" # 结束进程(替换 PID) taskkill /PID <进程ID> /F ``` ### 3. InfluxDB 初始化失败 **现象**:访问 http://localhost:8083 报 404 **解决**: ```powershell # 查看 InfluxDB 日志 docker logs iot-influxdb # 重新初始化 docker-compose -f docker-compose.dev.yml down -v influxdb docker-compose -f docker-compose.dev.yml up -d influxdb ``` ### 4. EMQX 启动慢 **现象**:EMQX 启动需要 30-60 秒 **解决**:耐心等待,访问 http://localhost:18084 测试 ## 🛑 停止服务 ```powershell # 停止所有 IoT 中间件 cd f:\work\iotsaas\docker docker-compose -f docker-compose.dev.yml down # 停止并删除数据(谨慎!) docker-compose -f docker-compose.dev.yml down -v # 后端服务:在 IDEA 或 PowerShell 窗口中 Ctrl+C 停止 ``` ## 📊 完整服务访问清单 启动完成后,可以访问以下地址: ### 应用服务 - 📱 uniapp 前端: http://localhost:9000 - 🔧 设备服务 API: http://localhost:9081/doc.html - 📊 数据服务 API: http://localhost:9082/doc.html - ⚡ 规则服务 API: http://localhost:9083/doc.html - 🔔 告警服务 API: http://localhost:9084/doc.html ### 运维管理 - 🗄️ MySQL: localhost:33060 (root/root) - 🐰 RabbitMQ: http://localhost:15673 (guest/guest) - 📡 EMQX: http://localhost:18084 (admin/public) - 📈 InfluxDB: http://localhost:8083 (admin/admin123456) - ⏰ XXL-Job: http://localhost:8082/xxl-job-admin (admin/123456) - 📉 Grafana: http://localhost:3001 (admin/admin) ### 端口转发 - MQTT: localhost:1883 - MQTT WebSocket: localhost:8084 - Redis: localhost:6379