首页 > 系统相关 >利用systemd设置springboot微服务服务在linux重启后自启动

利用systemd设置springboot微服务服务在linux重启后自启动

时间:2023-08-24 21:45:58浏览次数:44  
标签:systemd 服务 springboot 启动 app 自启动 target

要使 Spring Boot 服务的 JAR 包在 Linux 重启后自启动,您可以使用 systemd。以下是步骤:

1. 创建一个 systemd 服务单元文件

/etc/systemd/system/ 目录下,创建一个新的服务单元文件,例如 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
  • User:运行此服务的用户的名称。
  • ExecStart:启动 Spring Boot 服务的命令。确保将 /path/to/your/springboot/ 替换为您的 JAR 文件的实际路径。
  • SuccessExitStatus:Spring Boot 使用 143 作为退出代码,这表明应用程序已成功关闭。

保存并关闭文件。

2. 重新加载 systemd 以识别新服务

sudo systemctl daemon-reload

3. 启动您的服务

sudo systemctl start my-springboot-app.service

4. 启用服务以在启动时自动开始

sudo systemctl enable my-springboot-app.service

现在,每次系统启动时,您的 Spring Boot 应用程序都将自动启动。

请注意,为了使上述设置工作,确保您的 Spring Boot JAR 包具有适当的文件权限,并且在指定的路径上可以访问。此外,如果您的应用程序需要其他环境变量或系统属性,确保在 ExecStart 中设置它们。

配置使用脚本启动jar包服务

如果您有一个名为 app.sh 的启动脚本,并且使用 sh ./app.sh start 来启动 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 服务单元文件中设置 WorkingDirectory,例如:

WorkingDirectory=/path/to/your/

这将确保当服务启动时,它的当前工作目录被设置为脚本所在的目录。

 

“After=syslog.target”什么意思?

systemd 服务单元文件中,After 指令定义了启动顺序依赖关系。After=syslog.target 指定了在启动当前服务之前,首先要启动或激活 syslog.target。这确保了在当前服务启动之前,系统日志机制已经处于活动状态,从而允许当前服务向日志发送任何消息。

让我们深入了解其中的一些关键部分:

  1. syslog.target: 这是一个目标,类似于旧的 SysV init runlevels。在 systemd 中,目标用于组织和管理一组相关的服务和其他单元。

  2. After: 这是一个排序依赖关系。它告诉 systemd 在启动当前服务之前要确保列出的其他单元/服务/目标已经启动。这并不意味着 syslog.target 必须被激活,但如果它被激活了,那么当前服务将在它之后启动。

对于 After=syslog.target,这意味着如果系统日志守护程序(如 rsyslog 或其他任何兼容的日志守护程序)已经启动或被触发启动,那么当前服务将在其之后启动。

为了确保有序的启动和稳定的运行环境,定义这种依赖关系是很有用的。在上述情况中,这确保了在当前服务产生任何日志之前,日志机制已经准备就绪。

标签:systemd,服务,springboot,启动,app,自启动,target
From: https://www.cnblogs.com/shamo89/p/17655235.html

相关文章

  • Springboot K8s Job 一次性任务 如何禁用端口监听
    问题:SpringBoot一次性任务执行时,也会默认监听服务端口,当使用k8sjob运行时,可能多个pod执行存在端口冲突解决办法:命令行禁用SpringBoot一次性任务启动时端口占用java-cp./XXX-Dspring.config.location=/home/XXXX.propertiesorg.springframework.boot.loader.Properties......
  • Spring Data JPA查询报错java.lang.StackOverflowError hibernate SpringBoot
    toString()造成死循环,重写toString()方法现象测试JPA的多对多查询时,有一个User对象,该User有多个Role,然后报错User@Data@Entity@Table(name="user")publicclassUser{@Id//主键自动增长@GeneratedValue(strategy=GenerationType.IDENTITY)@Co......
  • SpringBoot 实现 IP 地址解析
    1.离线解析在使用时需要将ip2region.xdb文件下载到工程文件目录下,使用ip2region即是完全基于xdb文件的查询,单次查询响应时间在十微秒级别,可通过如下两种方式开启内存加速查询:vIndex索引缓存:使用固定的512KiB的内存空间缓存vectorindex数据,减少一次IO磁盘操作,保持......
  • 【知识整理】基于Springboot的Kafka消费者动态操作
    基于Springboot的Kafka消费者动态操作1.问题​ 在基于Springboot开发Kafka相关业务时,遇到如下业务场景:执行部分操作时,如停止服务替换镜像、执行特殊业务处理等,需要先停止Consumer接收Kafka消息,待处理完成后再开启Consumer接续接收Kafka消息为并发消费Kafka消息,可通过配置sp......
  • springboot3 集成mybatis 和通用mapper
    xml版本查看:https://www.cnblogs.com/binz/p/6564490.htmlspringboot3.x以前的版本查看https://www.cnblogs.com/binz/p/17421063.htmlspringboot3.x查看  https://www.cnblogs.com/binz/p/17654403.html1、pom引用<parent><groupId>org.springframework.boot</gro......
  • springboot中2种配置定时任务
    1、@Schedule用@Schedule注解,直接放到方法上就可以生效,代码如下:@Scheduled(cron="0*/5***?")publicvoiddealResult(){log.info("开始执行定时任务......");DefaultProfileprofile=DefaultProfile.getProfile(rdsConf......
  • 【知识整理】Springboot启动扩展点
    SpringBoot启动扩展点整理1.前言​ 在Springboot服务启动阶段,Springboot提供了许多扩展点。在实际的业务开发过程中,部分特殊的业务需求需要再Springboot服务启动过程中动态的加载配置或者执行业务处理,特此将常用的Springboot启动扩展点做一个简单的整理。2.准备阶段2.1Env......
  • 直播系统开发,springboot指定时间触发定时任务
    直播系统开发,springboot指定时间触发定时任务新建测试Demo类执行定时任务 packagecom.task.zhixingshijian;importjava.time.LocalDateTime;importjava.time.temporal.ChronoField;importjava.util.*;/** *@authorwuzhenyong *ClassName:TaskDemo.java *date:2022-......
  • Springboot-配置文件
    1.SpringBoot配置文件格式1.properties2.ymlproperties优先级高于yml。自动识别的配置文件:bootstrap.yml和application.yml,bootstrap.yml先于application.yml加载,一般用于系统级别的配置,application.yml一般用于项目级别的配置Springboot官方的配置:https://docs......
  • springBoot 整合 poi 导出带有复杂表格(合并表格)的word文件
    1.Maven依赖见上一篇文章直接贴源码如下:packagecom.mingx.pms.web.system.file;importcn.hutool.core.date.DateUtil;importcom.mingx.pms.constant.SystemInfo;importcom.mingx.pms.entities.workplan.plan.vo.WorkPlanDetailExportVO;importcom.mingx.pms.entities......