Tomcat基础知识

标签:centos  Java1.7  Tomcat8  
零、tomcat简介
一、安装java环境
二、安装tomcat
三、tomcat目录结构以及相关文件
四、WebAPP结构及简单部署
五、tomcat常用组件配置

QQ截图20170212183338.png

零、tomcat简介

1、tomcat简介

      tomcat是SUN公司的JSWDK(JavaServer  Web  DEvelopmentKit,是SUN公司推出的小型Servlet/JSP调试工具  )的基础上发展出来的一个优秀的完全由Java语言编写的Servlet容器;
Servlet,顾名思义,是一种运行在服务器上的小插件。Servlet最常见的用途就是扩展Web服务器的功能,可作为非常安全的、可移植的、易于使用的CGI代替品。Servlet具有以下特点:
提供了可被服务器动态加载并执行的程序代码,为客服端的请求提供相应服务;
Servlet完全用Java语言编写,因此要求运行Servlet的服务器必须支持Java语言;
Servlet完全运行在服务器端,因此它不依赖于浏览器。不管浏览器是否支持Java语言,都能请求访问服务器端的Servlet;
Tomcat基础知识

2、Tomcat工作模式

  Tomcat作为servlet容器,有以下3种工作模式:

     (1)、独立的Servlet容器:
     Tomcat作为独立的Web服务器来单独运行,Servlet容器组件作为Web服务器中的一部分而存在,这是Tomcat的默认工作模式。在这种模式下,Tomcat是一个独立运行Java程序,需要启动一个Java虚拟机(JVM)进程来运行Tomcat;
Tomcat基础知识
     (2)、其他Web服务器进程内的Servlet容器
     在这种模式下,Tomcat分别为Web服务器插件和Servlet容器组件两部分。Web服务器插件在其他的Web服务器进程内部地址空间启动一个Java虚拟机,Servlet容器组件在此Java虚拟机中运行。如有客户端发出调用Serlvet请求,Web服务器插件获得对此请求的控制并转发给Servlet容器组件(使用JNI通讯机制,即Java本地调用接口)。
Tomcat基础知识
     (3)、其他Web服务器进程外的Servlet容器[[常用]]
     在这种模式下,Tomcat分为Web服务器插件和Serlvet容器组件两部分。Web服务器插件在其他的Web服务器进程外部地址空间启动一个Java虚拟机,Servlet容器组件在此Java虚拟机中运行。如有客户端发出调用Serlvet请求,Web服务器插件获得对此请求的控制并转发给Servlet容器组件(采用IPC通讯机制,即进程间通信的一种机制)。
Tomcat基础知识


一、安装java环境

1、从Base仓库安装java开发工具包:OpenJDK;

  注:tomcat对java1.7的兼容性较好
#yum  install  java-1.7.0-openjdk-devel.x86_64  
Tomcat基础知识

2、查看JDK是否正常安装;

#java  -version  
Tomcat基础知识

3、查看java的环境配置信息;

#type  java  
Tomcat基础知识
Tomcat基础知识
Tomcat基础知识
      可以看出/usr/bin/java以及/etc/alternatives/java均为链接文件;
      java支持多版本同时运行,可以通过alternatives命令修改默认版本,或者修改/etc/alternatives/java链接文件指向要设定的默认版本的路径即可;


二、安装tomcat

1、从官网下载tomcat二进制安装包(http://tomcat.apache.org/)

#wget  http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz  

#tar  xf  apache-tomcat-8.5.11.tar.gz  -C  /usr/local/  
Tomcat基础知识
查看解压后的目录;
#ll  /usr/local/  |  grep  tomcat  
Tomcat基础知识

2、为方便管理,创建软链接;

#ln  -s  /usr/local/apache-tomcat-8.5.11/  /usr/local/tomcat  
Tomcat基础知识

3、创建环境配置脚本;

#vim  /etc/profile.d/tomcat.sh  
Tomcat基础知识
Tomcat基础知识
赋予执行权限;
#chmod  +x  /etc/profile.d/tomcat.sh  
Tomcat基础知识
加载环境配置;
#source  /etc/profile.d/tomcat.sh  
Tomcat基础知识

4、启动tomcat

#/usr/local/tomcat/bin/catalina.sh  start  或  #catalina.sh  start  
查看tomcat是否正常启动
#ss  –tnl
Tomcat基础知识

5、测试本地8080端口是否正常监听

#curl  -I  127.0.0.1:8080
Tomcat基础知识

6、通过浏览器访问测试(需指定8080端口),注意selinux与iptables策略;

Tomcat基础知识
到此tomcat安装成功;


三、tomcat目录结构以及相关文件

1、Tomcat组件

     Tomcat本身由一系列可配置的组件构成,其核心组件是Servlet容器组件,即运行在服务器上的小插件。每个tomcat组件在server.xml文件中对应一种配置元素:

Tomcat基础知识
  每一个组件都由一个Java"类"实现,这些组件大体可以分为以下几个类型:
  顶级组件:Server;
  服务类组件:Service;
  连接器组件:http,https,ajp;
  容器类组件:Engine,Host,Context;
  嵌套类组件:valve,logger,realm,loader,manger,.  .  .  ;
  集群类组件:listener,cluster,.  .  .  ;

2、tomcat目录结构

Tomcat基础知识
  bin:脚本及启动时用到的类
  conf:配置文件目录
  lib:库文件,java库,jar
  logs:日志文件目录
  temp:临时文件目录
  webapps:webapps的默认目录
  work:工作目录
 如果为rpm包安装:
  配置文件目录:/etc/tomcat
  webapps存放位置:/var/lib/tomcat/webapps
  环境配置文件:/etc/sysconfig/tomcat

3、tomcat的主要配置文件;

  serverxml.xml:主要配置文件
  web.xml每个webapp只有"部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中,此文件为所有的webapp提供默认配置;
  context.xml:每个web都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,此文件为所有的webapp提供默认配置;
  tomcat-users.xml:用户认证的账号和密码文件;
  catalina.policy:当使用-security选项启动tomcat时,会附加加载该安全配置文件,用于为tomcat设置安全策略;
  catalima.properties:Java属性的定义文件,由于设定类加载器路径,以及一些与JVM调优相关参数;
  logging.properties:日志系统相关的配置;

4、catalina.sh脚本参数详解;

#catalina.sh  –help
Tomcat基础知识


四、WebAPP结构及简单部署

1、JSP  WebAPP的组织结构

        /:webapps的根目录

        index.jsp:主页;
        WEB-INF/:当前webapp的私有资源路径,通常用于存储当前的webapp的web.xml和context.xml配置文件;
        META-INF/:类似于WEB-INF/;
        classes/:类文件,当前webapp所提供的类;
        lib/:库文件,当前webapp所提供的库文件,被打包为jar; 

2、webapp归档格式:

        常用的归档格式有4种:*.war(webapp)、*.jar(EJB的类打包文件)、*.rar(资源适配器类打包文件)、*.ear(企业级webapp);如果使用的是*.war时,默认会自动展开;

3、部署(deploy)webapp的相关操作

     eploy:将webapp的源文件放置于目标目录(网页程序文件存放目录),配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问此webapp,将其特有的类和依赖的类通过class  loader装载至JVM;
        部署方式分为自动部署(auto  deploy)和手动部署两种方式:
        自动部署只需将webapp展开到tomcat/下的webapps/目录即可;
        手动部署又分为冷部署和热部署:冷部署,及把webapp复制到指定的位置,而后才启动tomcat;热部署,则是在不停止tomcat的前提下进行部署,需要借助于manager、ant脚本、tcd(tomcat  client  deployer)等部署工具,tcd可用于远程部署;
     undeploy:反部署,停止webapp,并将webapp从tomcat实例上卸载;
     start:启动处于停止状态的webapp;
     stop:停止webapp,不再向用户提供服务,其类依然在jvm上;
     redeploy:重新部署;

4、简单冷部署一测试类应用:

#  mkdir  -pv  /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
创建文件/usr/local/tomcat/webapps/test/index.jsp内容如下:

           <%@  page  language="java"  %>
            <%@  page  import="java.util.*"  %>
            <html>
                <head>
                    <title>Test  Page</title>
                </head>
                <body>
                    <%  out.println("hello  world");
                    %>
                </body>
            </html>

调试测试页面:
#curl  127.0.0.1:8080/test/index.jsp
Tomcat基础知识
  可以看出,响应内容为编译后的页面代码;


五、tomcat常用组件配置

Tomcat基础知识

1、顶层组件Server

        Server代表tomcat  instance(实例),即表现出的一个Java进程;监听在8005端口上,只接收"SHUTDOWN"。各server监听的端口不能相同,因此,在一物理主机启动多个实例时,需要修改其监听端口为不同的端口;

        【常用属性】
         Adderss:监听shutdown命令的地址,默认为localhost;
         port:监听shutdown命令的端口,默认为8005。设置为-1,则禁止通过端口关闭Tomcat;
         shutdown:设置基于端口关闭Tomcat所需的字符串参数,默认为"SHUTDOWN"

2、服务类组件Service

        Service用于建一个或多个Connector(连接器组件)关联至一个Engine组件;

3、连接器组件Connector

       Connector负责接收请求,常见的有三种类http、https、ajp;
        进入tomcat的请求可以分为两类:
       (1)、standalone:请求来自于客户端浏览器;
       (2)、由其他的web  server反代:来自前端的反代服务器:
         nginx  –>  http  connector  –>  tomcat  
         httpd(proxy_http_module)  –>  http  connector  –>  tomcat
         httpd(proxy_ajp_module)  –>  ajp  connector  –>  tomcat
  【常用属性】:
       port:接收http请求的端口,默认8080;
       protocol:使用协议,默认HTTP/1.1
       redirectPort:接收https请求的端口,默认8443;
       connectionTimeout:每个请求最长连接时间,单位毫秒,默认20000;

       address:监听的IP地址;默认为本机所有可用地址;
       maxThreads:最大并发连接数,默认为150;
       enableLookups:是否启用DNS查询功能;
       acceptCount:等待队列的最大长度;
       secure:安全设置
       sslProtocol:SSL协议

4、容器类组件Engine

       Engine组件:Servlet实例,即servlet引擎,每个Servlet只能包含一个Engine,其内部可以一个或多个host组件来定义站点;通常需要通过defaultHost来定义默认的虚拟主机;

     【常用属性】:
       name:Engine名称
       defaultHost:默认Host
        jvmRoute:Tomcat集群节点路由标示,用于区分不同tomcat

5、容器类组件Host

        Host组件位于engine内部用于接收请求并进行相应处理的主机或虚拟主机,示例:

       <Host  name="localhost"    appBase="webapps"
        unpackWARs="true"  autoDeploy="true">
       </Host>

      【常用属性】:
        appBase:此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;
        autoDeploy:在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat;
       startStopThreads:线程池内的线程数量
       示例:

        <Host  name="tc1.magedu.com"  appBase="/appdata/webapps"  unpackWARs="true"  autoDeploy="true">
        </Host>

        简单示例:

#  mkdir  -pv  /appdata/webapps
#  mkdir  -pv  /appdata/webapps/ROOT/{lib,classes,WEB-INF}
#  vim  /usr/local/tomcat/webapps/ROOT/index.jsp

      创建一个测试页测试即可(参照第四章节,第4小节);

6、容器类组件Context

        每个Context代表一个运行在虚拟主机上的Web应用,一个Host上可以有多个Context
      【常用属性】
        path:该Web项目的URL入口;path设置为"",输入http://localhost:8080即可访问Webapp;path设置为"/test",输入http://localhost:8080/test才能访问Webapp
       docBas:webapps的路径,相对或绝对路径都可以;
       reloadable:自动部署配置,设置为true时,当Web项目的/WEB-INF/classes/和/WEB-INF/lib发生变化时,tomcat会自动重新部署Web项目。reloadable默认值为false。
     示例:

   <Context  path="/PATH"  docBase="/PATH/TO/SOMEDIR"  reloadable=""/>

7、嵌套类组件Valve

      Valve组件常用于Tomcat的日志、权限等控制,可嵌在Engine、Host、Context内;
      【常用属性】
       className:
       定义访问日志:org.apache.catalina.valves.AccessLogValve
       定义访问控制:org.apache.catalina.valves.RemoteAddrValve、org.apache.catalina.valves.RemoteHostValve
     【日志配置】
       className:必须为org.apache.catalina.valves.AccessLogValve
       directory:日志文件目录,默认为logs(相对于$CATALINA_HOME);
       prefix:日志前缀,默认为localhost_access_log;
       suffix:日志后缀,默认为.txt;
       pattern:日志记录格式;具体见后面附表;
     示例:

   <Valve  className="org.apache.catalina.valves.AccessLogValve"  directory="logs"
    prefix="localhost_access_log"  suffix=".txt"
    pattern="%h  %l  %u  %t  &quot;%r&quot;  %s  %b"  />

Tomcat基础知识
      【基于IP访问控制】
       className:必须为org.apache.catalina.valves.RemoteAddrValve
       allow:允许名单;匹配模式:可以基于IP、IP段,IP分隔符"."需要加"\"转义,可用".*"通配
       deny:拒绝名单;匹配模式同allow;
      示例:

   <Valve  className="org.apache.catalina.valves.RemoteAddrValve"  deny="172\.16\.0\..*"/>

 

 

『返回页首』

 

原创文章,作者:Jev Tse,如若转载,请注明出处:http://www.178linux.com/68003

(0)
上一篇 2017-02-08 20:06
下一篇 2017-02-09 16:27

相关推荐

  • 马哥教育网络班20期+第3周课程练习

     1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 法一: who | cut -d ‘ ‘ -f 1 | tail -u 法二: who | cut -d ’’-f&…

    Linux干货 2016-06-26
  • 文件查找工具之——find

        前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具 一、首先我们先要了解文本搜索和文件查找的区别     文本…

    Linux干货 2015-07-06
  • lvm简要及基本操作

        LVM( Logical Volume Manage,逻辑 逻辑卷管理)LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。  &nbs…

    Linux干货 2016-05-23
  • 网络概念简述和Linux网络管理命令

    网络概念简述和Linux网络管理命令 1. 网络分类 我们通常接触到的网络通常是广域网、局域网 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。 广域网(Wide Area Network,WAN):网络跨越国界、洲界,甚至全球范围。  因特网(Internet)是世界范围内最大的广域网。 2. …

    Linux干货 2016-04-19
  • LVM应用概要

    LVM — 即Logical Volume  Manager(逻辑卷管理管理),是Linux的一种磁盘管理机制。 LVM可以将物理磁盘以PV(Physical Volume)为单位抽象成VG(Volume Group)。在VG中,最小存储单元是一个PE(Physical Extent)。在VG的基础上再抽象一层,划分出LV(Logical Vol…

    2017-11-28
  • 自制linux和编译内核

    自制linux:(1)  分区并创建文件系统  fdisk /dev/sdb分两个必要的分区  /dev/sdb1 对应/boot /dev/sdb2 对应根  /mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2  挂载bootmkdir /mnt/boot 子目录必须为bootm…

    Linux干货 2017-04-02