Tomcat相關目錄及配置檔案總結
Tomcat根目錄介紹
【bin】目錄主要是用來存放tomcat的命令,主要有兩大類,一類是以.sh結尾的(linux命令),另一類是以.bat結尾的(windows命令)。 很多環境變數的設定都在此處,例如可以設定JDK路徑、TOMCAT路徑 startup 用來啟動tomcat shutdown 用來關閉tomcat 修改catalina可以設定tomcat的記憶體
【conf】目錄主要是用來存放tomcat的一些配置檔案。
- server.xml可以設定埠號、設定域名或IP、預設載入的專案、請求編碼
- web.xml可以設定tomcat支援的檔案型別
- context.xml可以用來配置資料來源之類的
- tomcat-users.xml用來配置管理tomcat的使用者與許可權
- 在Catalina目錄下可以設定預設載入的專案
【lib】目錄主要用來存放tomcat執行需要載入的jar包。 例如,像連線資料庫的jdbc的包我們可以加入到lib目錄中來。
【logs】目錄用來存放tomcat在執行過程中產生的日誌檔案,非常重要的是在控制檯輸出的日誌。(清空不會對tomcat執行帶來影響) 在windows環境中,控制檯的輸出日誌在catalina.xxxx-xx-xx.log檔案中 在linux環境中,控制檯的輸出日誌在catalina.out檔案中
【temp】目錄使用者存放tomcat在執行過程中產生的臨時檔案。(清空不會對tomcat執行帶來影響)
【webapps】目錄用來存放應用程式 當tomcat啟動時會去載入webapps目錄下的應用程式。可以以資料夾、war包、jar包的形式釋出應用。 當然,你也可以把應用程式放置在磁碟的任意位置,在配置檔案中對映好就行。
【work】目錄用來存放tomcat在執行時的編譯後文件,例如JSP編譯後的檔案。 清空work目錄,然後重啟tomcat,可以達到清除快取的作用。
下面主要說明下 tomcat的conf目錄下各個配置檔案
1. web.xml:預設(歡迎)檔案的設定
在 tomcat4/conf/web.xml 中,<welcome-file-list>與IIS中的預設檔案意思相同,這也就是為什麼我們只輸入"主機地址 + 埠號"就可以訪問我們的專案了。
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
2. tomcat-users.xml:
使用者配置
在進行具體Tomcat管理之前,先給tomcat新增一個使用者,使這個使用者有許可權來進行管理。
開啟conf目錄下的tomcat-users.xml檔案,在相應的位置新增下面一行:
<user name="user" password="user" roles="standard,manager"/>
然後重啟 tomcat,在瀏覽器中輸入http://localhost:8080/manager/,會彈出對話方塊,輸入上面的使用者名稱和密碼即可。
或者就是點選tomcat預設啟動頁右側的三個按鈕需要的訪問許可權。如下圖所示:
3. server.xml:
下面講述這個檔案中的基本配置資訊,更具體的配置資訊請參考tomcat的文件:
server:
1、port 指定一個埠,這個埠負責監聽關閉tomcat的請求
2、shutdown 指定向埠傳送的命令字串
service:
1、name 指定service的名字
Connector (表示客戶端和service之間的連線):
1、port 指定伺服器端要建立的埠號,並在這個斷口監聽來自客戶端的請求
2、minProcessors 伺服器啟動時建立的處理請求的執行緒數
3、maxProcessors 最大可以建立的處理請求的執行緒數
4、enableLookups 如果為true,則可以通過呼叫request.getRemoteHost()進行DNS查詢來得到遠端客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
5、redirectPort 指定伺服器正在處理http請求時收到了一個SSL傳輸請求後重定向的埠號
6、acceptCount 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理
7、connectionTimeout 指定超時的時間數(以毫秒為單位)
Engine (表示指定service中的請求處理機,接收和處理來自Connector的請求):
1、defaultHost 指定預設的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的
Context (表示一個web應用程式):
1、docBase 應用程式的路徑或者是WAR檔案存放的路徑
2、path 表示此web應用程式的url的字首,這樣請求的url為 http://localhost:8080/path/****
3、reloadable 這個屬性非常重要,如果為true,則tomcat會自動檢測應用程式的 /WEB-INF/lib 和 /WEB-INF/classes 目錄的變化,自動裝載新的應用程式,我們可以在不重起tomcat的情況下改變應用程式
host (表示一個虛擬主機):
1、name 指定主機名
2、appBase 應用程式基本目錄,即存放應用程式的目錄
3、unpackWARs 如果為true,則tomcat會自動將WAR檔案解壓,否則不解壓,直接從WAR檔案中執行應用程式
Logger (表示日誌,除錯和錯誤資訊):
1、className 指定logger使用的類名,此類必須實現org.apache.catalina.Logger 介面
2、prefix 指定log檔案的字首
3、suffix 指定log檔案的字尾
4、timestamp 如果為true,則log檔名中要加入時間,如例:localhost_log.2001-10-04.txt
Realm (表示存放使用者名稱,密碼及role的資料庫):
1、className 指定Realm使用的類名,此類必須實現org.apache.catalina.Realm介面
Valve (功能與Logger差不多,其prefix和suffix屬性解釋和Logger 中的一樣):
1、className 指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應用程式的訪問資訊
directory(指定log檔案存放的位置):
1、pattern 有兩個值,common方式記錄遠端主機名或ip地址,使用者名稱,日期,第一行請求的字串,HTTP響應程式碼,傳送的位元組數。combined方式比common方式記錄的值更多
4. tomcat context.xml:
1. 在tomcat 5.5之前:Context體現在/conf/server.xml中的Host裡的<Context>元素,它由Context介面定義。每個<Context元素代表了執行在虛擬主機上的單個Web應用,例如:
<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true">
1>path:即要建立的虛擬目錄,,注意是/kaka,它指定訪問Web應用的URL入口,如http://localhost:8080/kaka/****
2>docBase:為實際目錄在硬碟上的位置(應用程式的路徑或者是WAR檔案存放的路徑)
3>reloadable:如果這個屬性設為true,Tomcat伺服器在執行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS檔案的改變,如果監視到有class檔案被更新,伺服器自動重新載入Web應用,這樣我們可以在不重起tomcat的情況下改變應用程式,也就是熱部署。
一個Host元素中巢狀任意多的Context元素。每個Context的路徑必須是惟一的,而這個唯一性是由path屬性定義確定的。另外,你必須定義一個path=“” 的context,這個Context稱為該虛擬主機的預設web應用,用來處理那些不能匹配任何Context的Context路徑的請求。
2. 在tomcat 5.5之後:不推薦在server.xml中進行配置,而是在/conf/context.xml中進行獨立的配置。因為server.xml是不可動態重載入的資源,伺服器一旦啟動了以後,要修改這個檔案,就得重啟伺服器才能重新載入。而context.xml檔案則不然,tomcat伺服器會定時去掃描這個檔案。一旦發現檔案被修改(時間戳改變了),就會自動重新載入這個檔案,而不需要重啟伺服器。
<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true" privileged="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/kaka.xml</WatchedResource>
監控資原始檔,如果web.xml || kaka.xml改變了,則自動重新載入改應用。
<Resource name="jdbc/testSiteds" 表示指定的jndi名稱 auth="Container" 表示認證方式,一般為Container type="javax.sql.DataSource" maxActive="100" 連線池支援的最大連線數 maxIdle="30" 連線池中最多可空閒maxIdle個連線 maxWait="10000" 連線池中連線用完時,新的請求等待時間,毫秒 username="root" 表示資料庫使用者名稱 password="root" 表示資料庫使用者的密碼 driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER url="jdbc:mysql://localhost:3306/testSite" /> 表示資料庫URL地址
附: context.xml的三個作用範圍:
1. tomcat server級別:
在/conf/context.xml裡配置
2. Host級別:
在/conf/Catalina/${hostName}裡新增context.xml,繼而進行配置
3. web app 級別:
在/conf/Catalina/${hostName}裡新增${webAppName}.xml,繼而進行配置