SpringBoot項(xiàng)目打包部署到Tomcat

一梆暖、 文章背景

在最近一個(gè)項(xiàng)目中,維護(hù)行里一個(gè)年代較為久遠(yuǎn)的單體項(xiàng)目掂骏,需要將項(xiàng)目打包放到的tomcat服務(wù)器下運(yùn)行轰驳,因?yàn)楫厴I(yè)就很少接觸單體項(xiàng)目,在這里記錄一下弟灼。

二滑废、 什么是tomcat

Tomcat是一個(gè)開源的Java Servlet容器,它實(shí)現(xiàn)了Java Servlet和JavaServer Pages(JSP)規(guī)范袜爪,用于支持在Java環(huán)境中運(yùn)行Web應(yīng)用程序。Tomcat是Apache軟件基金會(huì)的一個(gè)項(xiàng)目薛闪,它提供了一個(gè)可靠且高性能的服務(wù)器環(huán)境辛馆,用于部署和運(yùn)行Java Web應(yīng)用程序。Tomcat可以作為一個(gè)獨(dú)立的Web服務(wù)器運(yùn)行豁延,也可以與其他HTTP服務(wù)器(如Apache HTTP服務(wù)器)配合使用昙篙,以提供更強(qiáng)大的功能。

三诱咏、 什么是單體項(xiàng)目

單體項(xiàng)目是一種傳統(tǒng)的軟件架構(gòu)模式苔可,它將一個(gè)完整的應(yīng)用程序作為一個(gè)單一的、獨(dú)立的單元進(jìn)行開發(fā)袋狞、部署和運(yùn)行焚辅。在單體項(xiàng)目中映屋,所有的功能模塊和業(yè)務(wù)邏輯都集中在一個(gè)應(yīng)用程序中,通常使用單一的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)同蜻。

在單體項(xiàng)目中棚点,應(yīng)用程序的不同模塊之間通過(guò)函數(shù)調(diào)用或者直接的方法調(diào)用進(jìn)行通信。這種緊密耦合的架構(gòu)模式使得開發(fā)和測(cè)試相對(duì)簡(jiǎn)單湾蔓,但也存在一些問(wèn)題瘫析。隨著應(yīng)用程序的規(guī)模不斷增大,單體項(xiàng)目往往變得龐大且復(fù)雜默责,導(dǎo)致代碼難以維護(hù)和擴(kuò)展贬循。此外,由于所有的功能都集中在一個(gè)應(yīng)用程序中桃序,當(dāng)某個(gè)模塊發(fā)生故障時(shí)杖虾,整個(gè)應(yīng)用程序可能會(huì)受到影響。

隨著微服務(wù)架構(gòu)的興起葡缰,單體項(xiàng)目逐漸被拆分為多個(gè)小型亏掀、獨(dú)立的服務(wù),每個(gè)服務(wù)負(fù)責(zé)一個(gè)特定的業(yè)務(wù)功能泛释。這種架構(gòu)模式可以提供更好的可擴(kuò)展性滤愕、可維護(hù)性和可靠性。

四怜校、 什么是war包

WAR(Web Application Archive)是一種用于打包和部署Java Web應(yīng)用程序的文件格式间影。它是一種特殊的JAR(Java Archive)文件,用于將Web應(yīng)用程序的相關(guān)文件(如HTML茄茁、JSP魂贬、Java類、配置文件裙顽、靜態(tài)資源等)打包在一起付燥。

WAR包是一種標(biāo)準(zhǔn)的部署格式,可以在Java Servlet容器中(如Tomcat愈犹、Jetty等)進(jìn)行部署和運(yùn)行键科。它提供了一種方便的方式來(lái)分發(fā)和部署Web應(yīng)用程序,使得開發(fā)人員可以將應(yīng)用程序打包成一個(gè)獨(dú)立的文件漩怎,然后將其部署到目標(biāo)服務(wù)器上勋颖。

在部署WAR包時(shí),Servlet容器會(huì)將其解壓并將其中的文件放置到適當(dāng)?shù)奈恢醚福缓髥?dòng)Web應(yīng)用程序饭玲。通常,WAR包中的WEB-INF目錄包含了應(yīng)用程序的配置文件叁执、類文件和其他資源茄厘,而靜態(tài)資源(如HTML矮冬、CSS、JavaScript文件)通常位于WAR包的根目錄或者一個(gè)名為"webapp"的目錄下蚕断。

總而言之欢伏,WAR包是一種用于打包和部署Java Web應(yīng)用程序的文件格式,方便了應(yīng)用程序的分發(fā)和部署亿乳。

五硝拧、 war包和jar的區(qū)別

WAR包和JAR包是兩種不同的文件格式,用于打包和部署不同類型的Java應(yīng)用程序葛假。

  1. 用途不同:WAR包主要用于打包和部署Java Web應(yīng)用程序障陶,而JAR包主要用于打包和分發(fā)Java應(yīng)用程序的庫(kù)、組件或可執(zhí)行文件聊训。
  2. 目錄結(jié)構(gòu)不同:WAR包通常包含一個(gè)特定的目錄結(jié)構(gòu)抱究,其中包括WEB-INF目錄和靜態(tài)資源文件,用于部署Web應(yīng)用程序带斑。而JAR包沒有特定的目錄結(jié)構(gòu)要求鼓寺,可以根據(jù)需要自由組織文件。
  3. 部署方式不同:WAR包通常被部署到Java Servlet容器(如Tomcat勋磕、Jetty)中妈候,用于運(yùn)行Web應(yīng)用程序欠肾。而JAR包可以直接運(yùn)行截汪,或者作為依賴項(xiàng)被其他Java應(yīng)用程序引用括改。
  4. 依賴管理不同:JAR包可以包含Java類和資源文件扳缕,用于共享和復(fù)用代碼。它們可以作為庫(kù)被其他應(yīng)用程序引用算行,并通過(guò)構(gòu)建工具(如Maven旨怠、Gradle)進(jìn)行依賴管理捂掰。而WAR包通常包含完整的Web應(yīng)用程序贝椿,不會(huì)被其他應(yīng)用程序直接引用想括。

總而言之含潘,WAR包適用于打包和部署Java Web應(yīng)用程序煞躬,具有特定的目錄結(jié)構(gòu)和部署方式。而JAR包適用于打包和分發(fā)Java應(yīng)用程序的庫(kù)疤苹、組件或可執(zhí)行文件习勤,可以作為依賴項(xiàng)被其他應(yīng)用程序引用。

六焙格、 SpringBoot打包成war包

要將Spring Boot項(xiàng)目打包為WAR(Web Application Archive)文件图毕,您可以按照以下步驟進(jìn)行操作:

  1. 在您的Spring Boot項(xiàng)目的pom.xml文件中,將打包方式設(shè)置為war眷唉。在<packaging>標(biāo)簽中添加以下內(nèi)容予颤。
<packaging>war</packaging>
  1. 在pom.xml文件中將build節(jié)點(diǎn)中的finalName修改為server.context-path中的路徑囤官。就是項(xiàng)目名稱。
<build>
   <plugins>
     <plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
 </plugins>
 <!--打包后的項(xiàng)目名-->
 <finalName>order</finalName>
</build>
  1. 在spring-boot-starter依賴中移除tomcat模塊蛤虐。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
</dependency>
  1. 添加servlet依賴党饮。
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
</dependency>
  1. 在您的Spring Boot項(xiàng)目的啟動(dòng)類上,添加 extends SpringBootServletInitializer 并重寫 configure 方法驳庭。這將使您的項(xiàng)目能夠在Servlet容器中運(yùn)行刑顺。示例代碼如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {
     plication.sources(YourApplication.class);
 }
 public static void main(String[] args) {
   SpringApplication.run(YourApplication.class, args);
 }
}
  1. 執(zhí)行Maven的打包命令,將項(xiàng)目打包為WAR文件饲常。在命令行中蹲堂,進(jìn)入項(xiàng)目的根目錄,然后運(yùn)行以下命令贝淤。這將在項(xiàng)目的 target 目錄下生成一個(gè)WAR文件柒竞。
mvn clean package
  1. 現(xiàn)在,您可以將生成的WAR文件部署到Servlet容器(如Tomcat)中運(yùn)行播聪。

[圖片上傳失敗...(image-8e2e76-1693355454820)]
[圖片上傳失敗...(image-c432a7-1693355477023)]

  1. 訪問(wèn)服務(wù)朽基。192.168.xxx.xxx:8080/order/doc.html

七、 配置tomcat支持https

要配置Tomcat支持HTTPS离陶,您可以按照以下步驟進(jìn)行操作:

  1. 獲取SSL證書:您需要從可信任的證書頒發(fā)機(jī)構(gòu)(CA)或自簽名證書創(chuàng)建工具中獲取SSL證書和私鑰稼虎。通常,您會(huì)收到一個(gè)包含.crt和.key文件的證書文件枕磁。
  2. 將證書和私鑰文件復(fù)制到Tomcat服務(wù)器上的某個(gè)目錄中渡蜻,例如 /path/to/cert
  3. 打開Tomcat的配置文件 server.xml 计济,該文件位于Tomcat安裝目錄的 conf 文件夾中茸苇。
  4. server.xml 文件中,找到以下Connector配置(可能會(huì)有多個(gè)Connector配置):
<Connector port="8080" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" />
  1. 在該Connector配置的上方沦寂,添加一個(gè)新的Connector配置学密,用于HTTPS連接。示例如下:
<Connector port="8443" protocol="HTTP/1.1"
 SSLEnabled="true"
 maxThreads="150"
 scheme="https"
 secure="true"
 keystoreFile="/path/to/cert/your_certificate.crt"
 keystorePass="your_keystore_password"
 keystoreType="PKCS12" />

確保按照實(shí)際情況修改 keystoreFile 為您的證書文件路徑传藏, keystorePass 為您的證書密碼腻暮, keystoreType 為證書類型(根據(jù)您的證書類型進(jìn)行修改)。 6. 保存并關(guān)閉 server.xml 文件毯侦。 7. 啟動(dòng)或重新啟動(dòng)Tomcat服務(wù)器哭靖。

現(xiàn)在,Tomcat將在8443端口上啟動(dòng)一個(gè)HTTPS連接侈离,您可以使用https://localhost:8443 訪問(wèn)您的應(yīng)用程序试幽。請(qǐng)確保在瀏覽器中信任您的證書,以避免安全警告卦碾。

八铺坞、 隱藏tomcat的版本信息

要隱藏Tomcat版本信息起宽,您可以按照以下步驟進(jìn)行操作:

  1. 打開Tomcat的配置文件 server.xml ,該文件位于Tomcat安裝目錄的 conf 文件夾中济榨。
  2. server.xml 文件中坯沪,找到以下配置:
<Server port="8005" shutdown="SHUTDOWN">
  1. 在該配置的上方,添加一個(gè)新的配置擒滑,用于隱藏版本信息腐晾。示例如下:
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  1. 保存并關(guān)閉 server.xml 文件。
  2. 啟動(dòng)或重新啟動(dòng)Tomcat服務(wù)器橘忱。

現(xiàn)在赴魁,Tomcat將不再在HTTP響應(yīng)頭中顯示版本信息。請(qǐng)注意钝诚,這只會(huì)隱藏版本信息颖御,但無(wú)法阻止有經(jīng)驗(yàn)的用戶通過(guò)其他方式確定Tomcat的版本。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凝颇,一起剝皮案震驚了整個(gè)濱河市潘拱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拧略,老刑警劉巖芦岂,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垫蛆,居然都是意外死亡禽最,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門袱饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)川无,“玉大人,你說(shuō)我怎么就攤上這事虑乖∨城鳎” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵疹味,是天一觀的道長(zhǎng)仅叫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)糙捺,這世上最難降的妖魔是什么诫咱? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮洪灯,結(jié)果婚禮上坎缭,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好幻锁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著边臼,像睡著了一般哄尔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柠并,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天岭接,我揣著相機(jī)與錄音,去河邊找鬼臼予。 笑死鸣戴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粘拾。 我是一名探鬼主播窄锅,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缰雇!你這毒婦竟也來(lái)了入偷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤械哟,失蹤者是張志新(化名)和其女友劉穎疏之,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暇咆,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锋爪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爸业。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片其骄。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沃呢,靈堂內(nèi)的尸體忽然破棺而出年栓,到底是詐尸還是另有隱情,我是刑警寧澤薄霜,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布某抓,位于F島的核電站,受9級(jí)特大地震影響惰瓜,放射性物質(zhì)發(fā)生泄漏否副。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一崎坊、第九天 我趴在偏房一處隱蔽的房頂上張望备禀。 院中可真熱鬧,春花似錦、人聲如沸曲尸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)另患。三九已至纽乱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昆箕,已是汗流浹背鸦列。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹏倘,地道東北人薯嗤。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纤泵,于是被迫代替她去往敵國(guó)和親骆姐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容