ThingsBoard(3)(编译和运行)

1 编译

官方文档:Building from sources | ThingsBoard Community Edition

1.1 基本环境和流程

安装 JDK 17+

安装 Node.js 和 Angular CLI(前端编译)

数据库:PostgreSQL 或 Cassandra(默认支持 PostgreSQL)

代码必须要git直接拉,如果不是编译不过。。。

git clone https://github.com/thingsboard/thingsboard.git
cd thingsboard

构建后端

mvn clean install -DskipTests
构建前端

cd ui-ngx
npm install
npm run build
 

1.2 编译

遇到的问题和之前yotco很类似,最大就是墙内墙外的问题。

1.2.1 maven下载慢

修改~/.m2/settings.xml,换成国内镜像。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">

  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>central</mirrorOf>
      <name>Aliyun Maven</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    <mirror>
      <id>tencent</id>
      <mirrorOf>central</mirrorOf>
      <name>Tencent Maven</name>
      <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
    </mirror>
  </mirrors>

</settings>

1.2.2 无法下载gradle-7.3.3-bin.zip

 [ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke (default) on project edqs: org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-7.3.3-bin.zip'. -> [Help 1]

手动下载https://services.gradle.org/distributions/gradle-7.3.3-bin.zip,拷贝到~/.gradle/wrapper/dists/gradle-7.3.3-bin/xxxxxxx

xxxxxxx是下载系统随机创建的文件夹

1.2.3 前端下载加速

[INFO] Downloading https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-x64.tar.gz to /home/tom/.m2/repository/com/github/eirslett/node/20.18.0/node-20.18.0-linux-x64.tar.gz
[INFO] No proxies configured
[INFO] No proxy was configured, downloading directly

NPM_CONFIG_REGISTRY=https://registry.npmmirror.com \
YARN_DOWNLOAD_ROOT=https://registry.npmmirror.com/yarn \
NODEJS_DOWNLOAD_ROOT=https://npmmirror.com/mirrors/node \
mvn clean install -DskipTests
 

yarn这一步的时候也经常超时。

yarn install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network

yarn config set registry https://registry.npmmirror.com

用yarn config get registry来验证。

yarn这个工具在ubuntu下面有两个,还有一个是apt install cmdtest,这个不对。要使用

npm install -g yarn安装。

1.2.4 前端编译报错

如果单独编译前端时报错:

npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/thingsboard/flot.git
npm ERR! git@github.com: Permission denied (publickey).

直接nano ~/.npmrc

增加git+ssh://git@github.com/:git+https://github.com/

再重新npm install

1.2.5  frontend-maven-plugin:1.12.0:yarn (yarn pkg) @ web-ui报错

基本就是这样的信息:

[INFO] --- frontend-maven-plugin:1.12.0:yarn (yarn pkg) @ web-ui ---
[INFO] Running 'yarn run pkg' in /home/hp/thingsboard/thingsboard/msa/web-ui
[INFO] yarn run v1.22.22
[INFO] $ tsc && pkg -t node18-linux-x64,node18-win-x64 --out-path ./target ./target/src && node install.js
[INFO] > pkg@5.8.1
[INFO] > Fetching base Node.js binaries to PKG_CACHE_PATH

下载NodeJS安装包,但是运行这个超时。这个是下载github的包,取决于网络环境,在家里移动的宽带就没问题,但是在办公室电信的宽带就速度很慢死活没法下载,最后超时报错。

解决的办法就是自己手动下载:

wget https://github.com/vercel/pkg-fetch/releases/download/v3.4/node-v18.5.0-linux-x64
wget https://github.com/vercel/pkg-fetch/releases/download/v3.4/node-v18.5.0-win-x64

之后拷贝到默认的.pkg-cache/v3.4/

改名为

fetched-v18.5.0-linux-x64
fetched-v18.5.0-win-x64

这样就可以通过了。

1.3 编译完成

大概耗时1个小时,之后就能编过了。

 最后的生成物如下:

参考:

thingsboard 源码搭建过程_failed to execute goal org.thingsboard:gradle-mave-CSDN博客

ThingBoard编译问题记录_failed to execute goal org.thingsboard:gradle-mave-CSDN博客

2 运行

运行应该是两种方式,一种是jar包直接运行,一种是docker。

2.1 docker运行

docker的话就是这三个命令。在docker/文件夹

docker-compose -f docker-compose.yml -f docker-compose.postgres.yml down -v
docker-compose -f docker-compose.yml -f docker-compose.postgres.yml up -d
docker-compose -f docker-compose.yml -f docker-compose.postgres.yml ps

在中间core要报错,必须增加几个文件夹。

./tb-node/

./tb-transports

大概是这几个,但是有一个tb-js-executor还是死活报错,查一下大概是集群的原因。算了,暂时先放弃吧。

2.2 直接运行jar

编译的生成物是thingsboard/application/target/thingsboard-4.2.0-SNAPSHOT-boot.jar

可以直接运行:

java -jar thingsboard-4.2.0-SNAPSHOT-boot.jar

但是运行中也非常多报错。都基本上和数据库有关。这部分官方好像也没有太详细的手册。

首先还是参考官方文档:Installing ThingsBoard CE on Ubuntu Server | ThingsBoard Community Edition

首先是安装PostgreSQL数据库。

默认的配置是这样的。thingsboard/application/src/main/resources/thingsboard.yml

datasource:
    # Database driver for Spring JPA - org.postgresql.Driver
    driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
    # Database connection URL
    url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
    # Database user name
    username: "${SPRING_DATASOURCE_USERNAME:postgres}"
    # Database user password
    password: "${SPRING_DATASOURCE_PASSWORD:postgres}"

不过默认安装完是没有密码的,要手动设置密码。

hp@DESKTOP-430500P:~/thingsboard/thingsboard/application/target/bin/install$ sudo -u postgres psql
psql (16.9 (Ubuntu 16.9-0ubuntu0.24.04.1))
Type "help" for help.

postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:

之后还要手动新增一个表。

hp@DESKTOP-430500P:~/thingsboard/thingsboard/application/target/bin/install$ sudo -u postgres psql
psql (16.9 (Ubuntu 16.9-0ubuntu0.24.04.1))
Type "help" for help.

postgres=# CREATE DATABASE thingsboard;
CREATE DATABASE
postgres=# \q

不过安装了数据库之后,死活说defaultMailService不对。

这个问题我查了很久,后面才知道是数据库的初始化没做。但是初始化这一步和官网是不同的。因为自己编译的版本是没有/usr/share/thingsboard/bin/install/install.sh这个文件。而且编译的版本怎么弄是找不到说明。。。

搞了很久,最后发现可以用的初始化脚本是在thingsboard/application/target/bin/install。执行install_dev_db.sh 这个是可以的。用install.sh --loadDemo反而会报错。。。(好像是要专门创建一个thingsboard用户才行)

执行这个还有一个注意的,它莫名其妙的要用8080端口,所以要把之前占8080的程序也关掉,否则也要报错。

之后再运行java -jar thingsboard-4.2.0-SNAPSHOT-boot.jar就可以了。

访问地址是:http://localhost:8080/login

这里用127.0.0.1是不行的。 估计是和某个配置文件有关吧,回头再看看,起码现在终于可以运行起来了。。。

3 参考

Windows 源码运行 ThingsBoard_failed to update mail configuration. settings not -CSDN博客

ThingsBoard3.9.1前后端分离的运行部署_thingsboard前后端分离-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值