web集群--Tomcat安装部署和创建虚拟主机配置(Tomcat处理请求的过程以及优化)理论加实验

前言

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

一:Tomcat安装部署

1.1:Tomcat简介

免费的、开放源代码的Web应用服务器
Apache软件基金会( Apache Software Foundation)Jakarta项目中的一个核心项目
由 Apache、Sun和一些公司及个人共同开发而成
深受Java爱好者的喜爱,并得到部分软件开发商的认可
是目前比较流行的Web应用服务器

1.2:Tomcat核心组件

在这里插入图片描述
catalina是Tomcat以前的名字,后来才改成Tomcat

1.3:Tomcat处理请求的过程

1.3.1:请求过程基本解释

在这里插入图片描述
connector:连接器

一个Connector组件将在某个指定的端口上侦听客户请求,接收浏览器发过来的tcp连接请求,创建一个Request和一个Response对象分别用于和其你去端交换数据,然后会产生一个线程来处理这个请求并把产生的Request和Response对象传给Engine,从Engine中获得响应并返回给客户端。 Tomcat有两个经典的Connector,一个直接侦听来自浏览器的HTTP请求,另外一个侦听来自其他的WebServer的请求。Cotote HTTP/1.1 Connector在端口8080处侦听来自客户浏览器的HTTP请求,Coyote JK2 Connector在端口8009处侦听其他WebServer的Servlet/JSP请求。 Connector 最重要的功能就是接收连接请求然后分配线程让 Container来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。

container:

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet则定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。 Context定义在父容器 Host 中,其中Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

engine:引擎

Engine 容器比较简单,它只定义了一些基本的关联关系 Host 容器

host:虚拟主机

Host 是 Engine 的字容器,一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context,它除了关联子容器外,还有就是保存一个主机应该有的信息

context:JSP前段页面

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个 Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request 来分配的

servlet:处理代码

1.3.2:请求过程详细解释

1.用户在浏览器中输入网址localhost:8080/test/index.jsp,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;

2.Connector把该请求交给它所在的Service的Engine(Container)来处理,并等待Engine的回应;

3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;

4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理);

5.path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL Pattern为*.jsp的Servlet,对应于JspServlet类;

6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等;

7.Context把执行完之后的HttpServletResponse对象返回给Host;

8.Host把HttpServletResponse对象返回给Engine;

9.Engine把HttpServletResponse对象返回Connector;

10.Connector把HttpServletResponse对象返回给客户Browser

1.4 TOMCAT 目录结构

在这里插入图片描述

1.5 常用配置文件参数含义:

 <Connector port=" 8080" protocol=" HTTP/11.1"  //默认8080端口,协议http
connectionTimeout=20000”     超时20秒
redirectPort="8443"        //如果有人访问https, 那么会重定向到8443端口
minSpareThreads="50"    // 最小空闲进程
enableLookups="false”    // 不开启反向查找
disableUploadTimeout="true"   //  上传超时
acceptCount="300"     // 队列300
maxThreads="500//最大进程数500 
processorCache=500"   // 缓存对象为500 
URIEncoding="UTF-8"    //字符集 HTF-8
compression="on”      //开启压缩功能
compressionMinSize=2048//阈值
compressableMimeType="text/html, text/ xml, text/ javascript, text/ css, text/plain, image/gif, image /jpg, ima         
   //压缩类型

二 . 具体TOMCAT 软件部署以及优化

2.1. 准备好安装包及环境包,先安装JDK环境

[root@sha ~]# cd /opt
[root@sha opt]# ls
tomcat
[root@sha opt]# cd tomcat/
[root@sha tomcat]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@sha tomcat]# rpm -ivh jdk-8u201-linux-x64.rpm
警告:jdk-8u201-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
	tools.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...

2.2 修改环境变量

[root@sha tomcat]# vim /etc/profile

插入3行
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ecport PATH=$JAVA_HOME/bin:$PATH

在这里插入图片描述

2.3 安装完毕,查看JAva 环境

[root@sha tomcat]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

2.4 安装TOMCAT

[root@sha tomcat]#tar -zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
[root@sha tomcat]# cd /usr/local/
[root@sha local]# ls
apache-tomcat-9.0.16  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@sha local]# mv apache-tomcat-9.0.16/ tomcat
[root@sha local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@sha local]# cd tomcat/
[root@sha tomcat]# cd bin/
[root@sha bin]# ls
bootstrap.jar       commons-daemon-native.tar.gz  makebase.sh       tomcat-juli.jar
catalina.bat        configtest.bat                setclasspath.bat  tomcat-native.tar.gz
catalina.sh         configtest.sh                 setclasspath.sh   tool-wrapper.bat
catalina-tasks.xml  daemon.sh                     shutdown.bat      tool-wrapper.sh
ciphers.bat         digest.bat                    shutdown.sh       version.bat
ciphers.sh          digest.sh                     startup.bat       version.sh
commons-daemon.jar  makebase.bat                  startup.sh

2.4.1 对启动 关闭 脚本 做软连接

[root@sha bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin
[root@sha bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin

2.4.2 启动服务

[root@sha bin]# systemctl stop firewalld.service
[root@sha bin]# setenforce 0
[root@sha bin]# startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@sha bin]# netstat -ntap | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      9391/java

2.4.3 打开浏览器访问主页测试 192.168.100.50:8080

在这里插入图片描述

关闭TOMCAT
[root@sha bin]# shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

在这里插入图片描述

2.5 优化软件启动速度

[root@sha security]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security
[root@sha security]# vim java.security

在这里插入图片描述

修改为  securerandom.source=file:/dev/urandom
[root@sha security]# startup.sh

在这里插入图片描述

三. 创建虚拟主机

3.1创建站点文件夹和文件

[root@sha tomcat]# mkdir /usr/local/tomcat/webapps/one
[root@sha tomcat]# echo "<h1>this is one </h1>" > /usr/local/tomcat/webapps/one/index.jsp
[root@sha tomcat]# mkdir /usr/local/tomcat/webapps/two
[root@sha tomcat]# echo "<h1>this is two </h1>" > /usr/local/tomcat/webapps/two/index.jsp
[root@sha tomcat]#
[root@sha named]# cd /usr/local/tomcat/webapps/
[root@sha webapps]# ls
docs  examples  host-manager  manager  one  ROOT  two
[root@sha webapps]# tree one two
one
└── index.jsp
two
└── index.jsp

3.2 安装DNS 软件,并配置

Yum install -y bind 
 [root@sha tomcat]# vi /etc/named.conf

在这里插入图片描述

[root@sha tomcat]# vi /etc/named.rfc1912.zones

在这里插入图片描述

[root@sha tomcat]# cd /var/named
[root@sha named]# cp -p named.localhost one.com.zone
[root@sha named]# vim one.com.zone

在这里插入图片描述

[root@sha named]# cp -p one.com.zone two.com.zone

3.3 修改tomcat配置文件

[root@sha conf]# vim /usr/local/tomcat/conf/server.xml
添加下面文件

     <Host name="www.one.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
   <Context docBase="/usr/local/tomcat/webapps/one" path="" reloadable="true"/>
    </Host>

      <Host name="www.two.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
   <Context docBase="/usr/local/tomcat/webapps/two" path="" reloadable="true"/>
    </Host>

在这里插入图片描述

3.4 重启服务

[root@sha conf]# systemctl restart named
[root@sha one]# shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@sha one]# startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

3.5 浏览器访问测试

3.5.1 访问 http://www.one.com:8080 成功

在这里插入图片描述

3.5.2 访问 http://www.two.com:8080 成功

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值