SpringBoot項目部署到外部Tomcat的相關配置


  在開發階段我們推薦使用內嵌的tomcat進行開發,因為這樣會方便很多,但是到生成環境中,需要將項目部署到外部Tomcat中運行,此時需要一些額外的配置:

1.pom.xml調整

1.1 打包方式修改

<packaging>jar</packaging>

變更為

<packaging>war</packaging>

1.2 將spring-boot-starter-tomcat的范圍設置為provided

  scope設置為provided,將springboot的內置Tomcat在打包時排除

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <scope>provided</scope>
  </dependency>

 發現原來項目中沒有配置上面配置,因為spring-boot-starter-web內傳遞依賴了tomcat,我們需要手動配以覆蓋傳遞依賴的配置

2. 啟動類修改

  繼承SpringBootServletInitializer覆蓋configure方法,示例:

public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
    
    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }
}

3.項目訪問路徑修改

   SpringBoot開發中使用內置Tomcat運行時,常常不使用項目名直接訪問,如果部署到外部Tomcat就會出現問題,此時可以做以下配置:

  修改server.xml文件

    在Tomcat安裝路徑下conf文件夾中server.xml文件中找到<Host></Host>標簽,在其內部添加

<Host>
    <Context docBase="D:\Tomcat\apache-tomcat-9.0.24\webapps\erp" path="" reloadable="true" crossContext="true"/> //其中docBase是項目war包在webapps的地址
</Host>

 


• 另外,需要注意的幾點:

  1.要保證啟動tomcat之前開啟mysql

  2.Linux對於數據庫的庫名表名嚴格區分大小寫,需要對其進行表名全部小寫的限制

    在/etc/my.cnf中添加

[mysqld]
lower_case_table_names=1

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM