• tomcat部署


    目录

    Tomcat简介

    Tomcat和Apache的比较

    (1)两者的相同点:

    (2)两者的不同点:

    Tomcat组成

    Tomcat处理请求过程

            Tomcat数据流向

    Tomcat部署


            tomcat概述

    tomcat是由apache软件基金会下属的jakarta项目开发的一个servlet容器,安装SunMicrosystems提供的技术规范,实现了对servlet和javaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能

    tomcat可以解析静态页面也可以解析动态页面 (JSP页面) ,但是解析静态页面的效率没有apache好。可以解析动态页面是因为tomcat是java语言开发的,所以想要使用tomcat必须在服务器上安装JDK环境

    • Tomcat和Apache的比较

    (1)两者的相同点:

    两者都是由Apache组织开发的

    两者都有HTTP服务器的功能

    两者都是开源的

    (2)两者的不同点:

    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的扩展,但是也可以独立运行

    • Tomcat组成

    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通过网页表单获取用户输入数据、访问书库及其他数据源,然后动态的创建网页。

    • Tomcat处理请求过程

            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再返回给端口,端口最后将页面展现给用户

            Tomcat数据流向

    用户请求(访问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.验证

  • 相关阅读:
    Deep Dual-resolution Network 原理与代码解析
    基于蝙蝠算法的无人机航迹规划-附代码
    React.createRef
    zookeeper高级特性
    MySQL 执行计划参数
    cloudenative1-2: go语言特性
    Socket编程
    学习笔记:机器学习之支持向量机(二)
    基于SSM的校园订餐管理系统
    设计模式之解释器模式
  • 原文地址:https://blog.csdn.net/a_b_e_l_/article/details/126729501