在Centos8安装ThingsBoard
硬件要求取决于所选数据库和连接到系统的设备数量。要在单台机器上运行 ThingsBoard 和 PostgreSQL,您至少需要 4Gb 的 RAM。
本文以Centos8系统为例,演示安装部署ThingsBoard全过程。
安装必要的工具
# Install wget sudo dnf install -y nano wget # Add latest EPEL release for CentOS 8 sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
1.安装 Java 17(OpenJDK)
ThingsBoard 服务在 Java 17 上运行
# 安装 OpenJDK 17 sudo dnf install java-17-openjdk # 将操作系统配置为默认使用 OpenJDK 17 sudo update-alternatives --config java # 检查安装 java -version
2. ThingsBoard 服务安装
下载安装包。
wget https://github.com/thingsboard/thingsboard/releases/download/v3.7/thingsboard-3.7.rpm
安装 ThingsBoard 作为服务
sudo rpm -Uvh thingsboard-3.7.rpm
如果执行命令出现超时或其他原因无法下载,可以直接先把文件下载下来,再拷贝到linux机器上,定位到thingsboard-3.7.rpm文件所在的目录,再执行 sudo rpm -Uvh thingsboard-3.7.rpm
无法建立连接报错
定位到指定文件的路径,再执行命令:
3.配置ThingsBoard数据库
PostgreSQL 安装
# Update your system sudo dnf update
安装存储库
# Install the repository RPM: sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装该包
# Install packages sudo dnf -qy module disable postgresql sudo dnf -y install postgresql15 postgresql15-server # Initialize your PostgreSQL DB sudo /usr/pgsql-15/bin/postgresql-15-setup initdb sudo systemctl start postgresql-15 # Optional: Configure PostgreSQL to start on boot sudo systemctl enable --now postgresql-15
安装 PostgreSQL 后,您可能需要创建新用户或设置主用户的密码。以下说明将有助于设置主 postgresql 用户的密码
# 切换到postgres用户
sudo su - postgres
# 执行psql psql
# 设置密码命令 \password
# 退出psql命令 \q
然后,按“Ctrl+D”返回主用户控制台。
配置完密码后,连接数据库创建thingsboard DB:
psql -U postgres -d postgres -h 127.0.0.1 -W
执行创建数据库语句
CREATE DATABASE thingsboard; \q
远程连接服务器数据库配置
由于安装数据库后,进入了postgres用户,记得切回root用户,否则回遇到一些命令权限不足的问题。
(1)开放5432端口:
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
(2)修改配置文件
找到postgresql.conf和pg_hba.conf配置文件
如果找不到,可以切换到数据库用户,执行命令找到配置文件路径:
# 切换到postgres用户 sudo -i -u postgres # 执行查询 psql -d postgres -c "SHOW config_file;" # 切换会root用户 su
修改postgresql.conf,找到listen_addresses,将localhost改成*,去掉#注释:
修改pg_hba.conf:
在文件末尾或适当的位置添加一条规则,以允许来自您希望连接的客户端 IP 地址或 IP 地址范围的连接。
例如,如果您想允许来自任何 IP 地址的连接(出于测试目的,不推荐在生产环境中这样做),您可以添加类似这样的规则:
host all all 0.0.0.0/0 md5
但是,出于安全考虑,应该指定具体的 IP 地址或 IP 地址范围。本文主要用做测试,就不限制IP了。
(3)重启 PostgreSQL 服务
使用适当的命令(如 systemctl restart postgresql-15
)重启 PostgreSQL 服务,以使更改生效
(4)测试连接
使用适当的客户端工具(如 psql
、pgAdmin、DBeaver、navicat 等)从远程机器尝试连接到 PostgreSQL 数据库服务器
以Navicat为例,输入主机、端口以及数据库、用户名、密码即可连接:
ThingsBoard 配置
编辑 ThingsBoard 配置文件
sudo nano /etc/thingsboard/conf/thingsboard.conf
配置文件中添加以下几行。不要忘记将“PUT_YOUR_POSTGRESQL_PASSWORD_HERE”替换为你真实的 postgres 用户密码:
# 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=PUT_YOUR_POSTGRESQL_PASSWORD_HERE # Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE. export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS
或者直接使用xftp打开文本编辑器进行编辑:
4. 选择 内存作为ThingsBoard 队列服务
编辑 ThingsBoard 配置文件
sudo nano /etc/thingsboard/conf/thingsboard.conf
将以下行添加到配置文件。
# Update ThingsBoard memory usage and restrict it to 2G in /etc/thingsboard/conf/thingsboard.conf export JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G"
5. 运行安装脚本
一旦安装了 ThingsBoard 服务并更新了 DB 配置,您就可以执行以下脚本
# --loadDemo option will load demo data: users, devices, assets, rules, widgets. sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo
注意:记得切回root用户,如果没有切回postgres用户执行一些命令可能会权限不足,如:
6. 启动 ThingsBoard 服务
ThingsBoard UI 默认可通过 8080 端口访问。请确保您的 8080 端口可通过防火墙访问。要打开 8080 端口,请执行以下命令
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload
执行以下命令启动ThingsBoard:
sudo service thingsboard start
一旦启动,您将能够使用以下链接打开 Web UI:
http://localhost:8080/
如果在执行安装脚本期间指定了–loadDemo,则可以使用以下默认凭据:
- 系统管理员:sysadmin@thingsboard.org / sysadmin
- 租户管理员:tenant@thingsboard.org / tenant
- 客户用户:customer@thingsboard.org / customer
如果要更换端口,比如8077,请修改配置文件,搜索8080端口都更改为8077:
执行以上命令:
系统运行示例:
7. 故障排除
ThingsBoard 日志存储在以下目录中:
/var/log/thingsboard
您可以发出以下命令来检查后端是否存在任何错误:
cat /var/log/thingsboard/thingsboard.log | grep ERROR
参考文档:https://thingsboard.io/docs/user-guide/install/rhel/?ubuntuThingsboardQueue=inmemory
<本文完>