在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9

在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装

备注:

  • 适用于单节点

  • 是否支持欧拉???


前提条件

本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单台机器上运行ThingsBoard和PostgreSQL,您至少需要1GB的内存。要在单台机器上运行ThingsBoard和Cassandra,您至少需要8GB的内存。

在继续安装之前,请执行以下命令以安装必要的工具:

对于CentOS 8:

bash

复制

# 安装wget
sudo yum install -y nano wget
# 为CentOS 8添加最新的EPEL版本
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

步骤1. 安装Java 17 (OpenJDK)

ThingsBoard服务运行在Java 17上。按照以下说明安装OpenJDK 17:

bash

复制

sudo dnf install java-17-openjdk

请确保将操作系统配置为默认使用OpenJDK 17。您可以使用以下命令配置默认版本:

bash

复制

sudo update-alternatives --config java

您可以使用以下命令检查安装:

bash

复制

java -version

预期的命令输出是:

bash

复制

openjdk version "17.x.xx"
OpenJDK Runtime Environment (...)
OpenJDK 64-Bit Server VM (build ...)

步骤2. ThingsBoard服务安装

从以下链接下载安装包:

ThingsBoard Releases

下载安装包:

bash

复制

wget https://github.com/thingsboard/thingsboard/releases/download/v3.9/thingsboard-3.9.rpm

将ThingsBoard安装为服务:

bash

复制

sudo rpm -Uvh thingsboard-3.9.rpm

步骤3. 配置ThingsBoard数据库

ThingsBoard能够使用SQL或混合数据库方法。有关更多详细信息,请参阅相应的架构页面。

ThingsBoard团队建议在开发和生产环境中使用PostgreSQL,适用于合理负载(< 5000条消息/秒)。许多云供应商支持托管的PostgreSQL服务器,这是大多数ThingsBoard实例的经济高效解决方案。

PostgreSQL安装
PostgreSQL Installation Guide

以下说明将帮助您安装PostgreSQL。

bash

复制

# 更新系统
sudo yum update

备注:
实际安装没有执行。

安装存储库。

对于CentOS/RHEL 8:

bash

复制

# 安装存储库RPM:
sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装包:

bash

复制

# 安装包
sudo dnf -qy module disable postgresql
sudo dnf -y install postgresql16 postgresql16-server postgresql16-contrib
# 初始化PostgreSQL数据库
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl start postgresql-16
# 可选:配置PostgreSQL开机启动
sudo systemctl enable --now postgresql-16

安装PostgreSQL后,您可能希望创建一个新用户或为主用户设置密码。以下说明将帮助您为PostgreSQL主用户设置密码。

切换到postgres用户:

bash

复制

sudo su - postgres

要与PostgreSQL数据库交互,请输入:

bash

复制

psql

您将以PostgreSQL主用户身份连接到数据库。要设置密码,请在postgres=#后输入以下命令:

bash

复制

\password

输入并确认密码。然后,按“Ctrl+D”返回主用户控制台。

配置密码后,连接到数据库以创建thingsboard数据库:

bash

复制

psql -U postgres -d postgres -h 127.0.0.1 -W

执行创建数据库语句:

sql

复制

CREATE DATABASE thingsboard;

然后,按“Ctrl+D”两次退出PostgreSQL。


ThingsBoard配置

编辑ThingsBoard配置文件:

bash

复制

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

将以下行添加到配置文件中。不要忘记将“PUT_YOUR_POSTGRESQL_PASSWORD_HERE”替换为您的真实PostgreSQL用户密码:

bash

复制

# DB配置
export DATABASE_TS_TYPE=sql
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE
# 指定时间戳键值存储的分区大小。允许的值:DAYS, MONTHS, YEARS, INDEFINITE。
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS

步骤4. 选择ThingsBoard队列服务

ThingsBoard能够使用各种消息系统/代理来存储消息并在ThingsBoard服务之间进行通信。如何选择合适的队列实现?

  • 内存队列:内置并默认启用。适用于开发(PoC)环境,不适合生产部署或任何类型的集群部署。

  • Kafka:推荐用于生产部署。大多数ThingsBoard生产环境现在都使用此队列。适用于本地和私有云部署。如果您希望独立于云提供商,这也很有用。但是,一些提供商也提供Kafka的托管服务。例如,参见AWS MSK。

  • RabbitMQ:如果您没有太多负载并且您已经对此消息系统有经验,则推荐使用。

  • AWS SQS:AWS提供的完全托管的消息队列服务。如果您计划在AWS上部署ThingsBoard,则很有用。

  • Google Pub/Sub:Google提供的完全托管的消息队列服务。如果您计划在Google Cloud上部署ThingsBoard,则很有用。

  • Azure Service Bus:Azure提供的完全托管的消息队列服务。如果您计划在Azure上部署ThingsBoard,则很有用。

  • Confluent Cloud:基于Kafka的完全托管流平台。适用于云无关的部署。

有关更多详细信息,请参阅相应的架构页面和规则引擎页面。


步骤5. [可选] 为慢速机器(4GB内存)更新内存

编辑ThingsBoard配置文件:

bash

复制

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

将以下行添加到配置文件中:

bash

复制

# 更新ThingsBoard内存使用并限制为2G
export JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G"

备注:
实际安装没有改动。官方文档是添加,不是修改。不是慢机器,应该不用修改。


步骤6. 运行安装脚本

一旦ThingsBoard服务安装完毕并且数据库配置已更新,您可以执行以下脚本:

bash

复制

# --loadDemo选项将加载演示数据:用户、设备、资产、规则、小部件。
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

步骤7. 启动ThingsBoard服务

ThingsBoard UI默认在8080端口上可访问。确保您的8080端口可以通过防火墙访问。要打开8080端口,请执行以下命令:

bash

复制

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

执行以下命令以启动ThingsBoard:

bash

复制

sudo service thingsboard start

启动后,您可以使用以下链接打开Web UI:
http://localhost:8080/

如果您在执行安装脚本时指定了--loadDemo,则可以使用以下默认凭据:

  • 系统管理员:sysadmin@thingsboard.org / sysadmin

  • 租户管理员:tenant@thingsboard.org / tenant

  • 客户用户:customer@thingsboard.org / customer

您始终可以在帐户配置文件页面更改每个帐户的密码。

对于1-2个CPU或1-2GB RAM的慢速机器,请允许Web UI最多90秒启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python GUI 开发 | PySide6 辅助工具简介

关注这个框架的其他相关笔记&#xff1a;Python GUI 开发 | PySide6 & PyQt6 学习手册-CSDN博客 在上一章中&#xff0c;我们介绍了如何搭建 PySide6 & PyQt6 的开发环境。在搭建环境的时候我们配置了几个几个快捷工具&#xff0c;很多小伙伴可能都不知道是干啥用的。那…

hive:数据导入,数据导出,加载数据到Hive,复制表结构

hive不建议用insert,因为Hive是建立在Hadoop之上的数据仓库工具&#xff0c;主要用于批处理和大数据分析&#xff0c;而不是为OLTP&#xff08;在线事务处理&#xff09;操作设计的。INSERT操作会非常慢 数据导入 命令行界面:建一个文件 查询数据>>复制>>粘贴到新…

HarmonyOS:ForEach:循环渲染

一、前言 ForEach接口基于数组类型数据来进行循环渲染&#xff0c;需要与容器组件配合使用&#xff0c;且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如&#xff0c;ListItem组件要求ForEach的父容器组件必须为List组件。 API参数说明见&#xff1a;ForEa…

cc算法总结

Vegas&#xff1a;基于延迟。是一种tcp拥塞避免算法&#xff0c;强调延迟而不是丢包来作为发送速率调整的依据。诞生于1994年。 Reno&#xff1a;基于丢包。 NewReno:基于丢包。 loss-based、delay-based、hybrid-based、congestion-based、learning-based。 基于丢包类型&…

基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)

一、引言 1.1研究目标与内容 本研究旨在构建一个基于 PostgreSQL 的自然语义解析电子病历编程体系,实现从电子病历文本中提取结构化信息,并将其存储于 PostgreSQL 数据库中,以支持高效的查询和分析。具体研究内容包括: 电子病历的预处理与自然语言处理:对电子病历文本进…

安装 docker 详解

在平常的开发工作中&#xff0c;我们经常需要部署项目。随着 Docker 容器的出现&#xff0c;大大提高了部署效率。Docker 容器包含了应用程序运行所需的所有依赖&#xff0c;避免了换环境运行问题。可以在短时间内创建、启动和停止容器&#xff0c;大大提高了应用的部署速度&am…

运用python爬虫爬取汽车网站图片并下载,几个汽车网站的示例参考

当然&#xff0c;以下是一些常见的汽车网站及其爬虫示例代码&#xff0c;展示如何爬取汽车图片并下载。请注意&#xff0c;爬取网站内容时应遵守网站的使用协议和法律法规&#xff0c;避免对网站造成不必要的负担。 示例1&#xff1a;爬取汽车之家图片 网站地址 汽车之家 爬…

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;一般用于序列数据预测&#xff0c;这个可以很好的挖掘数据上下文信息&#xff0c;本文将使用LSTM进行糖尿病…

初阶1 入门

本章重点 C的关键字命名空间C的输入输出缺省参数函数重载引用内联函数auto关键字基于范围的for循环指针的空值nullptr 1.C的关键字 c总共有63个关键字&#xff0c;其中包含c语言的32个 这些关键字不需要特意去记&#xff0c;在我们日后写代码的过程中会慢慢用到并记住。 2.…

自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

在 TensorFlow 中实现逻辑回归、保存模型并加载模型进行预测的过程可以分为以下几个步骤&#xff1a; 准备数据&#xff1a;创建或加载你的自定义数据集。构建逻辑回归模型。训练模型。保存模型。加载模型。使用加载的模型进行预测。 import tensorflow as tf import numpy as…

蓝桥杯LQ1044 求完数

题目描述 因子&#xff1a;因子也叫因数&#xff0c;例如3515&#xff0c;那么3和5是15的因子。 同时15115&#xff0c;那么1和15也是15的因子。 1&#xff0c;3&#xff0c;5&#xff0c;15 这四个因子是15的所有因子。 完数&#xff1a;如果一个数等于不含它本身的其他因子之…

动态规划DP 数字三角形模型(模型分析+例题分析+C++代码实现)(数字三角形、摘花生、最低通行费用、方格取数、传纸条)

总体概览 数字三角形 原题链接 AcWing 898.数字三角形 题目描述 给定一个如下图所示的数字三角形&#xff0c;从顶部出发&#xff0c;在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点&#xff0c;一直走到底层&#xff0c;要求找出一条路径&#xff0c;使路…

人工智能在计算机视觉中的应用与创新发展研究

一、引言 1.1 研究背景与意义 1.1.1 研究背景 在当今数字化与智能化飞速发展的时代&#xff0c;人工智能已成为推动各领域变革的核心力量&#xff0c;而计算机视觉作为人工智能领域中极具活力与潜力的重要分支&#xff0c;正发挥着日益关键的作用。计算机视觉旨在赋予计算机…

C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…

度小满前端面试题及参考答案

<form>标签使用过哪些 tag? <form>标签中常使用的标签有很多。 <input>:这是最常用的标签之一,用于创建各种类型的输入字段,如文本框、密码框、单选按钮、复选框、文件上传框等。通过设置type属性来指定输入类型,例如type="text"创建文本输入…

力扣hot100链表总结-day0127

目录 206.反转链表&#xff08;0127&#xff09; 19.删除链表的倒数第N个节点&#xff08;0127&#xff09; 206.反转链表&#xff08;0127&#xff09; 总结&#xff1a; 1.迭代实现&#xff1a;将给出的头节点head固定&#xff0c;始终把head的下一个节点给安装成新头节点…

安宝特方案 | AR在供应链管理中的应用:提升效率与透明度

随着全球化的不断深入和市场需求的快速变化&#xff0c;企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本&#xff0c;并确保信息的透明度&#xff0c;成为了各大行业亟待解决的问题。而增强现实&#xff08;AR&#xff09;技术&#xff0c;特别…

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲望求出最短的路径&#xff0c;先可以记录一个变量minDepth&#xff0c;同时记录每次当前节点所在的层数currentDepth 2.在递的过程中&#xff0c;每次递一层&#xff0c;也即使当前又往下走…

python -m pip和pip的主要区别

python -m pip和pip的主要区别在于它们与Python环境的关联方式和安装路径。‌ ‌与Python环境的关联方式‌&#xff1a; pip 是直接使用命令行工具来安装Python包&#xff0c;不指定特定的Python解释器。如果系统中存在多个Python版本&#xff0c;可能会导致安装的包被安装到…

RHEL封闭环境部署zabbix

背景&#xff1a;client端操作系统升级.然后安装了该操作系统基础版本的zabbix-client&#xff0c;与原来的zabbix-server版本不匹配&#xff0c;需要重新部署一台zabbix-server zabbix-server GUI上该client采集不到系统数据 说明&#xff1a;下文的 x.x.x.x 代表服务端的IP…