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