目錄
- Tomcat部署SpringBoot項目的war包的方法
- 一、環境
- 二、SpringBoot打war包配置
- 三、Tomcat啟動war包
Tomcat部署SpringBoot項目的war包的方法
一、環境
1.新建系統變量名: CATALINA_HOME,變量值:D:\Development\apache-tomcat-8.5.20 ; (CATALINA_HOME中的變量值為你tomcat的安裝路徑,不包括\bin)2.在系統變量Path中添加:%CATALINA_HOME%\bin。(;分號結尾,第一個%前面若沒有分號,分號是英文狀態下輸入的)
配置完成,在dos下輸入命令“startup”將會看到如下成功界面
二、SpringBoot打war包配置
pom.xml配置
springboot web啟動器包含內置tomcat,改用外部 tomcat去除剔除springboot的tomcat
(1) 依賴(雖然已經添加依賴打包是剔除springboot的tomcat)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加servlet-api依賴 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
(2)SpringBoot啟動類,必須繼承一個SpringBootServletInitializer,然后重寫configure方法,目的是為當前這個SpringBoot啟動類構建新資源。我這里項目創建的時候生成了一個ServletInitializer,所以直接繼承ServletInitializer即可。如果你的項目沒有ServletInitializer這個類,則手動繼承。
public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringbootWarProjectApplication.class); } }
1.利用 maven 打包成 war:mvn clean install —>> xx.war
2.圖形操作按鈕打包。
3.打包位置:啟動后生成的war包(target包下),復制到tomcat目錄下,記得設置tomcat的訪問端口號。
三、Tomcat啟動war包
機器下載的tomcat 8.5xx 壓縮包,解壓安裝。(1) 編輯 tomcat 配置文件設置 訪問端口為 項目配置文件中配置的端口號(保持訪問端口不變)(2) 將打包好的 war 包復制到 tomcat/webapps 目錄下(3) 啟動 tomcat:bin/startup.xx(4) 啟動成功,訪問接口–>> 404可能存在的問題: 項目在intellij idea里配置tomcat可以啟動訪問, 打成war包丟到tomcat webapps下能啟動卻訪問不了相關的接口, 這個問題是因為idea會默認將項目以ROOT為目錄的文件,而丟到tomcat的webapps下面則是解壓成你項目名稱為目錄的文件,和ROOT是同級的可以有以下幾種解決方案一:將war包放在Tomcat的ROOT包下(或者將你的war名稱改成作為ROOT.war)
二:在tomcat的server.xml文件的Host標簽內配置
//<Context path="/" docBase="你項目的地址" reloadable="true"/> <Context path="/car" docBase="C:\Users\Admin\Desktop\apache-tomcat-8.5.54\webapps\ROOT\JavaWebTest.war" reloadable="true"></Context>
三、設置Tomcat默認訪問路徑
tomcat默認訪問路徑為 http://localhost:8080/項目名/頁面等路徑,有些客戶要求只輸入IP,自動進入項目登錄頁面,設置如下:修改tomcat/conf/server.xml在標簽中加入:
<Context path="" docBase="E:\tomcat\webapps\項目文件夾名稱" debug="0" reloadable="true" />
path:war包解壓后的項目名稱,也就是訪問路徑(例:http://localhost:8080/car/)docBase:war包的路徑(需要把war包的后綴名加上,如上圖所示,避免報錯)reloadable:自動加載保存上述修改后,雙擊\bin\startup.bat啟動Tomcat即可三:前端訪問不到后端接口問題用tomcat發布時,將前端請求的路徑加上你的項目名稱正常啟動后,地址欄輸入localhost:8080會進入tomcat路徑,ROOTweb.xml指定的index頁面。所以要在地址欄輸入localhost:8080/war包名稱/ 就會進入tomcat路徑中自己的文件夾。(該文件夾就是自己war被解析后生成的)
2.啟動中文亂碼問題:啟動Tomcat后,產生的日志有亂碼的情況出現,不要慌,這并不影響你項目的正常運行。這是由于編碼不一致引起的,Tomcat啟動后默認編碼UTF-8,而Windows的默認編碼是GBK。因此你想讓其不亂碼,只需配置conf\logging.properties的編碼格式即可
修改保存后,重新啟動Tomcat,你會發現產生的日志是我們所能看懂的了
3.啟動成功的頁面