Skip to content

项目介绍

iboot是一个基于Spring Boot2的物联网开发框架,旨在简化物联网应用的开发和部署,还提供了一系列的物联网设备管理和数据处理功能,帮助开发者快速构建稳定、高效的物联网应用。本质上iboot是一款物联网软网关,南向方面它提供了一序列的物联网协议支持,比如MQTT、PLC、MODBUS、DLT645、OPCUA、DTU(MODBUS)、自定义驱动等,北向方面它提供了http开放平台、指令集、mqtt数据转发、rabbit mq推送等功能。同时iboot自身还提供了一序列的设备管理功能,比如设备注册、设备上下线、数据上报、数据采集、数据清洗、数据转发、设备告警、协议调试等功能。

语言和框架

  • 前端基于vue3+vite3开发,ui库使用antdv4+
  • 后端基于jdk1.8开发,主要依赖springboot2、mybatis-plus、sa-token、iotucy、netty、easypoi、sms4j等。
  • 开发前需要先安装idea开发工具、git版本管理、node18+、mysql8.0+。

快速开发

  • 拉取项目(可以通过命令行或开发工具拉取)
bash
# 拉取基于vue3的前端项目
git clone https://gitee.com/iteaj/ivzone.git
# 拉取基于springboot2的后端项目
git clone https://gitee.com/iteaj/iboot.git
  • 安装依赖
  1. 安装前端依赖(确保node18+已安装)
bash
# 打开控制台或者开发工具控制台然后进入前端目录后输入以下命令并执行
npm install
# 启动前端项目
npm run dev
  1. 安装后端依赖(确保jdk1.8+、maven3.6+已安装),通过idea导入iboot项目后等待idea下载maven依赖
  • 修改配置
  1. 创建mysql数据库iboot并且导入iboot.sql数据库文件(在docs/sql目录下), 如果patch.sql文件存在脚本内容则一并导入, 然后修改mysql的sql_mode配置并重启mysql, 具体修改方式如下:
conf
# window系统下进入mysql安装目录下修改my.ini, 如果没有自行创建一个
# linux系统下执行命令: 
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 然后在[mysqld]块下面添加
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 注: 正式环境安装部署时同样需要做此修改
  1. 修改application-dev.properties文件中的数据库连接信息
properties
# 用户名、密码、数据库名根据自己的实际情况修改
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:mysql://127.0.0.1:3306/iboot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  1. 启动项目(通过idea的启动按钮启动)
  2. 浏览器访问 http://localhost:5173

安装部署

  1. 确保服务器已经安装mysql8.0+、jdk1.8+、nginx1.18+并配置好环境变量, 然后导入iboot.sql数据库文件(在docs/sql目录下)
  2. 前端项目打包
code
//1. 修改prod.config.js文件,将里面的http参数改成自己公网的域名或者ip
http: new Http({
    httpUrl: "http://iot.iteaj.com/api", // 换成自己的域名(注意http或https)
    websocketUrl: 'ws://iot.iteaj.com'   // 换成自己的域名(注意ws或wss)
});
//2. 执行命令
npm run build
//3. 将打包完成后的目录dist进行zip压缩
//4. 上传压缩文件到服务器指定目录并解压
  1. 后端项目打包
properties
# 修改application.properties文件,将配置spring.profiles.active的值改成prod
spring.profiles.active=prod
# 执行打包命令 
mvn clean package
# 上传bootstrap/target目录下已打包好的bootstrap.jar到服务器
  1. 配置nginx
conf
# 1.修改/etc/nginx/nginx.conf配置文件
http {
    ...省略
    # 加入以下配置
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
}
# 2.复制 docs/nginx/iot.conf或iot-https.conf文件到/etc/nginx/conf.d目录下
# 3.然后修改iot.conf或iot-https.conf配置文件中的server_name和root等参数
server {
    location / {
         # 前端文件解压路径
    	root /home/iotucy/dist;
	    index index.html;
    }
    location /api {
        # application-prod.properties文件里面配置的http端口
    	proxy_pass http://127.0.0.1:8085;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /ws {
        # application-iot.yml文件里面prod环境配置的websocket端口
    	proxy_pass http://127.0.0.1:8087; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 3600s;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
    # 乐吾乐大屏适配
    location /view/ {
        proxy_pass http://127.0.0.1:9085/api/view/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  1. 启动项目
bash
# 进入bootstrap.jar所在目录
cd /path/to/bootstrap.jar
# 使用命令行启动
nohup java -jar bootstrap.jar &
# 使用脚本启动: 上传docs/deploy.sh脚本到服务器和bootstrap.jar同一目录下, 然后执行以下命令
# 增加脚本执行权限
chmod +x deploy.sh
# 启动项目
sh deploy.sh start
# 停止项目
sh deploy.sh stop