我们这里介绍2种部署方法。
1、使用安装包部署
简单,快速,如需要修改UI或后续开发还是要回到源码编译部署。
2、使用源码编译后部署
安装过程复杂,但定制性强,如果你想修改UI,那选源码编译。
第三章、安装包部署
安装的服务器系统:Ubuntu 24.04 LTS
使用终端工具登录你的服务器,后开始部署。所有的命令前面请加上sudo来确保你有足够的权限。
1、安装java17支持
1.1、获取最新的软件包索引信息
sudo apt update
1.2、安装OpenJDK 17
sudo apt install openjdk-17-jdk
1.3、配置你的系统使用最新的OpenJDK 17
sudo update-alternatives --config java
这里选0,回车即可。
1.4、检查你的OpenJDK 版本是否正确
java -version
如果输出如下那就正确了。
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Ubuntu-1, mixed mode, sharing)
2、Thingsboard服务安装
2.1、确保你在用户目录中
cd ~
2.2、下载安装包
wget https://github.com/thingsboard/thingsboard/releases/download/v3.7/thingsboard-3.7.deb
如果没科学上网这个会很慢,而且经常断线,可以说相当麻烦。
你们可以去https://github.com/thingsboard/thingsboard 下载最新版本
本教程中我们是ubuntu,所以选deb包下载。
这里我给出目前最新的版本3.7供下载
下载后用终端工具里的sftp工具上传到你的用户目录中。
说到终端工具,这里推荐一下electerm,github上开源免费的,还是蛮好用的,至少免费滴,而且还有中文。
你们自己下载吧。
https://github.com/electerm/electerm
设置好服务器地址、用户名、密码后,保存并连接。
连接上后选择Sftp
左边是本地机器目录,右边是服务器目录
右键 选择上次,将得到的deb安装文件上传到服务器上。
回到SSH窗口,ls看看文件在里面了没有,
2.3、解包安装文件:
sudo dpkg -i thingsboard-3.7.deb
安装完成
3、PostgreSQL安装
根据官方文档,如果小于5000条消息/秒,可以直接使用PostgreSQL,我们项目当然没这么大了。就只需安装PostgreSQL即可。
3.1、weget安装
默认情况下系统wget已经装好了,没有得话可以用下面命令安装。
sudo apt install -y wget
我这显示啥都没发生
3.2、导入PostgreSQL公钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
这里显示apt-key已经被弃用,推荐使用 trusted.gpg.d 目录来管理密钥文件。
可以不理这个警告,不然麻烦了,以后不行了在补充哈。
3.3、将 PostgreSQL 的 APT 仓库添加到你的系统
以便你可以从该仓库安装和更新 PostgreSQL 软件包。
echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
3.4、再次更新系统软件包索引
sudo apt update
3.5、安装PostgreSQL
sudo apt -y install postgresql-15
3.6、启动PostgreSQL服务
sudo service postgresql start
3.7、坑
如果PostgreSQL无法成功安装,这个和ubuntu的版本、网络都有关系,特别是在centos下。
有个变通的办法,就是装宝塔面板,然后利用宝塔面板来安装PostgreSQL。
4、配置PostgreSQL
4.1、切换到PostgreSQL用户
sudo su - postgres
4.2、运行终端工具
psql
psql命令是PostgreSQL 的交互式终端工具。
4.3、设置密码
\password
输入二次密码,这个密码是PostgreSQL数据库的密码,后面要用到,不要忘了
4.4、退出PostgreSQL环境
\q
按Ctrl+D再次退出,回到主环境下。
整个过程输出如下:
4.5、在PostgreSQL里创建thingsboard数据库
psql -U postgres -d postgres -h 127.0.0.1 -W
输入刚才设置的密码来到postgres环境下
创建数据库
CREATE DATABASE thingsboard;
退出环境
\q
**这里不用
按Ctrl+D,直接可回到主环境下。**
5、配置ThingsBoard以连接PostgreSQL
编辑 /etc/thingsboard/conf/thingsboard.conf 文件
sudo vi /etc/thingsboard/conf/thingsboard.conf
按 i 进入编辑模式,将下面文字粘贴到最后。
# DB Configuration
export DATABASE_TS_TYPE=sql
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=你的postgresql密码
# Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE.
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
记得输入你的postgresql密码!
记得输入你的postgresql密码!
1、按ESC键
2、输入:wq 回车
保存退出
6、消息队列选择
6.1、选择
ThingsBoard 能够使用各种消息传递系统/代理来存储 ThingsBoard 服务之间的消息和通信。
1、内存
这个内置就有了,默认开启的。虽然官方说他用于开发环境不建议用于生产环境,但如果你用户不多,接入的设备也不多,完全可以使用这个。
然后你就可以跳过这第六节了,因为你啥都不需要做。
2、Kafka
虽然官方建议使用kafka,但除非你的项目很大,为大量客户提供服务(个人认为不会发生),你才可能用到他。
Kafka官方也提供了docker,但我还是不建议,除非你接到的是一个全国性的项目,需要用到集群。那你多数也是使用PE版的thingsboard了
3、RabbitMQ
如果您没有太多负载,又是用于生产环境,那么官方建议你使用它。
注意:你要使用RabbitMQ的话建议新配一台虚拟机专门用作安装。
4、剩下的AWS SQS、Google Pub/Sub、Azure、Confluent Cloud我们都没法用,也要花钱,还是省省吧。
6.2、RabbitMQ安装
如果你想用rabbitMQ建议你再做个虚拟机实现,RabbitMQ对硬件要求高,同时在一台机器里的话容易产生Thingsboard线程锁死。
由于 RabbitMQ 是用 Erlang 编写的,因此您需要先安装 Erlang 才能使用 RabbitMQ。
先升级
sudo apt update
6.2.1、安装 Erlang
sudo apt-get install erlang
6.2.2、安装rabbitmq-server
sudo apt-get install rabbitmq-server
6.2.3、启动服务并作为服务启动
sudo systemctl start rabbitmq-server.service
sudo systemctl enable rabbitmq-server.service
6.2.4、密码设置
默认情况下,RabbitMQ 会创建一个名为“guest”的用户,密码为“guest”。这个用户只能在本地登陆。
您也可以使用以下命令在 RabbitMQ 服务器上创建自己的管理员帐户。
不要忘记用您自己的用户名和密码替换“PUT_YOUR_USER_NAME”和“PUT_YOUR_PASSWORD”二个值
sudo rabbitmqctl add_user PUT_YOUR_USER_NAME PUT_YOUR_PASSWORD
6.2.5、给新用户分配管理员角色
替换PUT_YOUR_USER_NAME为你的用户名
sudo rabbitmqctl set_user_tags PUT_YOUR_USER_NAME administrator
6.2.6、设置用户权限
为用户在默认虚拟主机 / 上设置权限,允许用户配置、写入和读取所有资源。
替换PUT_YOUR_USER_NAME为你的用户名
sudo rabbitmqctl set_permissions -p / PUT_YOUR_USER_NAME ".*" ".*" ".*"
6.2.7、确认RabbitMQ安装正确
sudo rabbitmqctl status
返回
Status of node rabbit@iotserver ...
Runtime
OS PID: 9839
OS: Linux
Uptime (seconds): 16325
Is under maintenance?: false
RabbitMQ version: 3.12.1
RabbitMQ release series support status: supported
Node name: rabbit@iotserver
Erlang configuration: Erlang/OTP 25 [erts-13.2.2.5] [source] [64-bit] [smp:128:16] [ds:128:16:10] [async-threads:1] [jit:ns]
Crypto library: OpenSSL 3.0.13 30 Jan 2024
Erlang processes: 413 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60
Plugins
Enabled plugin file: /etc/rabbitmq/enabled_plugins
Enabled plugins:
Data directory
Node data directory: /var/lib/rabbitmq/mnesia/rabbit@iotserver
Raft data directory: /var/lib/rabbitmq/mnesia/rabbit@iotserver/quorum/rabbit@iotserver
Config files
Log file(s)
* /var/log/rabbitmq/[email protected]
* <stdout>
Alarms
(none)
Memory
Total memory used: 0.2332 gb
Calculation strategy: rss
Memory high watermark setting: 0.4 of available memory, computed to: 6.6883 gb
allocated_unused: 0.1146 gb (46.54 %)
other_system: 0.0729 gb (29.61 %)
code: 0.0321 gb (13.03 %)
other_proc: 0.0214 gb (8.68 %)
metrics: 0.0057 gb (2.32 %)
atom: 0.0014 gb (0.56 %)
msg_index: 0.0012 gb (0.47 %)
binary: 0.0003 gb (0.13 %)
mnesia: 0.0001 gb (0.03 %)
plugins: 0.0 gb (0.02 %)
quorum_ets: 0.0 gb (0.01 %)
quorum_queue_dlx_procs: 0.0 gb (0.0 %)
quorum_queue_procs: 0.0 gb (0.0 %)
stream_queue_procs: 0.0 gb (0.0 %)
stream_queue_replica_reader_procs: 0.0 gb (0.0 %)
connection_channels: 0.0 gb (0.0 %)
connection_other: 0.0 gb (0.0 %)
connection_readers: 0.0 gb (0.0 %)
connection_writers: 0.0 gb (0.0 %)
mgmt_db: 0.0 gb (0.0 %)
queue_procs: 0.0 gb (0.0 %)
queue_slave_procs: 0.0 gb (0.0 %)
reserved_unallocated: 0.0 gb (0.0 %)
stream_queue_coordinator_procs: 0.0 gb (0.0 %)
other_ets: -0.0035 gb (-1.41 %)
File Descriptors
Total: 2, limit: 65439
Sockets: 0, limit: 58893
Free Disk Space
Low free disk space watermark: 0.05 gb
Free disk space: 90.2981 gb
Totals
Connection count: 0
Queue count: 0
Virtual host count: 1
Listeners
Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
出现类似即可认为安装正确。
6.2.8、确认RabbitMQ开启
可以使用下面命令为RabbitMQ开启web界面
sudo rabbitmq-plugins enable rabbitmq_management
打开RabbitMQ web界面
输入 IP:15672
可以认为RabbitMQ运行正常。
6.3、配置Thingsboard以使用RabbitMQ
编辑 /etc/thingsboard/conf/thingsboard.conf 文件
sudo vi /etc/thingsboard/conf/thingsboard.conf
按 i 进入编辑模式,将下面文字粘贴到最后。
export TB_QUEUE_TYPE=rabbitmq
export TB_QUEUE_RABBIT_MQ_USERNAME=YOUR_USERNAME
export TB_QUEUE_RABBIT_MQ_PASSWORD=YOUR_PASSWORD
export TB_QUEUE_RABBIT_MQ_HOST=localhost
export TB_QUEUE_RABBIT_MQ_PORT=5672
把其中“YOUR_USERNAME” and “YOUR_PASSWORD”改为你在6.2.4设置的RabbitMQ用户名和密码。 localhost 改为你的RabbotMQ的ip地址。
1、按ESC键
2、输入:wq 回车
保存退出
7、执行Thingsboard安装脚本
运行下面安装脚本,--loadDemo参数将会安装一个DEMO,一般情况下还是安装吧。
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo
返回
表示安装成功!
8、开启ThingsBoard服务
sudo service thingsboard start
等待最多90秒
在浏览器中输入
IP:8080
系统提供了3个默认用户:
1、System Administrator
密码:sysadmin
2、Tenant Administrator
密码:tenant
3、Customer User
密码:customer
如不能显示可以试试查看服务运行状态
sudo service thingsboard status
正常情况如下:
版权归原作者 zhangdaye88 所有, 如有侵权,请联系我们删除。