基于CentOS服务器基于thingsboard-x.x.x.rpm安装包方式安装ThingsBoard

一、先决条件

本指南描述了如何在CentOS7/8上安装ThingsBoard。硬件要求取决于选择的数据库和连接到系统的设备数量。在继续安装之前请执行以下命令以安装必要的工具:

  • 需要一台1G内存的服务器运行ThingsBoardPostgreSQL
  • 需要一台8G内存的服务器运行ThingsBoardCassandra

①:For CentOS 7

  1. # Install wget
  2. sudo yum install -y nano wget
  3. # Add latest EPEL release for CentOS 7
  4. sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

②:For Centos 8

  1. # Install wget
  2. sudo yum install -y nano wget
  3. # Add latest EPEL release for CentOS 8
  4. sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

二、步骤1. 安装Java 11(OpenJDK)

  • ①:ThingsBoard服务正在Java 11上运行请按照以下说明安装OpenJDK 11

    1. sudo yum install java-11-openjdk
  • ②:指定OpenJDK 11设置为系统的默认版本。您可以使用以下命令配置哪个版本是默认版本:

    1. sudo update-alternatives --config java

    ```bash [root@localhost ~]# sudo update-alternatives —config java

共有 3 个提供“java”的程序。

选项 命令

1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre/bin/java) *+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre/bin/java) 3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64/bin/java)

按 Enter 保留当前选项[+],或者键入选项编号:3

  1. - ③:您可以使用`java -version`命令查看默认的`**java**`**版本号**:
  2. ```bash
  3. [root@localhost ~]# java -version
  4. openjdk version "11.0.13" 2021-10-19 LTS
  5. OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
  6. OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

三、步骤2. 下载thingsboard-x.x.x.rmp安装包,并安装服务

  • ①:下载安装包:

    1. wget https://github.com/thingsboard/thingsboard/releases/download/v3.3.1/thingsboard-3.3.1.rpm
  • ②:安装服务:

    1. sudo rpm -Uvh thingsboard-3.3.1.rpm

四、步骤3. 配置数据库

  • ①:PostgreSQL安装,建议在Docker容器中使用PostgreSQL进行安装:

    1. docker run -d \
    2. --restart=always \
    3. --name tb-postgres \
    4. -e POSTGRES_DB=thingsboard \
    5. -e POSTGRES_PASSWORD=postgres \
    6. -p 5432:5432 \
    7. -v /home/thingsboard/volume/postgresql/data:/var/lib/postgresql/data \
    8. postgres:12
  • ②:编辑ThingsBoard配置文件:

    1. sudo vim /etc/thingsboard/conf/thingsboard.conf
  • ③:将以下行添加到配置文件中,将${PUT_YOUR_IP}、${PUT_YOUR_POSTGRESQL_PASSWORD_HERE}替换为真实的服务器地址、密码。

    1. # DB Configuration
    2. export DATABASE_ENTITIES_TYPE=sql
    3. export DATABASE_TS_TYPE=sql
    4. export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
    5. export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
    6. export SPRING_DATASOURCE_URL=jdbc:postgresql://${PUT_YOUR_IP}:5432/thingsboard
    7. export SPRING_DATASOURCE_USERNAME=postgres
    8. export SPRING_DATASOURCE_PASSWORD=${PUT_YOUR_POSTGRESQL_PASSWORD_HERE}
    9. export SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5
    10. # Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE.
    11. export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
    12. export HTTP_BIND_PORT=80

五、步骤4. 选择消息队列服务

默认选择内存作为消息中间件代理服务之前的通信:

  • 内存:默认队列适用于开发环境很有用请勿用于生产环境。
  • Kafka:对于本地和私有云部署可以独立于云服务供应商生产环境中使用。
  • RabbitMQ:如果没有太多负载并且已经具备一定的使用经验建议使用此方式。
  • AWS SQS:如是你打算在AWS上使用ThingsBoard则可以使用此消息队列。
  • Google发布/订阅:如果你打算在Google Cloud上部署ThingsBoard则可以使用此消息队列。
  • Azure服务总线:如果你打算在Azure上部署ThingsBoard则可以使用此消息队列。
  • Confluent云:基于Kafka的完全托管的事件流平台。

六、步骤5. [可选]低性能配置(1GB内存)

  • ①:编辑ThingsBoard配置文件

    1. sudo vim /etc/thingsboard/conf/thingsboard.conf
  • ②:将以下行添加到配置文件:

    1. # Update ThingsBoard memory usage and restrict it to 256MB in /etc/thingsboard/conf/thingsboard.conf
    2. export JAVA_OPTS="$JAVA_OPTS -Xms256M -Xmx256M"

七、步骤6. 运行安装脚本

  • ①:安装ThingsBoard服务并更新数据库配置后,您可以执行以下脚本:

    1. # --loadDemo option will load demo data: users, devices, assets, rules, widgets.
    2. sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

    ```bash [root@localhost thingsboard]# sudo /usr/share/thingsboard/bin/install/install.sh —loadDemo


    / __/ / / () _ / ) __ __/ / / / / \ / / / \ / / / ___/ / __ | / __ \ / __/ / _/ / / / / / / / / / / / / / / / // / (__ ) / // / / // // // / / / / // / // // // // // // _, / /_/ // __/ \,/ // _,/

    1. /____/

    ===================================================

    :: ThingsBoard :: (v3.3.1)

Starting ThingsBoard Installation… Installing DataBase schema for entities… Installing SQL DataBase schema part: schema-entities.sql Installing SQL DataBase schema indexes part: schema-entities-idx.sql Installing SQL DataBase schema PostgreSQL specific indexes part: schema-entities-idx-psql-addon.sql Installing DataBase schema for timeseries… Installing SQL DataBase schema part: schema-ts-psql.sql Successfully executed query: CREATE TABLE IF NOT EXISTS ts_kv_indefinite PARTITION OF ts_kv DEFAULT; Loading system data… Loading demo data… Installation finished successfully! ThingsBoard installed successfully! [root@localhost thingsboard]#

  1. <a name="4c638bcd"></a>
  2. #### 八、步骤7. 启动服务
  3. - ①:`ThingsBoard`默认使用`80`端口请执行以下命令确保正确打开:
  4. ```bash
  5. sudo firewall-cmd --zone=public --list-ports
  6. sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  7. sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
  8. sudo firewall-cmd --zone=public --add-port=1883/tcp --permanent
  9. sudo firewall-cmd --reload
  • 80端口:是thingsboardweb端口号
  • 5432端口:是postgres的数据库端口号
  • 1883端口:是mqtt的端口号
  • ②:执行以下命令以启动ThingsBoard
    1. sudo service thingsboard start
    2. sudo service thingsboard status
    ```bash [root@iZbp16q6j4wh5685xon9unZ ~]# service thingsboard start Redirecting to /bin/systemctl start thingsboard.service [root@iZbp16q6j4wh5685xon9unZ ~]# [root@iZbp16q6j4wh5685xon9unZ ~]# [root@iZbp16q6j4wh5685xon9unZ ~]# service thingsboard status Redirecting to /bin/systemctl status thingsboard.service ● thingsboard.service - thingsboard Loaded: loaded (/usr/lib/systemd/system/thingsboard.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-11-09 09:25:15 CST; 4s ago Main PID: 15809 (thingsboard.jar) Tasks: 20 Memory: 146.6M CGroup: /system.slice/thingsboard.service
    1. ├─15809 /bin/bash /usr/share/thingsboard/bin/thingsboard.jar
    2. └─15824 /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -Dplatform=rpm -Dinstall.data_dir=/usr/share/thingsbo...

Nov 09 09:25:15 iZbp16q6j4wh5685xon9unZ systemd[1]: Started thingsboard. Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: __ _ Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: /_ / / / () __ / ) __ / / Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: / / / \ / / / \ / `/ / __/ / | / \ / …__ / Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: / / / / / / / / / / / / / // / ( ) / // / / // // /…// / Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: // // // // // /_/ \, / // /_/ _/ \,/ Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: /_/ Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: =================================================== Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: :: ThingsBoard :: (v3.3.1) Nov 09 09:25:19 iZbp16q6j4wh5685xon9unZ thingsboard.jar[15809]: =================================================== Hint: Some lines were ellipsized, use -l to show in full.

  1. - ③:启动后,您将可以使用以下链接打开`Web UI`
  2. ```http
  3. http://${ip}:80/
  • ④:如果在安装脚本的执行过程中指定了--loadDemo则可以使用以下默认凭据:
    • 系统管理员: sysadmin@thingsboard.org / sysadmin
    • 租户管理员: tenant@thingsboard.org / tenant
    • 客户: customer@thingsboard.org / customer

九、故障排除

  • ①:ThingsBoard日志存储在以下目录中:

    1. /var/log/thingsboard
  • ②:执行如下命令检查后面是否有错误:

    1. cat /var/log/thingsboard/thingsboard.log | grep ERROR