eclipse打包成jar_手把手教你如何将SpringBoot制作成系统服务

93fd500e5c09813972c0f2f332060f05.png

SpringBoot

如果我们需要构建一套Restful接口,我个人认为SpringBoot是一种最好的框架,从SpringBoot的框架中我们很容易看出,SpringBoot内嵌了Tomcat作为Web容器,同时它对Tomcat容器的操作也是简单易行的。随着微服务的倡导,SpringBoot的这一新特性也是构建微服务项目的不二之选。在大多数SpringBoot项目中,Linux部署环境应该是一种主流的部署方式,在Windows部署环境中,我们想要启动一个SpringBoot项目,不外乎通过java命令或者做成Windows批处理文件;那么,在Linux环境中同样我们也可以通过java命令启动一个SpringBoot项目,但是还有一个更nice的部署方式,我们可以把SpringBoot项目部署成Linux的一种服务,当我们的Linux服务器重启后,SpringBoot作为Linux的服务同时也会被重启,这就不需要我们ssh登陆服务器手动启动了,减少服务中断的时间。


一般部署一个SpringBoot项目的命令,java -jar xxx.jar;重启SpringBoot分为2步:

  1. kill -9 PID(进程号)
  2. java -jar xxx.jar

可以看到上述命令操作不是很简单和方便,特别是当需要重启SpringBoot服务的时候,需要反复执行kill命令或者当服务器重启后,需要手动执行命令才能启动SpringBoot服务。

下面我们通过一个简单的demo介绍下在Centos7环境中如何将SpringBoot项目部署成Linux服务。


我们用eclipse工具构建一个简单的SpringBoot项目,工程名叫demo。

Maven配置
配置pom.xml的Maven插件

8fbb12fef0c76eea791404880a3592a0.png

配置文件pom.xml

  1. finalName是SpringBoot最后打包完成后生成的jar包名
  2. executable将SpringBoot jar包打成可执行文件
  3. mainClass是启动SpringBoot的main函数的类名

Centos7服务器设置
创建systemd启动脚本

vi /etc/systemd/system/demo.service  [Unit] Description=demo service After=syslog.target  [Service] User=root ExecStart=/tmp/demo.jar SuccessExitStatus=143  [Install] WantedBy=multi-user.target
  1. Description是对该linux服务的描述,描述这个Linux服务具备什么功能
  2. After在哪个Linux服务启动后启动该服务
  3. User启动该Linux服务的user
  4. ExecStart SpringBoot jar包的绝对路径
  5. SuccessExitStatus服务启动成功后的状态码
  6. WantedBy指的是,sshd 所在的 Target 是multi-user.target

在放置SpringBoot jar包的相同目录创建demo.conf的配置文件,配置文件内容如下:

JAVA_OPTS=-Xmx1024M RUN_ARGS=--spring.profiles.active=DEV DEBUG=true
  1. JAVA_OPTS设置JVM的参数
  2. RUN_ARGS SpringBoot启动的参数,例如:SpringBoot多profile
  3. DEBUG是否开启debug模式

更多的配置参数参考如下:

dc020e307520921fd931d3c451fc89c3.png

Spring官方文档

设置SpringBoot jar包可执行权限:

chmod 755 /tmp/demo.jar


设置服务开机自启动

systemctl daemon-reloadsystemctl enable demo.service

启动/关闭服务

systemctl start demo.servicesystemctl stop demo.service

查看SpringBoot服务的状态

systemctl status demo.service

通过以上步骤我们将SpringBoot部署成了Linux服务,每次启动或者关闭SpringBoot项目,只需要执行简单的一条命令即可完成。同时当服务器重启后我们只需要做SpringBoot服务的health check即可,不必关心我们的SpringBoot项目在服务器重启后是否启动,因为我们的SpringBoot服务是随着Linux服务器的重启而已经被重启了。

参考:

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-systemd-service

文章如有不妥之处,欢迎指正!谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值