Thingsboard开源物联网平台智慧农业实例快速部署教程(三)【源码部署及logo更换】

news2024/12/23 10:22:58

Thingsboard源码安装并更换logo

文章目录

  • Thingsboard源码安装并更换logo
    • 1. 源码拉取
    • 2. 导入项目
    • 3. 项目编译
    • 4. 项目启动
    • 5. 修改logo
    • 6. 部署(rpm deb方式)

1. 源码拉取

本教程按照3.4发行版本行进

git clone https://github.com/thingsboard/thingsboard.git
git checkout release-3.4

在这里插入图片描述

2. 导入项目

打开IEDA(Jetbrains系列产品),以打开pom文件的方式导入项目

在拉取的项目中有若干pom文件,选择项目源码根目录下的pom.xml进行导入

在这里插入图片描述

设置maven

在这里插入图片描述

根据读者本地环境设置maven环境,建议换用国内源,否则包下载较慢。

在这里插入图片描述

笔者主要配置如下:

配置文件路径E:\maven-java\apache-maven-3.6.0-bin\apache-maven-3.6.0\conf

<localRepository>D:\maven-java\maven_repository</localRepository>
 <mirrors>
    <mirror>  
   		<id>nexus-aliyun</id>  
   		<mirrorOf>central</mirrorOf>    
   		<name>Nexus aliyun</name>  
   		<url>https://maven.aliyun.com/repository/public</url>  
   	</mirror> 
 </mirrors>

3. 项目编译

前置条件,项目需要本机有node和postgresql的环境。

postgresql安装过程参考:

windows下postgreSQL安装与启动 - 三月老泉 - 博客园 (cnblogs.com)

node安装笔者使用的较新的v18.15.0,但是笔者建议使用v16.15,对于thingsboard的适配会更好。

在这里插入图片描述

thingsboard的包管理方式变成了yarn,需要安装yarn,笔者版本为1.22.4

在这里插入图片描述

npm install -g yarn

安装后记得将pom文件中的插件版本对应修改,模块分别有

在这里插入图片描述

修改内容均为(请读者按自己的环境定参)

在这里插入图片描述

项目编译

为了节省时间,将licsen检查的插件注释,跳过

在这里插入图片描述

在IDEA中使用终端打开到根目录,使用如下两个命令

# node 最新版本的ssl是严格检查的,容易在下包的过程中出现超时问题
set NODE_OPTIONS=--openssl-legacy-provider
# 使用maven编译安装
mvn clean install -DskipTests

报错集合

common.msg.gen.*

在这里插入图片描述

缺少common.msg.gen.*,意味着下载的包不完整

查看maven的报错是SSL验证超时

在这里插入图片描述

报错信息简抽

ui-ngx: Failed to run task: 'yarn install' failed. org.apache.commons.exec.ExecuteException: Process exited with a

使用yarn config list查看,发现的新版的yarn是严格检查ssl的

在这里插入图片描述

# 严格检查SSL关闭设置
yarn config set strict-ssl false

设置完仍然会出现安装的超时报错,考虑外网问题,报错的包地址为https://github.com/MichaelZinsmaier/CurvedLines.git

全局搜索定位到了其package.json

使用代理的方式修改github地址,即项目地址前拼接https://ghproxy.com/

在这里插入图片描述

yarn.lock也修改一下(路径在thingsboard/ui-ngx/yarn.lock

在这里插入图片描述

在这里插入图片描述

digital envelop routines::unspported

在这里插入图片描述

原因

出现这个错误是因为 node.js V17版本+最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

参考 Vue 报错error:0308010C:digital envelope routines::unsupported_柠檬果子青的博客-CSDN博客

推荐使用方法三,否则会一直修改临时配置

set NODE_OPTIONS=--openssl-legacy-provider

Not found in remote cache

在这里插入图片描述

pkg打包原理性文章参考一处打包,到处运行,用pkg打包nodejs应用! - 亚楠老猎人 - 博客园 (cnblogs.com)

原因:本地缺少fetched-v16.15.0-win-x64这个文件

下载链接

Releases · vercel/pkg-fetch (github.com)

找v3.4,v3.5没有16.15对应的文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将缺少文件复制到User目录下的.pkg-cache中

在这里插入图片描述

在这里插入图片描述

重命名为fetched-v16.15.0-win-x64

在这里插入图片描述

最终编译成功

在这里插入图片描述

4. 项目启动

修改必要配置文件

项目根目录下的thingsboard/application/src/main/resources下有个thingsboard.yml

在这里插入图片描述

项目运行,启动E:\gitCloneZone\thingsboard\application\src\main\java\org\thingsboard\server\ThingsboardServerApplication.java的spring启动类ThingsboardServerApplication

在这里插入图片描述

在这里插入图片描述

启动成功

在这里插入图片描述

访问本机localhost:8080登录默认系统账户sysadmin@thingsboard.org(密码为sysadmin)即可使用

5. 修改logo

首先要定位logo在源码中的位置

与logo有关的源码位置

在这里插入图片描述

路径分别为

thingsboard/ui-ngx/src/environments
thingsboard/ui-ngx/src/app/modules/home
thingsboard/ui-ngx/src/app/shared/compoents

文件已经在上图中列出

environment.prod.ts

记得编码格式也对应修改,appTitle为标题

在这里插入图片描述

environments.ts

在这里插入图片描述

logo操作的图片是svg矢量图,我们需要将自定义的logo转换成矢量图,这种教程很多,请读者自行调查。

需要操作的logo图在ui-ngx模块下。其中,在浏览器页签上显示的为thingsboard.ico,其为ico图标,网上也有很多转换为ico图标的工具。在登录页面和thingsboard后台的左上角的logo即为svg矢量图,存放在ui-ngx的src下的assets下,命名为logo_title_white.svg,打开该图像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neHsZeVW-在这里插入图片描述

在这里插入图片描述

可以看到,其为分辨率1543$\times$320,那么我们制作的svg矢量图也应该是这个分辨率的图片。

实测分辨率替换为相同分辨率图片的时候,然后会出现logo显示不规整的情况。所以,我们替换图片之后仍然需要去控制台手动调样式以适应我们自己的感官。

在这里插入图片描述

后台亦是如此

在这里插入图片描述

可以看到,logo的样式均为tb-logo-title,当我们调好合适的参数之后可以修改样式

登录页的logo样式:logo.component.scss(将参数修改为自己矢量图合适的样式参数)

:host-context(.login-logo) {
  img.tb-logo-title {
    width: 280px;
    height: 60px;
    text-decoration: none;
    cursor: pointer;
    border: none;
    transform: none;

    &:focus {
      outline: 0;
    }
  }
}

后台导航栏的logo样式:home.component.scss

& > div {
          height: 64px;
          .tb-logo-title {
            width: auto;
            max-width: 100%;
            height: 36px;
            max-height: 100%;
            margin: auto;
          }
        }

其中我们的logo点击会跳转官网首页,这一部分在ts文件中修改

logo.compoent.ts(修改https://thingsboard.io为自己指定的地址)

export class LogoComponent {

  logo = 'assets/logo_title_white.svg';

  gotoThingsboard(): void {
    window.open('https://thingsboard.io', '_blank');
  }

}

ico图标文件替换之后即生效

在这里插入图片描述

改动文件汇总:

在这里插入图片描述

6. 部署(rpm deb方式)

本章的前提是数据库等已存在并非一个空白服务器,空白服务器请参照笔者的前两篇博客进行基础环境的部署。

请参考《ThingsBoard开源物联网平台智慧农业实例快速部署教程(Ubuntu、CentOS适用)》

《Thingsboard开源物联网平台智慧农业实例快速部署教程(二)【手把手部署UI与动态数据】

编译成功之后在application模块下会产生target目录,该目录下会留存生成的包。

在这里插入图片描述

我们将rpm包或者deb包送入对应的服务中,按照如下操作流程进行。

redhat及分支如redhat,centos,Fedora等

# 停掉原本的thingsboard服务
systemctl stop thingsboard.service
# 卸载原有thingsboard
rpm -e thingsboard
# 安装新导入的包
sudo rpm -Uvh thingsboard.rpm
# 修改配置文件
sudo vim /etc/thingsboard/conf/thingsboard.conf
# 重启服务
systemctl daemon-reload
systemctl restart thingsboard.service

debian及分支如debian,ubuntu等

# 停掉原本的thingsboard服务
sudo systemctl stop thingsboard.service
# 卸载原有thingsboard
sudo dpkg -r thingsboard
# 安装新导入的包
sudo dpkg -i thingsboard.deb
# 修改配置文件
sudo vim /etc/thingsboard/conf/thingsboard.conf
# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart thingsboard.service

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

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

相关文章

深入拆解 Java 虚拟机-打卡|01 | Java代码是怎么运行的?

文章目录Java代码是怎么运行的&#xff1f;几个为什么为什么在虚拟机中运行&#xff1f;Java 虚拟机具体又是怎样运行 Java 代码的呢?Java虚拟机的运行效率怎么样&#xff1f;总结Java代码是怎么运行的&#xff1f; 来来来&#xff0c;运行个"Hello word !“告诉我是怎么…

免费的VR全景网站是什么?免费VR全景网站有什么用?

虚拟现实&#xff08;VR&#xff09;技术的应用日益广泛&#xff0c;尤其是在旅游、教育等领域。免费VR全景网站是一个新兴的平台&#xff0c;为用户提供了一个全新的探索未知世界的方式。 一、介绍免费VR全景网站的特点 1.全景视角 免费VR全景网站提供了360度全景视角&#…

Spring事务原理、隔离性

1、什么是事务 事务是指将一系列数据操作捆绑成为一个整体进行统一管理&#xff0c;如果某一事务执行成功&#xff0c;则在该事物中进行的所有数据更改均会提交&#xff0c;成为数据库中的永久组成部分&#xff1b;如果事务执行时遇到错误且必须取消或回滚&#xff0c;则数据将…

Vue3页面内跳转锚点-scrollIntoView()

scrollIntoView&#xff08;&#xff09; scrollIntoView()方法将调用它的元素滚动到浏览器窗口的可见区域。 element.scrollIntoView&#xff08;&#xff09;; // 等同于element.scrollIntoView(true)element.scrollIntoView&#xff08;alignToTop&#xff09;; //布尔参…

数据结构-树与二叉树

文章目录5.1 树的基本概念5.1.1 树的定义5.1.2 基本术语5.1.3 树的性质5.2 二叉树的概念5.2.1 二叉树的定义及其主要特性5.2.2 二叉树的存储结构5.3 二叉树的遍历和线索二叉树5.3.3 二叉树的遍历5.3.2 线索二叉树5.4 树、森林5.4.1 树的存储结构5.4.2 树、森林、二叉树的转换5.…

Linux学习笔记——HTTP协议

文章目录前言HTTP协议的概念URLurlencode和urldecodeHTTP协议格式HTTP协议版本HTTP协议请求方法GET方法——获取资源POST方法——获取资源PUT方法——传输⽂件PUT方法——获得报文首部在这里插入图片描述DELETE方法——删除文件OPTIONS方法——询问支持的方法HTTP的状态码HTTP常…

050:cesium加载mapbox卫星地图、mapbox地形地图

第050个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载mapbox卫星地图、mapbox地形地图。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共79行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设…

【CE】图形化作弊教程通关手册(超真实的游戏体验)

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 第一关翻译操作总结2️⃣ 第二关&#xff08;代码共享&#xff09;翻译操作验证3️⃣ 第三关翻译操作总结&#x1f6ec; 文章小结&#x1f4d6; 参考资料&#x1f6eb; 导读 需求 除了Tutorial-x86_64.exe教程外&#xff0c;CE…

算法,离你并不遥远

算法&#xff0c;离你并不遥远引子什么是算法&#xff1f;为什么算法很重要&#xff1f;什么时候开始学算法&#xff1f;狭隘的算法定义算法从现在学起&#xff0c;从现在用起算法永不过时引子 今天又是搬砖摸鱼胡混的一天&#xff0c;在问答闲逛&#xff0c;看到了一个问答&a…

Linux多线程-2

“我是我境遇里的起步者。” -- 里尔克《布里格手记》 在上一节Linux多线程当中&#xff0c;我们讲述了Linux中线程的概念以及线程的控制内容。这一篇博客承接上次内容&#xff0c;我们来对线程安全进行阐述。 目录 1.线程安全 1.1互斥的实现 1.1.1互斥锁实现互斥 1.1.2互…

启动 Ethereum(上海) 主网全节点

问题描述 采用最新的geth版本之后&#xff0c;按照之前的方法启动geth主网节点会出现如下问题&#xff1a; Post-merge network, but no beacon client seen. Please launch one to follow the chain!问题原因 The above message is emitted when Geth is run without a conse…

PyTorch深度学习实战 | 神经网络的优化难题

即使我们可以利用反向传播来进行优化&#xff0c;但是训练过程中仍然会出现一系列的问题&#xff0c;比如鞍点、病态条件、梯度消失和梯度爆炸&#xff0c;对此我们首先提出了小批量随机梯度下降&#xff0c;并且基于批量随机梯度下降的不稳定的特点&#xff0c;继续对其做出方…

SpringBoot集成Dubbo启用gRPC协议

文章目录前言项目结构代码示例父工程api moduleservice module注意事项区别本文记录下SpringBoot集成Dubbo启用gRPC协议&#xff0c;以及与原生 gRPC 在代码编写过程中的区别。 下面还有投票&#xff0c;帮忙投个票&#x1f44d; 前言 Dubbo 在 2.7.5 版本开始支持原生 gRPC 协…

【软件测试】浅了解什么是软件测试及开发测试模型

目录 1.什么是软件测试&#xff1f; 2.什么是需求&#xff1f; 3.什么是测试用例 4.什么是软件错误&#xff08;bug&#xff09;&#xff1f; 5.开发模型和测试模型 5.1软件的生命周期 5.2瀑布模型 5.3螺旋模型 5.4软件测试V模型 5.5软件测试w模型 6.软件测试的生命周…

Redis第二十九讲 Redis集群发布订阅模式以及Redis集群事务

Redis集群状态下的发布订阅 在Redis的几个基本数据结构介绍中,有讲过List数据结构,可以使用List的阻塞特性实现订阅消费,关于Redis的底层数据结构可以参考我的这篇博客:Redis第六讲 Redis之List底层数据结构实现 底层数据结构基本操作可以看我的这篇博客,Redis第十五讲 R…

【从零到Offer】- 泛型

泛型是个啥 ​ Java 泛型是 JDK 5 中引入的一个新特性&#xff0c;其提供了编译时类型安全检测机制&#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。 ​ 通过将数据类型参数化&#xf…

用opencv+playwright过滑动验证码

目录 梳理思路 编写代码 总结与提高 在本节&#xff0c;我们将使用opencv和playwright这两个库通过QQ空间的滑动验证码。 梳理思路 1. 使用playwright打开浏览器&#xff0c;访问qq空间登录页面。 2. 点击密码登录。 3. 输入账号密码并点击登录。 4. 出现滑动验证码图片后…

大型语言模型综述,非常详细,格局打开!A Survey of Large Language Models

大型语言模型综述&#xff0c;非常详细&#xff0c;格局打开&#xff01;A Survey of Large Language Models 返回论文和资料目录 论文地址 项目地址 1.导读 讲得通俗易懂&#xff0c;且格局拉满&#xff01;基本覆盖了自ChatGPT以来的AI比较火的事件&#xff0c;还多次提到…

AI 模型首次有了国家标准!头部大厂参与编制,辐射 AMD

3月17日&#xff0c;国内首个面向人工智能生成式模型的国家标准正式公开&#xff0c;并向社会征求意见。 该标准全称为《信息技术神经网络表示与模型压缩第一部分&#xff1a;卷积神经网络》 &#xff08;GB&#xff0f;T 42382&#xff0e;1&#xff0d;2023&a…

【Linux系统下安装JDK】

一&#xff0c;linux下载JDK最方便快捷的方式&#xff1a;yum 1&#xff0c;执行下方命令&#xff0c;查看可安装java版本。 yum -y list java*2&#xff0c;选择一个进行安装&#xff0c;带-devel的安装的是jdk&#xff0c;而不带-devel的安装的是jre 3&#xff0c;安装命令…