借助systemd设置springboot微服务服务在linux重启后自启动
要使SpringBoot服务的JAR包在Linux重启后自启动红旗linux5.0,您可以使用systemd。以下是步骤:
1.创建一个systemd服务单元文件
在/etc/systemd/system/目录下,创建一个新的服务单元文件linux 开机启动服务,比如my-springboot-app.service。使用sudo打开一个文本编辑器来创建和编辑文件:
sudo nano /etc/systemd/system/my-springboot-app.service
之后,向文件中添加以下内容:
[Unit]
Description=My Spring Boot App
After=syslog.target
[Service]
User=your_username
ExecStart=/usr/bin/java -jar /path/to/your/springboot/app.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
保存并关掉文件。
2.重新加载systemd以辨识新服务
sudo systemctl daemon-reload
3.启动您的服务
sudo systemctl start my-springboot-app.service
4.启用服务以在启动时手动开始
sudo systemctl enable my-springboot-app.service
如今,每次系统启动时,您的SpringBoot应用程序都将手动启动。
请注意,为了使上述设置工作,确保您的SpringBootJAR包具有适当的文件权限,而且在指定的路径上可以访问。据悉,假若您的应用程序须要其他环境变量或系统属性,确保在ExecStart中设置它们。
配置使用脚本启动jar包服务
倘若您有一个名为app.sh的启动脚本,但是使用sh./app.shstart来启动app.jar,这么您可以在systemd服务单元文件中直接引用此脚本来启动服务。
更改/etc/systemd/system/my-springboot-app.service文件中的ExecStart行如下:
ExecStart=/bin/sh /path/to/your/app.sh start
确保将/path/to/your/替换为您的脚本文件的实际路径。
请注意,为了使这些设置工作,您的app.sh脚本必须具有可执行权限。您可以使用以下命令为脚本设置可执行权限:
chmod +x /path/to/your/app.sh
据悉,倘若您的脚本须要在特定的工作目录中运行,您还可以在systemd服务单元文件中设置WorkingDirectorylinux 开机启动服务,比如:
WorkingDirectory=/path/to/your/
这将确保当服务启动时,它的当前工作目录被设置为脚本所在的目录。
“After=syslog.target”什么意思?
在systemd服务单元文件中,After指令定义了启动次序依赖关系。After=syslog.target指定了在启动当前服务之前,首先要启动或激活syslog.target。这确保了在当前服务启动之前,系统日志机制早已处于活动状态,因而容许当前服务向日志发送任何消息。
让我们深入了解其中的一些关键部份:
syslog.target:这是一个目标,类似于旧的SysVinitrunlevels。在systemd中,目标用于组织和管理一组相关的服务和其他单元。After:这是一个排序依赖关系。它告诉systemd在启动当前服务之前要确保列举的其他单元/服务/目标已然启动。这并不意味着syslog.target必须被激活,但倘若它被激活了,这么当前服务将在它以后启动。
对于After=syslog.target,这意味着假如系统日志守护程序(如rsyslog或其他任何兼容的日志守护程序)早已启动或被触发启动,这么当前服务将在其以后启动。
为了确保有序的启动和稳定的运行环境,定义这些依赖关系是很有用的。在上述情况中linux主机,这确保了在当前服务形成任何日志之前,日志机制早已打算就绪。
本文原创地址:https://www.linuxprobe.com/rhzlxtssyssx.html编辑:刘遄,审核员:暂无