tomcat快速入门

简介                                  

Tomcat 是什么

Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

web服务器、web容器、应用程序服务器                    

web服务器用于提供web服务,要求能解析http协议,通常认为提供静态内容的服务器是web服务器。如apache httpd、nginx等。

对于java而言,web容器是能提供servlet容器的服务器,它们是等价的概念。常见的有tomcat、weblogic、websphere、jboss。其中tomcat只提供servlet容器,它们在功能上是等价的。除tomcat外,后面3种web容器还提供除servlet容器外的EJB容器,专用于大型分布式程序开发。

应用程序服务器是用于提供应用服务的服务器。这是业务逻辑上的概念划分。更具体一点的说,它提供WEB容器(servlet容器)、EJB容器以及其他功能。

它们之间的关系和功能大致如下:web服务器提供web服务,主要处理http请求并响应给客户端,并可以将动态请求委托给其他程序,如cgi脚本、jsp脚本、asp脚本等进行处理;web容器即servlet容器主要负责处理基于http请求的动态jsp内容;EJB容器主要提供和后端数据库服务、其他服务进行交互的功能;应用服务器通常来说包括servlet容器或EJB容器,它们都运行于支持Java的应用服务器中,因此tomcat/weblogic/websphere/jboss都算是应用服务器。

tomcat体系结构                              

tomcat是jdk+servlet(严格地说是+jsp)实现的精简版的java ee,由于它只在jdk的基础上附加了jsp和servlet类库,所以它的应用范围主要是web应用。tomcat项目目前由apache软件基金会维护。

它是一种应用程序服务器,只提供servlet容器,同时还提供apache解析静态HTML,只不过之它的处理能力不如独立的apache服务器。类似的应用程序服务还有websphere/weblogic/jetty/resin/jboss等,它们都是在jdk基础上附加各种类库实现不同程度的java ee(tomcat=jdk+servlet)。

对于tomcat来说,它高度模块化,通过各个组件实现各种功能。它的体系结构如下图所示:

 

 

其中:

  • server是顶级类,一个server算是一个tomcat实例,在此层次中可定义tomcat服务的监听端口。
  • service是server下的子组件,用于封装绑定connector和containor,并为它们提供一个名称属性。有了service就可以提供相关的服务,如监听TCP连接请求、处理http请求。注意server是管理整个tomcat实例的层次,它和提供服务没有关系。
  • connector是连接器,定义http协议(默认)以及该协议的监听端口。连接器用于接收客户端请求并将containor处理的数据返回给客户端
  • containor称为容器,它和connector连接器进行绑定。该容器内有4个子容器,包括:engine容器、host容器、context容器、Wrapper容器。容器用于分析、处理请求,并构建响应给connector以发送给客户端。它和connector是tomcat的心脏组件。
  • engine容器定义servlet引擎,用于定义引擎的名称、默认的虚拟主机。引擎用于分析http请求并将请求转发给对应的虚拟主机。
  • host容器用于定义虚拟主机。
  • context容器用于定义webapp,一个context定义一个webapp。它是真正管理servlet容器的层次。
  • wrapper容器对应的是真正的servlet容器,一个wrapper代表一个servlet,它负责管理一个Servlet,包括的Servlet的装载、初始化、执行以及资源回收。Wrapper是最底层的容器,一个context只能包含一个wrapper。在配置文件中,无法配置该容器的属性。

还有一些其他组件,如session管理组件、JMX等。

 一个server可以有多个service。一个service可以有多个connector和唯一的containor。containor是容器类,从containor层次开始,真正进入servlet容器相关的过程它包含了唯一的engine容器,engine容器中包含了一个或多个host容器,host容器中包含了一个或多个context容器,context容器中包含了唯一的wrapper。它们的组织结构大致如下:

<server>
    <service>
        <connector />
        <engine>
            <host>
                <context />
                <context />
            </host>
            <host>
                <context />
            </host>
        </engine>
    </service>

    <service>
         ......
    </service>
</server>

安装tomcat                      

 tomcat依赖于jdk,所以需要先安装jdk。tomcat和jdk版本之间存在对应关系,应该考虑好要安装哪个版本的jdk以及哪个版本的tomcat。官方给出的对应关系网址为:https://tomcat.apache.org/whichversion.html。以下是到tomcat 9.x版本和jdk的对应表。

1.安装JAVA:

[root@localhost ~]# tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -sv jdk1.8.0_191/ jdk
"jdk/jdk1.8.0_191" -> "jdk1.8.0_191/"

2.配置环境变量:

[root@localhost local]# cat /etc/profile.d/jdk.sh 
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@localhost local]# chmod o+x /etc/profile.d/jdk.sh 
[root@localhost local]#  /etc/profile.d/jdk.sh

3.查看java版本。

[root@localhost local]# ln -sv /usr/local/jdk1.8.0_191/jre/bin/java /usr/local/bin
"/usr/local/bin/java" -> "/usr/local/jdk1.8.0_191/jre/bin/java"
[root@localhost local]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

4.安装tomcat:

[root@localhost ~]# tar xf apache-tomcat-8.5.35.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -sv apache-tomcat-8.5.35/ tomcat
"tomcat" -> "apache-tomcat-8.5.35/"

5.配置环境变量:

[root@localhost local]# vi /etc/profile.d/tomcat.sh
CATALINA_BASE=/usr/local/tomcat
PATH=$CATALINA_BASE/bin:$PATH
export PATH CATALINA_BASE
[root@localhost local]# chmod 777 /etc/profile.d/tomcat.sh 
[root@localhost local]# /etc/profile.d/tomcat.sh

6.查看tomcat版本状态:

[root@localhost local]# cd /usr/local/tomcat/bin/
[root@localhost bin]# ./version.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.35
Server built:   Nov 3 2018 17:39:20 UTC
Server number:  8.5.35.0
OS Name:        Linux
OS Version:     3.10.0-693.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_191-b12
JVM Vendor:     Oracle Corporation

7.启动tomcat

[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-12-12 19:58  星火撩原  阅读(104)  评论(0编辑  收藏  举报