大纲
注,本文的测试的操作系统为CentOS 6.4 x86_64,软件版本为jdk-7u40、apache-tomcat-7.0.42。博文中的所有软件请到这里下载:http:///QGBCLwrZnpLMS。 一、前言 在上一篇博文中我们主要讲解的Tomcat的基础知识以及相关的Java知识,对于不怎么清楚的博友可以参考一下:http://freeloda.blog.51cto.com/2033581/1298687。在这博客中我们主要讲解Tomcat的安装与配置详解。那下面我们就来说一下吧! 二、安装与配置Tomcat 1.查看一下安装文件
2.同步一下时间
3.安装JDK
4.修改环境变量
5.测试一下
注:好了,到这里我们的jdk就安装成功了。下面我们来安装一下Tomcat! 6.解压并创建链接
7.修改环境变量
8.测试一下
9.启动tomcat
10.查看启动的端口
11.测试访问一下 注,好了到这里我们的Tomcat就安装完成了,下面我们就来看看我们安装的内容。 三、Tomcat 目录的结构 1.Tomcat的安装 其实对于完全由Java写成的Tomcat,Windows版本和Linux版本没有多大区别,比如Linux版本,在Solaris下也没有问题。这里,主要以Linux版本作为示例。 注,在安装使用Tomcat之前,先安装JDK,最好是Sun的JDK 1 .5 以上版。我们上面已经安装过了,这里我们就不在多说。 2.Tomcat的目录结构 首先,我们先来简单查看一下目录文件,
下面我们来简单说明下,
下面我们来说一说各目录中包含的文件, bin目录下的文件:
我们来说说最主要主文件有,
conf目录下的文件:
最主要的配置文件有,
lib目录下的文件:
包含被Tomcat使用的各种各样的jar文件。在Linux/UNIX上,任何这个目录中的文件将被附加到Tomcat的classpath中。 logs目录下的文件:
主要的配置文件有,
webapps目录下的文件:
含Web应用的程序 (JSP、Servlet和JavaBean等) work目录下的配置文件:
由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 *.*) 注,
(5). common/lib/ 这个目录下包含了所有压缩到JAR文件中的类文件和相关文件。比如:第三方提供的Java库文件、JDBC驱动程序等。
好了,Tomcat的应用程序的能成我们就基本说到这里了,下面我们来看一下默认Web程序的目录结构。
到这里我们的Tomcat的目录结构就讲解完成了,下面我们得来详细说说,Tomcat的配置文件。 四、Tomcat 配置文件 1.简介 查看一下默认配置文件,
Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中,主要有以下几个:
注,下面我们对常用的配置文件进行详解。 2.server.xml 首先,我们来查看一下默认的server.xml文件, Tomcat以面向对象的方式运行,它可以在运行时动态加载配置文件中定义的对象结构,这有点类似于apache的httpd模块的调用方式。server.xml中定义的每个主元素都会被创建为对象,并以某特定的层次结构将这些对象组织在一起。下面是默认配置,
注,看上去很复杂。其实,大部分都是注释。下面是一个简图说明了各组件之间的关系! 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组件 如上面示例文件中定义的:
这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行。 Server的相关属性:
(2).Service组件 Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎进行处理。因此,Service要包含一个引擎、一个或多个连接器。 如上面示例中的定义: 这定义了一个名为Catalina的Service,此名字也会在产生相关的日志信息时记录在日志文件当中。 Service相关的属性:
(3).Connector组件 进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多个连接器,以适应多种请求方式。 定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于server.xml中的连接器类型通常有4种:
如上面示例server.xml中定义的HTTP连接器:
定义连接器时可以配置的属性非常多,但通常定义HTTP连接器时必须定义的属性只有“port”,定义AJP连接器时必须定义的属性只有"protocol",因为默认的协议为HTTP。以下为常用属性的说明:
下面是一个定义了多个属性的SSL连接器:
(4).Engine组件 Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的Catalina。Engine需要defaultHost属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的host组件。如前面示例中定义的: 常用的属性定义:
注,Engine容器中可以包含Realm、Host、Listener和Valve子容器。 (5).Host组件 位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面默认配置文件中定义:
常用属性说明:
下面是虚拟主机定义示例:
主机别名定义: 如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,如下:
(6).Context组件 Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序;如下面的定义:
在Tomcat中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为$CATALINA_HOME/conf/<engine name>/<host name>。可以用于Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。 常用的属性定义有:
(7).Realm组件
下面是一个常见的使用UserDatabase的配置:
(8).Valve组件 Valve类似于过滤器,它可以工作于Engine和Host/Context之间、Host和Context之间以及Context和Web应用程序的某资源之间。一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序。Tomcat中实现了多种不同的Valve:
RemoteHostValve和RemoteAddrValve可以分别用来实现基于主机名称和基于IP地址的访问控制,控制本身可以通过allow或deny来进行定义,这有点类似于Apache的访问控制功能;如下面的Valve则实现了仅允许本机访问/probe:
其中相关属性定义有:
(9).GlobalNamingResources 应用于整个服务器的JNDI映射,此可以避免每个Web应用程序都需要在各自的web.xml创建,这在web应用程序以WAR的形式存在时尤为有用。它通常可以包含三个子元素:
(10).WatchedResource WatchedResource可以用于Context中监视指定的webapp程序文件的改变,并且能够在监视到文件内容发生改变时重新装载此文件。 (11).Listener Listener用于创建和配置LifecycleListener对象,而LifecycleListener通常被开发人员用来创建和删除容器。 (12).Loader Java的动态装载功能是其语言功能强大表现之一,Servlet容器使用此功能在运行时动态装载servlet和它们所依赖的类。Loader可以用于Context中控制java类的加载。 (13).Manager Manger对象用于实现HTTP会话管理的功能,Tomcat中有5种Manger的实现: 1) StandardManager Tomcat的默认会话管理器,用于非集群环境中对单个处于运行状态的Tomcat实例会话进行管理。当Tomcat关闭时,这些会话相关的数据会被写入磁盘上的一个名叫SESSION.ser的文件,并在Tomcat下次启动时读取此文件。 2) PersistentManager 当一个会话长时间处于空闲状态时会被写入到swap会话对象,这对于内存资源比较吃紧的应用环境来说比较有用。 3)DeltaManager 用于Tomcat集群的会话管理器,它通过将改变了会话数据同步给集群中的其它节点实现会话复制。这种实现会将所有会话的改变同步给集群中的每一个节点,也是在集群环境中用得最多的一种实现方式。 4) BackupManager 用于Tomcat集群的会话管理器,与DeltaManager不同的是,某节点会话的改变只会同步给集群中的另一个而非所有节点。 5)SimpleTcpReplicationManager Tomcat4时用到的版本,过于老旧了。 (14).Stores PersistentManager必须包含一个Store元素以指定将会话数据存储至何处。这通常有两种实现方式:FileStore和JDBCStore。 (15).Resources 经常用于实现在Context中指定需要装载的但不在Tomcat本地磁盘上的应用资源,如Java类,HTML页面,JSP文件等。 (16).Cluster 专用于配置Tomcat集群的元素,可用于Engine和Host容器中。在用于Engine容器中时,Engine中的所有Host均支持集群功能。在Cluster元素中,需要直接定义一个Manager元素,这个Manager元素有一个其值为org.apache.catalina.ha.session.DeltaManager或org.apache.catalina.ha.session.BackupManager的className属性。同时,Cluster中还需要分别定义一个Channel和ClusterListener元素。
3.web.xml web.xml基于Java Servlet规范,可被用于每一个Java servlet容器,通常有两个存放位置,$CATALINA_BASE/conf和每个Web应用程序(通常是WEB-INF/web.xml)。Tomcat在deploy一个应用程序时(包括重启或重新载入),它首先读取conf/web.xml,而后读取WEB-INF/web.xml。 好了,到这里Tomcat服务器的安装与配置以及各组件详解就说到这里了,希望大家有所收获^_^…… 在前面的两篇博客中我们主要讲解了,Tomcat相关的理论知识与相关组件的讲解,从下一篇博客开始,我们将讲解Tomcat的相关操作,包括Nginx结合Tomcat、Apache结合Tomcat、Tomcat集群讲解等。 本文出自 “Share your knowledge …” 博客,请务必保留此出处http://freeloda.blog.51cto.com/2033581/1299644 |
|