在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 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...