1. 程式人生 > >Tomcat系列之伺服器的安裝與配置以及各元件詳解

Tomcat系列之伺服器的安裝與配置以及各元件詳解

Tomcat系列之伺服器的安裝與配置以及各元件詳解

大綱

一、前言

二、安裝與配置Tomcat

三、Tomcat 目錄的結構

四、Tomcat 配置檔案

注,本文的測試的作業系統為CentOS 6.4 x86_64,軟體版本為jdk-7u40、apache-tomcat-7.0.42。博文中的所有軟體請到這裡下載:http://yunpan.cn/QGBCLwrZnpLMS


一、前言

在上一篇博文中我們主要講解的Tomcat的基礎知識以及相關的Java知識,對於不怎麼清楚的博友可以參考一下:http://freeloda.blog.51cto.com/2033581/1298687

。在這部落格中我們主要講解Tomcat的安裝與配置詳解。那下面我們就來說一下吧!

二、安裝與配置Tomcat

1.檢視一下安裝檔案

[[email protected] src]# ls
apache-tomcat-7.0.42.tar.gz jdk-7u40-linux-x64.rpm

2.同步一下時間

[[email protected] java]# ntpdate 202.120.2.101

3.安裝JDK

[[email protected] src]# rpm -ivh jdk-7u40-linux-x64.rpm

4.修改環境變數

[[email protected] tomcat]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.7.0_40 
export PATH=$PATH:$JAVA_HOME/bin

5.測試一下

[[email protected] java]# java -version
java version "1.7.0_40" 
Java(TM) SE Runtime Environment (build 1.7.0_40-b43) 
Java HotSpot(
TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

注:好了,到這裡我們的jdk就安裝成功了。下面我們來安裝一下Tomcat!

6.解壓並建立連結

[[email protected] src]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[[email protected] local]# ln -sv apache-tomcat-7.0.42 tomcat

7.修改環境變數

[[email protected] tomcat]# cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat 
export PATH=$PATH:$CATALINA_HOME/bin

8.測試一下

[[email protected] tomcat]# catalina.sh start
Using CATALINA_BASE:  /usr/local/tomcat 
Using CATALINA_HOME:  /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:    /usr/java/jdk1.7.0_40 
Using CLASSPATH:    /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

9.啟動tomcat

[[email protected] tomcat]# catalina.sh start
Using CATALINA_BASE:  /usr/local/tomcat 
Using CATALINA_HOME:  /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:    /usr/java/jdk1.7.0_40 
Using CLASSPATH:    /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

10.檢視啟動的埠

[[email protected] tomcat]# netstat -ntulp
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address        Foreign Address       State    PID/Program name
tcp    0   0 0.0.0.0:22         0.0.0.0:*          LISTEN   1044/sshd    
tcp    0   0 127.0.0.1:25        0.0.0.0:*          LISTEN   1121/master   
tcp    0   0 127.0.0.1:6010       0.0.0.0:*          LISTEN   1155/sshd    
tcp    0   0 :::8080           :::*            LISTEN   1464/java    
tcp    0   0 :::22            :::*            LISTEN   1044/sshd    
tcp    0   0 ::1:25           :::*            LISTEN   1121/master   
tcp    0   0 ::1:6010          :::*            LISTEN   1155/sshd    
tcp    0   0 ::ffff:127.0.0.1:8005    :::*            LISTEN   1464/java    
tcp    0   0 :::8009           :::*            LISTEN   1464/java

11.測試訪問一下

tomcat測試

注,好了到這裡我們的Tomcat就安裝完成了,下面我們就來看看我們安裝的內容。

三、Tomcat 目錄的結構

1.Tomcat的安裝

其實對於完全由Java寫成的Tomcat,Windows版本和Linux版本沒有多大區別,比如Linux版本,在Solaris下也沒有問題。這裡,主要以Linux版本作為示例。

注,在安裝使用Tomcat之前,先安裝JDK,最好是Sun的JDK 1 .5 以上版。我們上面已經安裝過了,這裡我們就不在多說。

2.Tomcat的目錄結構

首先,我們先來簡單檢視一下目錄檔案,

[[email protected] ~]# cd /usr/local/tomcat/
[[email protected] tomcat]# ls 
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work

下面我們來簡單說明下,

  • bin ——Tomcat執行指令碼目錄

  • conf ——Tomcat配置檔案

  • lib ——Tomcat執行需要的庫檔案(JARS)

  • logs ——Tomcat執行時的LOG檔案

  • temp ——Tomcat臨時檔案存放目錄

  • webapps ——Tomcat的主要Web釋出目錄(存放我們自己的JSP,SERVLET,類)

  • work ——Tomcat的工作目錄,Tomcat將翻譯JSP檔案到的Java檔案和class檔案放在這裡。

下面我們來說一說各目錄中包含的檔案,

bin目錄下的檔案:

[[email protected] tomcat]# ls bin/
bootstrap.jar    commons-daemon.jar      cpappend.bat setclasspath.bat startup.bat      tool-wrapper.bat 
catalina.bat    commons-daemon-native.tar.gz daemon.sh   setclasspath.sh  startup.sh      tool-wrapper.sh 
catalina.sh     configtest.bat        digest.bat  shutdown.bat   tomcat-juli.jar    version.bat 
catalina-tasks.xml configtest.sh         digest.sh   shutdown.sh    tomcat-native.tar.gz version.sh

我們來說說最主要主檔案有,

  • catalina.sh 用於啟動和關閉tomcat伺服器

  • configtest.sh 用於檢查配置檔案

  • startup.sh 啟動Tomcat指令碼

  • shutdown.sh 關閉Tomcat指令碼

conf目錄下的檔案:

[[email protected] tomcat]# ls conf/
Catalina catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml

最主要的配置檔案有,

  • server.xml Tomcat 的全域性配置檔案

  • web.xml 為不同的Tomcat配置的web應用設定預設值的檔案

  • tomcat-users.xml Tomcat使用者認證的配置檔案

lib目錄下的檔案:

[[email protected] tomcat]# ls lib/
annotations-api.jar catalina-tribes.jar jasper.jar    tomcat-coyote.jar  tomcat-i18n-ja.jar 
catalina-ant.jar   ecj-4.2.2.jar    jsp-api.jar   tomcat-dbcp.jar   tomcat-jdbc.jar 
catalina-ha.jar   el-api.jar      servlet-api.jar tomcat-i18n-es.jar tomcat-util.jar 
catalina.jar     jasper-el.jar    tomcat-api.jar  tomcat-i18n-fr.jar

包含被Tomcat使用的各種各樣的jar檔案。在Linux/UNIX上,任何這個目錄中的檔案將被附加到Tomcat的classpath中。

logs目錄下的檔案:

[[email protected] tomcat]# ls logs/
catalina.2013-09-18.log host-manager.2013-09-18.log localhost_access_log.2013-09-18.txt 
catalina.out       localhost.2013-09-18.log   manager.2013-09-18.log

主要的配置檔案有,

  • localhost_access_log.2013-09-18.txt 訪問日誌

  • localhost.2013-09-18.log 錯誤和其它日誌

  • manager.2013-09-18.log 管理日誌

  • catalina.2013-09-18.log Tomcat啟動或關閉日誌檔案

webapps目錄下的檔案:

[[email protected] tomcat]# ls webapps/
docs examples host-manager manager ROOT

含Web應用的程式 (JSP、Servlet和JavaBean等)

work目錄下的配置檔案:

[[email protected] tomcat]# ls work/
Catalina
[[email protected] tomcat]# ls work/Catalina/localhost/
_/      docs/     examples/   host-manager/ manager/

由Tomcat自動生成,這是Tomcat放置它執行期間的中間(intermediate)檔案(諸如編譯的JSP檔案)地方。 如果當Tomcat執行時,你刪除了這個目錄那麼將不能夠執行包含JSP的頁面。

好了,Tomcat的目錄結構我們就說到這了,下面我們來說說Tomcat應用程式的組成。

3.Tomcat 應用程式的組成

注,上面的內容中我們講解了Tomcat的目錄結構,其中有個目錄是webapps,主要存放Web應用程式。那我們下面來說一說Web應用程式的組成。

按照Tomcat的規範,Tomcat的Web應用程式應該由如下目錄組成,

(1).頁面內容等檔案的存放位置:*.html, *.jsp等可以有許多目錄層次,由使用者的網站結構而定,實現的功能應該是網站的介面,也就是使用者主要的可見部分。除了HTML檔案、JSP檔案外,還有js(JavaScript)檔案和css(樣式表)檔案以及其他多媒體檔案等。

(2).Web-INF/web.xml 這是一個Web應用程式的描述檔案。這個檔案是一個XML檔案,描述了Servlet和這個Web應用程式的其他元件資訊,此外還包括一些初始化資訊和安全約束等等。

(3).Web-INF/classes/ 這個目錄及其下的子目錄應該包括這個Web應用程式的所有JavaBean及Servlet等編譯好的Java類檔案(*.class)檔案,以及沒有被壓縮打入JAR包的其他class檔案和相關資源。注意,在這個目錄下的Java類應該按照其所屬的包層次組織目錄(即如果該*.class檔案具有包的定義,則該*.class檔案應該放在.\WEB-INF\classes\包名下)。

(4).通常Web-INF/classes/ 這個目錄下的類檔案也可以打包成JAR檔案,並可以放到WEB-INF下的lib目錄下。如將 classes目錄下的各個*.class檔案打包成WebMis.jar檔案(jar cvf WebMis.jar *.*)

注,

  • WEB-INF目錄中包含應用軟體所使用的資源,但是WEB-INF卻不在公共文件根目錄之中。在這個目錄中所包含的檔案都不能被客戶機所訪問。

  • 類目錄中(在WEB-INF下)包含執行Web應用程式時所需的Servlets,Beans等類。

  • lib目錄(在WEB-INF下)包含有Java archive files (JARs),例如標籤庫或者Servlets,Beans等類的*.jar檔案。

  • 如果一個類出現在JAR檔案中同時也出現在類的目錄中,類載入器會載入位於類目錄中的那一個。

(5). common/lib/ 這個目錄下包含了所有壓縮到JAR檔案中的類檔案和相關檔案。比如:第三方提供的Java庫檔案、JDBC驅動程式等。

  • 其中msbase.jar、mssqlserver.jar、msutil.jar檔案為SqlServer2000的JDBC驅動程式

  • 其中servlet-api.jar和jsp-api.jar為Servlet和JSP的API所在的包

好了,Tomcat的應用程式的能成我們就基本說到這裡了,下面我們來看一下預設Web程式的目錄結構。

[[email protected] ~]# cd /usr/local/tomcat/
[[email protected] tomcat]# ls 
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work 
[[email protected] tomcat]# cd webapps/ 
[[email protected] webapps]# ls 
docs examples host-manager manager ROOT 
[[email protected] webapps]# cd examples/ 
[[email protected] examples]# ls 
index.html jsp servlets WEB-INF websocket 
[[email protected] examples]# cd WEB-INF/ 
[[email protected] WEB-INF]# ls 
classes jsp jsp2 lib tags web.xml

到這裡我們的Tomcat的目錄結構就講解完成了,下面我們得來詳細說說,Tomcat的配置檔案。

四、Tomcat 配置檔案

1.簡介

檢視一下預設配置檔案,

[[email protected] ~]# cd /usr/local/tomcat/conf/
[[email protected] conf]# ls
Catalina catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml

Tomcat的配置檔案預設存放在$CATALINA_HOME/conf目錄中,主要有以下幾個:

  • server.xml: Tomcat的主配置檔案,包含Service, Connector, Engine, Realm, Valve, Hosts主元件的相關配置資訊;

  • web.xml:遵循Servlet規範標準的配置檔案,用於配置servlet,併為所有的Web應用程式提供包括MIME對映等預設配置資訊;

  • tomcat-user.xml:Realm認證時用到的相關角色、使用者和密碼等資訊;Tomcat自帶的manager預設情況下會用到此檔案;在Tomcat中新增/刪除使用者,為使用者指定角色等將通過編輯此檔案實現;

  • catalina.policy:Java相關的安全策略配置檔案,在系統資源級別上提供訪問控制的能力;

  • catalina.properties:Tomcat內部package的定義及訪問相關的控制,也包括對通過類裝載器裝載的內容的控制;Tomcat在啟動時會事先讀取此檔案的相關設定;

  • logging.properties: Tomcat通過自己內部實現的JAVA日誌記錄器來記錄操作相關的日誌,此檔案即為日誌記錄器相關的配置資訊,可以用來定義日誌記錄的元件級別以及日誌檔案的存在位置等;

  • context.xml:所有host的預設配置資訊;

注,下面我們對常用的配置檔案進行詳解。

2.server.xml

首先,我們來檢視一下預設的server.xml檔案,

Tomcat以面向物件的方式執行,它可以在執行時動態載入配置檔案中定義的物件結構,這有點類似於apache的httpd模組的呼叫方式。server.xml中定義的每個主元素都會被建立為物件,並以某特定的層次結構將這些物件組織在一起。下面是預設配置,

[[email protected] conf]# cat server.xml
<?xml version='1.0' encoding='utf-8'?> 
<!-- 
 Licensed to the Apache Software Foundation (ASF) under one or more 
 contributor license agreements. See the NOTICE file distributed with 
 this work for additional information regarding copyright ownership. 
 The ASF licenses this file to You under the Apache License, Version 2.0 
 (the "License"); you may not use this file except in compliance with 
 the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS, 
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 See the License for the specific language governing permissions and 
 limitations under the License. 
--> 
<!-- Note: A "Server" is not itself a "Container", so you may not 
  define subcomponents such as "Valves" at this level. 
  Documentation at /docs/config/server.html 
--> 
<Server port="8005" shutdown="SHUTDOWN"> 
 <!-- Security listener. Documentation at /docs/config/listeners.html 
 <Listener className="org.apache.catalina.security.SecurityListener" /> 
 --> 
 <!--APR library loader. Documentation at /docs/apr.html --> 
 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
 <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --> 
 <Listener className="org.apache.catalina.core.JasperListener" /> 
 <!-- Prevent memory leaks due to use of particular java/javax APIs--> 
 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 <!-- Global JNDI resources
  Documentation at /docs/jndi-resources-howto.html 
 --> 
 <GlobalNamingResources> 
 <!-- Editable user database that can also be used by 
   UserDatabaseRealm to authenticate users 
 --> 
 <Resource name="UserDatabase" auth="Container" 
    type="org.apache.catalina.UserDatabase" 
    description="User database that can be updated and saved" 
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
    pathname="conf/tomcat-users.xml" /> 
 </GlobalNamingResources>
 <!-- A "Service" is a collection of one or more "Connectors" that share
  a single "Container" Note: A "Service" is not itself a "Container", 
  so you may not define subcomponents such as "Valves" at this level. 
  Documentation at /docs/config/service.html 
 --> 
 <Service name="Catalina">
 <!--The connectors can use a shared executor, you can define one or more named thread pools-->
 <!-- 
 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
  maxThreads="150" minSpareThreads="4"/> 
 -->
 <!-- A "Connector" represents an endpoint by which requests are received 
   and responses are returned. Documentation at : 
   Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) 
   Java AJP Connector: /docs/config/ajp.html 
   APR (HTTP/AJP) Connector: /docs/apr.html 
   Define a non-SSL HTTP/1.1 Connector on port 8080 
 --> 
 <Connector port="8080" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" /> 
 <!-- A "Connector" using the shared thread pool--> 
 <!-- 
 <Connector executor="tomcatThreadPool" 
    port="8080" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" /> 
 --> 
 <!-- Define a SSL HTTP/1.1 Connector on port 8443 
   This connector uses the JSSE configuration, when using APR, the 
   connector should be using the OpenSSL style configuration 
   described in the APR documentation --> 
 <!-- 
 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="150" scheme="https" secure="true" 
    clientAuth="false" sslProtocol="TLS" /> 
 -->
 <!-- Define an AJP 1.3 Connector on port 8009 -->
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 <!-- An Engine represents the entry point (within Catalina) that processes 
   every request. The Engine implementation for Tomcat stand alone 
   analyzes the HTTP headers included with the request, and passes them 
   on to the appropriate Host (virtual host). 
   Documentation at /docs/config/engine.html -->
 <!-- You should set jvmRoute to support load-balancing via AJP ie :
 <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> 
 --> 
 <Engine name="Catalina" defaultHost="localhost">
  <!--For clustering, please take a look at documentation at:
   /docs/cluster-howto.html (simple how to) 
   /docs/config/cluster.html (reference documentation) --> 
  <!-- 
  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
  -->
  <!-- Use the LockOutRealm to prevent attempts to guess user passwords
   via a brute-force attack --> 
  <Realm className="org.apache.catalina.realm.LockOutRealm"> 
  <!-- This Realm uses the UserDatabase configured in the global JNDI 
    resources under the key "UserDatabase". Any edits 
    that are performed against this UserDatabase are immediately 
    available for use by the Realm. --> 
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
    resourceName="UserDatabase"/> 
  </Realm>
  <Host name="localhost" appBase="webapps"
   unpackWARs="true" autoDeploy="true">
  <!-- SingleSignOn valve, share authentication between web applications
    Documentation at: /docs/config/valve.html --> 
  <!-- 
  <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 
  -->
  <!-- Access log processes all example.
    Documentation at: /docs/config/valve.html 
    Note: The pattern used is equivalent to using pattern="common" --> 
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
    prefix="localhost_access_log." suffix=".txt" 
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>
 </Engine> 
 </Service> 
</Server>

注,看上去很複雜。其實,大部分都是註釋。下面是一個簡圖說明了各元件之間的關係!

預設元件的關係

server.xml檔案中可定義的元素非常多,包括Server, Service, Connector, Engine, Cluster, Host, Alias, Context, Realm, Valve, Manager, Listener, Resources, Resource, ResourceEnvRef, ResourceLink, WatchedResource, GlobalNameingResources, Store, Transaction, Channel, Membership, Transport, Member, ClusterListener等。

下面簡單介紹幾個常用元件:

(1).Server元件

如上面示例檔案中定義的:

<Server port=”8005” shutdown=”SHUTDOWN”>

這會讓Tomcat啟動一個server例項(即一個JVM),它監聽在8005埠以接收shutdown命令。各Server的定義不能使用同一個埠,這意味著如果在同一個物理機上啟動了多個Server例項,必須配置它們使用不同的埠。這個埠的定義用於為管理員提供一個關閉此例項的便捷途徑,因此,管理員可以直接telnet至此埠使用SHUTDOWN命令關閉此例項。不過,基於安全形度的考慮,這通常不允許遠端進行。

Server的相關屬性:

  • className: 用於實現此Server容器的完全限定類的名稱,預設為org.apache.catalina.core.StandardServer;

  • port: 接收shutdown指令的埠,預設僅允許通過本機訪問,預設為8005;

  • shutdown:發往此Server用於實現關閉tomcat例項的命令字串,預設為SHUTDOWN;

(2).Service元件

Service主要用於關聯一個引擎和與此引擎相關的聯結器,每個聯結器通過一個特定的埠和協議接收入站請求交將其轉發至關聯的引擎進行處理。因此,Service要包含一個引擎、一個或多個聯結器。

如上面示例中的定義:
<Service name=”Catalina”>

這定義了一個名為Catalina的Service,此名字也會在產生相關的日誌資訊時記錄在日誌檔案當中。

Service相關的屬性:

  • className: 用於實現service的類名,一般都是org.apache.catalina.core.StandardService。

  • name:此服務的名稱,預設為Catalina;

(3).Connector元件

進入Tomcat的請求可以根據Tomcat的工作模式分為如下兩類:

  • Tomcat作為應用程式伺服器:請求來自於前端的web伺服器,這可能是Apache, IIS, Nginx等;

  • Tomcat作為獨立伺服器:請求來自於web瀏覽器;

Tomcat應該考慮工作情形併為相應情形下的請求分別定義好需要的聯結器才能正確接收來自於客戶端的請求。一個引擎可以有一個或多個聯結器,以適應多種請求方式。

定義聯結器可以使用多種屬性,有些屬性也只適用於某特定的聯結器型別。一般說來,常見於server.xml中的聯結器型別通常有4種:

  • HTTP聯結器

  • SSL聯結器

  • AJP 1.3聯結器

  • proxy聯結器

如上面示例server.xml中定義的HTTP聯結器:

<Connector port="8080" protocol="HTTP/1.1" 
  maxThreads="150" connectionTimeout="20000" 
  redirectPort="8443"/>

定義聯結器時可以配置的屬性非常多,但通常定義HTTP聯結器時必須定義的屬性只有“port”,定義AJP聯結器時必須定義的屬性只有"protocol",因為預設的協議為HTTP。以下為常用屬性的說明:

  • address:指定聯結器監聽的地址,預設為所有地址,即0.0.0.0;

  • maxThreads:支援的最大併發連線數,預設為200;

  • port:監聽的埠,預設為0;

  • protocol:聯結器使用的協議,預設為HTTP/1.1,定義AJP協議時通常為AJP/1.3;

  • redirectPort:如果某聯結器支援的協議是HTTP,當接收客戶端發來的HTTPS請求時,則轉發至此屬性定義的埠;

  • connectionTimeout:等待客戶端傳送請求的超時時間,單位為毫秒,預設為60000,即1分鐘;

  • enableLookups:是否通過request.getRemoteHost()進行DNS查詢以獲取客戶端的主機名;預設為true;

  • acceptCount:設定等待佇列的最大長度;通常在tomcat所有處理執行緒均處於繁忙狀態時,新發來的請求將被放置於等待佇列中;

下面是一個定義了多個屬性的SSL聯結器:

<Connector port="8443" 
 maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
 enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true" 
 clientAuth="false" sslProtocol="TLS" />

(4).Engine元件

Engine是Servlet處理器的一個例項,即servlet引擎,預設為定義在server.xml中的Catalina。Engine需要defaultHost屬性來為其定義一個接收所有發往非明確定義虛擬主機的請求的host元件。如前面示例中定義的:
<Engine name="Catalina" defaultHost="localhost">

常用的屬性定義:

  • defaultHost:Tomcat支援基於FQDN的虛擬主機,這些虛擬主機可以通過在Engine容器中定義多個不同的Host元件來實現;但如果此引擎的聯結器收到一個發往非非明確定義虛擬主機的請求時則需要將此請求發往一個預設的虛擬主機進行處理,因此,在Engine中定義的多個虛擬主機的主機名稱中至少要有一個跟defaultHost定義的主機名稱同名;

  • name:Engine元件的名稱,用於日誌和錯誤資訊記錄時區別不同的引擎;

注,Engine容器中可以包含Realm、Host、Listener和Valve子容器。

(5).Host元件

位於Engine容器中用於接收請求並進行相應處理的主機或虛擬主機,如前面預設配置檔案中定義:

<Host name="localhost" appBase="webapps" 
unpackWARs="true" autoDeploy="true" 
xmlValidation="false" xmlNamespaceAware="false"> 
</Host>

常用屬性說明:

  • appBase:此Host的webapps目錄,即存放非歸檔的web應用程式的目錄或歸檔後的WAR檔案的目錄路徑;可以使用基於$CATALINA_HOME的相對路徑;

  • autoDeploy:在Tomcat處於執行狀態時放置於appBase目錄中的應用程式檔案是否自動進行deploy;預設為true;

  • unpackWars:在啟用此webapps時是否對WAR格式的歸檔檔案先進行展開;預設為true;

下面是虛擬主機定義示例:

<Engine name="Catalina" defaultHost="localhost">
 <Host name="localhost" appBase="webapps">
 <Context path="" docBase="ROOT"/>
 <Context path="/bbs" docBase="/web/bss"
  reloadable="true" crossContext="true"/>
 </Host>
 <Host name="mail.test.com" appBase="/web/mail">
 <Context path="" docBase="ROOT"/>
 </Host>
</Engine>

主機別名定義:

如果一個主機有兩個或兩個以上的主機名,額外的名稱均可以以別名的形式進行定義,如下:

<Host name="www.test.com" appBase="webapps" unpackWARs="true">
 <Alias>test.com</Alias>
</Host>

(6).Context元件

Context在某些意義上類似於apache中的路徑別名,一個Context定義用於標識tomcat例項中的一個Web應用程式;如下面的定義:

<!-- Tomcat Root Context -->
<Context path="" docBase="/web/webapps"/>
<!-- buzzin webapp -->
<Context path="/bbs"
 docBase="/web/threads/bbs"
 reloadable="true">
</Context>
<!-- chat server -->
 <Context path="/chat" docBase="/web/chat"/>
<!-- darian web -->
<Context path="/darian" docBase="darian"/>

在Tomcat中,每一個context定義也可以使用一個單獨的XML檔案進行,其檔案的目錄為$CATALINA_HOME/conf/<engine name>/<host name>。可以用於Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。

常用的屬性定義有:

  • docBase:相應的Web應用程式的存放位置;也可以使用相對路徑,起始路徑為此Context所屬Host中appBase定義的路徑;切記,docBase的路徑名不能與相應的Host中appBase中定義的路徑名有包含關係,比如,如果appBase為deploy,而docBase絕不能為deploy-bbs類的名字;

  • path:相對於Web伺服器根路徑而言的URI;如果為空“”,則表示為此webapp的根路徑;如果context定義在一個單獨的xml檔案中,此屬性不需要定義;

  • reloadable:是否允許重新載入此context相關的Web應用程式的類;預設為false;

(7).Realm元件
一個Realm表示一個安全上下文,它是一個授權訪問某個給定Context的使用者列表和某使用者所允許切換的角色相關定義的列表。因此,Realm就像是一個使用者和組相關的資料庫。定義Realm時惟一必須要提供的屬性是classname,它是Realm的多個不同實現,用於表示此Realm認證的使用者及角色等認證資訊的存放位置。

  • JAASRealm:基於Java Authintication and Authorization Service實現使用者認證;

  • JDBCRealm:通過JDBC訪問某關係型資料庫表實現使用者認證;

  • JNDIRealm:基於JNDI使用目錄服務實現認證資訊的獲取;

  • MemoryRealm:查詢tomcat-user.xml檔案實現使用者資訊的獲取;

  • UserDatabaseRealm:基於UserDatabase檔案(通常是tomcat-user.xml)實現使用者認證,它實現是一個完全可更新和持久有效的MemoryRealm,因此能夠跟標準的MemoryRealm相容;它通過JNDI實現;

下面是一個常見的使用UserDatabase的配置:

<Realm className=”org.apache.catalina.realm.UserDatabaseRealm”
 resourceName=”UserDatabase”/>
下面是一個使用JDBC方式獲取使用者認證資訊的配置:
 <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
 driverName="org.gjt.mm.mysql.Driver"
 connectionURL="jdbc:mysql://localhost/authority"
 connectionName="test" connectionPassword="test"
 userTable="users" userNameCol="user_name"
 userCredCol="user_pass"
 userRoleTable="user_roles" roleNameCol="role_name" />

(8).Valve元件

Valve類似於過濾器,它可以工作於Engine和Host/Context之間、Host和Context之間以及Context和Web應用程式的某資源之間。一個容器內可以建立多個Valve,而且Valve定義的次序也決定了它們生效的次序。Tomcat中實現了多種不同的Valve:

    相關推薦

    Tomcat系列伺服器安裝配置以及元件

    Tomcat系列之伺服器的安裝與配置以及各元件詳解 大綱 一、前言 二、安裝與配置Tomcat 三、Tomcat 目錄的結構 四、Tomcat 配置檔案 注,本文的測試的作業系統為CentOS 6.4 x86_64,軟體版本為jdk-7u40、apache

    Jenkins入門系列—— Jenkins安裝配置

    1.下載最新的版本(一個 WAR 檔案)。Jenkins官方網址: http://Jenkins-ci.org/ 2.執行 java -jar jenkins.war 注意:Jenkins 需要執行 Java 5以及以上的版本。 還有一種安裝方式就是將下載的war包檔案部署到 servlet 容器,

    華為雲伺服器實戰 Gitlab安裝配置使用

    簡介     GitLab是一個利用Ruby on Rails開發的開源應用程式,

    V-1-1 Vmware桌面虛擬化環境搭建ESXi安裝配置

    vmware vdi esxi 首先將刻錄好的優盤(光盤)插入服務器,並且在啟動選項中選中對應的設備。如何刻錄請參考文檔:O-4 ISO的刻錄如圖所示,將會自動進入安裝進度條當進度條讀取完畢後,可以看到黑黃相間的畫面,其中會顯示安裝的版本,如圖為5.5版本。在加載界面加載完畢後會出現如下畫面,根據

    Hadoop Hive 安裝配置

    file 接下來 重新 軟件 driver name arc /etc ted Hive 作為基於Hadoop的一個數據倉庫工具,可將sql語句轉換為MapReduce任務進行運行。 通過類SQL語句快速實現簡單的MapReduce統計,不用開發專門的MapReduce應用

    Gradle的安裝配置以及錯誤

    eclips 報告 其他 輸入 創建 設置 重新 轉換 pen 1:下載安裝包 下載地址:https://gradle.org/releases 2:解壓到本地 3:配置環境變量 我的電腦-屬性-高級系統設置-高級-環境變量 4:驗證安裝是否成功 cmd --

    Linux筆記網絡監控nagios安裝配置

    nagios linux 安裝與配置 nagios簡介 Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通

    OpenLDAP 服務端安裝配置以及原理

    ldapOpenLDAP 服務端安裝與配置 一、什麽是LDAP 目錄是一個為查詢、瀏覽和搜索而優化的專業分布式數據庫,它呈樹狀結構組織數據,就好象Linux/Unix系統中的文件目錄一樣。目錄數據庫和關 系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。所

    【Selenium】selenium安裝配置,以及chromedriver的使用

    作為一個剛從開發轉過來的測試人員,少不了一系列的測試工具。那麼今天小新在跟大家分享一下我這兩天弄的selenium。 selenium,跟QTP一樣,是一個web的自動化測試工具,但相比於QTP,其具有以下優點: 1、小巧。對於不同的開發語言來說,它就

    積跬步至千里系列六--安裝解除安裝應用程式(PackageInstaller)(一)

    PackageInstaller屬於framework層的一個系統應用,其位置位於:原始碼目錄/package/apps/PackageInstaller.所有的系統預製應用全都放在apps/目錄下,比如Setting, Launcher等都在此目錄下. 我是

    第十二章 FTP伺服器安裝配置

    習題 1.簡述FTP的連線模式。 FTP的連線模式有PORT和PASV兩種,其中PORT模式是主動模式,PASV是被動模式, 這裡所說的主動和被動都是相對於伺服器而言的。如果是主動模式,資料埠為20,如 果是被動模式,則由伺服器端和客戶端協商而定。 2.簡述FTP的傳輸模式。 FTP可用多種格式傳

    centOS7下FTP伺服器安裝配置

    一、安裝vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 二、vsftpd伺服器的配置檔案   實現在開啟防火牆和SELinux情況下,實現匿名使用者的登入,可以上傳下載,可以建立目錄,建立許可權掩碼為022,可以刪

    [叄]Pomelo遊戲伺服器程式設計分享 伺服器結構配置分析

    網路部署結構 我們先看一下Pomelo伺服器網路部署情況,直接上圖 Pomelo伺服器端框架簡單地可分為兩層,即連結層(Connector、Gate)和服務層(Logic、Master),也叫前端伺服器(frontend server)和後端伺服器(backend se

    Linux中SVN伺服器安裝使用以及windows客戶端的使用(CentOS-6.5)

    1 SVN簡介     svn是Subversion的簡稱,是一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。網際網路上很多版本控制服務已從CVS轉移到Subversion。 svn伺服器有2種執行方式:獨立伺服器和藉助

    Win10 IIS Web伺服器安裝配置

    這幾天課程實訓,使用 IIS 配置伺服器,課本上內容太古老,老師也沒有講過,自己摸索弄的,所以記錄一下 安裝 IIS 開啟 程式和功能,選擇左邊 啟用或關閉 Windows 功能,建議根據

    Ubuntu(烏班圖)下mysql+tomcat+jdk+SSH的安裝配置

    jdk的安裝請參照 上面這篇文章; tomcat的安裝: 可參看我的博文中有一篇redhat中tomcat的配置,其實很簡單,只需要在網上下載個tar檔案,直接減壓縮,然後在tomcat所在的解壓縮目錄中執行 sudo startup.sh則啟動tomcat  ,只

    Nginx在Linux下的安裝配置,以及遇到問題的解決整理

    2、將下載的資源上傳到/usr/local目錄下,注意:如果遇到檔案無法移動或報沒有許可權,應該是賬號不是root使用者,可以使用su root命令切換。 3、安裝nginx,在/usr/local下解壓nginx-1.10.0.tar.gz,並進入nginx-1.10.

    嘔心瀝血一個月caffe安裝配置

    安裝openCV cd opencv-3.1.0 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. 在此過程中,很有可能會出現錯誤:ICV: Downloading ippi

    python3 [爬蟲入門實戰]爬蟲scrapy安裝配置教程

    不得不說,自己經歷過的,才是真的經歷過,有很多網上的教程並不是很好,都是一把辛酸淚啊。 網上很多教程都是python2.7的,少有python3的教程,找起資料來還是挺難的。搞了算是蠻久的,一個上午加上半個晚上, 不過最終還是搞出來了 總結一下:方法對了,安裝的方法還是蠻簡單的 前人的經驗,別一開始就上

    SVN版本控制伺服器安裝配置

           版本管理在我們日常學習中一般接觸不到,因為我們都是一個人在學習與開發一些練習的專案。但是實際中,一般專案都是協同開發的,這樣就需要一個版本管理工具,常見的有SVN/CVS/GitHut等