關於CATALINA_HOME 和 CATALINA_BASE 的區別
官方文件
以下內容從官方複製出來的
目錄和檔案
這些是一些重要的tomcat目錄:
-
/bin -(啟動,關閉和其他指令碼)
-
/conf -配置檔案和相關DTD,這裡最重要的檔案是server.xml,它是容器的主要配置檔案.
-
/logs - 日誌檔案預設目錄.
-
/webapps - Web應用程式的目錄.
CATALINA_HOME 和 CATALINA_BASE
在整個文件中,都引用了以下兩個屬性:
-
CATALINA_HOME: 表示Tomcat安裝的根目錄,例如 /home/tomcat/apache-tomcat-9.0.10 or C:\Program Files\apache-tomcat-9.0.10.
-
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例項,也就是隻用升級CATALINA_HOME目錄下的檔案就可以升級所有的Tomcat.
-
避免重複相同的靜態.jar檔案.
-
共享某些設定的可能性,例如setenv shell或bat指令碼檔案(取決於您的作業系統).
Contents of CATALINA_BASE(CATALINA_BASE的內容)
在開始使用CATALINA_BASE之前,請首先考慮並建立CATALINA_BASE使用的目錄樹。請注意,如果未建立所有建議的目錄,則Tomcat會自動建立目錄。如果由於許可權問題而無法建立必要的目錄,Tomcat將無法啟動,或者可能無法正常執行.
考慮以下目錄列表:
-
bin: 包含setenv.sh,setenv.bat和tomcat-juli.jar檔案的bin目錄
Recommended: No(不推薦).
查詢順序:首先檢查CATALINA_BASE;向CATALINA_HOME提供後備 -
lib: 具有更多資源的lib目錄將新增到classpath上.
Recommended: Yes(推薦), 如果您的應用程式依賴於外部庫.
查詢順序:首先檢查CATALINA_BASE; 然後載入CATALINA_HOME. -
logs: 特定於例項的日誌檔案的日誌目錄.
Recommended: Yes(推薦) -
webapps: 用於自動載入的Web應用程式的webapps目錄
Recommended: Yes(推薦), 如果您想部署應用程式
查詢順序:僅CATALINA_BASE -
work: 工作目錄,其中包含已部署的Web應用程式的臨時工作目錄。
Recommended: Yes(推薦) -
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
相關文章
- 關於HashMap和Hashtable的區別HashMap
- 關於gcc、make和CMake的區別GC
- 關於stable_sort()和sort()的區別:
- 關於java的引用和c++的區別JavaC++
- 關於Ajax和websocket的區別以及使用場景!Web
- 關於記憶體中棧和堆的區別記憶體
- 關於CI,ASCS,DI的區別
- 關於sysdba,sysoper,dba的區別
- 關於Vue和React區別的一些筆記VueReact筆記
- 關於機器學習和AI的區別最經典的解釋機器學習AI
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- nginx關於root與alias的區別Nginx
- 關於C與C++的區別C++
- 關於 in與exist , not in與not exist 的區別
- 關於JSF與Struts的區別JS
- 關於企業級應用和web開發的區別Web
- 關於Ae和Pr的的區別,你瞭解對了嗎?
- 對於java中的"\"和"/" 區別Java
- 12C關於CDB、PDB引數的區別和總結
- Cookie 和 Session 關係和區別CookieSession
- WebGL和OpenGL的區別及關係Web
- 滑鼠CPI和DPI是什麼?關於滑鼠DPI和CPI的區別詳解
- http中session和cookie的區別和關係HTTPSessionCookie
- postgresql關於postgresql.auto.conf和postgresql.conf的區別SQL
- 關於oracle10G標準版和企業版的區別Oracle
- out關鍵字和ref關鍵字的區別
- 關於HashSet與TreeSet的區別與聯絡
- 關於String與StringBuffer的區別
- 關於重定向符>>與>的區別與作用
- 關於rman裡面的from 與until的區別
- 水煮oracle33---關於oracle中segment、schema和user區別Oracle
- 關於MySQL與SQLLite的GroupBy排序原理的區別MySql排序
- 關於物件導向和麵向過程本質的區別(個人感悟)物件
- rust trait 關聯型別和泛型的區別RustAI型別泛型
- Android關於buildToolVersion與CompileSdkVersion的區別AndroidUICompile
- HashTable、ConcurrentHashMap、TreeMap、HashMap關於鍵值的區別HashMap
- Vuejs中關於computed、methods、watch的區別VueJS
- 關於HTMLObject中三個Style例項的區別HTMLObject