說明:我項目使用的是JDK1.8+springboot内置tomcat,騰訊雲伺服器為window系列。已經嘗試過打包成功且部署到伺服器上。
如果你的版本和我的不一樣,那麼不能保證一定成功。
打包前注意:
(1)第一步,首先保證你的項目本機上是可以跑起來運作的。
(2)關于項目中關聯的一些資料庫,和絕對路徑的配置,確定在伺服器中能夠連接配接得上以及路徑能夠通路。
(3)伺服器中的tomcat要求9.0版本,别的版本會報錯,原因我會在下面講。
(4)項目開發時JDK用什麼版本伺服器就用什麼版本。
確定以上4點,是我們部署成功的關鍵。
開始步驟:
1、在pom.xml中如果要打war包,必須加上該行代碼。
<packaging>war</packaging>
如下圖所示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6NGVNRTWU1EMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwUDOwQjMxIjM0EjMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、pom.xml中繼續加入以下代碼:該代碼用于spring boot中内嵌的tomcat包依賴排除,不然會産生沖突。
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
具體位置如下圖:
3、pom.xml中繼續加入以下依賴:該代碼用于開發時使用spring boot内嵌tomcat進行調試,生産時使用外部tomcat
scope裡的provided意思是隻用于開發及測試階段。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
具體位置如下圖:
4、找到項目中的application 然後讓該類繼承SpringBootServletInitializer,然後重寫configure方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(你項目的apprication類名.class);
}
如下圖所示:
到這裡,目前項目中需要打包配置的步驟已經完成,接下來進行打包
1、點選idea右邊的maven-》你的項目名-》Lifecycle-》輕按兩下package
點選運作控制台會列印打包的過程資訊,主要看最後是不是顯示成功。如果成功,說明前面步驟沒問題。
如果失敗了,那麼請再次檢查上面的步驟以及注意的事項。
2、如下圖打開target,打好的包就在該目錄下,名稱為項目名-0.0.1-SNAPSHOT.war,首先把名字改一下,改成ROOT.war,
改名字為ROOT主要是不用打項目名,在伺服器上測試直接可以localhost加端口号加你的項目登入路徑就能打開系統頁面。
我們祭出ctrl+c,ctrl+v大法把該war包放到桌面,再移動到騰訊雲伺服器的tomcat中去。
包已經打好,那麼我們接下來到伺服器的tomcat中操作
首先一定要確定tomcat可以正常啟動
1、将war包移動到騰訊雲伺服器tomcat目錄下的webapps中,不需要解壓,不需要任何操作。
如果webapps目錄中有ROOT檔案夾,删除即可。
2、啟動tomcat
現在解釋為什麼一定要tomcat9.0版本,因為我們的war包中預設打的tomcat的lib包為9.0版本
如果我們嘗試放在tomcat别的版本上,啟動tomcat控制台就會報各種異常。
如圖所示:
按道理是可以改版本的,但是由于太懶,是以沒去找解決方案。。。
最後跑完看一下控制台,看看是否有報錯,然後在伺服器的本地上進行測試吧。
如果改名字為ROOT.war,在伺服器上測試直接可以localhost+端口号+你的項目登入路徑就能打開系統頁面。
如:localhost:8080/sys/login
如果沒改名字,還是原來項目名.war,在伺服器上測試直接可以localhost+端口号+你的項目名+登入路徑就能打開系統頁面。
如:localhost:8080/項目名/sys/login
如果你們伺服器上測試也沒問題了,那麼就要公網測試了,這個就不多說了,伺服器能跑起來公網的問題其實注意兩點就行
1、騰訊雲注意安全組開放端口,這裡建議開放80端口的那個選項,然後把該伺服器添加到安全組中,之後把tomcat的端口改成80。
2、安全組開放了之後有可能還不能公網通路,那麼就是防火牆的問題了,把防火牆關閉即可。