1. 程式人生 > >SpringBoot專案打war包部署Tomcat教程

SpringBoot專案打war包部署Tomcat教程

一、簡介

正常來說SpringBoot專案就直接用jar包來啟動,使用它內部的tomcat實現微服務,但有些時候可能有部署到外部tomcat的需求,本教程就講解一下如何操作

二、修改pom.xml

將要部署的module的pom.xml檔案<packaging>節點設定為war

<!-- 預設打包方式為jar,如果是用module做父級則需要修改為pom,如果使用外部tomcat可以修改為war, 子級module的打包方式只能是jar或者war -->
<packaging>war</packaging>

 有可能打包時會提示找不到maven-war-plugin那就在pom.xml中增加如下配置,加在<plugins>節點中

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
</plugin>

三、修改main()方法啟動類

繼承SpringBootServletInitializer基類來初始化SpringBoot,重寫裡面的configure方法並把自己注入進去

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @ComponentScan(
"com.ysl.ts")//掃描common模組的包 @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //繼承war包SpringBoot初始化基類 public class WebBaseApp extends SpringBootServletInitializer { //重寫配置方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WebBaseApp.class); } public static void main(String[] args) { SpringApplication.run(WebBaseApp.class, args); } }

四、禁用jmx內部bean監控(可選)

如果我們部署的war中都有某個module的引用,而這個module中又有bean就會出現如下錯誤,就是兩個war都註冊了相同的bean導致的

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean

在application.properties中增加如下配置禁用掉jmx內部監控即可

spring.jmx.enabled=false

五、附錄tomcat安裝

解壓縮到指定目錄:C:\apache-tomcat-8.5.33

1、新增環境變數

變數名:CATALINA_HOME
變數值:C:\apache-tomcat-8.5.33

PATH中新增:
%CATALINA_HOME%\bin

2、進入tomcat的解壓縮目錄,進入bin執行startup.bat(如果閃退,檢查環境變數是否配置正確)

開啟瀏覽器http://localhost:8080就可以看到如下圖就代表啟動成功

3、配置管理員

開啟tomcat目錄,進入conf目錄,開啟tomcat-users.xml,可以新增如下使用者,或者解開預設註釋也行,儲存重啟,關閉startup.bat的視窗再執行shutdown.bat徹底關閉tomcat後再啟動

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<user username="admin" password="" roles="manager-gui"/>

啟動後點擊Manager APP輸入admin密碼空確定能進入,代表管理員配置完畢

4、部署站點

將自己的war放入某個位置並記好路徑

開啟tomcat的目錄,進入conf目錄,開啟server.xml,找到Host節點在其內部增加如下節點

path:訪問目錄 如http://localhost:8080/ysl_web/

docBase:站點war目錄,可以是相對路徑也可以是絕對路徑,他會自動對war包進行解壓縮並存放到tomcat的webapps目錄下

<Context path="/ysl_web" docBase="D:/TravelSupport/WebSite/ysl-ts-web-base-1.0-SNAPSHOT.war" debug="0" privileged="true" reloadable="true"/>

重啟tomcat,如果報錯就在tomcat的logs目錄下檢視日誌,啟動成功,點選Manager App,點選/ysl_web就可以看到自己的站點了