tb平台搭建thingsboard+tb-gateway+emqx安装(centos)

前言

作为一个小白,看了很多博客,问了很多大佬,终于可以把这个平台搭起来,我搭平台主要借鉴了基于docker部署thingsboard+tb-gateway+emqx详细教程这篇文章,大佬写的很详细,但是我在搭建的过程中还是遇到了很多问题,好在都解决了,我把这篇文章作为我复盘的一个学习笔记,欢迎各路大佬指正其中的问题,我将不胜感激!!!!

配置docker环境(关闭防火墙!!!)

安装docker

 接下来配置国内docker镜像仓库(有时候国外的可能会很慢,或者连接出问题,这里用阿里云为例) 

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxxxx.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

阿里云:开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云 

查看镜像源是否修改完成

docker info

看到 Registry Mirrors后面的地址是阿里云仓库地址就成功了 

 docker环境就配置完成了。

安装及配置postgres数据库

根据 thingsboard 的官方文档,thingsboard 的 docker 镜像里是带了 postgres 数据库的,但是postgres有权限问题。

​​​​​解决办法就是不用 thingsboard 镜像内自带的 postgres 数据库,在环境变量中将连接的数据库地址指向我们自己创建的 postgres 数据库。所以第一步就是用 docker 去创建一个 postgres 数据库。

docker pull postgres:13.0

利用docker拉取版本号为13.0的postgres镜像。

docker images

查看docker的镜像   

创建并启动docker容器

docker run --name postgres13 -e POSTGRES_PASSWORD=postgres -p 5432:5432 -v /root/thingsboard/pgdata:/var/lib/postgresql/data -d postgres:13.0
  1. name:将容器命名
  2. -e:设置环境变量,这里‘-e POSTGRES_PASSWORD=postgres’表示将环境变量中的数据库密码设置为posstgres
  3. -p:进行端口映射,左边是服务器的端口,右边是容器内的端口
  4. -v:进行目录映射,将服务器的‘/root/thingsboard/pgdata’映射到容器的‘/var/lib/postgresql/data’,这样这两个目录就可以关联起来了,容器的目录是储存数据库数据的目录,数据就会备份到本地,同理,在服务器修改的数据库配置文件也可以反应得到。
  5. -d:让容器后台运行 

注意:postgres 镜像默认的用户名为 postgres 

注意:我在运行的时候会发现docker容器跑不起来,于是就查看了日志
docker logs 容器id

 

 发现是由于docker容器没有宿主机的权限造成的结果,这里是因为我之前运行docker
的时候没有关掉防火墙,运行docker的时候千万要关掉防火墙!千万要关掉防火墙!千万要关掉防火墙!

使用 docker ps 查看postgres容器状态 

 切换到 /root/thingsboard/pgdata 目录发现目录下数据库已经创建好数据了

 现在可以试着用pgadmin连接一下数据库看一下数据库的状态

创建一个thingsboard数据库, 启动镜像的时候会对数据进行初始

 启动thingsboard镜像

根据 thingsboard 官方文档,想启动 thingsboard 镜像,除了需要安装 docker,还需要再安装 docker compose

下载docker compose二进制文件

下载地址:

赋予可执行权限

sudo chmod +x /usr/local/bin/docker-compose

运行下列命令看看是否成功 

docker-compose --version

显示如下就是成功了

按照 thingsboard 官方文档,接下来就是创建一个 docker-compose.yml 文件了,这里该文件的内容和官方文档里的就有些差别了。因为官方文档的默认使用内部数据库,所以yum文件需要自己来修改

version: '2.2'
services:
  mytb:
    restart: always
    image: "thingsboard/tb-postgres:3.2.1"
    ports:
      - "8080:9090"
      - "1884:1883"
      - "7070:7070"
      - "5683-5688:5683-5688/udp"
    environment:
      - TB_QUEUE_TYPE=in-memory
      - SPRING_DATASOURCE_URL=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/thingsboard
      - SPRING_DATASOURCE_USERNAME=postgres
      - SPRING_DATASOURCE_PASSWORD=postgres

    下面简单解释一下

1884:1883,因为后面使用的eqmx需要1883所以把thingsboard 的 1883 端口映射为服务器的 1884 端口.

TB_QUEUE_TYPE=in-memory:   这是一个自定义的环境变量,用于配置 ThingsBoard(物联网平台)的消息队列类型,这里设置为 "in-memory"。

SPRING_DATASOURCE_URL=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/thingsboard:  这是一个 Spring Boot 应用程序中用于配置数据库连接的环境变量。它指定了连接到 PostgreSQL 数据库的 JDBC URL。具体来说,这里的 URL 表示连接到 IP 地址为 xxx.xxx.xxx.xxx、端口号为 5432、数据库名为 thingsboard 的 PostgreSQL 数据库。这里的ip地址填你自己的云服务器地址,我是写docker的网关地址。

后面两个就不用说了。

这里可以把 docker-compose.yml 文件放到 /root/thingsboard/ 目录下,然后我们在该目录下运行

docker-compose pull
docker-compose up

看到 Installing finished successfully!说明数据库初始化成功。 

在服务器的防火墙中放开 8080188470705683-5688 这几个端口(因为之前已经关闭防火墙了,所以这一步不需要操作)

浏览器中访问 ip地址:8080,就可以看到 thingsboard 的登陆界面了,如下图

默认系统管理员账号: 用户名:sysadmin@thingsboard.org 密码:sysadmin

默认租户管理员帐户: 用户名:tenant(租客)@thingsboard.org 密码:tenant

thingsboard平台就搭建完成了,接下来,就要使用gateway将thingsboard和emqx进行连接

安装tb-gateway

docker run -it -v ~/.tb-gateway/logs:/thingsboard_gateway/logs -v ~/.tb-gateway/extensions:/thingsboard_gateway/extensions -v ~/.tb-gateway/config:/thingsboard_gateway/config --name tb-gateway --restart always thingsboard/tb-gateway

直接参考官方文档

 -v 挂载目录后,可以直接通过修改 ~/.tb-gateway/config对tb-gateway 的文件,从而对配置文件进行修改。

安装emqx

可以参考以下博客文档,写的很详细

参考官方文档

emqx的持久化配置可以参考这篇博客:EMQX 免费版 docker安装并配置持久化到服务器​​​​​​

安装命令(这里没有挂载目录)

docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

  安装完成后查看emqx的实时日志,显示这里成功了

成功启动后,我们根据官方文档可以通过访问 ip地址:18083 来访问我们创建的emqx。

看到这个登录界面就成功了 

默认用户名是 admin,密码是 public

登录成功后,可以到 admin-setting-language 设置中文

配置emqx通过tb-gateway连接到thingsboard

首先打开thingsboard平台,切换为租户管理员,再创建新设备设置一个网关,如下图

打开管理凭据,记住这个访问令牌,之后会用到 

查看隐藏文件夹打开修改tb-gtaeway文件(路径如下图)

ls -a #用来显示所有文件,包括以点(.)开头的隐藏文件。

打开后如下图

            注意:这里写错了,accesstoken一定要按照它的格式写,前面要加空格,不然连接不上,

我这里写错了,没加空格!!!!

这里只需要将host主机名改成服务器的IP地址,将 accesstoken改为之前创建网关的访问令牌保存后再退出。重启tb网关。

docker restart tb-gateway

进入 /root/.tb-gateway/config 目录 打开 mqtt.json文件

 

#将host改为emqx的服务器ip
#将端口改为emqx的端口
#将username和password改为emqx所登录的用户名和密码

这里是我改的 :

docker restart tb-gateway

 就可以成功连接

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值