iotsaas/QUICKSTART.md
2995840376 0ce191c448 chore: 初始化 iotsaas 版本库基线
纳入范围:
- backend/  Spring Boot 多模块后端(iot-common/device/rule/data/alarm/auth)
- frontend/admin/  Vue3 + Element Plus 管理后台
- Android/   涂鸦原生 APP (com.xhai.iot)
- backend/sql/  Flyway 风格迁移脚本(V2~V21)
- docs/       对接文档与设计文档

排除范围:
- 构建产物: node_modules/ target/ build/ dist/ .gradle/
- 签名密钥: *.jks *.keystore (严禁入库)
- 本机配置: Android/local.properties
- 运行日志: logs/ *.log
- AI 协作本地数据 .codebuddy/ 与第三方 demo tuya-demo/

.gitattributes 统一以 LF 存储, Windows 批处理保留 CRLF
2026-10-27 12:00:41 +08:00

8.0 KiB
Raw Blame History

🚀 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 中间件

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 秒后完成。

验证容器

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)

验证数据库初始化

# 等待 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 环境变量已配置

检查环境

java -version
mvn -version

编译项目

cd f:\work\iotsaas\backend

# 清理并编译(首次约需 3-5 分钟)
mvn clean install -DskipTests

如果遇到依赖下载慢,配置阿里云镜像(Maven 的 ~/.m2/settings.xml):

<mirrors>
  <mirror>
    <id>aliyun</id>
    <mirrorOf>central</mirrorOf>
    <url>https://maven.aliyun.com/repository/public</url>
  </mirror>
</mirrors>

启动 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 - 设备服务:

cd f:\work\iotsaas\backend\iot-device
mvn spring-boot:run

窗口 2 - 数据服务:

cd f:\work\iotsaas\backend\iot-data
mvn spring-boot:run

窗口 3 - 规则服务:

cd f:\work\iotsaas\backend\iot-rule
mvn spring-boot:run

窗口 4 - 告警服务:

cd f:\work\iotsaas\backend\iot-alarm
mvn spring-boot:run

方式 C:打包后启动

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)

安装依赖

cd f:\work\iotsaas\uniapp
npm install

H5 模式启动

npm run dev:h5

访问:http://localhost:9000

⚠️ Vite 代理已配置:/api → http://localhost:9081(设备服务)

🧪 第四步:测试验证

1. 测试后端 API

# 设备服务 - 设备列表
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 连接

# 安装 MQTT 测试工具
# 或使用浏览器访问 EMQX Dashboard 的 WebSocket 客户端
# 连接地址: ws://localhost:8084/mqtt

⚠️ 常见问题

1. MySQL 连接失败

错误:Communications link failure

原因:MySQL 还在初始化(约 30 秒),或 33060 端口未开放

解决:

# 检查容器状态
docker ps --filter "name=iot-mysql"

# 等待 30-60 秒后重试
# 或重启服务
docker-compose -f docker-compose.dev.yml restart mysql

2. 端口被占用

错误:Port 9081 was already in use

解决:

# 查找占用进程
netstat -ano | findstr ":9081"

# 结束进程(替换 PID)
taskkill /PID <进程ID> /F

3. InfluxDB 初始化失败

现象:访问 http://localhost:8083 报 404

解决:

# 查看 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 测试

🛑 停止服务

# 停止所有 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 停止

📊 完整服务访问清单

启动完成后,可以访问以下地址:

应用服务

运维管理

端口转发

  • MQTT: localhost:1883
  • MQTT WebSocket: localhost:8084
  • Redis: localhost:6379