Stories

Detail Return Return

藍易雲:tomcat結構目錄有哪些? - Stories Detail

下面按 Tomcat 9/10/11 的通用佈局,凝練説明其目錄結構、用途與實戰要點(適用於二進制發行版與多實例部署)。📁

一、核心目錄一覽(邏輯分層)

  • <span style="color:red">CATALINA\_HOME</span>:Tomcat 程序本體(只讀維護更安全)。
  • <span style="color:red">CATALINA\_BASE</span>:具體實例配置與運行數據(可多實例複用同一 HOME)。

常見物理目錄(以 BASE 為主)

  • <span style="color:red">bin</span>:啓動腳本(startup.shcatalina.shshutdown.sh 等)。
  • <span style="color:red">conf</span>:配置中心(server.xmlweb.xmltomcat-users.xmlcontext.xml)。
  • <span style="color:red">lib</span>:實例級公共依賴 JAR(優先級高於 webapp 的 WEB-INF/lib)。
  • <span style="color:red">webapps</span>:應用部署目錄(WAR/解壓後的目錄)。
  • <span style="color:red">logs</span>:日誌(catalina.out、訪問日誌、應用日誌)。
  • <span style="color:red">work</span>:JSP 編譯與臨時緩存。
  • <span style="color:red">temp</span>:運行期臨時文件。
説明:在單實例默認安裝中,以上目錄常同時存在於 <span style="color:red">CATALINA\_HOME</span>;生產推薦拆分到 <span style="color:red">CATALINA\_BASE</span> 以實現多實例與更清晰的變更邊界。🧩

二、目錄—用途—關鍵文件速查表

目錄 主要用途 關鍵文件 運維要點
<span style="color:red">bin</span> 啓停與工具腳本 catalina.sh/.bat 支持 configtest 校驗配置;建議用 setenv.sh 注入 JVM 參數
<span style="color:red">conf</span> 全局與連接器配置 <span style="color:red">server.xml</span>、<span style="color:red">web.xml</span>、context.xmltomcat-users.xml 端口、線程池、AJP/HTTP、虛擬主機、Realm 與角色賬户
<span style="color:red">lib</span> 實例級庫 *.jar JDBC 驅動、統一日誌橋接等放此目錄
<span style="color:red">webapps</span> 應用部署 ROOT/app.war 支持熱部署;也可用 conf/Catalina/localhost/*.xml 顯式 Context
<span style="color:red">logs</span> 運行日誌 catalina.*localhost_access_log.* 結合 accesslog 與日誌切割策略
<span style="color:red">work</span> JSP 編譯緩存 Catalina/… 清理可迫使 JSP 重新編譯
<span style="color:red">temp</span> 臨時文件 磁盤不足會致應用異常,需監控

三、快速查看目錄結構(Linux)

tree -L 2 "${CATALINA_BASE:-$CATALINA_HOME}"

解釋:使用 tree 按兩層深度展示 Tomcat 目錄;變量優先展示 <span style="color:red">CATALINA\_BASE</span>,若未設置則回退到 <span style="color:red">CATALINA\_HOME</span>。如未安裝 tree,可 apt/yum install tree 後再用。

find "${CATALINA_BASE:-$CATALINA_HOME}" -maxdepth 2 -type d | sort

解釋:在缺少 tree 的情況下,用 find 羅列兩層目錄結構,並排序便於閲讀。


四、標準多實例佈局(生產推薦)

export CATALINA_HOME=/opt/tomcat
export CATALINA_BASE=/srv/tomcat-app1
mkdir -p $CATALINA_BASE/{conf,logs,temp,webapps,work}
cp $CATALINA_HOME/conf/{server.xml,web.xml,tomcat-users.xml,context.xml} $CATALINA_BASE/conf/
$CATALINA_HOME/bin/catalina.sh configtest
$CATALINA_HOME/bin/startup.sh

解釋

  • 前兩行:設置程序本體與實例根路徑,隔離“代碼/配置”。
  • mkdir -p …:創建實例所需的運行目錄。
  • cp conf/*:複製基線配置到實例,避免改動 HOME。
  • configtest:在啓動前校驗 <span style="color:red">server.xml</span> 等是否正確。
  • startup.sh:按當前 <span style="color:red">CATALINA\_BASE</span> 啓動該實例。🚀

五、部署與診斷常用命令

# 1) 部署 WAR(熱部署)
cp app.war $CATALINA_BASE/webapps/

# 2) 顯式上下文部署(免拷貝 WAR)
cat > $CATALINA_BASE/conf/Catalina/localhost/app.xml <<'XML'
<Context docBase="/data/apps/app" path="/app" reloadable="false"/>
XML

# 3) 平滑關閉
$CATALINA_HOME/bin/shutdown.sh

# 4) 查看實時日誌
tail -f $CATALINA_BASE/logs/catalina.out

解釋

  • 1)將 app.war 放入 <span style="color:red">webapps</span> 即可自動解壓與加載。
  • 2)使用 Context 文件把外部目錄映射為應用,適合 CI/CD 中“指向目錄”的零拷貝發佈。
  • 3)shutdown.sh 發送關閉信號,實現優雅退出。
  • 4)tail -f 動態查看啓動與報錯信息,定位端口/類庫衝突等問題。🔍

六、思維導圖(vditor/mermaid)

mindmap
  root((Apache Tomcat))
    CATALINA_HOME(程序本體)
      bin(腳本工具)
      lib(公共庫)
      conf(默認配置)
    CATALINA_BASE(實例運行)
      conf(實例配置)
      webapps(應用)
      logs(日誌)
      work(JSP編譯)
      temp(臨時文件)

七、關鍵實踐要點

  • 將“程序”與“實例”分離(<span style="color:red">CATALINA\_HOME</span> / <span style="color:red">CATALINA\_BASE</span>),統一補丁、獨立故障域。
  • 連接器配置與線程池均在 <span style="color:red">server.xml</span>;安全基線在 <span style="color:red">web.xml</span>/<span style="color:red">context.xml</span>。
  • 公共 JDBC 驅動放 <span style="color:red">lib</span>;應用內私有依賴放 WEB-INF/lib,避免衝突。
  • 定期清理 <span style="color:red">work</span> 與監控 <span style="color:red">temp</span>、<span style="color:red">logs</span> 的磁盤佔用。📊
按以上結構與命令,即可快速識別並掌控 Tomcat 的目錄體系,支持多實例與穩定上線。
user avatar pipiimmortal Avatar jieduanxingdebugger Avatar mimangdeyangcong Avatar sheng_c Avatar
Favorites 4 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.