Tomcat安装和配置以及多实例部署(附脚本)

Tomcat服务器简介

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

概括:
1)免费的、开放源代码的Web应用服务器
2)Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
3)由Apache、Sun和一些公司及个人共同开发而成
4)深受Java爱好者的喜爱,并得到部分软件开发商的认可
5)目前比较流行的Web应用服务器
在这里插入图片描述
Apache和Tomcat的区别在于

  • Apache是一个普通的HTTP服务器,主要用于静态网页的访问和处理。
  • Tomcat是一个更强大的应用服务器,主要用于动态网页的访问和处理。
  • Apache不能解释java程序(jsp,serverlet)。
  • Tomcat支持HTML、JSP、ASP、PHP、CGI等。
  • 在独立运行模式下,Tomcat的功能与Apache等效,支持JSP。

核心组件

1.Java Servlet
运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。与CGI(公共网关接口)功能相类似。

2.JSP全称Java Server Pages
一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。 JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

3.Tomcat三大核心组件
Tomcat 由一系列的组件构成,其中核心的组件有三个

Web容器:完成Web服务器的功能。
Servlet 容器:名字为catalina, 用于处理Servlet代码。
JSP容器:用于将JSP动态网页翻译成Servlet代码。

Tomcat 各组件及关系

  • Server 和 Service

  • Connector 连接器

    • HTTP 1.1
    • SSL https
    • AJP( Apache JServ Protocol) apache 私有协议,用于apache反向代理Tomcat
  • Container

    • Engine 引擎 catalina
    • Host 虚拟机 基于域名 分发请求
    • Context 隔离各个WEB应用 每个Context的 ClassLoader都是独立
  • Component

    • Manager (管理器)
    • logger (日志管理)
    • loader (载入器)
    • pipeline (管道)
    • valve (管道中的阀)
      在这里插入图片描述

工作流程

  1. 用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
  2. Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
  3. 请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
  4. 执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。
    在这里插入图片描述

Tomcat server.xml 配置详解

server

root元素:server 的顶级配置 主要属性: port:执行关闭命令的端口号 shutdown:关闭命令

演示shutdown的用法 #基于telent 执行SHUTDOWN 命令即可关闭(必须大写) telnet 127.0.0.1 8005 SHUTDOWN

service

服务:将多个connector 与一个Engine组合成一个服务,可以配置多个服务。

Connector

连接器:用于接收 指定协议下的连接 并指定给唯一的Engine 进行处理。 主要属性:

protocol 监听的协议,默认是http/1.1
port 指定服务器端要创建的端口号
minSpareThreads服务器启动时创建的处理请求的线程数
maxThreads 最大可以创建的处理请求的线程数
enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout指定超时的时间数(以毫秒为单位)
SSLEnabled 是否开启 sll 验证,在Https 访问时需要开启。生成证书: keytool -genkey -v -alias testKey -keyalg RSA -validity 3650
-keystore D:\test.keystore
[ ] 演示配置多个Connector

<Connector port="8860" protocol="org.apache.coyote.http11.Http11NioProtocol"
                connectionTimeout="20000"
                redirectPort="8862"
                URIEncoding="UTF-8"
                useBodyEncodingForURI="true"
                compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,application/x-json,application/json,application/x-javascript"
                maxThreads="1024" minSpareThreads="200"
                acceptCount="800"
                maxConnections="10000"
                enableLookups="false"
        />

Engine

引擎:用于处理连接的执行器,默认的引擎是catalina。一个service 中只能配置一个Engine。 主要属性:name 引擎名称 defaultHost 默认host

Host

虚拟机:基于域名匹配至指定虚拟机。类似于nginx 当中的server,默认的虚拟机是localhost.

 <Host 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值