目录
1、关闭防火墙,将安装Tomcat所需软件包上传到/opt目录下
引言
自2017年11月编程语言排行榜Java占比13%,高居榜首,Tomcat也一度成为Java,开发人员的首选。其开源、占用系统资源少、跨平台等特性被深受喜爱。本章主要学习如何部署Tomcat服务,根据生产环境实现多个虚拟主机的配置,最后的重点是进行压测,根据压测结果如何优化Tomcat服务及常见的内存溢出如何处理。
一、Tomcat介绍
1、Tomcat概述
Tomcat是一款免费、开放源代码的Web应用服务器,是Apache软件基金会的一个核心开源项目,属于轻量级应用服务器。
Apache:Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织,官网为:https://tomcat.apache.org/
2、Tomcat核心组件
通常意义上的Web服务器接受请求后,只是单纯地响应静态资源,如HTML文件,图片文件等,不能在后端进行一定的处理操作。Tomcat是Apache下的一个子项目,它具备Web服务器的所有功能(WEB容器嵌入Servlet动态请求),不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码Servlet,同时将执行的结果以HTML代码的形式写回客户端。
3、Tomcat的组件构成
Tomcat由一系列的组件构成,其中核心的组件有三个
(1)Web容器:完成Web服务器的功能HTTPHTTPS请求的接受和响应。
(2)Servlet容器:由名称为catalina的脚本来处理Servlet代码(具体的一个任务,从数据库中拿取数据给与前端)。
(3)JSP容器:用于将JSP动态网页翻译成Servlet代码index.htmlindex.phpindex.jsp。
4、使用Tomcat前提条件
(1) 运维:web
(2)JAVA后端:后端主要是对于业务的控制和处理,比如访问数据库,进行数据更新查看修改等等。
(3) JAVA前端:前端主要是指jsp,页面显示给用户的,前端技术的话比如ajax,javascript,EL这些技术。
二、Tomcat介绍
1、Tomcat核心组件
(1)Web容器
负责WEB服务的TCP/IP、HTTP等协议响应、处理(nginx处理静态页面的应用交互)
(2)JSP容器(JAVAScriptspage)
Tomcat中做为JAVA前端展示的一个组件index.jsp,因为index.jsp<html/html>标签,标签中会嵌套了很多JAVA代码,书写形式是,<%开头以%>,是一种servlet(java后端逻辑业务的任务)。
JSP(全称:JavaServerPages)是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。JSP是一种Javaservlet,主要用于实现Javaweb应用程序的用户界面部分。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。JSP容器内提供了多个以index.jsp为结尾的JAVA前端页面展示,而index.jsp中由很多HTML标签,HTML标签中会嵌套很多JAVA代码,这些JAVA代码,最终会被翻译为Servlet代码,(而本身JSP容器不具备解析与分析代码的功能,所以会给交给Servlet容器)。
(3)Servlet容器
Servlet翻译index.jsp中这些java代码,执行一些servlet任务操作,比如数据库交互、加密、支付宝、人脸识别,处理完后,将这些数据返回给JSP,通过jsp中的index.jsp展示出来(JAVA)。动态交互处理,会将JSP传递过来的代码翻译为Servlet,由catalina脚本帮忙处理的servlet代码,主要处理后端逻辑业务(比如与数据库交互、加密、支付宝、人脸识别等),catalina实际处理的是Servlet代码,而Servlet代码是由Java编写的。
2、Tomcat处理请求过程
(1)用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote(Tomcat 连接器框架/基础环境) HTTP/1.1 Connector(连接器,用于对接请求)获得。
(2)接受请求之后交给container(容器)中的engine进行处理,engine(引擎)是做为容器运行的动力核心。
(3)基于引擎支撑,容器中会跑很多host虚拟主机/项目,这些虚拟主机中也会有很多context(当前程序所处的环境),此处的context功能可以理解为:将JAVA前端和JAVA后端连接的展示的枢纽。
(4) Servlet处理完后会返回给context。
(5)context返回给engine引擎。
(6)engine返回给端口。
(7) 端口最后将页面展现给用户。
三、tomcat部署
1、关闭防火墙,将安装Tomcat所需软件包上传到/opt目录下
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
2、安装jdk,并设置jdk环境变量
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm
[root@localhost opt]# java -version #查看当前系统环境下java版本
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]# vim /etc/profile.d/java.sh #编辑环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 #定义JAVA_HOME变量的路径
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #指定CLASSPATH变量的路径
export PATH=$JAVA_HOME/bin:$PATH #将JAVA的bin目录加入到PATH变量
注释:
CLASSPATH:编译、运行Java程序时(tomcat),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文件。
[root@localhost opt]# source /etc/profile.d/java.sh #加载生效
[root@localhost opt]# 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)
3、查看jdk环境是否成功
编辑一个简单的java脚本
[root@localhost opt]# vim Hello.java
public class Hello {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
[root@localhost opt]# javac Hello.java #(javac 基础命令,用于编译,用于将java--》class)
[root@localhost opt]# java Hello #启动脚本
Hello World!
4、安装启动Tomcat
(1)解压apache-tomcat软件包
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@localhost opt]# mv apache-tomcat-9.0.16 /usr/local/tomcat
(2)查看目录
[root@localhost opt]# cd /usr/local/tom