Chinaunix首页 | 论坛 | 博客
  • 博客访问: 609260
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2016-05-03 20:56:27

一.安装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配置文件

其大致层次可为:

代码:

  1. <Server >
  2.   <Listener />
  3.   <GlobalNamingResources>
  4.     <Resource />
  5.   <GlobalNamingResources>
  6.   <Service >
  7.     <Connector />
  8.     <Executor />
  9.     <Engine >
  10.      <Realm />
  11.      <Host >
  12.        <context />
  13.      </Host>
  14.     </Engine>
  15.   </service>
  16. <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




阅读(1668) | 评论(0) | 转发(0) |
0

上一篇:varnish日志管理

下一篇:tomcat简单配置使用

给主人留下些什么吧!~~