目录
tomcat概述
tomcat是由apache软件基金会下属的jakarta项目开发的一个servlet容器,安装SunMicrosystems提供的技术规范,实现了对servlet和javaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能
tomcat可以解析静态页面也可以解析动态页面 (JSP页面) ,但是解析静态页面的效率没有apache好。可以解析动态页面是因为tomcat是java语言开发的,所以想要使用tomcat必须在服务器上安装JDK环境
两者都是由Apache组织开发的
两者都有HTTP服务器的功能
两者都是开源的
Apache是专门用来提供HTTP服务的,以及相关配置的 (如虚拟主机、URL转发等HTTP服务器的基本功能) ,而Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器,所以按这个来说Tomcat只是有着HTTP服务的一些功能,并不是一个“专业”的HTTP服务
Apache是一个Web服务器环境程序,启用Apache可以作为Web服务器来使用,不过只可以解析静态页面。如果想要解析动态页面 (JSP页面) 则需要一个解析动态页面的解释器,也就是一个中间件,而Tomcat就可以当这个中间件
Apache侧重于HTTPServer,Tomcat侧重于servlet引擎,如果以Standalone方式运行,功能上与Apache相持平,支持JSP页面,但是对静态页面不太理想
Apache是Web服务器,Tomcat是应用服务器,Tomcat只是一个servlet容器 (JSP也被翻译成servlet) ,可以认为是Apache的扩展,但是也可以独立运行
1、web容器:完成web服务器的功能
2、servlet容器:名字位catalina,用于处理servlet代码
3、jsp容器:用于讲jsp动态网页翻译成servlet代码
Java Servlet是运行在web服务器或应用服务器上的程序,它是作为来自web浏览器或其他http客户端的请求和http服务器上的数据库或应用程序之间的中间层,使用servlet,可以手机来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。与CGI(公共网关接口)功能想类似。
jsp全称java server pages,是一种动态网页开发技术,它使用jsp标签在htnl网页中插入java代码。标签通常以<%开头以%>结束,jsp是一个java servlet,它主要用于实现java web应用程序的用户界面部分。jsp通过网页表单获取用户输入数据、访问书库及其他数据源,然后动态的创建网页。
1.请求过程
Tomcat的端口为8080,但是监听8080端口的不是tomcat主进程,而是connector的连接器(java写的)监听的。使用netstat -natp |grep tomcat 无法查看到tomcat端口需要使用:netstat -natp | grep 8080 查看
2.Tomcat功能组件结构
Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。 其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。
Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用Servlet 相关逻辑。
Service:对外提供的 Web 服务。主要包含 Connector 和 Container
两个核心组件,以及其他功能组件。Tomcat 可以管理多个 Service,且各 Service 之间相互独立。
3. Container 结构分析
每个 Service 会包含一个 Container 容器,在 Container 内部包含了 4 个子容器。
(1)Engine:引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine;
(2)Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
(3)Context:代表一个 Web 应用,包含多个 Servlet 封装器,用于连接Host项目和servlet容器
(4)Wrapper:封装器,容器的最底层。每一个 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能。
Engine、Host、Context 和 Wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。
每个虚拟主机可以管理多个 Web 应用。
每个 Web 应用会有多个 Servlet 封装器。
4.用户请求过程
(1)用户访问网页内容,申请动态访问请求,通过nginx的80端口反向代理到tomcat的8080端口。
(2)到了tomcat后,被在那里监听的connector(连接器中)的Coyote(java框架)监听到。
(3)接收到请求之后,将请求交给container(容器)中的engine(引擎)进行处理,engine是作为容器运行的动力核心。
(4)基于engine支撑,容器中会跑很多host虚拟主机(项目),这些虚拟主机中也会有很多的项目,然后通过context(当前程序所处的环境)连接到servlet容器。
(5)servlet处理完成后返回给context。
(5)context再返回给engine,engine再返回给端口,端口最后将页面展现给用户
用户请求(访问80端口)
发送请求发送给tomcat
tomcat有一个端口在监听8080端口)
从8080端口进入流量的会被在此端口的线程监听到
给与我们的web容器进行处理(有index.html页面显示出来 从8080端口时会有交互界面 会读取到index.jsp这种java代码)
但是java代码无法直接使用
需要利用到jsp容器
将index.jsp中的java的servlet代码进行翻译
servlet容器处理 通过catalina程序/脚本来处理从JSP容器这过来的servlet代码
并不是直接对接mysql数据库
而是直接对接用户的请求例如app中的某个功能模块
比方说看个人信息 servlet容器与app接是api进行对接(具体的URL)
数据流向最终会通过用户请求内容 去mysql数据库寻找相应的内容
最后返回给用户
1.关闭防火墙和核心防护
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.将所需的安装包放入/opt/
查看java版本
3.解jdk包
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
4.设置JDK的环境变量
vim /etc/profile.d/java.sh #/etc/profile.d/ 环境变量脚本目录
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 #输出指定java所需的类文件
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #可执行文件的位置
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile.d/java.sh 加载生效
再次查看版本
5.解tomcat包
cd /opt/Tomcat
tar zxvf apache-tomcat-9.0.16.tar.gz 解包
mv apache-tomcat-9.0.16 /usr/local/tomcat #将解压后的包剪切到/usr/local 目录中,并改名为tomcat
6.优化管理tomcat
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
后台启动
/usr/local/tomcat/bin/startup.sh
或
/usr/local/tomcat/bin/catalina.sh start
前台启动(终端关闭,tomacat停止运行)
/usr/local/tomcat/bin/catalina.sh run
关闭
/usr/local/tomcat/bin/shutdown.sh
7.启动tomcat
netstat -natp | grep 8080
8. 创建kgc和benet项目目录和文件
mkdir /usr/local/tomcat/webapps/kgc
mkdir /usr/local/tomcat/webapps/benet
echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
9.修改配置文件
vim /usr/local/tomcat/conf/server.xml
关闭并重新开启
9.验证