目录
2.1 关闭防火墙,将安装Tomcat 所需软件包传到/opt目录下
5.3 修改 tomcat2 中的 server.xml 文件
5.5 启动各 tomcat 中的 /bin/startup.sh
1. Tomcat介绍
Tomcat是Java语言开发的,Tomcat服务器是一个免费的开放源代码的Web应用服务器,是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Tomcat属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache 或者Nginx这些Web服务器一样,具有处理HTML 页面的功能,然而由于其处理静态HTML的能力远不及Apache 或者Nginx, 所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。
1.1 Tomcat的组成
- Tomcat 由一系列的组件构成,其中核心的组件有三个
Web容器
:完成Web服务器的功能。Servlet容器
:名字为catalina, 用于处理Servlet 代码。JSP容器
:用于将JSP动态网页翻译成Servlet代码。
因此
Tomcat是Web应用服务器,也是一个Servlet/JSP 容器
。Tomcat 作为Servlet 容器,负责处理客户请求,把请求传送给Servlet, 并将Servlet的响应传送回给客户。
1.2 什么是servlet?
Servlet是Java Servlet的简称,可以理解为是一 个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性, 简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
1.3 什么是JSP?
- JSP全称Java Server Pages, 是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以
<%
开头,以%>
结束。- JSP是一种Java servlet, 主要用于实现Java web应用程序的用户界面部分。
- JsP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
1.4 Tomcat功能组件结构
Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container。其中连接器和容器相辅相成,起构成了基本的web服务Service。 每个Tomcat 服务器可以管理多个Service。
Connector
:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外Container
:负责对内处理业务逻辑。其内部由Engine、Host、Context和Wrapper四个容器组成,用于管理和调用Servlet 相关逻辑。Service
: 对外提供的Web服务。主要包含Connector 和Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个Service, 且各Service之间相互独立。
1.4.1 Container 结构分析
每个service会包含一个Container 容器。在Container 内部包含了4个子容器
- 4个子容器的作用分别是
Engine
:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine
;Host
:代表一个虚拟主机,也可以叫站点
,通过配置Host就可以添加站点;Context
: 代表一个Web应用,包含多个Servlet 封装器;Wrapper
: 封装器,容器的最底层。每一wrapper 封装着一个Servlet, 负责对象实例的创建、执行和销毁功能。
Engine、Host、 Context 和wrapper, 这四个容器之间属于父子关系
。容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个Web应用会有多个Servlet 封装器。
1.5 Tomcat请求过程
- 用户在浏览器中输入网址,请求被发送到本机端口8080, 被在那里监听的Connector 获得;
- Connector 把该请求交给它所在的Service 的Engine (Container) 来处理,并等待Engine 的回应;
- 请求在Engine、 Host、 Context 和Wrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
- 执行完之后的请求响应在Context、 Host、Engine 容器之间层层返回,最后返回给Connector, 并通过Connector 返回给客户端。
2. 部署Tomcat
在部署Tomcat之前必须安装好jdk,因为jdk是Tomcat运行的必要环境。
2.1 关闭防火墙,将安装Tomcat 所需软件包传到/opt目录下
jdk-17_linux-aarch64_bin.rpm(架构不同选择不同的包)
apache-tomcat-9.0.16.tar.gz
[root@www ~]# systemctl stop firewalld
[root@www ~]# systemctl disable firewalld
[root@www ~]# setenforce 0
复制代码
2.2 安装JDK
[root@www ~]# cd /opt
[root@www ~]# rpm -qpl jdk-17_linux-aarch64_bin.rpm
[root@www ~]# rpm -ivh jdk-17_linux-aarch64_bin.rpm
[root@www ~]# java -version
复制代码
2.3 设置JDK环境变量
[root@www ~]# vim /etc/profile.d/java.sh
复制代码
export JAVA_HOME=/usr/java/jdk-17.0.5
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
复制代码
[root@www ~]# source /etc/profile.d/java.sh
[root@www ~]# java -version
复制代码
- 小知识
CLASSPATH
:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
JDK
:java development kit (java开发工具)
JRE
:java runtime environment (java运行时环境)
JVM
:java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
首先使用文本工具编写java源代码,比如 Hello.java ; 在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “Hello World”。
[root@www ~]# vim Hello.java
复制代码
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
#一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class Hello {
public static void main(String[] args){
System.out.println("Hello world!");
}
}
复制代码
[root@www ~]# javac Hello.java
[root@www ~]# java Hello
复制代码
2.4 安装启动Tomcat
[root@www ~]# cd /opt
[root@www ~]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@www ~]# mv apache-tomcat-9.0.16 /usr/local/tomcat
复制代码
2.4.1 启动tomcat
- 后台启动
[root@www ~]# /usr/local/tomcat/bin/startup.sh
或
[root@www ~]# /usr/local/tomcat/bin/catalina.sh start
复制代码
- 前台启动
[root@www ~]# /usr/local/tomcat/bin/catalina.sh run
[root@www ~]# netstat -natp | grep 8080
复制代码
浏览器访问Tomcat的默认主页 http://192.168.49.132:8080
2.5 优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
[root@www ~]# vim /usr/jd