在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秒启动。
相关文章:
在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9
在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装 备注: 适用于单节点 是否支持欧拉??? 前提条件 本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单…...

linux通过deb包安装(命令模式)
通过下载deb包安装Chrome浏览器 - lyy19s Wikihttps://lyy1119.github.io/%E8%BD%AF%E4%BB%B6%E4%BD%BF%E7%94%A8/Linux/InstallChrome/...
「Unity3D」在Unity中使用C#控制显示Android的状态栏
Unity打包的Android默认都是全屏,如果想要在真机上显示状态栏,就需要额外设置,有两种方式: 第一种,使用Android的Java代码去控制,然后以插件的方式放到Unity中,被C#调用。第二种,使…...
LLM评估优化与新技术创新综述
标题:LLM评估优化与新技术创新综述 文章信息摘要: LLM评估与优化需要采用多维度方法,包括自动基准测试、人工评估和模型自评估。RAG技术通过结合外部知识库提升模型表现,量化技术则通过降低参数精度优化资源消耗。新兴技术如模型…...
【Git】使用笔记总结
目录 概述安装Git注册GitHub配置Git常用命令常见场景1. 修改文件2. 版本回退3. 分支管理 常见问题1. git add [中文文件夹] 无法显示中文问题2. git add [文件夹] 文件名中含有空格3. git add 触发 LF 回车换行警告4. git push 提示不存在 Origin 仓库5. Git与GitHub中默认分支…...

ZZNUOJ(C/C++)基础练习1000——1010(详解版)
目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…...
搜狐Android开发(安卓)面试题及参考答案
ViewModel 的作用及原理是什么? ViewModel 是 Android 架构组件中的一部分,主要作用是在 MVVM 架构中充当数据与视图之间的桥梁。它负责为视图准备数据,并处理与数据相关的业务逻辑,让视图(Activity、Fragment 等)专注于展示数据和与用户交互。比如在一个新闻应用中,Vie…...

WPS数据分析000007
目录 一、分列 智能分列 出生日期 数值转换 公式不运算 二、数据对比 离职员工 新入职员工 都在职的员工 三、合并计算 四、拆分表格 合并表格 一、分列 智能分列 出生日期 数据求和 文本型数字左对齐;数值型数字右对齐 数值转换 方式一: 方…...

SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门
前言 在分布式系统中,雪崩效应(Avalanche Effect)是一种常见的故障现象,通常发生在系统中某个组件出现故障时,导致其他组件级联失败,最终引发整个系统的崩溃。为了有效应对雪崩效应,服务保护方…...
把markdown转换为pdf的方法
将 Markdown 文件转换为 PDF 有多种方法,以下是几种常见的方式: 1. 使用 VS Code 和 Markdown 插件 VS Code 是一款流行的代码编辑器,支持通过插件将 Markdown 转换为 PDF。 步骤: 安装 VS Code: 下载地址ÿ…...

Controller 层优化四步曲
Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...

Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)
title: ‘Python数据分析:Python语法基础,IPython和Jupyter Notebooks(二)’ tags: python数据分析 categories:python数据分析 keywords:python数据分析 cover: …/img/404_icecream_whale.png description: 本文介绍python的基础语法和jup…...
Nginx 开发总结
文章目录 1. Nginx 基础概念1-1、什么是 Nginx1-2、Nginx 的工作原理1-3、Nginx 的核心特点1-4、Nginx 的常见应用场景1-5、Nginx 与 Apache 的区别1-6、 Nginx 配置的基本结构1-7、Nginx 常见指令 2. Nginx 配置基础2-1、Nginx 配置文件结构2-2、全局配置 (Global Block)2-3、…...

centos7安装SVN
[rootVM-16-3-centos ~]# yum install subversion -y [rootVM-16-3-centos ~]# svnserve --version // 创建目录 [rootVM-16-3-centos ~]# mkdir -p /opt/svn/repos // 创建新的空版本库,执行后会在repos文件夹下建立多个文件,待修改 [rootVM-16-3-cento…...

LTV预估 | 多视角对比学习框架CMLTV
😄 cmltv的loss好多哟,花样好多哟~ 文章目录 1 精简总结2 背景&挑战3 方法4 实验 ✅【arxiv-2023 华为 CMLTV】《Contrastive Multi-view Framework for Customer Lifetime Value Prediction》 论文链接: https://arxiv.or…...
llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2
llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2 1. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK22. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK23. struct ggml_cgraph * build_deepseek() and struct ggml_cgraph * build_deepseek2()References 不宜吹捧中国大语言模型的同…...

C语言自定义数据类型详解(二)——结构体类型(下)
书接上回,前面我们已经给大家介绍了如何去声明和创建一个结构体,如何初始化结构体变量等这些关于结构体的基础知识。下面我们将继续给大家介绍和结构体有关的知识: 今天的主题是:结构体大小的计算并简单了解一下位段的相关知识。…...

DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?
我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型,娜姐昨天分析了关于论文润色、中译英的详细效果测评: DeepSeek学术写作测评第一弹:论文润色&#…...
深入理解 Python 中的 `__all__`:控制模块的公共接口
在 Python 编程中,模块化设计是构建可维护和可扩展代码的关键。模块不仅帮助我们组织代码,还能通过隐藏实现细节来提高代码的可读性和安全性。Python 提供了多种机制来控制模块的可见性,其中 __all__ 是一个非常重要但常被忽视的特性。本文将…...
虚幻基础07:蓝图接口
能帮到你的话,就给个赞吧 😘 文章目录 作用原理事件函数 作用 实现对象间的通知。 A 通知 B 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...