Tomcat9.0官方手冊中文版(二):部署

Introduction

部署是指將Web應用程序(第三方WAR或您自己的自定義Web應用程序)安裝到Tomcat服務器的過程。

Web應用程序部署可以在Tomcat服務器中以多種方式完成。

  • 靜態;在Tomcat啟動之前設置Web應用程序
  • 動態;通過直接操作已部署的Web應用程序(依賴於auto-deployment功能)或使用Tomcat Manager Web應用程序遠程訪問

Tomcat Manager是一個Web應用程序,可以通過HTML GUI交互使用,或以編程方式(通過基於URL的API)來部署和管理Web應用程序。

有許多方法可以執行依賴Manager Web應用程序的部署。 Apache Tomcat為Apache Ant構建工具提供任務。Apache Tomcat Maven Plugin project提供與Apache Maven的集成。還有一個名為Client Deployer的工具,可以從命令行使用它,並提供其他功能,例如編譯和驗證Web應用程序以及將Web應用程序打包到Web應用程序資源(WAR)文件中。

Installation

靜態部署Web應用程序不需要安裝,因為Tomcat提供了開箱即用的功能。使用Tomcat Manager的部署功能也不需要任何安裝,儘管需要進行一些配置,詳細說明在下一節。但是,如果您希望使用Tomcat客戶端部署程序(TCD),則需要安裝。

TCD未與Tomcat核心發行版一起打包,因此必須從“下載”區域單獨下載。下載通常是標記的apache-tomcat-9.0.x-deployer.


TCD需要先安裝Apache Ant 1.6.2+和Java。您需要設置指向Ant安裝根目錄的ANT_HOME環境值,以及指向Java安裝根目錄的JAVA_HOME值。此外,您應該確保Ant的ant命令,以及Java javac編譯器命令可以在shell中運行。

  1. 下載TCD發行版
  2. 不需要將TCD包提取到任何現有的Tomcat安裝中,它可以被提取到任何位置。
  3. Read Using the Tomcat Client Deployer

A word on Contexts

在談論Web應用程序的部署時,Context這個概念需要被理解。 Context在Tomcat中被稱為Web應用程序。

為了在Tomcat中配置一個Context ,一個Context Descriptor(Context描述)是必須的。Context Descriptor只是一個XML文件,它包含上下文的Tomcat相關配置,例如命名資源或會話管理器配置。在早期版本的Tomcat中,Context Descriptor配置的內容通常存儲在Tomcat的主配置文件中server.xml。但現在不鼓勵這種做法(儘管目前仍然有效)。


Context Descriptor不僅幫助Tomcat知道如何配置上下文,而且其他工具(如Tomcat Manager和TCD)通常使用這些上下文描述符來正確執行其角色。

Context Descriptor的位置是:

  1. $CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml
  2. $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

(1)中的文件名為[webappname] .xml,但(2)中的文件名為context.xml。如果沒有為Context提供Context Descriptor,Tomcat將使用默認值配置Context。

在Tomcat啟動時部署

如果您對使用Tomcat Manager或TCD不感興趣,那麼您需要將Web應用程序靜態部署到Tomcat,然後啟動Tomcat,此類部署的位置稱為appBase,它對於每個主機是指定的。你要麼複製一個所謂的exploded web application到此位置,或壓縮的Web應用程序資源.WAR文件。

還有當Host的deployOnStartup屬性為“true”時,在Tomcat啟動時應用才會部署到appBase指定的位置。

在這種情況下,Tomcat啟動時將發生以下部署順序:

  1. 將首先部署任何上下文描述符。
  2. 然後將部署未被任何上下文描述符引用的exploded web application。如果他們在appBase中有一個關聯的.WAR文件,並且它比exploded web application更新,則會刪除exploded web application,並從.WAR重新部署webapp。
  3. 將部署.WAR文件

在正在運行的Tomcat服務器上部署

可以將Web應用程序部署到正在運行的Tomcat服務器。

如果 Host的 autoDeploy屬性為“true”,主機將嘗試根據需要動態部署和更新Web應用程序,例如,如果將新的.WAR放入appBase。為此,主機需要啟用後臺處理,這是默認配置。

autoDeploy設置為“true”,運行Tomcat允許:

  • 部署.WAR文件複製到主機中appBase.
  • 部署已複製到主機中的exploded web application.
  • 重新部署已在提供新.WAR時從.WAR部署的Web應用程序。在這種情況下,將刪除exploded web application,並再次展開.WAR。請注意,如果配置主機以便.WAR不會使用展開,unpackWARs屬性設置為“false”,在這種情況下,Web應用程序將簡單地重新部署為壓縮存檔。
  • 如果更新了/WEB-INF/web.xml文件(或定義為WatchedResource的任何其他資源),則重新加載Web應用程序。
  • 如果更新了部署Web應用程序的Context Descriptor文件,則重新部署Web應用程序。
  • 如果更新Web應用程序使用的全局或每主機上下文描述符文件,則重新部署從屬Web應用程序。
  • 如果將上下文描述符文件(具有與先前部署的Web應用程序的上下文路徑對應的文件名)添加到Web應用程序,則重新部署Web應用程序$CATALINA_BASE/conf/[enginename]/[hostname]/ directory.
  • 如果刪除了其文檔庫(docBase),則取消部署Web應用程序。請注意,在Windows上,這假定啟用了反鎖定功能(請參閱上下文配置),否則無法刪除正在運行的Web應用程序的資源。

請注意,也可以在加載程序中配置Web應用程序重新加載,在這種情況下,將跟蹤已加載的類以進行更改。

使用客戶端部署程序包進行部署

最後,可以使用Tomcat Client Deployer實現Web應用程序的部署。這是一個包,可用於驗證,編譯,壓縮到.WAR,以及將Web應用程序部署到生產或開發Tomcat服務器。應該注意,此功能使用Tomcat Manager,因此目標Tomcat服務器應該運行。

假設用戶熟悉Apache Ant以使用TCD。 Apache Ant是一個腳本化的構建工具。 TCD預先打包了要使用的構建腳本。只需要對Apache Ant有一定的瞭解(本頁前面列出的安裝,熟悉使用操作系統命令shell和配置環境變量)。

TCD包括Ant任務,部署前用於JSP編譯的Jasper頁面編譯器,以及驗證Web應用程序上下文描述符的任務。驗證器任務(類org.apache.catalina.ant.ValidatorTask)僅允許一個參數:解壓的Web應用程序的基本路徑。

TCD使用解壓的Web應用程序作為輸入(請參閱下面使用的屬性列表)。以部署程序編程部署的Web應用程序可以包括上下文描述符/META-INF/context.xml.

TCD包含一個即用型Ant腳本,具有以下目標:

  • compile(默認):編譯並驗證Web應用程序。這可以單獨使用,也不需要運行Tomcat服務器。已編譯的應用程序僅在關聯的應用程序上運行Tomcat X.Y.Z服務器版本,並不保證在另一個Tomcat版本上工作,因為Jasper生成的代碼取決於其運行時組件。還應該注意的是,該目標還將自動編譯位於其中的任何Java源文件/WEB-INF/classesWeb應用程序的文件夾。
  • deploy:將Web應用程序(已編譯或未編譯)部署到Tomcat服務器。
  • undeploy:取消部署Web應用程序
  • start:啟動Web應用程序
  • reload:重新加載Web應用程序
  • stop:停止Web應用程序

為了配置部署,請創建一個名為的文件deployer.properties在TCD安裝目錄root中。在此文件中,每行添加以下name = value對:

此外,您需要確保已為目標Tomcat Manager(TCD使用)設置了用戶,否則TCD將不會使用Tomcat Manager進行身份驗證,部署將失敗。要執行此操作,請參閱Tomcat Manager頁面。

  • build:默認情況下,使用的構建文件夾將是${build}/webapp/${path} (${build},默認情況下,指向${basedir}/build)。執行結束後compile目標,Web應用程序.WAR將位於${build}/webapp/${path}.war.
  • webapp:包含將被編譯和驗證的解壓的Web應用程序的目錄。默認情況下,該文件夾是myapp.
  • path:默認情況下,部署Web應用程序的上下文路徑/myapp.
  • url:正在運行的Tomcat服務器的Tomcat Manager Web應用程序的絕對URL,將用於部署和取消部署Web應用程序。默認情況下,部署者將嘗試訪問在localhost上運行的Tomcat實例http://localhost:8080/manager/text.
  • username:Tomcat Manager用戶名(用戶應該具有manager-script的角色)
  • password:Tomcat Manager密碼。


分享到:


相關文章: