![93fd500e5c09813972c0f2f332060f05.png](https://img-blog.csdnimg.cn/img_convert/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步:
- kill -9 PID(进程号)
- java -jar xxx.jar
可以看到上述命令操作不是很简单和方便,特别是当需要重启SpringBoot服务的时候,需要反复执行kill命令或者当服务器重启后,需要手动执行命令才能启动SpringBoot服务。
下面我们通过一个简单的demo介绍下在Centos7环境中如何将SpringBoot项目部署成Linux服务。
我们用eclipse工具构建一个简单的SpringBoot项目,工程名叫demo。
Maven配置
配置pom.xml的Maven插件
![8fbb12fef0c76eea791404880a3592a0.png](https://img-blog.csdnimg.cn/img_convert/8fbb12fef0c76eea791404880a3592a0.png)
配置文件pom.xml
- finalName是SpringBoot最后打包完成后生成的jar包名
- executable将SpringBoot jar包打成可执行文件
- 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
- Description是对该linux服务的描述,描述这个Linux服务具备什么功能
- After在哪个Linux服务启动后启动该服务
- User启动该Linux服务的user
- ExecStart SpringBoot jar包的绝对路径
- SuccessExitStatus服务启动成功后的状态码
- WantedBy指的是,sshd 所在的 Target 是multi-user.target
在放置SpringBoot jar包的相同目录创建demo.conf的配置文件,配置文件内容如下:
JAVA_OPTS=-Xmx1024M RUN_ARGS=--spring.profiles.active=DEV DEBUG=true
- JAVA_OPTS设置JVM的参数
- RUN_ARGS SpringBoot启动的参数,例如:SpringBoot多profile
- DEBUG是否开启debug模式
更多的配置参数参考如下:
![dc020e307520921fd931d3c451fc89c3.png](https://img-blog.csdnimg.cn/img_convert/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
文章如有不妥之处,欢迎指正!谢谢!