在 CentOS 8.5 系统中运行 JAR 包并注册为系统服务,可通过 systemd服务管理实现开机自启和便捷运维。假设我们已经将 JAR 包(如 api-0.0.1-SNAPSHOT.jar)上传至服务器目录(如 /opt/api)以下是具体步骤:


⚙️ 一、运行 JAR 包(临时测试)

1. 前台运行(关闭终端即停止):

1
java -jar /opt/api/api-0.0.1-SNAPSHOT.jar

2. 后台运行(终端关闭后持续运行):

1
nohup java -jar /opt/api/api-0.0.1-SNAPSHOT.jar > /opt/api/output.log 2>&1 &

🔧 二、注册为 Systemd 系统服务(推荐)

1. 创建服务文件

进入 systemd 配置目录,创建服务文件(如 api.service):

1
sudo vi /etc/systemd/system/api.service

2. 编写服务配置

复制以下内容(按需修改参数):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=API Application (SpringBoot Service)
After=network.target # 确保网络就绪后启动

[Service]
User=appuser # 替换为运行服务的非root用户(如专用用户)
WorkingDirectory=/opt/api # JAR 所在目录
ExecStart=/usr/bin/java -jar api-0.0.1-SNAPSHOT.jar
Restart=always # 异常退出时自动重启
RestartSec=10 # 重启间隔(秒)
SuccessExitStatus=143 # SpringBoot 默认退出码
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk" # 可选:指定JDK路径
# 日志配置(可选)
StandardOutput=file:/var/log/api.log
StandardError=file:/var/log/api_error.log

[Install]
WantedBy=multi-user.target # 多用户模式启用

3. 设置权限并重载配置

1
2
sudo chmod 644 /etc/systemd/system/api.service  # 服务文件权限
sudo systemctl daemon-reload # 重载 systemd 配置

4. 启动服务并设置开机自启

1
2
3
sudo systemctl start api        # 启动服务
sudo systemctl enable api # 开机自启
sudo systemctl status api # 检查状态(确认 Active: active (running))

4. 重启服务

(1)上传新 JAR 文件

将新版本(如 api-0.0.2-SNAPSHOT.jar)上传至服务器目录(如 /opt/api)。

(2)编辑 /etc/systemd/system/api.service,更新 ExecStart路径:

1
ExecStart=/usr/bin/java -jar /opt/api/api-0.0.2-SNAPSHOT.jar  # 修改 JAR 文件名

(3)重载配置并重启

1
2
3
sudo systemctl daemon-reload     # 重载 systemd 配置
sudo systemctl restart api # 触发优雅重启
sudo systemctl status api # 检查状态(确认 Active: active (running))

⚡ 三、服务管理常用命令

操作 命令 说明
启动服务 sudo systemctl start api 立即运行服务
停止服务 sudo systemctl stop api 安全停止服务
重启服务 sudo systemctl restart api 重新加载配置并重启
查看状态 sudo systemctl status api 检查运行状态和日志
查看实时日志 journalctl -u api -f 动态追踪服务日志
禁用开机自启 sudo systemctl disable api 取消开机启动