關於CATALINA_HOME 和 CATALINA_BASE 的區別

Xu院生發表於2020-12-26

官方文件

以下內容從官方複製出來的

目錄和檔案

這些是一些重要的tomcat目錄:

  1. /bin -(啟動,關閉和其他指令碼)

  2. /conf -配置檔案和相關DTD,這裡最重要的檔案是server.xml,它是容器的主要配置檔案.

  3. /logs - 日誌檔案預設目錄.

  4. /webapps - Web應用程式的目錄.

CATALINA_HOME 和 CATALINA_BASE

在整個文件中,都引用了以下兩個屬性:

  1. CATALINA_HOME: 表示Tomcat安裝的根目錄,例如 /home/tomcat/apache-tomcat-9.0.10 or C:\Program Files\apache-tomcat-9.0.10. 

  2. CATALINA_BASE: 表示特定Tomcat例項的執行時配置的根。 如果要在一臺計算機上擁有多個Tomcat例項,請使用CATALINA_BASE屬性

    1. 如果將屬性設定為其他位置,則
      CATALINA_HOME位置將包含靜態源,例如.jar檔案或二進位制檔案。
      CATALINA_BASE位置包含配置檔案,日誌檔案,已部署的應用程式和其他執行時要求。

為什麼要使用CATALINA_BASE

預設情況下,CATALINA_HOME和CATALINA_BASE指向同一目錄。需要在一臺計算機上執行多個Tomcat例項時,手動設定CATALINA_BASE。
這樣做具有以下好處:

  1. 升級到較新版本的Tomcat的管理更加輕鬆.因為所有具有單個CATALINA_HOME位置的例項共享一組.jar檔案和二進位制檔案,所以您可以輕鬆地將檔案升級到較新版本,並使用同一CATALIA_HOME目錄將更改傳播到所有Tomcat例項,也就是隻用升級CATALINA_HOME目錄下的檔案就可以升級所有的Tomcat.

  2. 避免重複相同的靜態.jar檔案.

  3. 共享某些設定的可能性,例如setenv shell或bat指令碼檔案(取決於您的作業系統).

Contents of CATALINA_BASE(CATALINA_BASE的內容)

在開始使用CATALINA_BASE之前,請首先考慮並建立CATALINA_BASE使用的目錄樹。請注意,如果未建立所有建議的目錄,則Tomcat會自動建立目錄。如果由於許可權問題而無法建立必要的目錄,Tomcat將無法啟動,或者可能無法正常執行.

考慮以下目錄列表:

  1. bin: 包含setenv.sh,setenv.bat和tomcat-juli.jar檔案的bin目錄
    Recommended: No(不推薦).
    查詢順序:首先檢查CATALINA_BASE;向CATALINA_HOME提供後備

  2. lib: 具有更多資源的lib目錄將新增到classpath上.
    Recommended: Yes(推薦), 如果您的應用程式依賴於外部庫.
    查詢順序:首先檢查CATALINA_BASE; 然後載入CATALINA_HOME.

  3. logs: 特定於例項的日誌檔案的日誌目錄.
    Recommended: Yes(推薦)

  4. webapps: 用於自動載入的Web應用程式的webapps目錄
    Recommended: Yes(推薦), 如果您想部署應用程式
    查詢順序:僅CATALINA_BASE

  5. work: 工作目錄,其中包含已部署的Web應用程式的臨時工作目錄。
    Recommended: Yes(推薦)

  6. temp: JVM用於臨時檔案的temp目錄.
    Recommended: Yes(推薦)

我們建議您不要更改tomcat-juli.jar檔案. 但是,如果您需要自己的日誌記錄實現,則可以將CATALINA_BASE位置中的tomcat-juli.jar檔案替換為特定的Tomcat例項.

我們還建議您將所有配置檔案從CATALINA_HOME的conf目錄複製到CATALINA_BASE的conf目錄。如果CATALINA_BASE中缺少配置檔案,則不會回退到CATALINA_HOME。因此,這可能會導致故障.

至少CATALINA_BASE必須包含以下兩個檔案:
conf/server.xml
conf/web.xml

How to Use CATALINA_BASE(如何使用CATALINA_BASE)

CATALINA_BASE屬性是一個環境變數。您可以在執行Tomcat啟動指令碼之前進行設定,例如:

  • On Unix: CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start

  • On Windows: CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start

相關文章