Tomcat 部署詳解

前篇大概講過了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中:

  

靜態部署——在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管理器的受權問題,若是不能正常使用管理器,該部署也會失敗。

參考

相關文章
相關標籤/搜索