Apache Tomcat部署
Tomcat概述
Apache Tomcat(简称“Tomcat”)是Jakarta Servlet、Jakarta Expression Language和WebSocket技术的免费开源实现。它提供了一个纯 Java HTTP Web 服务器环境,Java代码也可以在其中运行。因此,它是一个 Java Web 应用服务器,尽管不是完整的 JEE 应用服务器。
使用场景
- 作为Web服务器,处理静态网页请求,如html页面,但是性能一般(只有nginx的六分之一);
- 作为Servlet/JSP容器,运行JAVA语言开发的jsp动态网页程序,并作为中间件实现前端Web和后端数据库的协同工作,这也是tomcat的主要应用场景。
Tomcat组件
Tomcat 由一系列的组件构成,其中核心的组件有三个:
- Web 容器:完成 Web 服务器的功能。
- Servlet 容器:名字为 catalina,用于处理 Servlet 代码。
- JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。
什么是 servlet?
Servlet 是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java 编写的服务器端程序,具有独立于平台和协议的特性, 简单的理解:servlet 就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
什么是 JSP?
- JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java 代码。标签通常以 <% 开头,以 %> 结束。
- JSP 是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。
- JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
Tomcat 功能组件结构
- Service:对外提供的 Web 服务。主要包含 Connector 和 Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个 Service,且各 Service 之间相互独立。
- Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
- Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用 Servlet 相关逻辑。
Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector和负责处理请求的容器 Container。
其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。
Container 结构
每个 Service 会包含一个 Container 容器。在 Container 内部包含了 4 个子容器:
4个子容器的作用分别是:
- Engine:引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine;
- Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
- Context:代表一个 Web 应用,包含多个 Servlet 封装器;
- Wrapper:封装器,容器的最底层。每一 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能。
Connector结构
Tomcat工作原理
- 用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
- Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
- 请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
- 执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。
Tomcat部署
准备工作
systemctl disable firewalld.service --now
vim /etc/selinux/config
将“SELINUX=enforcing”修改成“SELINUX=0”
reboot
安装配置JDK
yum安装
yum install -y java
java -version
绿色安装
cd /opt/
tar xf jdk-8u391-linux-x64.tar.gz
mv jdk1.8.0_391/ /usr/local/
cd /usr/local/
cd jdk1.8.0_391/
ls bin/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
---------------------------------小知识-------------------------------------------
CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
JDK :java development kit (java开发工具)
JRE :java runtime environment (java运行时环境)
JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到,比如可用来编译JSP文件。
dt.jar:是关于运行环境的类库,主要是swing的包,在用到swing时最好加上。
---------------------------------------------------------------------------------
source /etc/profile
java -version
安装启动Tomcat
安装Tomcat
cd /opt/
tar xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
cd /usr/local/
cd tomcat/
启动Tomcat
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl restart tomcat
netstat -natp | grep 8080
测试
浏览器访问测试URL;http://serverip:8080
安装部署supervisor
yum install -y supervisor
vim /etc/supervisord.conf
······
[include]
files = supervisord.d/*.ini -> files = supervisord.d/*.conf
cd /etc/supervisord.d/
vim tomcat.conf