配置Thingsboard服务依赖postgreSQL随系统启动

CentOS9的postgreSQL 默认可能不随系统启动而启动,导致后续的依赖服务,如Thingsboard未能成功启动。

本文的环境:CentOS9 、 宝塔面板、宝塔面板安装的PostgreSQL18.0、Thingsboard。

一、配置PostgreSQL随系统启动

1、确认PostgreSQL数据库版本

 ps -ef | grep postgres

看到类似
/www/server/pgsql/bin/postgres -D /www/server/pgsql/data

2、创建 systemd 服务

vi /etc/systemd/system/postgresql.service

添加内容:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
ExecStart=/www/server/pgsql/bin/pg_ctl start -D /www/server/pgsql/data -l /www/server/pgsql/logs/pgsql.log
ExecStop=/www/server/pgsql/bin/pg_ctl stop -D /www/server/pgsql/data
ExecReload=/www/server/pgsql/bin/pg_ctl reload -D /www/server/pgsql/data
TimeoutSec=300

[Install]
WantedBy=multi-user.target

3、配置启动

首先,如果已经有一个正在运行的PostgreSQL进程,先中止掉,然后

systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql

4、验证

systemctl status postgresql

重启系统,验证数据库是否启动

ps -ef | grep postgres

二、配置Thingsboard服务依赖PostgreSQL

1、修改配置文件

通常 ThingsBoard 的服务文件位于 /lib/systemd/system/thingsboard.service。你需要使用 sudo 权限编辑它:

sudo nano /lib/systemd/system/thingsboard.service

2、配置依赖关系

在 [Unit] 部分,你需要添加 After 和 Wants(或 Requires)参数。

[Unit]
Description=thingsboard
# 在 After 中增加 network.target 和 postgresql.service
# 这样确保网络堆栈和数据库都在 TB 启动前就位
After=syslog.target network.target postgresql.service
# 增加 Wants,确保启动 TB 时会尝试启动数据库
Wants=postgresql.service

[Service]
User=thingsboard
# 建议检查:如果你的 JAR 是通过 java 命令运行,通常写法是 ExecStart=/usr/bin/java -jar ...
# 但如果你的 jar 本身是可执行的,维持现状即可
ExecStart=/usr/share/thingsboard/bin/thingsboard.jar
SuccessExitStatus=143

# 保持 Restart=always 是个好主意,因为 TB 启动较重,偶尔会因超时挂掉
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

关键点解析:

postgresql.service ,Thingsboard需要依赖PostgreSQL服务
network.target,ThingsBoard 作为一个物联网平台,极其依赖网络。将其加入 After 列表可以防止在网络接口还未完全初始化时 TB 启动报错(比如绑定端口失败)。

3、生效配置

sudo systemctl daemon-reload
sudo systemctl enable postgresql
sudo systemctl restart thingsboard

4、验证
重启服务器验证。
ThingsBoard 启动过程通常比较慢(Java Spring Boot 加载大量 Bean),如果你发现启动时报“数据库连接拒绝”,即便配置了 After,也可能是因为 Postgres 进程刚起,但还没准备好接收连接。你现有的 RestartSec=30 已经是一个很好的容错机制了。

原创文章,作者:Gary,如若转载,请注明出处:https://www.cpw5.top/1706.html

淘宝小店:陈皮王五工作室

公司网址:海灵德(六安)环境科技有限公司

(0)
GaryGary
上一篇 2小时前
下一篇 2024-12-08 下午6:03

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注