2. 环境准备:Linux服务器基础配置、JDK 11安装与配置、PostgreSQL数据库安装

ThingsBoard 作为基于 Java 的企业级物联网平台,对底层运行环境有明确要求。本章将依次完成 Linux 服务器基础调优、JDK 11 安装验证以及 PostgreSQL 数据库的部署与初始化。这三步是后续所有组件(包括单机版和集群版)能够稳定运行的前提。

2.1 Linux 服务器基础配置

无论使用 CentOS 7/8、Ubuntu 20.04/22.04 还是 Rocky Linux,以下基础配置必须统一执行。建议使用最小化安装,避免不必要的服务干扰 ThingsBoard 运行。

2.1.1 系统更新与必要工具

# CentOS / Rocky Linux
sudo yum update -y
sudo yum install -y wget curl vim net-tools chrony

# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl vim net-tools chrony

2.1.2 关闭防火墙与 SELinux(开发/测试环境)

生产环境注意:生产环境应配置防火墙规则开放指定端口(如 8080、1883、5432 等),而非直接关闭。以下操作仅适用于开发测试环境。
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 关闭 SELinux(CentOS/Rocky)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.1.3 文件描述符与进程限制

ThingsBoard 在集群模式下会创建大量网络连接和线程,必须提高系统限制。

# 编辑 /etc/security/limits.conf,追加以下内容
sudo tee -a /etc/security/limits.conf << 'EOF'
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
EOF

# 验证
ulimit -n

2.1.4 时间同步(NTP/Chrony)

集群节点间时间偏差超过 1 秒会导致 ThingsBoard 的队列和心跳机制异常。

# 启动 chronyd
sudo systemctl enable chronyd
sudo systemctl start chronyd
sudo chronyc sources -v
最佳实践:建议将集群内所有节点配置为使用同一台内网 NTP 服务器,避免因公网 NTP 延迟导致时间偏差。

2.2 JDK 11 安装与配置

ThingsBoard 2.x 和 3.x 系列均要求 JDK 11(推荐使用 OpenJDK 11)。JDK 8 已不再支持,JDK 17 虽可运行但官方未做全面测试。

2.2.1 安装 OpenJDK 11

# CentOS / Rocky Linux
sudo yum install -y java-11-openjdk java-11-openjdk-devel

# Ubuntu / Debian
sudo apt install -y openjdk-11-jdk

2.2.2 验证安装

java -version
# 预期输出:
# openjdk version "11.0.22" 2024-01-16 LTS
# OpenJDK Runtime Environment (build 11.0.22+7-LTS)
# OpenJDK 64-Bit Server VM (build 11.0.22+7-LTS, mixed mode, sharing)

2.2.3 设置 JAVA_HOME 环境变量

# 查找 JDK 安装路径
sudo update-alternatives --config java
# 通常路径为 /usr/lib/jvm/java-11-openjdk-$(arch)

# 编辑 /etc/profile 或 ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-$(arch)
export PATH=$JAVA_HOME/bin:$PATH

# 立即生效
source /etc/profile
echo $JAVA_HOME

2.2.4 JVM 参数优化(单机推荐)

参数 推荐值 说明
-Xms 2g 初始堆大小,建议与 -Xmx 一致
-Xmx 4g ~ 8g 最大堆大小,根据服务器内存调整
-XX:+UseG1GC 启用 G1 垃圾回收器,适合大堆和低延迟
-XX:MaxGCPauseMillis 200 GC 最大暂停时间目标
集群环境提示:集群模式下每个节点承载的负载降低,JVM 堆可适当减小(如 -Xms1g -Xmx2g),但必须确保 G1GC 开启。

2.3 PostgreSQL 数据库安装

ThingsBoard 使用 PostgreSQL 作为主数据库(实体、规则链、仪表盘等元数据存储)。单机部署推荐 PostgreSQL 14/15,集群部署建议使用 PostgreSQL 15 及以上版本以支持更优的复制性能。

2.3.1 安装 PostgreSQL

# CentOS / Rocky Linux (使用官方仓库)
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-$(arch)/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql15-server postgresql15-contrib

# Ubuntu / Debian
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install -y postgresql-15

2.3.2 初始化数据库集群

# CentOS / Rocky Linux
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

# Ubuntu / Debian(安装后自动初始化,无需手动执行)

2.3.3 启动并设置开机自启

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
sudo systemctl status postgresql-15

2.3.4 创建 ThingsBoard 数据库与用户

# 切换到 postgres 系统用户
sudo -i -u postgres

# 创建数据库用户(密码请替换为强密码)
psql -c "CREATE USER thingsboard WITH PASSWORD 'your_strong_password';"

# 创建数据库
psql -c "CREATE DATABASE thingsboard OWNER thingsboard;"

# 授予权限
psql -c "GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard;"

# 退出 postgres 用户
exit

2.3.5 配置远程访问(集群部署必须)

编辑 /var/lib/pgsql/15/data/pg_hba.conf(Ubuntu 路径为 /etc/postgresql/15/main/pg_hba.conf),添加以下行:

# 允许 ThingsBoard 节点远程连接(替换为实际 IP 段)
host    thingsboard    thingsboard    192.168.1.0/24    md5

编辑 postgresql.conf,修改监听地址:

listen_addresses = '*'

重启 PostgreSQL 使配置生效:

sudo systemctl restart postgresql-15
安全提醒:生产环境不要使用 listen_addresses = '*',应指定具体的 ThingsBoard 节点 IP。同时确保防火墙仅开放 5432 端口给可信来源。

2.4 环境准备总览

下图展示了单机部署场景下,Linux 服务器、JDK 11 和 PostgreSQL 三者之间的依赖关系与数据流向:

ThingsBoard 单机部署环境依赖关系 Linux 服务器 CentOS 7/8 / Ubuntu 20.04/22.04 JDK 11 (OpenJDK) JAVA_HOME + G1GC 优化 PostgreSQL 15 thingsboard 数据库 + 用户 ThingsBoard 服务 单机 / 集群节点 依赖说明 JDK 提供运行环境 PostgreSQL 存储元数据 Linux 承载所有进程

2.5 环境验证清单

完成上述所有步骤后,建议逐项检查以下清单,确保环境就绪:

检查项 验证命令 预期结果
JDK 版本 java -version 11.x.x
JAVA_HOME echo $JAVA_HOME /usr/lib/jvm/java-11-openjdk-...
PostgreSQL 运行 systemctl status postgresql-15 active (running)
数据库连接 psql -h 127.0.0.1 -U thingsboard -d thingsboard -c "SELECT 1;" 返回 1 行
文件描述符 ulimit -n 65536
时间同步 chronyc tracking System time 误差 < 1ms
下一步提示:环境验证通过后,即可进入 ThingsBoard 安装包下载与单机部署章节。请确保 PostgreSQL 连接字符串、用户名和密码已记录,后续配置文件将直接引用。