tomcat 介绍

介绍

Tomcat的服务器是一个免费的开放源代码的网络应用服务器,轻量级属于应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选.Tomcat是阿帕奇软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。

 

优点

 网页内存应用溢出侦测状语从句:预防
增强了管理程序服务器状语从句:管理程序的安全性
一般CSRF保护
请立即获取iTunes网络中应用的外部内容的直接引用
内存使用优化
更大的IO容量
重构聚类
性能优化状语从句:减少垃圾回收动作
重构程序部署,通过一个可选的独立部署程序,允许在将一个网页放进应用产品前验证状语从句:编译期它
基于JMX服务器的全面监视及网络管理程序
提高标签库的支撑能力,包括的改进池数据标签和插件
改进平台个人文库个人文库集成性,包括的的Windows和Unix的的
基于JMX的嵌入
增强的安全管理支撑
集成会话集群
文档扩充

 

配置


启动内存参数的配置
tomcat / bin / catalina.bat如果是linux就是catalina.sh
在rem的后面增加如下参数
集JAVA_OPTS = -Xms256m -Xmx256m -XX:MaxPermSize = 64m
修改Tomcat的JDK目录
打开tomcat / bin / catalina .bat
在最后一个rem后面增加
设置JAVA_HOME = C:\ Program Files \ Java \ jdk1.8.0
增加虚拟目录
/tomcat/conf/server.xml
第一行是以前默认存在的,第二行是新增的
< Context path =“”docBase =“ROOT”debug =“0”reloadable =“true”> </ Context>
<Context path =“/ jsp / a”reloadable =“true”docBase =“E:\ workplace \ zhege \ WebContent“/>
使用默认配置的tomcat,另外虚拟目录也可这设置:
<Context path =”/ test“docBase =”webContent“reloadable =”true“/>
因为默认情况下,tomcat启动过程中配置虚拟目录的时候会从web应用目录下查找web内容应用。
这样配置好了,即使以后从一台服务器移植到另一台服务器,不做任何修改也能运行起来。
GET方式URL问题乱码解决
打开的Tomcat / CONF / server.xml中
查找下面这部分,在最后增加一段代码就可以了。
<连接器端口=“80” maxHttpHeaderSize =“8192”
.......... .......
URIEncoding =“UTF-8”useBodyEncodingForURI =“true”
...............
/>
其中的UTF-8请根据你的需要自己修改,比如GBK
虚拟主机配置文件
tomcat / conf / server.xml
<! - 默认的
主机 - > <主机名=“localhost”appBase =“webapps”
unpackWARs =“true”autoDeploy =“true”
xmlValidation =“false”xmlNamespaceAware =“假”>
<上下文路径=‘’的docBase =‘ROOT’调试=‘0’重新加载=‘真’> </语境>
...
</主机>
<! -的英文以下的新增虚拟
主机- > <主机
name =“ ”appBase =“webapps” unpackWARs =“true”autoDeploy =“true”
java2000.net“debug =”0“reloadable =”true“> </ Context> </ Host>



server.xm介绍
 

整体结构

<Server>
      <Service>
         <Connector />
         <Connector />
         <Engine>
            <Host>
                 <Context /> 
             </Host>
         </Engine>
     </Service>
 </Server>

元素分类

1顶层元素:<服务器>和<服务>
<服务器>元素是整个配置文件的根元素,<服务>元素则代表一个引擎元素以及一组与之相连的连接器元素。

2连接器:<连接器>
<连接器>代表了外部客户端发送请求到特定服务的接口;同时也是外部客户端从特定服务接收响应的接口。

3容器:<发动机> <主机> <上下文>
容器的功能是处理连接器接收进来的请求,并产生相应的响应.Engine,主机和上下文都是容器,但它们不是平行的关系,而是父子关系:发动机包含主机,主机包含上下文。一个引擎组件可以处理服务中的所有请求,一个主机组件可以处理发向一个特定虚拟主机的所有请求,一个上下文组件可以处理一个特定的Web应用的所有请求。

4内嵌组件:可以内嵌到容器中的组件实际上,服务器,服务,连接器,发动机,主机和上下文是最重要的最核心的Tomcat的组件,其他组件都可以归为内嵌组件。

Connector

连接器的主要功能,是接收连接请求,创建请求和响应对象用于和请求端交换数据;然后分配线程让引擎来处理这个请求,并把产生的对象传给引擎请求和响应

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

通过配置第1个连接器,客户端可以通过8080端口号使用HTTP协议访问的Tomcat。其中,协议属性规定了请求的协议,端口规定了请求的端口号,redirectPort表示当强制要求的https而请求是HTTP时,重定向至端口号为8443的连接器,connectionTimeout表示连接的超时时间

通过配置第2个连接器,客户端可以通过8009端口号使用AJP协议访问Tomcat.AJP协议负责和其他的HTTP服务器(如Apache)的建立连接;在把Tomcat的与其他HTTP服务器集成时,就需要用到这个连接器之所以使用的Tomcat和其他服务器集成,是因为Tomcat的可以用作的Servlet / JSP容器,但是对静态资源的处理速度较慢,不如阿帕奇和IIS等HTTP服务器;因此常常将Tomcat的与阿帕奇等集成,前者作的Servlet容器,后者处理静态资源,而AJP协议便负责的Tomcat和Apache的的连接。

Engine

发动机组件在服务组件中有且只有一个;发动机是服务组件中的请求处理组件.Engine组件从一个或多个连接器中接收请求并处理,并将完成的响应返回给连接器,最终传递给客户端。

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

命名属性用于日志和错误信息,在整个服务器中应该唯一.defaultHost属性指定了默认的主机名称,当发往本机的请求指定的主机名称不存在时,一律使用defaultHost指定的主机进行处理;因此,defaultHost的值,必须与发动机中的一个主机组件的名称属性值匹配

Host的配置  

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

name属性指定虚拟主机的主机名,
unpackWARs指定了是否将代表Web应用的WAR文件解压;如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。
的自动部署和的appBase属性,与主机内的Web应用的自动部署有关;此外,本例中没有出现的xmlBase和deployOnStartup属性,也与网络应用的自动部署有关;

Context的作用

上下文元素代表在特定虚拟主机上运行的一个网络应用。在后文中,提到上下文,应用或网络应用,它们指代的都是网页应用。每个网络应用基于WAR文件,或WAR文件解压后对应的目录,上下文是主机的子容器,每个主机中可以定义任意多的上下文元素


网络应用自动部署

检查的Web应用更新

一个网络应用可能包括以下文件:XML配置文件,WAR包,以及一个应用目录(该目录包含的Web应用的文件结构);其中XML配置文件位于xmlBase指定的目录,WAR包和应用目录位于的appBase指定的目录。

Tomcat的按照如下的顺序进行扫描,来检查应用更新:

A,扫描虚拟主机指定的xmlBase下的XML配置文件

B,扫描虚拟主机指定的的appBase下的WAR文件

C,扫描虚拟主机指定的的appBase下的应用目录

自动部署时,xmlBase下的XML配置文件app1.xml的例子
 <上下文docBase =“D:\ LSJ \ app1.war”reloadable =“true”/>

元素静态部署Web应用
<Context path =“/”docBase =“D:\ Program Files \ app1.war”reloadable =“true”/>

Listener

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

监听器(即监听器)定义的组件,可以在特定事件发生时执行特定的操作;被监听的事件通常是Tomcat的的启动和停止。


监听器需要配置的最重要的属性是类名,该属性规定了监听器的具体实现类,该类必须实现了org.apache.catalina.LifecycleListener接口。

下面依次介绍例子中配置的监听器:

VersionLoggerListener:当Tomcat的启动时,该监听器记录的Tomcat,爪哇和操作系统的信息该监听器必须是配置的第一个监听器。

AprLifecycleListener:Tomcat的启动时,检查APR库,如果存在则加载.APR,即Apache可移植运行时,是Apache的可移植运行库,可以实现高可扩展性,高性能,以及与本地服务器技术更好的集成。

JasperListener:在网络应用启动之前初始化碧玉,碧玉是JSP引擎,把JVM不认识的JSP文件解析成的java文件,然后编译成类文件供JVM使用。

JreMemoryLeakPreventionListener:与类加载器导致的内存泄露有关。

GlobalResourcesLifecycleListener:通过该监听器,初始化<GlobalNamingResources>内部标签中定义的全局JNDI资源;如果没有该监听器,任何全局资源都不能使用<GlobalNamingResources>内部

ThreadLocalLeakPreventionListener:。当网络应用因本地线程导致的内存泄露而要停止时,该监听器会触发线程池中线程的更新当线程执行完任务被收回线程池时,活跃线程会一个一个的更新只有当网络应用(即上下文元素)的renewThreadsWhenStoppingContext属性设置为真时,该监听器才有效。


GlobalNamingResources与Realm


第一部分的例子中,发动机组件下定义了境界组件:

     

  <Realm className="org.apache.catalina.realm.LockOutRealm">
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                resourceName="UserDatabase"/>
       </Realm>


境界,可以把它理解成“域”;境界提供了一种用户密码与网络应用的映射关系,从而达到角色安全管理的作用在本例中,域的配置使用的名称为UserDatabase的资源实现而该资源在服务器元素中使用GlobalNamingResources配置:

 

   <GlobalNamingResources>
     <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>
 


GlobalNamingResources元素定义了全局资源,通过配置可以看出,该配置是通过读取$ TOMCAT_HOME / conf / tomcat-users.xml实现的

Valve

 <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" />

单词阀的意思是“阀门”,在Tomcat的中代表了请求处理流水线上的一个组件;阀门可以与Tomcat的的容器(发动机,主机或上下文)关联。

1.className:规定了阀的类型,是最重要的属性;本例中,通过该属性规定了这是一个AccessLogValve。

2.directory:指定日志存储的位置,本例中,日志存储在$ TOMCAT_HOME /日志目录下。

3.prefix:指定了日志文件的前缀。

4.suffix:指定了日志文件的后缀通过目录,前缀和后缀的配置,在$ TOMCAT_HOME /日志目录下,可以看到如下所示的日志文件。

localhost_access_log.2018-08-11.txt
localhost_access_log.2018-08-12.txt
localhost_access_log.2018-08-13.txt


5.pattern:指定记录日志的格式,本例中各项的含义如下:

%h:远程主机名或IP地址;如果有nginx等反向代理服务器进行请求分发,该主机名/IP地址代表的是nginx,否则代表的是客户端。后面远程的含义与之类似,不再解释。
%l:远程逻辑用户名,一律是”-”,可以忽略。
%u:授权的远程用户名,如果没有,则是”-”。
%t:访问的时间。
%r:请求的第一行,即请求方法(get/post等)、uri、及协议。
%s:响应状态,200,404等等。
%b:响应的数据量,不包括请求头,如果为0,则是””-。

10.2.1.22 -- [12/Jul/2018:00:00:00:00 +0800] "GET /mesg/gethello HTTP/1.0" 200 497
nginx的ip 访问时间    请求方法url    协议    响应状态   响应数据量

pattern的配置中,除了上述各项,还有一个非常常用的选项是%D,含义是请求处理的时间(单位是毫秒),对于统计分析请求的处理速度帮助很大。


Host的配置

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

name属性指定虚拟主机的主机名,一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配;一般情况下,主机名需要是在DNS服务器中注册的网络名,但是Engine指定的defaultHost不需要
unpackWARs true 自动解压war
Host的autoDeploy和appBase属性,与Host内Web应用的自动部署有关;此外,本例中没有出现的xmlBase和deployOnStartup属性,也与Web应用的自动部署有关

 


 




 

限制主机访问


           有时,可能想限制对Tomcat web应用的访问,比如,希望只有指定的主机或IP地址可以访问应用。这样一来,就只有那些指定的客户端可以访问服务的内容了。为了实现这种效果,Tomcat提供了两个参数供你配置:RemoteHostValve和RemoteAddrValve。
       通过配置这两个参数,可以让你过滤来自请求的主机或IP地址,并允许或拒绝哪些主机/ IP。与之类似的,在Apache的httpd文件里有对每个目录的允许/拒绝指定。
         可以把管理Web应用程序设置成只允许本地访问,设置如下:
<Context path =“/ path / to / secret_files”...>
<Valve className =“ org.apache.catalina.valves.RemoteAddrValve“
allow =”127.0.0.1“deny =”“/>
</ Context>
如果没有给出允许主机的指定,那么与拒绝主机匹配的主机就会被拒绝,除此之外的都是允许的。

 

目录结构


/ bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/ conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/ doc:存放Tomcat文档
/服务器:包含三个子目录:classes,lib和webapps
/ server / lib:存放Tomcat服务器所需的各种JAR文件
/ server / webapps:存放Tomcat自带的两个WEB应用管理应用和管理应用
/ common / lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
/ shared / lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
/ logs:存放Tomcat执行时的日志文件
/ src:存放Tomcat的源代码
/ webapps中:Tomcat的主要网站发布目录,默认情况下把网络应用文件放于此目录
/工作:存放JSP编译后产生的类文件

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值