跳至主要內容

后端运行

fastbee2024年9月27日大约 4 分钟

一、创建数据库

创建FastBee数据库,字符集使用utf8或utf8mb4,导入项目中的 springboot/sql/fastbee.sql 数据库脚本。

提示

Linux中安装mysql,配置大小写敏感,在 /etc/my.cnf 添加 lower_case_table_names=1 重启MYSQL服务。

二、打开项目

开发工具IDEA打开项目中的 springboot 文件夹,会自动安装Maven依赖,等待安装完成,速度取决于网络。

三、修改主配置文件

文件位于: springboot/fastbee-admin/src/main/resources/application.yml ,具体配置项目可以参考里面的注释内容。

fastbee:
  name: fastbee             # 名称
  profile: /uploadPath      # 文件路径,以uploadPath结尾 示例( Windows配置 D:/uploadPath,Linux配置 /uploadPath)
  addressEnabled: true      # 获取ip地址开关
  captchaType: math         # 验证码类型 math 数组计算 char 字符验证

server:
  port: 8080                # 服务器的HTTP端口,默认为8080
  servlet:
    context-path: /         # 应用的访问路径
  tomcat:
    uri-encoding: UTF-8     # tomcat的URI编码
    accept-count: 1000      # 连接数满后的排队数,默认为100
    threads:
      max: 800              # tomcat最大线程数,默认为200
      min-spare: 100        # Tomcat启动初始化的线程数,默认值10
  # 基于netty的服务器
  broker:
    enabled: false          # mqttBroker类型选择, true: 基于netty的mqttBroker和webSocket  false: emq的mqttBroker
    broker-node: node1      # 服务器集群节点
    port: 1883
    openws: false           # 控制webSocket是否开启
    websocket-port: 8083
    websocket-path: /mqtt
    keep-alive: 70          # 默认的全部客户端心跳上传时间
  #TCP服务端口
  tcp:
    enabled: true           # 控制tcp端口是否开启
    port: 8888
    keep-alive: 70
    delimiter: 0x7e

spring:
  profiles:
    active: prod            # 环境配置,dev=开发环境,prod=生产环境

提示

注意配置文件的格式,缩进一定要对齐,重点关注下面内容:

  • 文件上传路径,win和linux系统下配置不同
  • mqtt消息服务器选择,后端内置了netty-mqtt服务,也可以选择使用emqx作为mqtt消息服务器
  • 环境配置,开发环境和生产环境对应不同的子配置文件,prod对应使用application-prod.yml配置文件

常见错误

后端内置了Mqtt服务,商业版本也可以选择使用emqx作为mqtt消息服务器,两个只能使用一个。
注意一下配置:

application.yml 中选择mqtt服务端
  # 内容位于application.yml文件中
  broker:
    enabled: false           # mqtt服务端选择, true: 基于netty的mqttBroker和webSocket  false: emq的mqttBroker
    port: 1883
    websocket-port: 8083
    websocket-path: /mqtt
    keep-alive: 70           # 系统保活时间,需要大于设备端包活时间10秒以上,系统配置70秒,则设备端60秒以内

四、修改子配置文件

文件位于:springboot/fastbee-admin/src/main/resources/application-dev.yml,开发环境使用,生成环境可以使用 application-prod

spring:
  datasource:
    dynamic:
      druid:
        initial-size: 5
        min-idle: 10
        max-wait: 60000
        max-active: 20
        timeBetweenEvictionRunsMillis: 60000  # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        minEvictableIdleTimeMillis: 300000    # 配置一个连接在池中最小生存的时间,单位是毫秒
        maxEvictableIdleTimeMillis: 900000    # 配置一个连接在池中最大生存的时间,单位是毫秒
        validation-query: 'SELECT 1'
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
      datasource:
        master:                               # 主库数据源
          type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
          username: root
          password: fastbee
          druid:
            filters: stat,wall
            stat:
              # 慢SQL记录
              log-slow-sql: true
              slow-sql-millis: 1000
              merge-sql: true
            wall:
              none-base-statement-allow: true
        taos:                                # 配置 taos 数据源
          enabled: false                     # 默认不启用TDengine,true=启用,false=不启用
          type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: com.taosdata.jdbc.TSDBDriver
          url: jdbc:TAOS://fastbee:6030/fastbee_log?timezone=UTC-8&charset=utf-8
          username: root
          password: taosdata
          dbName: fastbee_log


  redis:                                    # redis 配置
    host: localhost                         # 地址
    port: 6379                              # 端口,默认为6379
    database: 0                             # 数据库索引
    password: fastbee                       # 密码
    timeout: 10s                            # 连接超时时间
    lettuce:
      pool:
        min-idle: 0                         # 连接池中的最小空闲连接
        max-idle: 8                         # 连接池中的最大空闲连接
        max-active: 8                       # 连接池的最大数据库连接数
        max-wait: -1ms                      # 连接池最大阻塞等待时间(使用负值表示没有限制)
  
  mqtt:                                     # mqtt 配置
    username: fastbee                       # 账号
    password: fastbee                       # 密码
    host-url: tcp://localhost:1883          # mqtt连接tcp地址(指向后端或者emqx的地址)
    client-id: ${random.int}                # 客户端Id,不能相同,采用随机数 ${random.value}
    default-topic: test                     # 默认主题
    timeout: 30                             # 超时时间
    keepalive: 30                           # 保持连接
    clearSession: true                      # 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息)

提示

重点关注一下内容:

  • mysql、tdengine、redis、mqtt的连接地址,以及账号和密码
  • 使用tdengine需要正确安装和配置,服务端、客户端、驱动保持版本一致
  • mqtt的连接地址根据主配置文件的选择分别指向后端和emqx的部署地址

五、修改日志配置

日志路径配置,文件位于:springboot/fastbee-admin/src/main/resources/logback.xml

# 示例( Windows配置D:/logs,Linux配置 /var/data/java/logs)
<property name="log.path" value="/var/data/java/logs" />

六、运行项目

运行项目 FastBeeApplication.java ,出现下图表示启动成功。

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *      
 *           _⚲_⚲_            ______        _     ____                   *       
 *     |   /       \   |     |  ____|      | |   |  _ \                  *     
 *     |  |  |  |  |  |     | |__ __ _ ___| |_  | |_) | ___  ___        *       
 *     |   \       /   |     |  __/ _` / __| __| |  _ < / _ \/ _ \       *    
 *           \   /           | | | (_| \__ \ |_  | |_) |  __/  __/       *    
 *             V             |_|  \__,_|___/\__| |____/ \___|\___|       *   
 *                                                                       *       
 * * * * * * * * * * * * FastBee物联网平台[✔启动成功] * * * * * * * * * * *