一.安装jdk
[root@localhost ~]# ls | grep jdk
jdk-8u91-linux-x64.rpm
[root@localhost ~]# rpm -ivh jdk-8u91-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk1.8.0_91 ########################################### [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
jfxrt.jar...
jdk默认安装在/usr/java/下:
[root@localhost java]# ll
lrwxrwxrwx 1 root root 16 Apr 21 03:55 default -> /usr/java/latest
drwxr-xr-x 9 root root 4096 Apr 21 03:55 jdk1.8.0_91
lrwxrwxrwx 1 root root 21 Apr 21 03:55 latest -> /usr/java/jdk1.8.0_91
其中:
default目录为默认的jdk路径;
latest目录为安装的最新的jdk路径;
导入JAVA环境变量:
[root@localhost java]# cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost java]# . /etc/profile.d/jdk.sh
二.安装tomcat
1.安装
这里使用的是官网上下载的已编译好的包,所以解压后可直接使用;
[root@localhost ~]# tar xf apache-tomcat-7.0.69.tar.gz -C /etc/
[root@localhost ~]# ln -sv /etc/apache-tomcat-7.0.69 /etc/tomcat
`/etc/tomcat' -> `/etc/apache-tomcat-7.0.69'
2.文件说明
[root@localhost tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
其中:
bin目录下主要是.bat和.sh结尾的文件。bat文件是windows下的批处理文件,sh文件是类Unix下可直接运行的脚本;
conf目录下是tomcat的配置文件,文件格式是XML;
lib目录存放tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包;
logs目录时日志存放位置;
temp目录存放临时文件;
wabapps目录是默认的站点根目录,可以更改;
work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果;
3.导入tomcat环境变量
[root@localhost ~]# cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/etc/tomcat #这里是tomcat安装的目录
export PATH=$CATALINA_HOME/bin:$PATH
[root@localhost ~]# . /etc/profile.d/tomcat.sh
[root@localhost ~]# catalina.sh version
Using CATALINA_BASE: /etc/tomcat
Using CATALINA_HOME: /etc/tomcat
Using CATALINA_TMPDIR: /etc/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_91
Using CLASSPATH: /etc/tomcat/bin/bootstrap.jar:/etc/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.69
Server built: Apr 11 2016 07:57:09 UTC
Server number: 7.0.69.0
OS Name: Linux
OS Version: 2.6.32-573.el6.x86_64
Architecture: amd64
JVM Version: 1.8.0_91-b14
JVM Vendor: Oracle Corporation
4.启动tomcat
[root@localhost ~]# catalina.sh start
Using CATALINA_BASE: /etc/tomcat
Using CATALINA_HOME: /etc/tomcat
Using CATALINA_TMPDIR: /etc/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_91
Using CLASSPATH: /etc/tomcat/bin/bootstrap.jar:/etc/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -untlp | grep java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 29752/java
tcp 0 0 :::8009 :::* LISTEN 29752/java
tcp 0 0 :::8080 :::* LISTEN 29752/java
测试:
这里可以看到官方的帮助文档!!!
三.配置文件介绍
1.server.xml配置文件
其大致层次可为:
-
<Server >
-
<Listener />
-
<GlobalNamingResources>
-
<Resource />
-
<GlobalNamingResources>
-
<Service >
-
<Connector />
-
<Executor />
-
<Engine >
-
<Realm />
-
<Host >
-
<context />
-
</Host>
-
</Engine>
-
</service>
-
<server>
其配置结构如下:
其组成成分可分为:
Top Level Elements(顶级组件):Server和Service
Executors(执行器组件):Executors
Connectors(连接器组件):HTTP和AJP
Containers(容器类):Context,Engine,Host和Cluster
Nested Components(被嵌套组件):Global Resources,JarScanner,Listeners,Loader,Manager,Realm,Resources,SessionIdGenerator和Valve
其中:
Server段:顶层元素,整个配置文件的根元素,表示整个Servlet容器或者Tomcat服务实例,嵌套多个Listener,一个GlobalNamingResources和一个Service。
可用属性:
className:实现org.apache.catalina.Server接口的类,如果没有指定,默认为org.apache.catalina.core.StandardServer;
address:接收关闭tomcat命令的ip地址,如果没有指定,默认为localhost;
port:指定一个负责监听关闭tomcat请求的端口(如果设置为-1,则不能通过命令行关闭tomcat);
shutdown:指定向端口发送的命令字符串;
Service段:一个Service组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给Service命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件但通常情下只为一个service指派一个server;
可用属性:
className:实现org.apache.catalina.Server 接口的类,如果没有指定默认为org.apache.catalina.core.StandardServer;
name:指定service的名字,如果使用标准Catalina组件,那么它会包含进日志中。每一个Service的名称和一个特定唯一的Server相关联;
Listener组:监听器,用来管理Tomcat生命周期和全局资源;没有元素被嵌套入Listener中且其只能嵌套在Server中;
GlobalNamingResources:配置系统的JNDI(Java Naming and Directory Interface);应用于整个服务器的JNDI映射,此可以避免每个Web应用程序都需要在各自的web.xml创建,这在web应用程序以WAR的形式存在时尤为有用。它通常可以包含三个子元素:
Environment
Resource
ResourceEnvRef
Connector段:连接器,在一个指定的接口上侦听接收客户请求,并将获得的请求交给
进行处理,然后把处理结果返回给客户。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。
可用属性:
port:指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求;
address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;
maxThreads:支持的最大并发连接数,默认为200;
protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;
redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;
enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true;
acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中
Engine:通常是指处理请求的Servlet引擎组件,即CatalinaServlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。处理同一个中的所有接收的客户请求;具体来说,获得一个交给的请求后,把这个请求匹配到某个上进行处理,如果没有找到合适的来进行处理,则把这个请求交给一个默认虚拟主机处理。注意只能有一个Engine嵌套入中;
可用属性:
defaultHost:指定处理客户的默认主机名,在中的子元素中必须定义这一主机;
name:定义Engine的名字;
Host组:每个元素定义了一个虚拟主机,处理一个特定主机的请求,一般来说,每个虚拟主机都可以配置一个到多个Web应用,每个Web应用对应一个,获得的请求最终匹配到某个上,由它进行处理。一个Engine元素可以包含多个元素.
可用属性:
appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于的相对目录.如果没有此项,默认为
/webapps. 它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理;
autoDeploy:如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个
WEB应用
name:指定虚拟主机名;
Context组:Web应用组,每个元素代表了运行在虚拟主机上的单个Web应用,每个Web应用由一个或多个Servlet组成,当获得一个请求后,将映射/conf/web.xml文件中的元素,匹配一个Servlet类进行处理并返回。当一个Web应用被初始化的时候,它将用自己的ClassLoader对象载入web.xml中定义的每个Servlet类。
可用属性:
docBase:web应用程序的Document Base文件或WAR文件路径;
path:web应用程序的context路径
其他组件:
Value(阀门):用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(requestdumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。
Logger(日志记录器):用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。
Realm(领域):用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。
Loader:Java的动态装载功能是其语言功能强大表现之一,Servlet容器使用此功能在运行时动态装载servlet和它们所依赖的类。Loader可以用于Context中控制java类的加载。
Manager:Manger对象用于实现HTTP会话管理的功能;
四.Tomcat的各配置文件说明
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的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat6在启动时会事先读取此文件的相关设置;
logging.properties:Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;
context.xml:所有host的默认配置信息;
五.处理流程(摘自网上资料,仅供参考)
Tomcat的Server处理一个http请求的过程如下:
假设来自客户的请求为:
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得;
2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应;
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host;
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机);
5) localhost的Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context;
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理);
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet;
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类;
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法;
10)Context把执行完了之后的HttpServletResponse对象返回给Host;
11)Host把HttpServletResponse对象返回给Engine;
12)Engine把HttpServletResponse对象返回给Connector;
13)Connector把HttpServletResponse对象返回给客户browser;
官方文档:
参考文章:
http://www.blogjava.net/baoyaer/articles/107278.html
http://blog.sina.com.cn/s/blog_5f54f0be0100etm7.html