在 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 取消开机启动