前期准备
[root@xs1 /]# systemctl --version systemd 239 (239-74.0.3.al8) +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy
[root@xs1 /]# ps -ef | grep java root 106229 1 0 May28 ? 01:02:28 java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:/root/.halo2_new/ root 226665 226575 0 09:03 pts/0 00:00:00 grep --color=auto java
[root@xs1 app]# ls application.yaml halo.jar halo.log1.要判断 Linux 服务器是否支持或已启用 systemd,查看 systemd 的版本(最直接)
systemctl --version如果有类似输出,说明你的系统使用的是 systemd:
systemd 239
+PAM +AUDIT +SELINUX +...2.检查 systemctl 命令是否存在
which systemctl如果输出路径,如:
/usr/bin/systemctl说明命令存在,可以使用。
3.检查java jdk ,当前的 JDK如果不是 /usr/bin/java,而是:
使用:
which java如果是
/opt/jdkVersion/jdk-17.0.12/bin/java所以你希望更换成正确的 JDK 启动 Halo 服务。
开始操作:
✅ 第一步:创建 systemd 服务文件
创建文件:
sudo vim /etc/systemd/system/halo.service粘贴以下内容(已根据你当前路径配置):
[Unit]
Description=Halo Blog Service
After=network.target
[Service]
User=root
WorkingDirectory=/root
Environment="JAVA_HOME=/opt/jdkVersion/jdk-17.0.12"
Environment="PATH=$JAVA_HOME/bin:$PATH"
ExecStart=/opt/jdkVersion/jdk-17.0.12/bin/java -Dfile.encoding=UTF-8 -jar /root/halo.jar --spring.config.additional-location=optional:file:/root/.halo2_new/
SuccessExitStatus=143
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target✅ 第二步:重新加载并启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
# 启动 halo 服务
sudo systemctl start halo
# 设置开机自启
sudo systemctl enable halo✅ 第三步:查看服务状态 / 日志
# 查看服务运行状态
sudo systemctl status halo
# 实时查看日志(比直接 cat 更稳)
sudo journalctl -u halo -f✅ 第四步:测试守护效果
你可以测试一下:
# 模拟杀掉 halo 服务
sudo kill -9 $(pgrep -f halo.jar)
# 然后执行以下命令确认是否自动重启
sudo systemctl status halo如果你看到服务自动拉起,就说明配置成功。
🧠 可选增强项(建议)
日志分离更好管理(systemd 自带)
你已经用了 halo.log,但也可以直接用 systemd 日志:
StandardOutput=journal
StandardError=journal然后用:
journalctl -u halo -f代替直接写 halo.log 文件,防止日志文件无限增长。