Tomcat 安装配置详解

常见 JavaWeb 服务器

  1. WebLogic : BEA 公司的产品 ; WebSphereAS : 是IBM公司的产品 ; JBossAS : 红帽公司的产品

  2. Tomcat服务器 : Sun 公司在推出的小型 Servlet/JSP 调试工具的基础上发展起来的一个优秀的 Servlet 容器 , Tomcat 本身完全用 Java 语言编写 , 所以 Tomcat 的运行需要 Java 的支持 , 所以要先安装 JDK , 才能运行 ; 目前是 Apache 开源软件组织的一个软件项目 , 它的官网 http://tomcat.apache.org 得到了广大开源代码志愿者的大力支持 , 且可以和目前大部分的主流 Web 服务器 (IIS , Apache 服务器) 一起工作 , 它运行稳定 , 可靠且高效 , 已成为目前开发企业 JavaWeb 应用的最佳 Servlet 容器选择之一 , 目前最新版本 8.0


Tomcat 的目录结构及常用配置

  1. Tomcat 的目录层次结构

     bin : 存放启动和关闭 Tomcat 的脚本文件
     conf : 存放 Tomcat 服务器的各种配置文件
     lib : 存放 Tomcat 服务器支撑的 jar 包
     logs : 存放 Tomcat 的日志文件
     temp : 存放 Tomcat 运行时产生的临时文件
     webapps : web 应用虽在目录 , 即供外界访问的 web 资源的存放目录
     work : Tomcat 的工作目录
    
  2. JavaWeb 应用的组成结构

    webapp --------------------------- Web 应用所在目录
    | ---- html , jsp , css , js等文件 , 根目录下的文件外界可以直接访问
    | ---- WEB-INF 目录
      | --------- classes 目录 (Java 类)
      | --------- lib目录(Java 类运行所需的 jar 包)
      | --------- web.xml (web 应用的配置文件)
    WEB-INF 这个目录下的文件外界无法直接访问 , 由 Web 服务器负责调用
    
  3. Tomcat 的组成结构

    Tomcat 本身由一系列可配置的组件构成 , 其中核心组件是 Servlet 容器组件 , 它是所有其他 Tomcat 组件的顶层容器 ; 每个组件都可以在 Tomcat 安装目录 /conf/server.xml 文件中进行配置 , 每个 Tomcat 组件在 server.xml 文件中对应一种配置元素 ; 下面用 XML 的形式展示各种 Tomcat 组件之间的关系

     <Server> 代表整个 Servlet 容器组件 , 是最顶层元素 , 可以包含一个或多个 <Service> 元素
         <Service> 包含一个 <Engine> 元素以及一个或多个 <Connector> 元素 , 这些 <Connector> 共享一个 <Engine>
           <Connector/> 代表和客户程序实际交互的组件 , 负责接收客户请求 , 以及向客户返回响应
           <Engine> 每个 <Service> 元素只能包含一个 <Engine> 元素 , 它处理在同一个 <Service> 中所有 <Connector> 接收到的客户请求
                <Host> 在一个 <Engine> 中可以包含多个 <Host> ,它代表一个虚拟主机 (即一个服务器程序可以部署在多个有不同 IP 的服务器主机上) , 它可以包含一个或多个应用
                    <Context> 使用最频繁的元素 , 代表了运行在虚拟主机上的单个 Web 应用
                </Host>
           </Engine>
        </Service>
     </Server>
    
  4. Tomcat 体系结构
    Tomcat

  5. 虚拟目录的映射方式

    从 Tomcat6 开始 , Tomcat 支持自动映射 , 即 Tomcat 服务器会自动管理 webapps 目录下的所有 Web 应用 , 并把它映射成虚拟目录 , 换句话说 , 只需把 Web 应用放在 webapps 目录下 , 不需要配置 Context , 外界可以直接访问 (如果放置在 webapps 目录下又配置了 Context , Tomcat 会实例化两次项目)
    但是如果你不想讲项目放在 webapps 下 , 而是放在其他地方 , 还是需要配置 Context , 比如我的 Tomcat 在 C 盘 , 我的项目在 D 盘 , 则需要在 Host 下增加如下虚拟目录映射语句
    <Contextpath="/myapp"docBase=“D:/work/myapp”>

  6. Context 元素配置

    Tomcat 在加载一个 Web 应用时 , 会一次按照以下五种方式查找 Web 应用中的 元素 , 优先级一次降低 , 直到找到为

    1. 到 Tomcat 安装目录 /conf/Context.xml 文件中查找 元素
    2. 到 Tomcat 安装目录 /conf/[enginename]/[hostname]/context.xml.default 文件中查找 元素
      [enginename]:表示的name属性
      [hostname]:表示d的那么属性
    3. 到 Tomcat 安装目录 /conf/[enginename]/[hostname]/[contextpath].xml 文件中查找 元素
      [contextpath]:表示单个Web 应用的URL入口
    4. 到 Web 应用的 META-INF/context.xml 文件中查找 元素
    5. 到 Tomcat 安装目录 /conf/server.xml 文件中查找 元素 , 只适用于单个Web 应用
  7. Context 元素的属性

    path : 指定访问该 Web 应用的 URL 入口
    docBase : 指定 Web 应用的文件路径 , 可以写绝对路径 , 也可以写相对于 appBase 属性的相对路径
    className : 指定实现 Context 组件的 Java 类的名字 , 这个类必须实现 org.apache.catalina.Contex 接口 , 该属性默认值为org.apache.catalina.core.StandardContext (不建议大家改动)
    reloadable : 如果为 true , Tomcat 服务器在运行状态下回监视在 WEB-INF/classesWEB-INF/lib 目录下的 class 文件的改动 , 以及监视 Web 应用的 WEB-INF/web.xml 文件的改动 , 如果检测到有更新 , 服务器会自动更新加载 Web 应用 ; 其默认值为false ; 在开发和调试阶段 , 将其改为true , 一般像 Eclipse 等开发环境都会默认改为 true ; 在正式发布阶段 , 应将其该为false , 可以降低 Tomcat 的运行负荷 , 提高 Tomcat 的运行性能

    在一般情况下 , 元素都会使用默认的标准 Context 组件 , 即 className 属性采用默认值org.apache.catalina.core.StandardContext , 它除了拥有上面介绍到的属性外 , 还有自身专有的属性

    cachingAllowed : 是否允许启用静态资源 (HTML , 图片 , 声音等) 的缓存 ; 默认值为 true
    cacheMaxSize : 设置静态资源缓存的最大值 , 单位为 K
    workDir : 指定 Web 应用的工作目录
    uppackWAR : 如果为 true , 会把 war 文件展开为开放目录后再运行 ; 为false , 直接运行 war 文件 ; 默认值为 true

  8. web.xml 文件

    该文件必须放在 /WEB-INF 目录下 , 但是从 7.0 版本开始 , Tomcat 可以不使用 web.xml 文件 , 而是使用注解方式


Tomcat 的优化

  1. 内存使用配置

    Tomcat 是依赖于 JVM 的 , 所以 Tomcat 的使用内存配置实质上是 JVM 的内存配置
    在 /bin 目录下的 catalina.bat 可以直接通过 Tomcat 设置 JVM 内存参数
    Windows 下打开 catalina.bat 文件 , 在大概中间的位置 , 找到
    set "Java_OPTS=%Java_OPT% -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -DJava.awt.headless=true"
    通过内存设置充分利用服务器内存
    -server : 模式启动应用慢 , 但是极大程度提高运行性能
    -Xms2048m -Xmx2048m : 设置的是堆内存
    Java8 开始 , PermSize 被 MetaspaceSize 代替 , MetaspaceSize 共享 heap , 不会再有 Java.lang.OutOfMemoryError : PermGen space , 可以不设置
    Headless=true : 适用于Linux系统 , 与图形操作有关 , 如生成验证码含义是当前的是无显示器的服务器 , 应用中如果获取系统显示有关的参数会抛出异常 , Windows系统可不用设置
    可通过 jmap -heap process_id 查看设置是否成功

  2. 最大连接数配置 (并发能力)

    /conf/server.xml 里进行配置
    在 属性中
    将 protocol 属性改为 org.apache.coyote.http11.Http11NioProtocol , NIO 模型的效率更高
    加入
    maxThreads=“500” // 当前可以同时处理的最大用户访问数
    minSpareThreads=“100” // 最小空闲线程连接数 , 用于优化线程池
    maxSpareThreads=“200”
    acceptCount=“200” // 当所有的线程以分配 , 仍然允许连接进来 , 但是出于等待状态的用户数 ; 等待线程数+工作线程数=总的可最大连接数 , 如果超过此数 , 新的连接将不会被接受 , 就会产生一个 http 错误
    enableLookups=“false” // 是否允许 DNS 反查 , 如果为 true , request.getRemoteHost 会执行 DNS 查找 , 反向解析 ip 对应域名或主机名 , 当没有这样需要的时候 , 可以将这个功能关闭 , 在一定程度上提高了 Tomcat 服务器的性能

作者 Github : tojohnonly , 博客 : EnskDeCode

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值