前篇大概講過了tomcat的釋出和部署,以及測試。
本篇詳細介紹下tomcat的部署相關的內容,本篇主要內容:
1 介紹下部署相關的內容,需要安裝的檔案以及上下文描述符
2 靜態部署——在tomcat啟動時部署
3 動態部署——在執行時自動部署
4 使用TCD完成部署,另外還可以對應用進行編譯、校驗、打包等功能。
其他內容參考:tomcat官方文件翻譯
介紹
部署就是把web應用開發時的檔案拷貝到tomcat容器中,並對其進行編譯等操作,使使用者可以訪問到該應用。在tomcat中有多種部署方式:
1 靜態部署:直接拷貝相應的web展開目錄、或者war包。(展開目錄的意思就是tomcat可以直接訪問的應用目錄,是未經過壓縮的。相反的就是war包,是一種經過壓縮的web應用檔案)。
2 動態部署:通過tomcat管理器或者其他工具(如TCD,tomcat client deployer)執行部署。
如果是使用靜態部署,或者使用tomcat管理器進行部署是不需要安裝任何東西的。
但是如果要使用TCD進行部署,那麼就需要預先安裝JDK和Ant,因為TCD中內建的是Ant的任務構建指令碼;然後再下載TCD的部署包。
另外,還需要了解一個概念——上下文,Context。在tomcat中,上下文就是一個web應用。在之前的tomcat版本中,上下文資訊是配置在server.xml中的,現在仍然可以,但是官方並不推薦這種做法。
上下文路徑主要在:
1 CATALINA_HOME/conf/容器名字/主機名字/應用名字.xml
2 CATALINA_HOME/webapps/應用名字/META-INF/context.xml
其中路徑1中:容器名字(enginename)通常為Catalina、主機名字為localhost。相關內容可以檢視server.xml中:
靜態部署——在tomcat啟動時部署
部署時,涉及到一個變數appBase。這個變數標識了一個目錄,該目錄存放著部署的web應用。
一般預設情況下,appBase為CATALINA_HOME/webapps,配置資訊位於server.xml中。
其中常用的幾個選項:
appBase指定了部署的目錄;
autoDeploy設定是否自動部署(下小節動態部署中會介紹);
unpackWARs設定了部署的形式,如果為true,則會以展開的形式部署;如果為false,則會以war包的形式部署。
設定了以上的內容後(以上都是tomcat預設的配置,不需要做任何改動),當啟動tomcat時,就會自動部署在appBase目錄下的應用。
並會按照下面的順序進行部署:
1 部署上下文描述符。
2 部署展開的應用。如果部署目錄中存在相應的war包,則檢查是否比當前的應用更新;如果更新,則刪除當前的應用,並解壓該war包,得到最新的應用。
3 部署war包。
動態部署——在tomcat執行時部署
動態部署需要一個配置引數,就是上面提到的 autoDeploy 為 true。
當設定了該屬性後,tomcat會在其執行時支援如下的操作:
1 部署新拷貝到appBase下的war檔案
2 部署拷貝到appBase下的展開的應用(未壓縮的)
3 當提供一個更新的war包時,重新部署應用。會先刪除當前存在的應用,再進行解壓部署。
4 當/WEB-INF/web.xml被改寫時,自動部署
5 當web應用的context.xml上下文描述符被更新時,自動部署
6 當CATALINA_HOME/conf下對應的應用的上下文描述符被更新時,自動部署
7 當對應的docBase文件被刪除時,自動部署。
使用TCD客戶端程式部署
TCD即tomcat客戶端部署工具,它使用了Ant的構建指令碼,因此需要具有一定Ant的知識。
使用過程如下:
首先,需要安裝Ant以及JDK(這個就不說了,沒它tomcat也跑步起來)。配置ANT_HOME和JAVA_HOME。
然後,下載TCD部署包。一般我們使用的時候下載的是上面的核心包,如果想要使用TCD則需要下載下面的部署包。
下載後在任意位置解壓:
可以看到目錄中包含一個build.xml,TCD的相關任務內容就配置在這裡面。
下面看看這個構建指令碼都包括什麼任務:
1 編譯:
編譯和校驗應用。這部分功能可以獨立使用,並且不需要執行中的tomcat。經過編譯的應用只能與相應版本的tomcat相關聯,不能保證在其他版本的容器中也能使用,這是因為編譯生成的程式碼與執行的元件有關係。需要注意的是,這個任務也會自動編譯在/WEB-INF/classes目錄下的類。
2 部署:在tomcat容器中部署應用
3 解除部署:解除應用的部署
4 開始:開始web應用
5 重新載入:重新載入web應用
6 停止:停止web應用
另外可以在deployer.properties中配置TCD相關的部署資訊,並且按照鍵值對的形式配置。
主要包括以下的內容: