ThingsBoard 学习笔记 之 安装

系列文章目录

ThingsBoard 学习笔记 之 编译
ThingsBoard 学习笔记 之 安装



前言

在之前源码编译的基础上,进一步看看ThingsBoard 的安装。
在ThingsBoard的官网上,提到了好几种安装方式及环境。 这里我首选docker的方式,以便对它有个初步的了解。之后,出于进一步学习二次开发的目的,会在ubuntu 环境下用编译好的软件包以dpkg的方式进行安装。


ThingsBoard Community 版的安装

用Docker进行安装

主要参考的内容来自:Installing ThingsBoard using Docker (Linux or Mac OS)
首先要准备好docker环境。具体在之前编译的过程里,已经做好了。这里就不赘述了。强调一下,docker需要在none-root方式下。

在ThingsBoard的官方说明中,Docker安装可以选择采用不同的消息队列服务,简单起见跟官方保持一致,用KafKa。
其次,官网说明中,是以 thingsboard/tb-postgres image 为例进行的,所以抄作业的时候,也按这个来做。
这里记录扩展一个问题:docker 安装时想要选择cassandra,怎么办?

接下来要做的事情,就是把官网上的docker-compose.yml复制下来,改成自己需要的样子就可以了。

# 先自建一个文件夹,把docker-compose.yml 放进去
mkdir mythingsboard
cd mythingsboard
nano docker-compose.yml
# 写入docker-compose.yml的内容:
version: '3.2'
services:
  kafka:
    restart: always
    image: bitnami/kafka:3.5.2
    ports:
      - 9092:9092 #to localhost:9092 from host machine
      - 9093 #for Kraft
      - 9094 #to kafka:9094 from within Docker network
    environment:
      ALLOW_PLAINTEXT_LISTENER: "yes"
      KAFKA_CFG_LISTENERS: "OUTSIDE://:9092,CONTROLLER://:9093,INSIDE://:9094"
      KAFKA_CFG_ADVERTISED_LISTENERS: "OUTSIDE://localhost:9092,INSIDE://kafka:9094"
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT,CONTROLLER:PLAINTEXT"
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "INSIDE"
      KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: "1"
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1"
      KAFKA_CFG_PROCESS_ROLES: "controller,broker" #KRaft
      KAFKA_CFG_NODE_ID: "0" #KRaft
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER" #KRaft
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093" #KRaft
    volumes:
      - kafka-data:/bitnami
  mytb:
    restart: always
    image: "thingsboard/tb-postgres"
    depends_on:
      - kafka
    ports:
      - "8080:9090"
      - "1883:1883"
      - "7070:7070"
      - "5683-5688:5683-5688/udp"
    environment:
      TB_QUEUE_TYPE: kafka
      TB_KAFKA_SERVERS: kafka:9094
    volumes:
      - ~/mythingsboard/.mytb-data:/data     #把data放到指定的地方,我改了这里
      - ~/mythingsboard/.mytb-logs:/var/log/thingsboard #把log放到指定的地方,我改了这里
volumes:
  kafka-data:
    driver: local

运行docker 容器:

docker compose up -d

这里因为之前编译的时候已经编译了本地的 thingsboard/tb-postgres 镜像,应该只需要再 pull 一个 kafka 就可以了。所以应该会看到:

[+] Running 2/2
 ✔ kafka Pulled                                                                                              434.9s
 ✔ 6f85dca90a4c Download complete                                                                            398.8s
[+] Running 3/3
 ✔ Network mythingsboard_default    Created                                                                    4.0s
 ✔ Container mythingsboard-kafka-1  Started                                                                   35.5s
 ✔ Container mythingsboard-mytb-1   Started                                                                    8.2s

之后稍微等一分多种,就可以按照官网的指引登录进去看看了。具体的可以参照:
Getting Started with ThingsBoard

在Ubuntu环境下,以dpkg方式安装编译后的deb

先把上面启动的docker 容器关掉:

# 这个很简单,不会有任何残留。也是先以docker的方式安装试试的初因
docker compose down

接下来的操作主要参考来源:Installing ThingsBoard CE on Ubuntu Server

第一步

先关掉之前的虚拟机。然后在virtualbox里链接复制一个新的虚拟机,之后的操作在新复制出来的虚拟机里进行。主要目的还是为了保持一个干净的实验环境。

第二步

打开新复制出来的虚拟机。
查看一下官方的安装指引:Installing ThingsBoard CE on Ubuntu Server
这里有两项是可以提前做的:

  1. docker安装kafka
  2. 安装PostgreSQL ,因为纯粹是安装也不涉及到二次开发,所以这块不想遵照指引做而是打算也用docker来部署。
mkdir fordeb
cd fordeb
nano docker-compose.yml

把下面这些内容放到docker-compose.yml里:

version: '3.8'
services:
  postgresql:
    image: postgres
    container_name: postgresql
    volumes:
      - postgre-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: 123456
      LANG: C.UTF-8

  kafka:
    restart: always
    image: bitnami/kafka:3.5.2
    ports:
      - 9092:9092 #to localhost:9092 from host machine
      - 9093 #for Kraft
      - 9094 #to kafka:9094 from within Docker network
    environment:
      ALLOW_PLAINTEXT_LISTENER: "yes"
      KAFKA_CFG_LISTENERS: "OUTSIDE://:9092,CONTROLLER://:9093,INSIDE://:9094"
      KAFKA_CFG_ADVERTISED_LISTENERS: "OUTSIDE://localhost:9092,INSIDE://kafka:9094"
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT,CONTROLLER:PLAINTEXT"
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "INSIDE"
      KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: "1"
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1"
      KAFKA_CFG_PROCESS_ROLES: "controller,broker" #KRaft
      KAFKA_CFG_NODE_ID: "0" #KRaft
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER" #KRaft
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093" #KRaft
    volumes:
      - kafka-data:/bitnami

volumes:
  postgre-data:
  kafka-data:
    driver: local

然后:

docker compose up -d

等运行完毕,postgre 和 kafka 就都部署完了。

第三步

把之前编译好的deb文件复制出来并安装:

cp ~\thingsboard\application\target\thingsboard.deb ~\fordeb\
sudo dpkg -i thingsboard.deb

完成后,还要在postgre里新建thingsboard的数据库:

# 先进入容器:
docker exec -it postgresql bash

# 连接容器内的数据库服务器:
psql -U postgres -d postgres -h 127.0.0.1 -W
# 新建thingsboard库:
CREATE DATABASE thingsboard;
\q

接下来,按照官网的指引,配置things board:

sudo nano /etc/thingsboard/conf/thingsboard.conf

将下述内容加入配置文件:

# DB Configuration 
export DATABASE_TS_TYPE=sql
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=123456 #自己定义的数据库密码
# Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE.
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS

export TB_QUEUE_TYPE=kafka
export TB_KAFKA_SERVERS=localhost:9092

执行安装脚本:

cd ~
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo
sudo systemctl start thingsboard

顺利的话,完成后就可以通过浏览器访问了。


感受

如果之前的编译过程比较顺利的话,安装本身没有什么难度。照着官方文档操作就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值