前几天springboot项目部署到linux中,整个过程就是个坑啊。踩坑的过程当中也学到了许多。spring boot 项目部署时因为其内置了tomcat和jdk,并且还都是8。 因此部署的话就分为两种部署了, 第一种就是使用其内置的tomcat部署, 第二种就是采用外部的tomcat部署。采用内部的tomcat部署又分为两种: 第一种是打包成war包部署,第二种事打包成jar包部署。 二者区别就在于打包成jar包的是无静态资源的,如jsp,HTML等,像只是提供restful接口。html
阅读此篇博客请先去阅读本人的spring boot 经常使用注解java
除了必要的jar,插件外还需导入 spring-boot-maven-plugin 插件linux
<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部署时要注意:spring
1. 依赖jar包的冲突tomcat
因为spring boot 内置了tomcat,jdk,servlet等,因此部署到外部tomcat中时要将其内置的tomcat,servlet等设置为只在编译和测试时使用springboot
<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. 程序主入口是什么restful
项目中内置了servlet,程序的主入口原先是main方法,使用main方法自启动。 因此咱们要将其重写jsp
@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依赖时其相对应的版本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版)
ide
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 版本冲突
关闭程序,杀死进程就能够了
在此,但愿此篇博客能帮助到一些人。有不足之处,有问题的话能够博客上Q我,看到就会回复
原文出处:https://www.cnblogs.com/jingjiren/p/10337561.html