前篇大概講過了tomcat的發佈和部署,以及測試。html
本篇詳細介紹下tomcat的部署相關的內容,本篇主要內容:web
1 介紹下部署相關的內容,須要安裝的文件以及上下文描述符apache
2 靜態部署——在tomcat啓動時部署tomcat
3 動態部署——在運行時自動部署app
4 使用TCD完成部署,另外還能夠對應用進行編譯、校驗、打包等功能。webapp
其餘內容參考:tomcat官方文檔翻譯工具
部署就是把web應用開發時的文件拷貝到tomcat容器中,並對其進行編譯等操做,使用戶能夠訪問到該應用。在tomcat中有多種部署方式:測試
1 靜態部署:直接拷貝相應的web展開目錄、或者war包。(展開目錄的意思就是tomcat能夠直接訪問的應用目錄,是未通過壓縮的。相反的就是war包,是一種通過壓縮的web應用文件)。ui
2 動態部署:經過tomcat管理器或者其餘工具(如TCD,tomcat client deployer)執行部署。url
若是是使用靜態部署,或者使用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中:
部署時,涉及到一個變量appBase。這個變量標識了一個目錄,該目錄存放着部署的web應用。
通常默認狀況下,appBase爲CATALINA_HOME/webapps,配置信息位於server.xml中。
其中經常使用的幾個選項:
appBase指定了部署的目錄;
autoDeploy設置是否自動部署(下小節動態部署中會介紹);
unpackWARs設置了部署的形式,若是爲true,則會以展開的形式部署;若是爲false,則會以war包的形式部署。
設置了以上的內容後(以上都是tomcat默認的配置,不須要作任何改動),當啓動tomcat時,就會自動部署在appBase目錄下的應用。
並會按照下面的順序進行部署:
1 部署上下文描述符。
2 部署展開的應用。若是部署目錄中存在相應的war包,則檢查是否比當前的應用更新;若是更新,則刪除當前的應用,並解壓該war包,獲得最新的應用。
3 部署war包。
動態部署須要一個配置參數,就是上面提到的 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即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相關的部署信息,而且按照鍵值對的形式配置。
主要包括如下的內容: