您所在的位置:網站首頁>幫助中心>

幫助中心SUPPORT CENTER

Tomcat Web 應用部署

創建時間:2018-08-02點擊次數:534

本章概述

部署這個術語描述的就是,將 Web 應用(第三方的 WAR 文件,或是你自己定制的 Web 應用)安裝到 Tomcat 服務器上的整個過程。

在 Tomcat 服務器上,可以通過多種方法部署 Web 應用:

  • 靜態部署。在啟動 Tomcat 之前安裝 Web 應用。
  • 動態部署。使用 Tomcat 的 Manager 應用直接操控已經部署好的 Web 應用(依賴 auto-deployment 特性)。

Tomcat Manager 是一種能交互使用(利用 HTML GUI)的 Web 應用,還可以利用編程的方式(通過基于 URL 的 API)來部署并管理 Web 應用。

依靠 Manager 這種 Web 應用,可以實施多種部署。Tomcat 為 Apache Ant 構建工具提供了多個任務。 Apache Tomcat Maven Plugin 工程則提供了與 Apache Maven 的集成。另外還有一種工具叫做客戶端配置器 (Client Deployer,TCD),它通過命令行來使用,提供一些額外的功能,比如編譯與驗證 Web 應用,以及將 Web 應用打包成 Web 應用資源(WAR)文件。

安裝

靜態部署 Web 應用時,并不需要附加的安裝,因為 Tomcat 已經提供了這項功能。利用 Tomcat Manager 部署應用也不需要任何安裝,不過需要進行一番配置,詳見Tomcat Manager 手冊。如果使用客戶端配置器的話,就必須要進行安裝了。

Tomcat 的核心分發版并不包括 TCD,必須從下載區獨立下載它,下載文件通常冠名為:apache-tomcat-8.0.x-deployer。

要想使用 TCD,必須事先配置有 Apache Ant 1.6.2+ 以及 Java 安裝。另外,還必須定義一個指向 ANT 安裝根目錄的 ANT_HOME 環境變量,以及一個指向 Java 安裝目錄的 JAVA_HOME 值。另外,還必須確保必須在操作系統所提供的命令 shell 中運行 ANT 的 ant 命令,以及 Java 的 javac 編譯器命令。

  1. 下載 TCD 分發版;
  2. TCD 包可以解壓縮到任何地方,不需要解壓縮到任何已存在的 Tomcat 安裝下。
  3. 相關用法,參考下文的使用客戶端部署器進行部署

關于上下文

在談到 Web 應用的配置時,需要理解一下上下文(Context)這個概念。上下文在 Tomcat 中其實就是 Web 應用的意思。

為了在 Tomcat 中配置上下文,需要用到上下文描述符文件( Context Descriptor)。上下文描述符文件其實就是一個 XML 文件,含有 Tomcat 與上下文相關的配置信息,例如命名資源或會話管理器配置信息。在 Tomcat 的早期版本中,上下文描述符文件配置的內容經常保存在 Tomcat 的主要配置文件 server.xml 中,但現在不再推薦采用這一方式(雖然目前它依然有效)。

上下文描述符文件不僅能幫助 Tomcat 了解如何配置上下文,而且其他工具(如 Manager 與 TCD)也經常會借助上下文描述符文件來正確履行它們的職責。

上下文描述符文件位于:

1.$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml

2.$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

在目錄 1 中的文件名為 [webappname].xml,但在目錄 2 中,文件名為 context.xml。如果某個 Web 應用沒有相應的上下文描述符文件,Tomcat 就會使用默認值配置該應用。

在 Tomcat 啟動時進行部署

如果你對使用 Manager 或 TCD 不是很感興趣,那就需要先把 Web 應用靜態地部署到 Tomcat 中,然后再啟動 Tomcat。 這種情況下應用部署的位置由 appBase 目錄屬性來決定,每臺主機都指定有這樣一個位置。該位置既可以放入未經壓縮的 Web 應用資源文件(通常被稱為 exploded web application,“膨脹 Web 應用”),也可以放置已壓縮過的 Web 應用資源文件(.WAR 文件)。

再次解釋一下,應用部署位置由主機(默認主機為 localhost)的 appBase 屬性來指定。默認的 appBase 屬性所指定的目錄為 $CATALINA_BASE/webapps。只有當主機的 deployOnStartup 屬性為 true, 應用才會在 Tomcat 啟動時進行自動部署。

在以上情況下,當 Tomcat 啟動時,部署的具體步驟如下:

  1. 先部署上下文描述符文件。
  2. 然后再對沒被任何上下文描述符文件引用過的膨脹 Web 應用進行部署。 如果在 appBase 中已存在與這種應用有關的 .WAR 文件,而且要比膨脹應用文件更新,那么就會將膨脹應用的文件夾清除,轉而從 .WAR 文件中部署 Web 應用。
  3. 部署 .WAR 文件。

在運行中的 Tomcat 服務器上進行動態應用部署

除了靜態部署之外,也可以在運行中的 Tomcat 服務器上進行應用部署。

如果主機的 autoDeploy 屬性為 true,主機就會在必要時嘗試著動態部署并更新 Web 應用。 例如,當把一個新 .WAR 文件放入 appBase 所指定的名錄時。為了實現這種操作,主機就需要啟用后臺處理,當然這也是默認的配置。

當 autoDeploy 設置為 true 時,運行中的 Tomcat 服務器能夠允許實現以下行為:

  • 對放入主機 appBase指定目錄下的 .WAR 文件進行配置。
  • 對放入主機的膨脹 Web 應用進行配置。
  • 對于已通過 .WAR 文件配置好的應用,如果又提供了更新的 .WAR 文件,則使用新 .WAR 文件對該應用重新進行配置。在這種情況下,會先移除原有的膨脹 Web 應用,然后再次對 .WAR 文件進行擴展(膨脹)。注意,如果在主機配置中,沒有把 unpackWARs 屬性設為 false,則 WAR 文件將不會膨脹,這時 Web 應用將部署為一個壓縮文檔。
  • 如果 /WEB-INF/web.xml 文件(或者任何其他被定義為 WatchedResource 的資源)更新,則重新加載 Web 應用。
  • 如果用來部署 Web 應用的上下文描述符更新,則重新部署該 Web 應用。
  • 如果 Web 應用所使用的全局或者每臺主機中的上下文描述符已更新,則重新部署與該應用有依賴關系的 Web 應用。
  • 如果一個上下文描述符被添加到 $CATALINA_BASE/conf/[enginename]/[hostname]/ 目錄中,并且該描述文件帶有與之前部署的 Web 應用的上下文路徑相對應的文件名,則重新部署該 Web 應用。
  • 如果某個 Web 應用的文檔庫(docBase)被刪除,則取消對該應用的部署。注意,在 Windows 系統下,要想實現這樣的行為,必須開啟防鎖死功能(參看 Context 配置文檔),否則無法刪除運行中的 Web 應用的資源文件。

注意,也可以在加載器中對 Web 應用的重新加載進行配置,在這種情況下,會跟蹤已加載的類所產生的更改。

使用 Tomcat Manager 進行部署

詳情參看 Tomcat Manager 文檔

使用客戶端部署器進行部署

最后要介紹的是利用客戶端部署器(TCD)對 Web 應用進行部署。客戶端部署器可以實施的行為包括:驗證并編譯 Web 應用,將資源文件壓縮成 .WAR 文件,并將 Web 應用部署到用于生產或開發環境的 Tomcat 服務器上。一定要注意,該特性的實現需要使用 Tomcat Manager,而且目標 Tomcat 服務器也應處于運行狀態。

因為會用到 TCD,所以要求用戶還必須熟悉 Apache Ant。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 版本的服務器上,又因為 Jasper 生成的代碼依賴它的運行時組件,所以已編譯應用并不一定能在其他版本的 Tomcat 版本上運行。另外值得注意的是,該目標也能自動編譯位于 /WEB-INF/classes 這一應用目錄下的任何 Java 源文件。
  • deploy 在 Tomcat 服務器上部署 Web 應用(無論其是否編譯過)。
  • undeploy 取消對某個 Web 應用的部署。
  • start 開啟 Web 應用。
  • reload 重新加載 Web 應用。
  • stop 停止 Web 應用。

為了能夠配置部署,還需要在 TCD 安裝的根目錄下創建一個叫做 deployer.properties 的文件,并在該文件中的每行添加下列名值對:

除此之外,你還必須確定為 TCD 所使用的目標 Tomcat Manager 創建了一個用戶,否則 TCD 就無法驗證 Tomcat Manager,從而造成配置失敗,詳細信息參看 Tomcat Manager 文檔

  • build 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 應用的絕對路徑,用于對 Web 應用的部署與取消部署。默認情況下,部署器會嘗試訪問運行在 localhost 上的 Tomcat 實例,其 url 為 http://localhost:8080/manager/text。
  • username Tomcat Manager 的用戶名(用戶應具有讀寫 manager-script 的權限)。
  • password Tomcat Manager 的密碼。

成人av-成人av在线-成人av电影-成人av片