zoukankan      html  css  js  c++  java
  • 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 版本冲突

        关闭程序,杀死进程就可以了

  • 相关阅读:
    【eoe资源】通过片段创建灵活的用户界面
    史上最全的Android开发索引帖
    临时记录
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    【转】深入探讨 Android 传感器
    Java Collections Framework Java集合框架List,Map,Set等全面介绍之概要篇
    谷歌 G1 android APK安装器 离线安装软件
    【转】請為你的 Android 程式加上 obfuscation 吧!
    【转】Android Toolchain与Bionic Libc
    用VirtualBox在XP环境下虚拟Ubuntu的过程
  • 原文地址:https://www.cnblogs.com/jingjiren/p/10337561.html
Copyright © 2011-2022 走看看