Tomcat部署及优化

笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述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 独立的进程单独运行的。在后端。
Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理html页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.14。
Tomcat组件
Tomcat由一系列的组件构成,其中核心的组件有三个:

  • Web容器完成Web服务器的功能。
  • Servlet 容器名字为catalina, 用于处理Servlet代码。
  • JSP容器用于将JSP动态网页翻译成Servlet代码。
1.ServletServlet是Java Servlet 的简称,可以理解为是一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
2.JSP【Tomcat部署及优化】JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP标签在HTML网页中插入Java代码。标签通常以< %开头,以%> 结束。JSP是一种 Java servlet,主要用于实现Java web 应用程序的用户界面部分。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
1、Tomcat功能组件结构
Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container。其中连接器和容器相辅相成,一起构成了基本的 web服务Service。每个Tomcat服务器可以管理多个Service。
  • Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
  • Container:负责对内处理业务逻辑。其内部由 Bngine、Host、Context和irapper 四个容器组成,用于管理和调用Servlet 相关逻辑。
  • Service:对外提供的 web 服务。主要包含Connector和Container 两个核心组件,以及其他功能组件。Tomcat可以管理多个Service,且各Service之间相互独立。
Container的结构每个Service会包含一个Container容器。在 Container内部包含了4个子容器:4个子容器的作用分别是:
  1. Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个 Engine?
  2. Host:代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点
  3. Context:代表一个web 应用,包含多个Servlet封装器;
  4. Wrapper:封装器,容器的最底层。每一wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。
Engine、Host、Context和 wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个 web应用会有多个Servlet封装器。
2、Tomcat请求过程

  1. 用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的Connector 获得。
  2. Connector把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine 的回应。
  3. 请求在Engine、Host、Context和WMrapper这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
  4. 执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Conector,并通过Connector返回给客户端。
二、Tomcat部署在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1、关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm

2、安装 JDK
#查询指定软件包的文件列表
rpm -qpl jdk-8u201-linux-x64.rpm
#安装
rpm -ivh jdk-8u201-linux-x64.rpm
java -version



3、设置 JDK 环境变量
#profile.d相当于profile的扩展地盘
vim /etc/profile.d/java.sh
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

source /etc/profile.d/java.sh
java -version

小知识
  • CLASSPATH:编译、运行Java程序时,JRE 会去该变量指定的路径中搜索所需的类( .class)文件。
  • dt.jar:是关于运行环境的类库,主要是swing 的包。
  • tools.jar:主要是一 些 jdk 工具的类库,包括 javac, java,javap, javadoc等。
  • JDK:java development kit ( java开发工具)
  • JRE:java runtime environment ( java运行时环境)
  • JVM:java virtuak machine (java虚拟机) ,使 java程序可以在多种平台上运行class文件。

$PATH必须放在后面,不然读取的java版本还是系统自带的

编写一个脚本进行验证
vim Hello.java
#编写一个java程序,输出“Hello let it go!”
public class abc
public static void main(String[] args)
System.out.println("Hello let it go!");



#检测JDK环境是否设置成功
javac Hello.java编译
java Hello执行



4、安装启动 Tomcat
cd /opt/
tar zxvf apache-tomcat-8.2.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat

##启动tomcat##
/usr/local/tomcat/bin/startup.sh
netstat -natp | grep8080

#使用浏览器访问Tomcat的主页
http://192.168.132.10:8080






5、优化 Tomcat 启动速度
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
#修改117行; ##/dev/random和/dev/urandom都是伪终端,但是/dev/urandom提供的数据流更快
securerandom.source=file:/dev/urandom

#重启Tomcat
shutdown.sh
startup.sh

/dev/urandom是/dev/random的非阻塞版本,/dev/random的 random pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用,/dev/random设备可以保证数据的随机性.
/dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高,所以该随机数的安全性理论上不高。如果应用对安全性要求很高,那么应该使用/dev / random。


tomcat的主要目录 ll /usr/local/tomcat
  • bin:存放启动和关闭Tomcat的脚本文件,如 catalina.sh、startup.sh、shutdown.sh
  • conf:存放Tomcat服务器的各种配置文件,如主配置文件 server.xml和应用默认的部署描述文件 web.xml
  • lib:存放Tomcat运行需要的库文件的jar包,一般不作任何改动
  • logs:存放Tomcat执行时的日志
  • temp:存放Tomcat运行时产生的文件
  • webapps:存放Tomcat默认的web应用部署目录
  • work:存放web应用代码生成和编译文件的临时目录
6、Tomcat 虚拟主机配置
很多时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。例如现在新增两个域名www.tyx.com和www.accp.com,希望通过这两个域名访问到不同的项目内容。
1、创建tyx和accp项目目录和文件
到此这篇关于Tomcat部署及优化内容已经讲完,如果未能解决您的问题,请参考下面的文章:

    推荐阅读