Tomcat 部署詳解

xingoo發表於2015-04-28

前篇大概講過了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相關的部署資訊,並且按照鍵值對的形式配置。

  主要包括以下的內容:

  1 build:構建目錄,預設是${build}/webapp/${path}。在編譯任務結束後,編譯的結果將會儲存為${build}/webapp/${path}.war
  2 webapp:這個目錄包含了將被編譯和校驗的展開應用。預設為myapp
  3 path:應用的部署上下文路徑,預設是/webapp
  4 url:tomcat容器中管理器應用的絕對地址,改地址將會用於部署和解除部署應用。預設,部署會嘗試進入預設的Locahost例項,即http://localhost:8080/manager
  5 username:tomcat管理器的使用者名稱
  6 password:tomcat管理器的使用者密碼
  需要注意的是tomcat管理器的授權問題,如果不能正常使用管理器,該部署也會失敗。

參考

相關文章