每日一博 - Spring Boot Application as a Service

举报
小工匠 发表于 2021/10/03 22:37:36 2021/10/03
【摘要】 文章目录 老路子操作步骤打包插件增加executable true构建应用System V Init开机启动Systemd自定义JVM参数 老路子 在Linux服务器上启动Sp...

在这里插入图片描述


老路子

在Linux服务器上启动Spring Boot项目,都是通过nohup java -jar xxx 命令让程序作为后台进程执行的, 这… 也不错,但更好的方法是将Spring Boot作为Service启动

在这里插入图片描述


操作步骤

打包插件增加executable true

<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
</parent>

<dependencies>
    ....
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

关键点说明

<packaging>jar</packaging>

  
 
  • 1
  <configuration>
      <executable>true</executable>
  </configuration>

  
 
  • 1
  • 2
  • 3

标示该jar为可执行,否则启动Spring Boot服务会报错.


在这里插入图片描述

gradle构建的SpringBoot项目,则相应地需要增加如下配置

bootJar {
     launchScript()
}

  
 
  • 1
  • 2
  • 3

构建应用

$ mvn clean package


  
 
  • 1
  • 2

在应用程序的根目录中运行以下命令:

$ java -jar your-app.jar


  
 
  • 1
  • 2

此时,我们仍然需要使用-jar选项调用 Java 解释器。

在这里插入图片描述

为了增强安全性,我们首先创建一个特定用户artisan来运行服务并相应地更改可执行 JAR 文件的权限:

$ sudo useradd artisan
$ sudo passwd artisan
$ sudo chown artisan:artisan your-app.jar
$ sudo chmod 500 your-app.jar


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

一定要给jar包赋可执行权限


System V Init

sudo ln -s /path/to/your-app.jar /etc/init.d/your-app

  
 
  • 1

上面的命令创建了一个指向可执行 JAR 文件的符号链接。您必须使用可执行 JAR 文件的完整路径,否则符号链接将无法正常工作。此链接使您能够将应用程序作为服务启动:

$ sudo service your-app start

  
 
  • 1

在这里插入图片描述

该脚本支持标准的服务启动、停止、重启和状态命令。而且:

  • 它启动在我们刚刚创建的用户artisan下运行的服务
  • 它在/var/run/your-app/your-app.pid 中跟踪应用程序的进程 ID
  • 它将控制台日志写入/var/log/your-app.log,可能需要检查一下,以防应用程序无法正常启动

在这里插入图片描述

在这里插入图片描述


开机启动Systemd

首先,我们使用以下示例创建一个名为your-app.service的脚本并将其放在/etc/systemd/system目录中:

[Unit]
Description=A Spring Boot application
After=syslog.target

[Service]
User=baeldung
ExecStart=/path/to/your-app.jar SuccessExitStatus=143 

[Install] 
WantedBy=multi-user.target

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

请记住修改Description、User和ExecStart字段以匹配应用程序。此时应该能够执行上述标准服务命令。
在这里插入图片描述


自定义JVM参数

只需在jar包所在的同级目录下添加与jar包同名的配置文件,比如添加一个叫coder-xiaoming.conf的配置文件(名字要和jar的名字相同哦),然后在文件里面自定义JVM参数JAVA_OPTS:

export JAVA_OPTS="-Xmx256m -Xms256m"

  
 
  • 1

在这里插入图片描述

在这里插入图片描述

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/120595346

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200