系列文章目录
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
这里有两项是可以提前做的:
- docker安装kafka
- 安装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
顺利的话,完成后就可以通过浏览器访问了。
感受
如果之前的编译过程比较顺利的话,安装本身没有什么难度。照着官方文档操作就可以了。