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 三者之间的依赖关系与数据流向:
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 连接字符串、用户名和密码已记录,后续配置文件将直接引用。