centos 7.6 —— 部署Tomcat&基于域名构建虚拟主机

centos 7.6 —— 部署Tomcat

一、Tomcat 介绍

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

(1)Tomcat核心组件

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

  • web容器:web服务器
  • servlet容器: 名为Catalina,处理servlet 代码
  • JSP容器: 将JSP动态网页翻译成servlet代码

(2)Tomcat处理请求过程

在这里插入图片描述
Tomcat 具体的处理请求过程如下所示。

  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。

(3)Tomcat目录结构

在这里插入图片描述
/usr/local/tomcat/webapps/ROOT //网页目录

(4)Tomcat 配置文件参数优化

Tomcat主配置文件server.xml 常用的配置参数

  • maxThreads
  • minSpareThreads
  • maxSpareThreads
  • URIEncoding
  • connnectionTimeout
  • enableLookups
  • disableUploadTimeout
  • connectionUploadTimeout
  • acceptCount
  • compression
  • compressionMinSize
  • compressableMimeType
  • noCompressionUserAgents=“gozilla, traviata”

如果对代码进行了动静分离处理,静态页面和图片等数据就不需做Tomcat 处理,也就不要在Tomcat 中配置压缩

实验一:部署Tomcat&安装JDK

1. 安装tomcat


[root@promote opt]# ll
总用量 182612
-rw-r--r--  1 root root  10783080 812 17:25 apache-tomcat-9.0.16.tar.
-rw-r--r--  1 root root 176209195 812 17:29 jdk-8u201-linux-x64.rpm
drwxr-xr-x. 2 root root         6 1031 2018 rh
[root@promote opt]# 
[root@promote opt]# rpm -ivh jdk-8u201-linux-x64.rpm
[root@promote opt]# iptables -F
[root@promote opt]# setenforce 0
setenforce: SELinux is disabled
[root@promote opt]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@promote java]# ll
总用量 0
lrwxrwxrwx 1 root root  16 813 09:33 default -> /usr/java/latest
drwxr-xr-x 8 root root 258 813 09:33 jdk1.8.0_201-amd64
lrwxrwxrwx 1 root root  28 813 09:33 latest -> /usr/java/jdk1.8.0_201-amd64
[root@promote java]# cd jdk1.8.0_201-amd64/
[root@promote jdk1.8.0_201-amd64]# ll
总用量 25980
drwxr-xr-x 2 root root     4096 813 09:33 bin
-rw-r--r-- 1 root root     3244 1216 2018 COPYRIGHT
drwxr-xr-x 3 root root      132 813 09:33 include
-rw-r--r-- 1 root root  5207434 1212 2018 javafx-src.zip
drwxr-xr-x 5 root root      185 813 09:33 jre    //jre就是Java的虚拟机
drwxr-xr-x 5 root root      245 813 09:33 lib
-rw-r--r-- 1 root root       40 1216 2018 LICENSE
drwxr-xr-x 4 root root       47 813 09:33 man
-rw-r--r-- 1 root root      159 1216 2018 README.html
-rw-r--r-- 1 root root      424 1216 2018 release
-rw-r--r-- 1 root root 21103945 1216 2018 src.zip
-rw-r--r-- 1 root root   108109 1212 2018 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root   155002 1216 2018 THIRDPARTYLICENSEREADME.txt


[root@promote jdk1.8.0_201-amd64]# vim /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@promote jdk1.8.0_201-amd64]# source /etc/profile
[root@promote jdk1.8.0_201-amd64]# 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)
[root@promote jdk1.8.0_201-amd64]# cd /opt
[root@promote opt]# tar zxvf apache-tomcat-9.0.16.tar.gz  -C /usr/local/
[root@promote opt]# cd /usr/local/
[root@promote local]# ls
apache-tomcat-9.0.16  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@promote local]# mv apache-tomcat-9.0.16/ tomcat
[root@promote local]# cd tomcat/
[root@promote tomcat]# ll
总用量 124
drwxr-x--- 2 root root  4096 813 09:53 bin
-rw-r----- 1 root root 19203 25 2019 BUILDING.txt
drwx------ 2 root root   238 25 2019 conf
-rw-r----- 1 root root  6095 25 2019 CONTRIBUTING.md
drwxr-x--- 2 root root  4096 813 09:53 lib
-rw-r----- 1 root root 57092 25 2019 LICENSE
drwxr-x--- 2 root root     6 25 2019 logs
-rw-r----- 1 root root  2333 25 2019 NOTICE
-rw-r----- 1 root root  3255 25 2019 README.md
-rw-r----- 1 root root  6854 25 2019 RELEASE-NOTES
-rw-r----- 1 root root 16262 25 2019 RUNNING.txt
drwxr-x--- 2 root root    30 813 09:53 temp
drwxr-x--- 7 root root    81 25 2019 webapps
drwxr-x--- 2 root root     6 25 2019 work
[root@promote tomcat]# cd bin/
[root@promote bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
[root@promote bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/

[root@promote 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@promote bin]# netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      13752/java          
[root@promote bin]#                           

虚拟机win10 验证 192.168.75.129:8080

在这里插入图片描述

2. 优化Tomcat的启动方式

第一次启动查看日志会发现Tomcat启动很慢,默认情况下需要几十秒,可以修改JDK参数进行更改。

知识

/dev/random 和 /dev/urandom 是Linux系统中提供的随机伪设备,这两个设备的任务,
是提供永不为空的随机字节数据流,很多解密程序与安全应用程序(如SSH Keys,SSL Keys等) 需要它们提供的随机数据流。
区别:
这两个设置的差异在于:/dev/random 的random pool 依赖于系统中断,因此在系统的中断不足时,
/dev/random 设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用。
/dev/random 设备可以保证数据的随机性,/dev/urandom 不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。


[root@promote bin]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security/
[root@promote security]# ls
blacklist          cacerts      java.security  policy
blacklisted.certs  java.policy  javaws.policy  trusted.libraries
[root@promote security]# vim java.security

# In addition, if "file:/dev/random" or "file:/dev/urandom" is
# specified, the "NativePRNG" implementation will be more preferred than
# SHA1PRNG in the Sun provider.
#
securerandom.source=file:/dev/urandom   //改为urandom


3. 关闭Tomcat


[root@promote security]# /usr/local/tomcat/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

实验二:基于域名构建虚拟主机

yum -y install bind
vim /etc/named.conf
  listen-on port 53 { any; };
   allow-query     { any; };
   
vim /etc/named.rfc1912.zones 

zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};

zone "benet.com" IN {
        type master;
        file "benet.com.zone";
        allow-update { none; };
};

 cd /var/named/

 cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.com.zone 

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.75.129
 
cp -p kgc.com.zone benet.com.zone 
cd /usr/local/tomcat/webapps/
mkdir kgc benet
vim /kgc/index.jsp
<h1>this is kgc  !!!  </h>

vim /benet/index.jsp
<h1>this is benet  !!!  </h>


[root@promote opt]# vim /usr/local/tomcat/conf/server.xml 

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


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




    </Engine>
  </Service>
</Server>
~          
 iptables -F
 setenforce 0
/usr/local/tomcat/bin/shutdown.sh   
/usr/local/tomcat/bin/startup.sh   //重启Tomcat服务
systemctl restart named  //重启DNS服务






虚拟机win10 验证

  • www.kgc.com:8080
  • www.benet.com:8080

在这里插入图片描述

在这里插入图片描述

Tomcat 配置文件参数优化

关于 Tomcat 主配置文件 server.xml 里面很多默认的配置项,并不能满足业务需求,常 用的优化参数如下。

  1. maxThreads:Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的 最大的线程数,默认值是 200。

  2. minSpareThreads:最小空闲线程数,Tomcat 启动时的初始化线程数,表示即使没有 人使用也开这么多空线程等待,默认值是
    10。

  3. maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭 不再需要的 socket
    线程。默认值是-1(无限制),一般不需要指定。

  4. URIEncoding:指定 Tomcat 容器的 URL 编码格式,Tomcat 语言编码格式这块不如 其它
    Web服务器软件配置方便,需要分别指定。

  5. connnectionTimeout:网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置 有隐患的。通常默认 20000
    毫秒就可以。

  6. enableLookups:是否反查域名,以返回远程主机的主机名,取值为:true 或 false, 如果设置为 false,则直接返回
    IP 地址,为了提高处理能力,应设置为 false。

  7. disableUploadTimeout:上传时是否使用超时机制。应设置为 true。

  8. connectionUploadTimeout:上传超时时间,毕竟文件上传可能需要消耗更多的时间,

  9. 该参数需要根据自己的业务需要自行调整,以使 Servlet 有较长的时间来完成它的执行, 需要与上一个参数一起配合使用才会生效。

  10. acceptCount:指定当所有可以使用的处理请求的线程都被使用时,可传入连接请求的
    最大队列长度,超过这个数的请求将不予处理,默认为 100 个。

  11. compression:是否对响应的数据进行 GZIP 压缩,off 表示禁止压缩、on 表示允许压 缩(文本将被压缩)、force
    表示所有情况下都进行压缩,默认值为 off。压缩数据后可 以有效的减少页面的大小,一般可以减小 1/3 左右,因而节省带宽。

  12. compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时
    候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。

  13. compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。
    noCompressionUserAgents=“gozilla, traviata”:对于以下的浏览器,不启用压缩。 如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,那 么也就不需要在 Tomcat 中配置压缩了。因为这里只有一台 Tomcat 服务器,而且压测的是 Tomcat 首页,会有图片和静态资源文件,所以这里启用压缩。

以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector 与 AJP Connector 的参数属性值,可以参考官方文档的详细说明进行学习。链 接地址 http://tomcat.apache.org/tomcat-9.0-doc/config/http.html,下面开始对 Tomcat 配置 文件优化进行前后的对比。

猜你喜欢

转载自blog.csdn.net/weixin_42099301/article/details/107972294