spring boot tomcat 部署

    前幾天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

相關文章
相關標籤/搜索