一文读懂Tomcat server.xml的主配置文件

Posted wecloud1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文读懂Tomcat server.xml的主配置文件相关的知识,希望对你有一定的参考价值。

这个文件位于 tomcat 6 安装目录之下的 conf 目录之内,实际内容位于 /etc/tomcat6/server.xml。

正如该文件的扩展名所示,这是一个 xml 格式的文件,打开之后将会看到如下的结构:

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

    <Service name=”Catalina”>

    <Executor …… />

    <Connector …… />

    <Connector …… />

    <Engine name=”Catalina” … >

    <Host name=”蔚可云.cn” … >

    <Context … />

    </Host>

    </Engine>

    </Service>

    </Server>

 

即一个由 Server->Service->Engine->Host->Context 组成的四层结构,从里层向外层分别是:

Context: 即 Web 应用程序,一个 Context 即对于一个 Web 应用程序。

Host:即虚拟主机,比如 www.蔚可云.cn 对应一个虚拟主机,api.蔚可云.cn 对于另一个虚拟主机。一个 Host 用于定义一个虚拟主机。(所谓的”一个虚拟主机”可简单理解为”一个网站”)

Engine:一组虚拟主机的集合。比如www.蔚可云.cn 和 api.蔚可云.cn 可以组成一组虚拟主机集合。

Service:一组 Engine 的集合,包括线程池 Executor 和连接器 Connector 的定义。

CONNECTOR 的配置

一个 Connector 即一个对外界开放的端口,简单理解就是大部分网络服务程序都会遇到的 IpAddress:Port 的组合,比如 192.168.0.10:8080 就是一个端口,当然在 Connector 里可以定义的内容要丰富得多,即 Connector 这个 XML 节点里可以加上许多属性。下面列举一下常用的:

enableLookups:(default=true) 是否允许反向解析访客的IP地址,当你的应用程序使用 request.getRemoteHost() 时如果只需要IP地址,建议禁用此项,这样能节省反向域名解析的时间。ssl证书申请

maxPostSize:(default=2097152 即2MB) 最大允许 POST 上传的数据大小(单位为:字节),对于一般网站来说,比如有写评论写文章的网站,默认的2MB已经足够,不过如果网站带有图片甚至文件上传功能,则需要根据具体情况来定。

protocol:连接器的类型,tomcat 6 有如下几种选择

org.apache.coyote.http11.Http11Protocol:简写为 “HTTP/1.1″,这是默认的连接器,一个访客网络连接需要一个线程,并发性能比较低。

org.apache.coyote.http11.Http11NioProtocol:NIO连接器,一个由非阻塞的socket工作模式构成的连接器,并发性能良好,纯Java实现。

org.apache.coyote.http11.Http11AprProtocol:APR连接器,所谓 APR 就是网络上最多服务器使用的 Web 服务程序 Apache Http Server 所使用的库,Tomcat 建议在生产环境使用,具体方法下面会介绍。

redirectPort:当用户访问非https的资源而该资源又需要https方式访问时,tomcat会自动重定向到https端口,一般https使用 TCP 443端口,所以一般取值”443″。

SSLEnabled:(default=false),设置当前连接器是否使用安全SSL传输,如果设置为”true”,则应该同时设置下面两个属性: scheme=”https” (default=http) 可以设置为 http 或者 https。 secure=”true” (default=false)。

adress:连接器所绑定的IP地址,当一台服务器存在多个ip地址时可以指定其中的需要绑定的一个,默认不设置该属性的值表示绑定当前服务器的所有ip地址。

compressableMimeType:(default=”text/html,text/xml,text/plain”) 指定需要GZIP压缩的资源的类型。

compression:(default=off) 是否启用GZIP压缩,可以取值 on/off/force,设置为on之后会对 compressableMimeType 属性指定的资源类型启用GZIP压缩。

connectionTimeout:(default=”60000″) 当访客网络连接后,服务器等待第一行Request头出现的时间。单位是毫秒。

executor:指定当前连接器使用的线程池的名称,如果指定,则忽略其他针对线程数量的设置,比如 maxThreads。

maxThreads:(default=200) 最多可创建线程的数量。

port=”80″:绑定端口。

keepAliveTimeout:(default=connectionTimeout),访客完成一次请求后维持网络连接的时间。

一个简单的 Connector 定义如下:

    <Connector port=”80″ protocol=”HTTP/1.1″

    connectionTimeout=”60000″

    redirectPort=”443″ />

EXECUTOR 的配置

Executor 用于定义共享的线程池。默认情况下每个 Connector 都会产生自己的一个线程池,如果你想多个 Connector 共享一个线程池,则可以先定义一个线程池,如:

    <Executor name=”tomcatThreadPool” namePrefix=”catalina-exec-”

    maxThreads=”150″ minSpareThreads=”4″/>

然后修改上述的 Connector 配置,增加 executor 属性,修改后的配置如下:

    <Connector executor=”tomcatThreadPool”

    port=”80″ protocol=”HTTP/1.1″

    connectionTimeout=”60000″

    redirectPort=”443″ />

HOST 的配置

一个 Host 配置即为一个虚拟主机,例如下面是一个简单的 Host 配置:

    <Host name=”蔚可云.cn”  appBase=”webapps”

    unpackWARs=”true” autoDeploy=”true”>

    <Alias>蔚可云.cn</Alias>

    <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”

    prefix=”蔚可云.cn_access_log.” suffix=”.txt” pattern=”common” resolveHosts=”false”/>

    </Host>

Host 配置节点各个属性的作用:

name:设置虚拟主机的域名,比如 蔚可云.cn 表示本机名称,实际应用时应该填写具体域名,比如 www.蔚可云.cn 或者 蔚可云.cn,当然如果该虚拟主机是给内部人员访问的,也可以直接填写服务器的 ip 地址,比如 192.168.1.10。

autoDeploy:是否允许自动部署,默认值是 true,即表示 Tomcat 会自动检测 appBase 目录下面的文件变化从而自动应用到正在运行的 Web 应用程序。

unpackWARs:设置是否自动展开 war 压缩包再运行 Web 应用程序,默认值是 true。

appBase:设置 Web 应用程序组的路径。前面说过一个虚拟主机可以由多个 Web 应用程序构成,所以这里的 appBase 所指向的目录应该是准备用于存放这一组 Web 应用程序的目录,而不是具体某个 Web 应用程序的目录本身(即使该虚拟主机只由一个 Web 应用程序组成)。appBase 属性的值可以是相对于 Tomcat 安装目录的相对路径,也可以是绝对路径,需要注意的是该路径必须是 Tomcat 有权限访问的,通过 Arch Linux 源安装的 Tomcat 是通过 tomcat 用户运行的,因此创建一个新的 appBase 目录之后可以使用 chown 命令更改目录的所有者。

下面举例说明如何创建一个新的虚拟主机 www.蔚可云.cn:

在目录 /var/lib/tomcat6 下面可以看到安装 Tomcat 时默认创建的 webapps 目录,为了方便管理我们即将创建的虚拟主机的文档也在 /var/lib/tomcat6 里创建:

    $ sudo mkdir dog

然后在 dog 目录里面创建目录 ROOT,再在 ROOT 里面创建文件 index.html(内容随便)。

现在将目录的所有者和所有组都更改为 tomcat:

    $ sudo chown -R tomcat:tomcat dog

然后在 server.xml 的 Host 节点下增加如下 Host 节点:

    <Host name=”www.蔚可云.cn”  appBase=”/var/lib/tomcat6/dog”>

    </Host>

重启 Tomcat 服务就可以在浏览器里通过地址 http://www.蔚可云.cn 访问这个新创建的虚拟主机了,当然你必须要先在 /etc/hosts 文件里增加 www.蔚可云.cn 到 127.0.0.1 的解析记录,如下:

127.0.0.1    www.蔚可云.cn

有时一个虚拟主机可能会同时绑定多个域名,比如 www.蔚可云.cn 和 蔚可云.cn,这时可以通过在 Host 配置节点里增加 Alias 实现,比如:

    <Alias>蔚可云.cn</Alias>

另外上面示例当中的 <Valve className=… /> 配置了访客的访问日志的储存位置以及文件名。

ENGINE 的配置

默认的 Engine 节点如下:

    <Engine name=”Catalina” defaultHost=”蔚可云.cn”>

    </Engine>

这个应该不用展开叙述了,其中 defaultHost 用于指定访客在没有相应的虚拟主机时,Tomcat 默认选择的虚拟主机的名称。

以上是关于一文读懂Tomcat server.xml的主配置文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么改tomcat的端口号?

tomcat 80端口 无法访问

TOMCAT配置虚拟目录--<Context>标签

一文读懂配置管理(CM)

详解Tomcat 配置文件server.xml

详解 Tomcat 配置文件 server.xml