Tomcat部署及优化(tomcat概述、部署Tomcat、Tomcat多虚拟主机环境)

一、 Tomcat 概述

自 2017 年 11 月编程语言排行榜 Java 占比 13%,高居榜首,Tomcat 也一度成为 Java开发人员的首选。其开源、占用系统资源少、跨平台等特性深受广大程序员喜爱。

1.1 tomcat介绍

Tomcat是Apache软件基金会(Apache Software Foundation)Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成,是 Sun 公司官方推荐的 Servlet 和 JSP 容器。因为 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 服务器

1.2 Tomcat 核心组件

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

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

1.3 Tomcat 请求处理

在这里插入图片描述

  1. 用户在浏览器中输入网址 localhost:8080/test/index.jsp,请求被发送到本机8080端口, 被在那里监听的 Coyote HTTP/1.1 Connector 获得;
  2. Connector 把该请求交给Container的引擎Engine来处理,并等待 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 匹配到 URLPattern 为*.jsp 的 Servlet,对应于 JspServlet 类;
  6. 构造 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet 的 doGet()或 doPost(),执行业务逻辑、数据存储等;
  7. Context 把执行完之后的 HttpServletResponse 对象返回给 Host;
  8. Host 把 HttpServletResponse 对象返回给 Engine;
  9. Engine 把 HttpServletResponse 对象返回 Connector;
  10. Connector 把 HttpServletResponse 对象返回给客户。

二、 部署安装tomcat

2.1 下载并安装JDK

[root@localhost ~]# iptables -F    ##清空防火墙规则
[root@localhost ~]# setenforce 0   ##关闭内核防护
[root@localhost ~]# cd /opt     ##/opt目录下是为了看的更清楚
将JDK的rpm包拷贝进来,也可以使用使用get方式下载
[root@localhost opt]# ls
jdk-8u201-linux-x64.rpm  rh
linux系统中自带JDK,我们可以使用以下命令查看默认安装的JDK属性
[root@localhost 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@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm    ##使用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...

我们要为JDK设置环境变量,便于使用java命令

[root@localhost opt]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64    ##将这个路径复制一下,便于声明环境变量,以防地址出错
[root@localhost 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@localhost jdk1.8.0_201-amd64]# source /etc/profile  ##加载环境变量

在这里插入图片描述
然后我们在查看一下JDK是否安装成功

JDK成功安装
[root@localhost 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)

2.2 安装启动 Tomcat

[root@localhost jdk1.8.0_201-amd64]# cd /opt
将软件包拷贝到当前目录
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm  rh
[root@localhost opt]# tar zvxf apache-tomcat-9.0.16.tar.gz -C /usr/local
[root@localhost opt]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.16  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@localhost local]# mv apache-tomcat-9.0.16/ tomcat   ##改名为tomcat,方便记忆
[root@localhost local]# cd tomcat/bin/
[root@localhost bin]# ls
bootstrap.jar                 configtest.sh     shutdown.sh
catalina.bat                  daemon.sh         startup.bat
catalina.sh                   digest.bat        startup.sh
catalina-tasks.xml            digest.sh         tomcat-juli.jar
ciphers.bat                   makebase.bat      tomcat-native.tar.gz
ciphers.sh                    makebase.sh       tool-wrapper.bat
commons-daemon.jar            setclasspath.bat  tool-wrapper.sh
commons-daemon-native.tar.gz  setclasspath.sh   version.bat
configtest.bat                shutdown.bat      version.sh

在这里插入图片描述

建立软链接到/usr/bin下,方便直接调用脚本
[root@localhost bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
[root@localhost bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
[root@localhost 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@localhost bin]#  cd ~
[root@localhost ~]# netstat -ntap | grep 8080   ##查看服务的8080端口是否开启
tcp6       0      0 :::8080                 :::*                    LISTEN      11993/java   

在win10 虚拟机中访问tomcat网站
在这里插入图片描述

2.3 优化tomcat启动时间

查看日志会发现 Tomcat 第一次启动很慢,默认情况下都需要几十秒。在/usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security 文件中,将:securerandom.source=file:/dev/random修改成 securerandom.source=file:/dev/urandom,可以优化启动时间。

[root@localhost ~]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security/   ##到这个目录下找到java.security文件

在这里插入图片描述

[root@localhost security]# vim java.security 
securerandom.source=file:/dev/urandom   ##优化启动时间,然后重启服务就可以看到启动时间缩短了

在这里插入图片描述

/dev/random与/dev/urandom区别

/dev/random与/dev/urandom是系统中提供的随机伪设备,也就是逻辑设备,他们的任务是提供用不为空的随机字节数据流,很多解密程序与安全应用程序(如SSH、Key、SSL等)需要他们提供随机数据流。

区别:
/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时, /dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,知道系统中断数充分够用。 /dev/random可以保证数据的随机性。

/dev/urandom不依赖系统中断,也就不会造成进程忙等待,但是数据的随机性不高。

2.4 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 配置与优化

3.1 虚拟主机配置

[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# mkdir njit njit1   ##创建两个站点目录
[root@localhost webapps]# cd njit
[root@localhost njit]# vim index.jsp   ##创建网页首页
<h1>this is njit web</h1>
[root@localhost njit]# cd ../njit1   ##到另一个虚拟主机的站点路径
[root@localhost njit1]# vim index.jsp   ##创建网页首页
<h1>this is njit1 web</h1>

设置DNS服务

[root@localhost njit1]# yum install bind -y
[root@localhost njit1]# vim /etc/named.conf

在这里插入图片描述

[root@localhost njit1]# vim /etc/named.rfc1912.zones

在这里插入图片描述

[root@localhost njit1]# cp -p /var/named/named.localhost /var/named/njit.com.zone
[root@localhost njit1]# vim /var/named/njit.com.zone 
[root@localhost njit1]# cp -p /var/named/njit.com.zone /var/named/njit1.com.zone 
[root@localhost njit1]# systemctl start named

在这里插入图片描述

[root@localhost conf]# vim server.xml 
<Host name="www.njit.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/webapps/njit" path="" reloadable="true"/>
       </Host>
             <Host name="www.njit1.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/webapps/njit1" path="" reloadable="true"/>
       </Host>
[root@localhost conf]# 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@localhost conf]# 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.

在这里插入图片描述

Host name:域名

appBase:应用程序的目录

unpackWARs:是否将代表Web应用的WAR文件解压;如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。

autoDeploy:自动部署

xmlValidation:xml验证

xmlNamespaceAware:和web.xml的解析方式有关。默认为true,设置为false可以提升性能

Context docBase:指定了该Web应用使用的WAR包路径,或应用目录

path:指定了访问该Web应用的上下文路径,path属性为””,那么这个Context是虚拟主机的默认Web应用

reloadable:指示tomcat是否在运行时监控在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。如果值为true,那么当class文件改动时,会触发Web应用的重新加载

最后在win10虚拟机中进行验证
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kimowinter/article/details/107975493
今日推荐