Tomcat配置詳解,配置文件server.xml詳解


 

Tomcat安裝配置

1、下載tomcat7.0.22  下載地址:http://tomcat.apache.org/download-70.cgi

2、添加系統環境變量,我的電腦->屬性->高級系統設置->環境變量(操作同上) 

(1)變量名: CATALINA_BASE     變量值: D:\Program Files\apache-tomcat-7.0.22(Tomcat解壓到的目錄)
(2)變量名: CATALINA_HOME     變量值: D:\Program Files\apache-tomcat-7.0.22
(3)變量名: CATALINA_TMPDIR     變量值: D:\Program Files\apache-tomcat-7.0.22\temp
(4)變量名: Path    變量值:D:\Program Files\apache-tomcat-7.0.22\bin

3、運行Tomcat7.0.22,“開始”->“運行”->輸入cmd,在命令提示符中輸入 startup.bat,之后會彈出tomcat命令框,輸出啟動日志;打開瀏覽器輸入http://localhost:8080/ ,如果進入tomcat歡迎界面,那么恭喜你,配置成功。

4、Tomcat的默認行為。

      我們的瀏覽器請求如果到達了Tomcat,並且請求無誤,一般Tomcat會以靜態頁面(即html文件)的形式給與響應,這是http服務器的默認行為。

      一個完整的資源請求包括:協議(如http), 主機名(域名,如localhost、www.baidu.com), 端口號(http協議默認為80,所以我們一般向某個網站發起請求沒有輸入), 站點, 資源位置如http://localhost:8080/ROOT/index.jsp

  5、更改Tomcat默認配置。

     ①、修改Tomcat監聽端口。首先我們需要將監聽端口設置為80,道理很簡單,用戶不會在瀏覽器輸入:8080來訪問網站,瀏覽器也不會自動將請求發送到服務器的8080端口。

          在%TOMCAT_HOME%(以下代指Tomcat的安裝路徑)下的conf目錄下的server.xml文件中修改。

  

    ②、修改默認站點。首先說,站點是具有特定結構的文件夾。這一點在Tomcat里表現得極為清晰。

      站點,在服務器上肯定是用文件夾(即目錄結構)來存儲和管理的。但是它和普通的文件夾又不同,在Tomcat里,可用於作為站點的文件夾必須有如下特點:擁有一個名為WEB-INF的子文件夾,該子文件夾下必須有一個名為web.xml的文件,而且該xml文件必須受約束與特定的DTD。配置站點:創建文件夾,創建WEB-INF子文件夾,創建web.xml,完成。web.xml內容可以參考webapps/ROOT/WEB-INF/web.xml。

 

  

            我在index.html里寫了幾句話,然后結果出來了:

   

    ③、修改默認頁面。

      在上面,我們還算是中規中矩,按照常理出牌,謝了index.html。那么如果沒有寫呢?Tomcat會怎么做呢? 請大家找到conf/web.xml。這個文件是對所有站點的共同屬性做出了設置。比如大家看文件結尾處:

  

   6、虛擬主機的配置。

      所謂虛擬主機,就是將一個或多個主機名(域名)和Tomcat所在的服務器進行綁定。由於一個IP可以和多個域名進行幫定,我們大可以將不同的域名指向服務器(指硬件)上的不同文件夾,造成一個服務器(或者一個IP)多個主機的“虛擬主機”效果。

      這個實現起來相當的簡單。只需要在server.xml文件中新建Host節點,將其屬性進行不同設置即可。

復制代碼
復制代碼
 1 #你的主機名(域名)1
 2 <Host name="localhost"  appBase="webapps"
 3            unpackWARs="true" autoDeploy="true"
 4            xmlValidation="false" xmlNamespaceAware="false"> 
 5 </Host> 
 6 #你的域名2
 7 <Host name="www.coderecord.org" appBase="主機空間地址" 
 8        unpackWARs="true" autoDeploy="true" 
 9        xmlValidation="false" xmlNamespaceAware="false">  
10        #域名3可以和域名2共用一個主機空間
11         <Alias>coderecord.org</Alias>
12         <Context path="" docBase="站點地址" debug="1" reloadable="true" allowLinking="true" />
13 </Host> 
復制代碼
復制代碼

 

兩步搞定 Tomcat 下啟用 https://
這個簡單教程中我們通過簡單的兩步就可以在 Tomcat 7 中啟用 HTTPS 訪問。
第一步:創建 .keystore 文件
使用如下命令生成 .keystore 文件
windows :
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA  
Linux:
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA 
第二步:在 server.xml 中啟用 SSL HTTP/1.1 連接器(已有配置,去除注釋即可),端口 8443
修改 $CATALINA_HOME/conf/server.xml 文件:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"
              keystoreFile="${user.home}/.keystore" keystorePass="123@com"/>
"keystorePass" 是生成 .keystore 文件的密碼,然后重啟 Tomcat
打開瀏覽器訪問如下地址:https://localhost:8443
如果看到了 Tomcat 的首頁就搞定了。

 

 

 

 

首先,看一下tomcat的目錄結構: 

bin            存放啟動和關閉tomcat腳本 
conf          包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml 

lib             存放Tomcat運行或者站點運行所需的jar包,所有在此Tomcat上的站點共享這些jar包。
work          存放jsp編譯后產生的class文件 
webapp     存放應用程序示例,以后你要部署的應用程序也要放到此目錄 ,可以更改。
logs           存放日志文件 

work目錄用於在服務器運行時過度資源,簡單來說,就是存儲jsp、servlet翻譯、編譯后的結果。

lib/japser/common    這三個目錄主要存放tomcat所需的jar文件 

----------------------------

tomcat下域名的設置,ROOT.XML的作用

以下小結使用tomcat5.0.28測試通過,tomcat安裝路徑為C:\Tomcat

在默認安裝后,tomcat的主目錄是webapps/root目錄,如果我們想改變tomcat的主目錄的話可以這樣做:

1.打開C:\Tomcat\conf\server.xml,在<host></host>之間加入代碼:
<Context path="" docBase="E:\tomcatApp\JeasyCMS" debug="0" reloadable="true" crossContext="true"/>
這樣重新啟動tomcat,我們的主目錄就被設置為jeasyCMS這個項目了。
 
2.另外tomcat會生成一個C:\Tomcat\conf\Catalina\localhost目錄,里面自動生成了一個ROOT.xml(root大寫)文件,我們打開文件可以看到這些代碼:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true">
</Context>
 
3.注意:我們創建虛擬目錄的時候也是這樣來進行設置的,只是context這個標簽的path屬性不為空。
 
4.我們設置虛擬目錄和主目錄,都會在C:\Tomcat\conf\Catalina\localhost目錄下生成相應的xml文件,因此,當我們在server.xml里面刪除了主目錄和虛擬目錄的設置后,如果系統還沒有生效,這時候我們就要察看一下這個目錄下的xml文件是不是已經被刪除了,如果沒有被刪除,他還是對tomcat起作用的,我們必須手動刪除。
 
5.基於第4點,通過測試我發現,每當我們訪問一個地址的時候,tomcat首先是到C:\Tomcat\conf\Catalina\localhost目錄下去察看有沒有存在主目錄或虛擬目錄的xml文件,如果有xml文件,就按xml里的路徑進行訪問,如果沒有xml文件,就到server.xml文件里去察看是否配置context標簽,如果配置了context標簽,則在C:\Tomcat\conf\Catalina\localhost目錄下生成一個對應的xml文件,以便於下次直接驗證而不再訪問server.xml,與此同時打開context里指定的路徑,如果server.xml里沒有配置context標簽,則返回訪問錯誤頁面。
 
6.基於第5點,我們其實可以直接在C:\Tomcat\conf\Catalina\localhost下建立一個xml文件,用於主目錄或者虛擬目錄,而不需要去修改server.xml就可以達到配置主目錄和虛擬目錄的目的,具體xml的格式可以如下:

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true">
</Context>

具體是主目錄的配置還是虛擬目錄的配置取決於path的值。另外主目錄文件名必須是ROOT.XML(root大寫),而虛擬目錄的文件名稱和虛擬目錄的名稱一致並且為小寫,譬如:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="\cms" reloadable="true">
</Context>
以上則定義了一個名為:cms的虛擬目錄,同時要將以上文本保存為cms.xml文件。

 

tomcat server.xml配置詳解

元素名

屬性

解釋

server

port

指定一個端口,這個端口負責監聽關閉tomcat 的請求

shutdown

指定向端口發送的命令字符串

service

name

指定service 的名字

Connector ( 表示客戶端和service 之間的連接)

port

指定服務器端要創建的端口號,並在這個斷口監聽來自客戶端的請求

minProcessors

服務器啟動時創建的處理請求的線程數

maxProcessors

最大可以創建的處理請求的線程數

enableLookups

如果為true ,則可以通過調用request.getRemoteHost() 進行DNS查詢來得到遠程客戶端的實際主機名,若為false 則不進行DNS查詢,而是返回其ip 地址

redirectPort

指定服務器正在處理http 請求時收到了一個SSL 傳輸請求后重定向的端口號

acceptCount

指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理

connectionTimeout

指定超時的時間數( 以毫秒為單位)

Engine ( 表示指定service 中的請求處理機,接收和處理來自Connector 的請求)

defaultHost

指定缺省的處理請求的主機名,它至少與其中的一個host 元素的name 屬性值是一樣的

Context ( 表示一個web 應用程序,通常為WAR 文件,關於WAR 的具體信息見servlet 規范)

docBase

應用程序的路徑或者是WAR 文件存放的路徑

path

表示此web 應用程序的url 的前綴,這樣請求的url為http://localhost:8080/path/ ****

reloadable

這個屬性非常重要,如果為true ,則tomcat 會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes 目錄的變化,自動裝載新的應用程序,我們可以在不重起tomcat 的情況下改變應用程序

host ( 表示一個虛擬主機 )

name

指定主機名

appBase

應用程序基本目錄,即存放應用程序的目錄

unpackWARs

如果為true ,則tomcat 會自動將WAR 文件解壓,否則不解壓,直接從WAR 文件中運行應用程序

Logger ( 表示日志,調試和錯誤信息)

className

指定logger 使用的類名,此類必須實現org.apache.catalina.Logger接口

prefix

指定log 文件的前綴

suffix

指定log 文件的后綴

timestamp

如果為true ,則log 文件名中要加入時間,如下例:localhost_log.2001-10-04.txt

Realm ( 表示存放用戶名,密碼及role的數據庫)

className

指定Realm 使用的類名,此類必須實現org.apache.catalina.Realm接口

Valve ( 功能與Logger 差不多,其prefix 和suffix 屬性解釋和Logger 中的一樣)

className

指定Valve 使用的類名,如用org.apache.catalina.valves.AccessLogValve 類可以記錄應用程序的訪問信息

directory

指定log 文件存放的位置

pattern

有兩個值,common 方式記錄遠程主機名或ip 地址,用戶名,日期,第一行請求的字符串,HTTP 響應代碼,發送的字節數。combined 方式比common 方式記錄的值更多

 
 
 
 
<Server>元素

它代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個
<Service>元素.並且它不能做為任何元素的子元素.
 
 < Server port ="8005" shutdown ="SHUTDOWN" debug ="0" >

1>className指定實現org.apache.catalina.Server接口的類.默認值為
org.apache.catalina.core.StandardServer
2>port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出
shutdown命令.該屬性是必須的.
3>shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設


<Service>元素


該元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個
<Connector>,這些Connector元素共享用同一個Engine元素
   
 < Service name ="Catalina" > 
     < Service name ="Apache" >

   第一個<Service>處理所有直接由Tomcat服務器接收的web客戶請求.
   第二個<Service>處理所有由Apahce服務器轉發過來的Web客戶請求
1>className 指定實現org.apahce.catalina.Service接口的類.默認為
org.apahce.catalina.core.StandardService
2>name定義Service的名字

<Engine>元素


每個Service元素只能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客
戶請求.由org.apahce.catalina.Engine接口定義.
 < Engine name ="Catalina" defaultHost ="localhost" debug ="0" >
1>className指定實現Engine接口的類,默認值為StandardEngine
2>defaultHost指定處理客戶的默認主機名,在<Engine>中的<Host>子元素中必須定義這一主機
3>name定義Engine的名字
在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>

<Host>元素


它由Host接口定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛擬主機.它
包含了一個或多個Web應用.
 < Host name ="localhost" debug ="0" appBase ="webapps" unpackWARs ="true" autoDeploy ="true" >
1>className指定實現Host接口的類.默認值為StandardHost
2>appBase指定虛擬主機的目錄,可以指定絕對目錄,也可以指定相對於<CATALINA_HOME>的相對目錄.如果
沒有此項,默認為<CATALINA_HOME>/webapps
3>autoDeploy如果此項設為true,表示Tomcat服務處於運行狀態時,能夠監測appBase下的文件,如果有新有
web應用加入進來,會自運發布這個WEB應用
4>unpackWARs如果此項設置為true,表示把WEB應用的WAR文件先展開為開放目錄結構后再運行.如果設為
false將直接運行為WAR文件
5>alias指定主機別名,可以指定多個別名
6>deployOnStartup如果此項設為true,表示Tomcat服務器啟動時會自動發布appBase目錄下所有的Web應用
.如果Web應用中的server.xml沒有相應的<Context>元素,將采用Tomcat默認的Context
7>name定義虛擬主機的名字
在<Host>元素中可以包含如下子元素
<Logger>, <Realm>, <Value>, <Context>

<Context>元素


它由Context接口定義.是使用最頻繁的元素.每個<Context元素代表了運行在虛擬主機上的單個Web應用.
一個<Host>可以包含多個<Context>元素.每個web應用有唯一
的一個相對應的Context代表web應用自身.servlet容器為第一個web應用創建一個
ServletContext對象.
 < Context path ="/sample" docBase ="sample" debug ="0" reloadbale ="true" >
1>className指定實現Context的類,默認為StandardContext類
2>path指定訪問Web應用的URL入口,注意/myweb,而不是myweb了事
3>reloadable如果這個屬性設為true, Tomcat服務器在運行狀態下會監視在WEB-INF/classes和Web-
INF/lib目錄CLASS文件的改運.如果監視到有class文件被更新,服務器自重新加載Web應用
3>cookies指定是否通過Cookies來支持Session,默認值為true
4>useNaming指定是否支持JNDI,默認值為了true
在<Context>元素中可以包含如下元素
<Logger>, <Realm>, <Resource>, <ResourceParams>

<Connector>元素


由Connector接口定義.<Connector>元素代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客
戶返回響應結果.
 < Connector port ="8080" maxThread ="50" minSpareThreads ="25" maxSpareThread ="75" 
 enableLookups ="false" redirectPort ="8443" acceptCount ="100" debug ="0" 
 connectionTimeout ="20000" disableUploadTimeout ="true" /> 
 < Connection port ="8009" enableLookups ="false" redirectPort ="8443" debug ="0" 
 protocol ="AJP/1.3" />
第一個Connector元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;第二個Connector元素定
義了一個JD Connector,它通過8009端口接收由其它服務器轉發過來的請求.
Connector元素共用屬性
1>className指定實現Connector接口的類
2>enableLookups如果設為true,表示支持域名解析,可以把IP地址解析為主機名.WEB應用中調用
request.getRemoteHost方法返回客戶機主機名.默認值為true
3>redirectPort指定轉發端口.如果當前端口只支持non-SSL請求,在需要安全通信的場命,將把客戶請求轉
發至SSL的redirectPort端口
HttpConnector元素的屬性
1>className實現Connector的類
2>port設定Tcp/IP端口,默認值為8080,如果把8080改成80,則只要輸入 http://localhost 即可
因為TCP/IP的默認端口是80
3>address如果服務器有二個以上ip地址,此屬性可以設定端口監聽的ip地址.默認情況下,端口會監聽服務
器上所有的ip地址
4>bufferSize設定由端口創建的輸入流的緩存大小.默認值為2048byte
5>protocol設定Http協議,默認值為HTTP/1.1
6>maxThreads設定在監聽端口的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數
目.默認值為200
7>acceptCount設定在監聽端口隊列的最大客戶請求數量,默認值為10.如果隊列已滿,客戶必須等待.
8>connectionTimeout定義建立客戶連接超時的時間.如果為-1,表示不限制建立客戶連接的時間
JkConnector的屬性
1>className實現Connector的類
2>port設定AJP端口號
3>protocol必須設定為AJP/1.3
 
========================================================================================
 
 

<Server>元素 
它代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個<Service>元素.並且它不能做為任何元素的子元素.

<Server port="8005" shutdown="SHUTDOWN" debug="0">

1> className指定實現org.apache.catalina.Server接口的類.默認值為org.apache.catalina.core.StandardServer
2> port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出shutdown命令.該屬性是必須的.
3> shutdown指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性必須設置

 

<Service>元素 
該元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個<Connector>,這些Connector元素共享用同一個Engine元素
   
    <Service name="Catalina">
    <Service name="Apache">
    第一個<Service>處理所有直接由Tomcat服務器接收的web客戶請求.
    第二個<Service>處理所有由Apahce服務器轉發過來的Web客戶請求

1> className 指定實現org.apahce.catalina.Service接口的類.默認為org.apahce.catalina.core.StandardService
2> name定義Service的名字

 

<Engine>元素 
每個Service元素只能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.由org.apahce.catalina.Engine接口定義.

<Engine name="Catalina" defaultHost="localhost" debug="0">

1> className指定實現Engine接口的類,默認值為StandardEngine
2> defaultHost指定處理客戶的默認主機名,在<Engine>中的<Host>子元素中必須定義這一主機
3> name定義Engine的名字

在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>

 

<Host>元素 
它由Host接口定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛擬主機.它包含了一個或多個Web應用.

 <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">

1> className指定實現Host接口的類.默認值為StandardHost
2> appBase指定虛擬主機的目錄,可以指定絕對目錄,也可以指定相對於<CATALINA_HOME>的相對目錄.如果沒有此項,默認為<CATALINA_HOME>/webapps
3> autoDeploy如果此項設為true,表示Tomcat服務處於運行狀態時,能夠監測appBase下的文件,如果有新有web應用加入進來,會自運發布這個WEB應用
4> unpackWARs如果此項設置為true,表示把WEB應用的WAR文件先展開為開放目錄結構后再運行.如果設為false將直接運行為WAR文件
5> alias指定主機別名,可以指定多個別名
6> deployOnStartup如果此項設為true,表示Tomcat服務器啟動時會自動發布appBase目錄下所有的Web應用.如果Web應用中的server.xml沒有相應的<Context>元素,將采用Tomcat默認的Context
7> name定義虛擬主機的名字

在<Host>元素中可以包含如下子元素 
<Logger>, <Realm>, <Value>, <Context>


<Context>元素 
它由Context接口定義.是使用最頻繁的元素.每個<Context元素代表了運行在虛擬主機上的單個Web應用.一個<Host>可以包含多個<Context>元素.每個web應用有唯一
的一個相對應的Context代表web應用自身.servlet容器為第一個web應用創建一個
ServletContext對象.

<Context path="/sample" docBase="sample" debug="0" reloadbale="true">

1> className指定實現Context的類,默認為StandardContext類
2> path指定訪問Web應用的URL入口,注意/myweb,而不是myweb了事
3> reloadable如果這個屬性設為true, Tomcat服務器在運行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改運.如果監視到有class文件被更新,服務器自重新加載Web應用
3> cookies指定是否通過Cookies來支持Session,默認值為true
4> useNaming指定是否支持JNDI,默認值為了true


在<Context>元素中可以包含如下元素 
<Logger>, <Realm>, <Resource>, <ResourceParams>

 

Connector元素 
由Connector接口定義.<Connector>元素代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客戶返回響應結果.

<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
第一個Connector元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;第二個Connector元素定義了一個JD Connector,它通過8009端口接收由其它服務器轉發過來的請求.

Connector元素共用屬性 
1> className指定實現Connector接口的類
2> enableLookups如果設為true,表示支持域名解析,可以把IP地址解析為主機名.WEB應用中調用request.getRemoteHost方法返回客戶機主機名.默認值為true
3> redirectPort指定轉發端口.如果當前端口只支持non-SSL請求,在需要安全通信的場命,將把客戶請求轉發至SSL的redirectPort端口


HttpConnector元素的屬性 
1> className實現Connector的類
2> port設定Tcp/IP端口,默認值為8080,如果把8080改成80,則只要輸入http://localhost 即可
因為TCP/IP的默認端口是80
3> address如果服務器有二個以上ip地址,此屬性可以設定端口監聽的ip地址.默認情況下,端口會監聽服務器上所有的ip地址
4> bufferSize設定由端口創建的輸入流的緩存大小.默認值為2048byte
5> protocol設定Http協議,默認值為HTTP/1.1
6> maxThreads設定在監聽端口的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數目.默認值為200
7> acceptCount設定在監聽端口隊列的最大客戶請求數量,默認值為10.如果隊列已滿,客戶必須等待.
8> connectionTimeout定義建立客戶連接超時的時間.如果為-1,表示不限制建立客戶連接的時間


JkConnector的屬性 
1> className實現Connector的類
2> port設定AJP端口號
3> protocol必須設定為AJP/1.3
 
 
 
 
 
 
 

Tomcat7配置虛擬主機

原文:http://www.xiangxiaren.net/blog/?post=72

默認主機

tomcat 7的xml配置文件server.xml通常在默認情況下,在<Engine></Engine>標簽之間會有一個默認虛擬主機配置:

1
< Host name = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" ></ Host >
  • 最簡的server.xml
    1
    2
    3
    4
    < Engine name = "Catalina" defaultHost = "ren" >
         < Host name = "ren"    appBase = "renapps" />
         < Host name = "stimpy" appBase = "stimpyapps" />
    </ Engine >

Host就是虛擬主機的元素(標簽)

默認虛擬主機的應用程序目錄是指向tomcat目錄下的webapps這個文件夾的,默認打開的應用是ROOT,即在瀏覽器中輸入http://localhost:8080 打開的是ROOT這個Web應用。

添加虛擬主機

在第一個虛擬主機的結束標簽后面添加:

1
2
3
< Host name = "www.mydomain.com" appBase = "/var/tomcat/apps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false" >
     < Context docBase = "/var/tomcat/apps/test" path = "" reloadable = "true" />
</ Host >

Host標簽里面多出的屬性先不用管它,有與沒有都不會影響后面的操作。

appBase設置成了docBase的上一級目錄,在apps目錄下的test文件夾才是存放web應用的地方。

docBase目錄下放一個index.html文件,內容為"Hello,成功了!"。

配置完成后,重啟tomcat使用配置生效。

在完成域名綁定、或修改hosts文件后,即可訪問:http://www.mydomain.com:8080 站點。

  • Host Name Aliases
<Host name="www.mycompany.com" ...>
  ...
  <Alias>mycompany.com</Alias>
  ...
</Host>
  • Remote Address Filter

The Remote Address Filter allows you to compare the IP address of the client that submitted this request against one or more regular expressions, and either allow the request to continue or refuse to process the request from this client. A Remote Address Filter can be associated with any Catalina container (Engine, Host, or Context), and must accept any request presented to this container for processing before it will be passed on.

To allow access only for the clients connecting from localhost:

<Host name="....
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
</Host>

tomcat端口虛擬主機說明

原文:http://ritcher.iteye.com/blog/349972

虛擬主機

一般情況下,tomcat只能配置基於域名和IP的虛擬主機,只需要在server.xml里面增加host即可,舉例:

1
2
3
4
5
< Host name = "www.a.com" debug = "0" appBase = "e:\VSB2006\owners\www.a.com" unpackWARs = "true"
     autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false" >
     < Logger className = "org.apache.catalina.logger.FileLogger" directory = "logs"
     prefix = "www.a.com_log." suffix = ".txt" timestamp = "true" />
</ Host >

基於端口的虛擬主機

Tomcat的文檔中和網上都無法找到基於端口的虛擬主機的配法,經過嘗試,發現了一個方法可以達到這個效果。

我們看一個最精簡的server.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
< Server port = "8005" shutdown = "SHUTDOWN" >
 
….省略
 
   < Service name = "Catalina" >
 
     < Connector port = "8080" /> <!—這是對外的主要端口-->
     < Connector port = "8009" protocol = "AJP/1.3" />  <!—這是給apache使用的端口-->
 
     < Engine name = "Catalina" defaultHost = "localhost" >  <!—引擎-->
       < Logger className = "org.apache.catalina.logger.FileLogger" />
       < Realm className = "org.apache.catalina.realm.UserDatabaseRealm"
              resourceName = "UserDatabase" />
       < Host name = "localhost" appBase = "webapps" /> <!—默認的主機-->
     </ Engine >
 
   </ Service >
 
</ Server >

雖然可以增加Connector來增加服務的端口,但是host中沒有提供端口的選項,這樣增加出來的端口和源端口是一樣的虛擬主機設定,無法達到我們的要求。

單純增加端口沒有辦法,那么我們可以增加service,舉例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
< Server port = "8005" shutdown = "SHUTDOWN" >
 
….省略
 
   < Service name = "Catalina" >
     < Connector port = "8080" /> <!—這是對外的主要端口-->
     < Connector port = "8009" protocol = "AJP/1.3" />  <!—這是給apache使用的端口-->
     < Engine name = "Catalina" defaultHost = "localhost" >  <!—引擎-->
       < Logger className = "org.apache.catalina.logger.FileLogger" />
       < Realm className = "org.apache.catalina.realm.UserDatabaseRealm"
              resourceName = "UserDatabase" />
       < Host name = "localhost" appBase = "webapps" /> <!—默認的主機-->
     </ Engine >
   </ Service >
 
 
   < Service name = "Catalina2" >
     < Connector port = "8090" /> <!—這是對外的主要端口-->
     < Engine name = "Catalina2" defaultHost = "localhost" >  <!—引擎-->
       < Logger className = "org.apache.catalina.logger.FileLogger" /><!—這一塊有所省略,應該配置不同的文件名-->
       < Realm className = "org.apache.catalina.realm.UserDatabaseRealm"
              resourceName = "UserDatabase" />
       < Host name = "localhost" appBase = "webapps2" /> <!—默認的主機-->
     </ Engine >
   </ Service >
 
</ Server >

增加的service可以分配自己的connector和host,只要和主service不沖突即可

通過這個辦法,可以讓vsb2006的管理端運行在一個端口上,而站點運行在另外的端口上,完全不沖突

經實驗此方式可行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< Service name = "myweb" >
     < Connector port = "8081" protocol = "HTTP/1.1" connectionTimeout = "20000" />
     < Engine name = "myweb" defaultHost = "localhost" >
         < Realm className = "org.apache.catalina.realm.LockOutRealm" >
         < Realm className = "org.apache.catalina.realm.UserDatabaseRealm" resourceName = "UserDatabase" />
         </ Realm >
         < Host name = "localhost" appBase = "myweb" unpackWARs = "true" autoDeploy = "true" >
             < Valve className = "org.apache.catalina.valves.AccessLogValve" directory = "/var/log/tomcat"
                 prefix = "myweb_access_log." suffix = ".txt"
                 pattern = "%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D" />
                 <!-- for ev -->
             < Context path = "/gaei/ev" docBase = "b2c-admin" debug = "0" />
         </ Host >
     </ Engine >
</ Service >


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM