spring boot tomcat 部署
Posted 经济人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot tomcat 部署相关的知识,希望对你有一定的参考价值。
前几天springboot项目部署到linux中,整个过程就是个坑啊。踩坑的过程中也学到了许多。spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8。 所以部署的话就分为两种部署了, 第一种就是使用其内置的tomcat部署, 第二种就是采用外部的tomcat部署。采用内部的tomcat部署又分为两种: 第一种是打包成war包部署,第二种事打包成jar包部署。 两者区别就在于打包成jar包的是无静态资源的,如jsp,html等,像只是提供restful接口。
阅读此篇博客请先去阅读本人的spring boot 常用注解
除了必要的jar,插件外还需导入 spring-boot-maven-plugin 插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.6.RELEASE</version> <configuration> <!-- 指定该Main Class为全局的唯一入口 --> <mainClass>com.spSystem.App</mainClass> </configuration> <executions> <execution> <goals> <!--可以把依赖的包都打包到生成的Jar包中--> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
采用外置tomcat部署时要注意:
1. 依赖jar包的冲突
由于spring boot 内置了tomcat,jdk,servlet等,所以部署到外部tomcat中时要将其内置的tomcat,servlet等设置为只在编译和测试时使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 去除Spring Boot自带的Tomcat插件 -->
<scope>provided</scope>
</dependency>
<!-- 配置低版本Tomcat,否则需8.5以上版本,请根据自己的Tomcat版本配置 -->
<properties>
<tomcat.version>7.0.77</tomcat.version>
</properties>
2. 程序主入口是什么
项目中内置了servlet,程序的主入口原先是main方法,使用main方法自启动。 所以我们要将其重写
@SpringBootApplication public class SpringBootTest extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootTest.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootTest.class); } }
3.导入相应jar包的maven依赖时其相对应的版本
由于spring boot与jdk,spring cloud 都有相对应的版本,所以导入jar包maven依赖时要配对好。 spring boot 2.0及以上的对应jdk1.8, spring cloud Finchley 版。 jdk 1.7 对应的是 spring boot 1.5 (1.0版)
4. 部署到tomcat后程序的访问路径
本地中启动项目访问是没有项目名的,但部署上去后。访问路径要加上项目名了(如:http://IP:端口/项目名/路由)
采用内置tomcat 部署 :
导出jar 包(同maven 导 jar 包,导war 包相同)采用内置tomcat 部署 将jar 包放入linux 中的一个目录, 然后进入其所在目录,执行
# spSystem.jar: jar包 # springboot.log: 执行命令后所生成的项目运行log(命令执行完,查看此log看看项目是否启动成功) # &1 &:将此项目设置为守护进程,要不然黑窗口一关项目也就停止了 nohup java -jar spSystem.jar >springboot.log 2>&1 &
采用内置tomcat部署时要注意:同上 1, 3
当采用内置tomcat 部署时 没有导入 spring-boot-maven-plugin 插件 maven依赖 或者 没有在依赖中指定程序的主入口 都会报 no main in xx.jar
当注意1的时候, 就是与采用外部tomcat 部署相反了,把<scope>provided</scope>注释掉,或者把tomcat等的maven 依赖注释去除
当注意3 的时候, 就会报XXXXX 52 版本冲突
关闭程序,杀死进程就可以了
以上是关于spring boot tomcat 部署的主要内容,如果未能解决你的问题,请参考以下文章