Tomcat介绍和安装,以及tomcat的虚拟主机配置

Tomcat介绍

●自从JSP发布之后,推出了各式各样的JSP引擎,Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样Tomcat就诞生了。

●Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选

●当配置正确时, Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet.另外, Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过, Tomcat处理静态HTML的能力不如Apache服务器。

Tomcat核心组件

在这里插入图片描述

●通常意义上的Web服务器接受请求后,只是单纯地响应静态资源,如HTML文件,
图片文件等,不能在后端进行一定的处理操作。Tomcat是Apache下的一个子项目,它具备Web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码Servlet,同时将执行的结果以HTML代码的形式写回客户端。

●Tomcat由一系列的组件构成,其中核心的组件有三个:

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

简述Tomcat处理请求过程

1 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/11.1Connector获得。
2 Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应。
3 Engine获得请求localhost/yy/index.JSP匹配它所拥有的所有虚拟主机Host.
4 Engine匹配到名为localhost的Host,即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机。
5 localhost Host获得请求/yy/index.JSP,匹配它所拥有的所有Context。
6 Host匹配到路径为/yy的Context,如果匹配不到,就把该请求交给路径名为Context去处理。
7 path=" /yy"的Context获得请求/index.JSP,在它的mapping table中寻找对应的Servlet。
8 Context匹配到URL PATTERN为*.JSP的Servlet,对应于JSPServlet类。
9 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JSPServlet的doGet()或doPost()方法。
10 Context把执行完了之后的HttpServletResponse对象返回给Host,
11 Host把HttpServletResponse对象返回给Engine。
12 Engine把HttpServletResponse对象返回给Connector。
13 Connector把HttpServletResponse对象返回给客户browser。

在这里插入图片描述

Tomcat目录机构

在这里插入图片描述

bin 存放启动和关闭Tomcat的脚本文件,比较常用的是catalina.sh, startup.sh、shutdown.sh 三个文件
conf 存放Tomcat服务器的各种配置文件,比较常用的是server.xml, context.xml、tomcat-users.xml、web.xml四个文件。
lib 存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如redis,那就需要添加相对应的 jar 包
logs 存放 Tomcat 日志
temp 存放 Tomcat 运行时产生的文件
webapps 存放项目资源的目录
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到

Tomcat安装

(1)下安装JDK
在部署Tomcat之前必须安装好jdk,因为jdk是Tomcat运行的必要环境.而jdk的安
装也相对比较简单,版本有很多,这里我们选择rpm版本即可!

打开oracle官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html, 该网页中会有172的大版本,根据所使用的计算机硬件配置,选择其中一个安装包,本案例,选择基于 linux64 位 rpm 版本,必须选中Accept License Agreement

再进行下载Linux x64 168.05 MB jdk-8u201-linux-x64.rpm

将jdk软件包上传到/root目录下安装jdk
[root@localhost opt]# 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....
         lugin.jar....
         javaws.jar....
        deploy.jar....
        rt.jar....
        jissejar.charsets.jar....
        localedata.jar....


##确认jdk安装目录·
[root@localhost opt]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0 201-amd64]# ll
总用量25980
drwxr-xr-x 2 root root    4096      37      22:09  bin
-rw-r--r-- 1 root root    3244      1216     03:45  COPYRIGHT
drwxr-xr-x 3 root root    132       37      22:09 include
-rw-r--r-- 1 root root    5207434   1212     17:07 javafx-src.zip
drwxr-xr-x 5 root root    185       37      22:09 jre
drwxr-xr-x 5 root root    245       37      22:09 lib
-rw-r--r-- 1 root root    40        1216     03:45 LICENSE
drwxr-xr-x 4 root root    47        37      22:09 man
-rw-r--r-- 1 root root    159       1216     03:45 README.html
-rw-r--r-- 1 root root    424       1216     03:45 release
-rw-r--r-- 1 root root    21103945  1216     03:45 src.zip
-rw-r--r-- 1 root root    108109    1212     17:07 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root    155002    1216     03:45 THIRDPARTYLICENSEREADME.txt


##设置JDK环境变量###
[root@localhost ~]# vi /etc/profile                   ##下面参数新增#
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

[root@localhost ~]# source /etc/profile         ##环境变量生效##

[root@localhost ~]#java -version                    ###查看java版本##
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)安装启动Tomcat
执行下面的命令, 从 Tomcat 官网下载 apache-tomcat-9.0.16.tar.gz 稳定版本将安装包apache-tomcat-9.0.16.tar.gz上传到/root目录下

##将安装包移动 Tomcat 目录到/usr/local 下#
[root@localhost ~]# cd /opt
[root@localhost ~]# tar xzvf apache-tomcat-9.0.16.tar.gz
[root@localhost ~]# mv apache-tomcat-9.0.16 /usr/local/tomcat

###优化tomcat###########
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/

##优化后的启动tomcat的方式 ##
[root@localhost ~]# startup.sh                  ###开启
[root@localhost ~]# shutdown.sh              ###关闭

[root@localhost ~]# setenforce ?
setenforce: SELinux is disabled

[root@localhost ~]# netstat -ntap | grep 8080
tcp6       0      0 :::8080           :::*        LISTEN      15458/java          

##浏览器中输入http://20.0.0.140:8080      ##访问时会出现Tomcat的默认主页

在这里插入图片描述

##优化tomcat启动速度##
第一次启动查看日志会发现 Tomcat 启动很慢,默认情况下都需要几十秒,可以修改jdk参数进行改。
[root@localhost ~]# vi /usr/java/jdk1.8.0 201-amd64jre/lib/security/java.security
securerandom.source=file:/dev/urandom

##关闭tomcat##
[root@localhost ~]# 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


##启动tomcat##
[root@localhost ~1# 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.

虚拟主机配置

可能有时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个
Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。

现在新增两个域名 www.zzt.com 和 www.accp.com ,希望通过这两个域名访问到不同的项目内容。

(1)第一步,创建zzt 和 accp 项目目录和文件

#因为识别的是java的文件形式,所以尽量定义jsp的文件,jsp文件可以写一些jsp语言

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/zzt
[root@localhost ~]# echo "This is zzt page\!" > /usr/local/tomcat/webapps/zzt/index.jsp
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/accp
[root@localhost ~]# echo "This is accp page\!" > /usr/local/tomcat/webapps/accp/index.jsp

(2)修改配置文件

[root@localhost ~]# vi /usr/local/tomcat/conf/server.xml
	
      <Host name="www.zzt.com" appBase="/usr/local/tomcat/webapps"
            unpackWARs="true" autoDeploy="true" xmlValidation="false"
            xmlNamespaceAware="false">
            <Context docBase="/usr/local/tomcat/webapps/zzt"
	path="" reloadable="true" />
      </Host>

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


[root@localhost ~]# shutdown.sh
[root@localhost ~]# startup.sh          
#这两步相当于重启

#####修改的位置:原来的删除,在原位置修改

命令 : 解释:
Host name 域名
appBase 工作目录存放位置
unpackWARs 我是否即时更新War包
autoDeploy 是否用auto支持自动部署(当你把资源写入webapps,是否即时生效)
xmlValidation 是否支持xml的文件当中的验证
xmlNamespaceAware 是否对xml当中的命令空间进行启用
false 关闭 为什么要关闭验证:因为验证格式浪费时间,一般配置文件写对就对,不对也不提示,所以浪费
Context docBase 你的站点存在目录
path="" 设置为空:去加载它的默认类,而不是指定,因为java中有很多class文件,
reloadable 进行重新加载内容页面的功能,比如你在主页改东西,改完立即生效

(3)验证

##更改hosts文件##  C:\Windows\System32\drivers\etc        改hosts文件
20.0.0.140	www.zzt.com	www.accp.com
##测试网页#
1、使用浏览器访问 http://www.zzt.com:8080 
1、使用浏览器访问 http://www.accp.com:8080


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/108556926