前言
整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。
開源專案
同時也為從零手寫實現 tomcat 提供一些基礎和特性的思路。
minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。
系列文章
web server apache tomcat11-01-官方文件入門介紹
web server apache tomcat11-02-setup 啟動
web server apache tomcat11-03-deploy 如何部署
web server apache tomcat11-04-manager 如何管理?
web server apache tomcat11-06-Host Manager App -- Text Interface
web server apache tomcat11-07-Realm Configuration
web server apache tomcat11-08-JNDI Resources
web server apache tomcat11-09-JNDI Datasource
web server apache tomcat11-10-Class Loader
...
簡介
對於管理員和 Web 開發人員來說,在開始之前,有一些重要的資訊您應該熟悉。本文件作為對 Tomcat 容器背後一些概念和術語的簡要介紹,以及在需要幫助時應該去哪裡的指南。
術語
在閱讀這些文件的過程中,您會遇到許多術語;一些是特定於 Tomcat 的,而另一些是由 Servlet 和 JSP 規範定義的。
- 上下文(Context)- 簡而言之,上下文是一個 Web 應用程式。
如果您發現需要新增更多術語到此部分,請告訴我們。
目錄和檔案
以下是一些關鍵的 Tomcat 目錄:
- /bin - 啟動、關閉和其他指令碼。*.sh 檔案(對於 Unix 系統)是 *.bat 檔案(對於 Windows 系統)的功能副本。由於 Win32 命令列缺少某些功能,因此這裡有一些額外的檔案。
- /conf - 配置檔案和相關的 DTD。這裡最重要的檔案是 server.xml。這是容器的主要配置檔案。
- /logs - 預設情況下存放日誌檔案。
- /webapps - 這是您的 Web 應用程式的位置。
CATALINA_HOME 和 CATALINA_BASE
在文件中,有兩個屬性的引用:
- CATALINA_HOME:代表您的 Tomcat 安裝的根目錄,例如 /home/tomcat/apache-tomcat-11.0.0 或 C:\Program Files\apache-tomcat-11.0.0。
- CATALINA_BASE:代表特定 Tomcat 例項的執行時配置的根目錄。如果您想在一臺機器上執行多個 Tomcat 例項,請使用 CATALINA_BASE 屬性。
如果您將這兩個屬性設定為不同的位置,那麼 CATALINA_HOME 位置包含靜態資源,例如 .jar 檔案或二進位制檔案。CATALINA_BASE 位置包含配置檔案、日誌檔案、部署的應用程式以及其他執行時要求。
為什麼使用 CATALINA_BASE
預設情況下,CATALINA_HOME 和 CATALINA_BASE 指向同一個目錄。當您需要在一臺機器上執行多個 Tomcat 例項時,手動設定 CATALINA_BASE。這樣做有以下好處:
- 更容易管理升級到較新版本的 Tomcat。因為所有具有單個 CATALINA_HOME 位置的例項共享一組 .jar 檔案和二進位制檔案,您可以輕鬆地將檔案升級到較新版本,並將更改傳播到使用相同 CATALIA_HOME 目錄的所有 Tomcat 例項。
- 避免重複使用相同的靜態 .jar 檔案。
- 可以共享某些設定,例如 setenv shell 或 bat 指令碼檔案(取決於您的作業系統)。
CATALINA_BASE 的內容
在開始使用 CATALINA_BASE 之前,請先考慮並建立 CATALINA_BASE 使用的目錄樹。請注意,如果您沒有建立所有推薦的目錄,Tomcat 將自動建立這些目錄。如果它無法建立所需的目錄,例如由於許可權問題,Tomcat 將無法啟動,或者可能無法正常工作。
考慮以下目錄列表:
- 包含 setenv.sh、setenv.bat 和 tomcat-juli.jar 檔案的 bin 目錄。
- 推薦:否。
- 查詢順序:首先檢查 CATALINA_BASE;然後回退到 CATALINA_HOME。
- 包含要新增到類路徑的其他資源的 lib 目錄。
- 推薦:是,如果您的應用程式依賴於外部庫。
- 查詢順序:首先檢查 CATALINA_BASE;其次載入 CATALINA_HOME。
- 用於特定例項日誌檔案的 logs 目錄。
- 推薦:是。
- 用於自動載入的 Web 應用程式的 webapps 目錄。
- 推薦:是,如果您要部署應用程式。
- 查詢順序:僅檢查 CATALINA_BASE。
- 包含已部署的 Web 應用程式的臨時工作目錄的 work 目錄。
- 推薦:是。
- JVM 用於臨時檔案的 temp 目錄。
- 推薦:是。
我們建議您不要更改 tomcat-juli.jar 檔案。但是,如果您需要自己的日誌記錄實現,可以將 tomcat-juli.jar 檔案替換為特定 Tomcat 例項的 CATALINA_BASE 位置。
我們還建議您將所有配置檔案從 CATALINA_HOME/conf 目錄複製到 CATALINA_BASE/conf/ 目錄。如果在 CATALINA_BASE 中缺少配置檔案,將不會回退到 CATALINA_HOME。因此,這可能會導致失敗。
至少,CATALINA_BASE 必須包含:
- conf/server.xml
- conf/web.xml
- 包括 conf 目錄。否則,Tomcat 將無法啟動,或無法正常工作。
有關高階配置資訊,請參閱 RUNNING.txt 檔案。
如何使用 CATALINA_BASE
CATALINA_BASE 屬性是一個環境變數。您可以在執行 Tomcat 啟動指令碼之前設定它,例如:
- 在 Unix 上:CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
- 在 Windows 上:CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start
配置 Tomcat
本節將向您介紹在配置容器期間使用的基本資訊。
所有配置檔案中的資訊都在啟動時讀取,這意味著對檔案的任何更改都需要重新啟動容器。
尋求幫助
雖然我們已盡力確保這些文件寫得清晰易懂,但我們可能會漏
掉一些內容。以下是一些網站和郵件列表,以防您遇到困難。
請注意,一些問題和解決方案在不同版本的 Tomcat 之間可能會有所不同。
在網路上搜尋時,會有一些文件與 Tomcat 11 無關,而僅與早期版本有關。
- 當前文件 - 大多數文件將列出潛在的問題。請務必徹底閱讀相關文件,這將節省您大量的時間和精力。沒有什麼比搜尋網路更好的了,只是發現答案一直在您眼前!
- Tomcat FAQ
- Tomcat Wiki
- jGuru 的 Tomcat FAQ
- Tomcat 郵件列表檔案 - 許多網站存檔了 Tomcat 郵件列表。由於連結隨時間而變化,請點選此處搜尋 Google。
- TOMCAT-USER 郵件列表 - 您可以在此訂閱。如果您沒有收到回覆,那麼您的問題可能已在列表存檔或常見問題解答中得到了解答。儘管有時會提出並回答一般的 Web 應用程式開發問題,但請將您的問題重點放在 Tomcat 特定問題上。
- TOMCAT-DEV 郵件列表 - 您可以在此訂閱。此列表專用於討論 Tomcat 本身的開發。有關 Tomcat 配置以及開發和執行應用程式時遇到的問題,通常更適合在 TOMCAT-USER 列表上討論。
如果您認為文件中應該包含某些內容,請務必在 TOMCAT-DEV 列表上讓我們知道。
參考資料
https://tomcat.apache.org/tomcat-11.0-doc/introduction.html