Tomcat全攻略

简介:

  1.tomcat是什么?

     Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。Tomcat是应用(java)服务器,它是一个servlet容器,是Apache的扩展,但它是独立运行的。tomat应用于Java Servlet, JavaServer Pages,Java Expression Language以及其他的Javaweb开发的技术。

                 The Apache Tomcat software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.The Apache Tomcat software is developed in an open and participatory environment and released under the Apache License version 2. The Apache Tomcat project is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved, click here.

Apache Tomcat software powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. Some of these users and their stories are listed on the PoweredBy wiki page.

Apache Tomcat, Tomcat, Apache, the Apache feather, and the Apache Tomcat project logo are trademarks of the Apache Software Foundation.

--from http://tomcat.apache.org/

   2.tomcat yum安装

      1.yum安装jdk

    yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 

      2.yum安装tomcat

        yum install -y tomcat, tomcat-lib, tomcat-admin-webapps, tomcat-webapps, tomcat-docs-webapp

    3.tomcat rpm包程序环境

    1.查看程序环境方式

    rpm -ql tomcat

    2.环境介绍

    配置文件目录:/etc/tomcat

    主配置文件:server.xml 

    webapps存放位置:/var/lib/tomcat/webapps/

      examples

       manager

       host-manager

       docs

       Unit File:tomcat.service

    环境配置文件:/etc/sysconfig/tomcat

    4.tomcat配置文件构成

    server.xml:主配置文件;

    web.xml:每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF目录中;web.xml文件为所有的webapps提供默认部署相关的配置;

    context.xml:每个webapp都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF目录中;context.xml文件为所有的webapps提供默认配置;

    tomcat-users.xml:用户认证的账号和密码文件;

    catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略; 

    catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;

  logging.properties:日志系统相关的配置;

     5.Tomcat的核心组件:server.xml 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     <Server>
         <Service>
             <connector/>
             <connector/>
             ...
             <Engine>
                 <Host>
                      <Context/>
                      <Context/>
                     ...
                  < /Host >
                  <Host>
                   ...
                  < /Host >
                   ...
             Engine>
         < /Service >
     < /Server >

wKioL1lZAa7wYbgxAAA7L9EYdQM016.png

    每一个组件都由一个Java“类”实现,这些组件大体可分为以下几个类型:

    顶级组件:Server

    服务类组件:Service

    连接器组件:http, https, ajp(apache jserv protocol)

    容器类:Engine, Host, Context

    被嵌套类:valve, logger, realm, loader, manager, ...

    集群类组件:listener, cluster, ...

    6.JSP WebAPP介绍

        tomcat能够运行JSP WebAPP。现在主流大型的web电商web服务都是用JSP开发的。下面介绍JSP WebAPP。

    6.1 JSP WebAPP的组织结构

           /: webapps的根目录

        index.jsp:主页;

        WEB-INF/:当前webapp的私有资源路径;通常用于存储当前webapp的web.xml和context.xml配置文件;

        META-INF/:类似于WEB-INF/;

        classes/:类文件,当前webapp所提供的类;

        lib/:类文件,当前webapp所提供的类,被打包为jar格式;

    6.2 webapp归档格式

        .war:webapp

        .jar:EJB的类打包文件;

        .rar:资源适配器类打包文件;

        .ear:企业级webapp;

    

    6.3 部署(deploy)webapp的相关操作:

        deploy:将webapp的源文件放置于目标目录(网页程序文件存放目录),配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问此webapp;将其特有的类和依赖的类通过class loader装载至JVM;

        部署有两种方式:

        1.自动部署:auto deploy

        2.手动部署:

         2.1 冷部署:把webapp复制到指定的位置(rpm安装的tomcat在/var/lib/tomcat/webapps),而后才启动tomcat;

        2.2 热部署:在不停止tomcat的前提下进行部署;

            热部署的部署工具有:manager、ant脚本、tcd(tomcat client deployer)等;

        undeploy:反部署,停止webapp,并从tomcat实例上卸载webapp;

        start:启动处于停止状态的webapp;

        stop:停止webapp,不再向用户提供服务;其类依然在jvm上;

        redeploy:重新部署;

    6.4 手动提供一测试类应用,并冷部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
  mkidr  -pv   /usr/local/tomcat/webapps/test/ {classes,lib,WEB-INF}    #创建JSP WebAPP相关的目录以及文件
  vi  /usr/local/tomcat/webapps/test/index .jsp                         #手动创建一个WebAPP应用
<%@ page language= "java"  %>
<%@ page  import = "java.util.*"  %>
     <html>
         < head >
             <title>Test Page< /title >
         < /head >
         <body>
             <% out.println( "hello world" );
             %>
         < /body >
     < /html >

        6.4.1 通过浏览器访问测试

wKiom1lZBCKCIF0hAAA9zqfU2Hg657.png

    7.Tomcat的常用组件配置

        7.1 Server

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

        7.2 Service

            用于实现将一个或多个connector组件关联至一个engine组件;

        7.3 Connector组件

        负责接收请求,常见的有三类http/https/ajp;

        进入tomcat的请求可分为两类:

        (1) standalone : 请求来自于客户端浏览器;

        (2) 由其它的web server反代:来自前端的反代服务器,以下提供四种情况

1
2
3
4
nginx --> http connector --> tomcat 
httpd(proxy_http_module) --> http connector --> tomcat
httpd(proxy_ajp_module) --> ajp connector --> tomcat 
httpd(mod_jk) --> ajp connector --> tomcat

        Connector属性:

            port="8080" 

            protocol="HTTP/1.1"

            connectionTimeout="20000"

            address:监听的IP地址;默认为本机所有可用地址;

            maxThreads:最大并发连接数,默认为200;

            enableLookups:是否启用DNS查询功能;

            acceptCount:等待队列的最大长度;

            secure:安全相关

            sslProtocol:ssl安全协议

        7.4 Engine组件

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

属性:

name=

defaultHost="localhost"

jvmRoute=

        7.5 Host组件

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

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

        常用属性说明:

        (1) appBase:此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;

        (2) autoDeploy:在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat;

        示例1:       

1
2
<Host name= "www.huwho.cn"  appBase= "/appdata/huwho"  unpackWARs= "true"  autoDeploy= "true" >
< /Host >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir  -pv  /appdata/huwho       #创建webapps的存放目录
mkdir  -pv  /appdata/huwho/ROOT/ {lib,classes,WEB-INF}    #创建webapp的相关文件
vi  /appdata/huwho/ROOT/index .jsp          #提供一个测试页即可
<%@ page language= "java"  %>
<%@ page  import = "java.util.*"  %>
<html>
< head >
     <title>Test Page< /title >
< /head >
<body>
     <% out.println( "tomcat server node1" );
     %>
< /body >
< /html >

        通过浏览器访问测试:            

wKiom1lZBm7zvHrXAABGiIf6q3Y200.png

        示例2:JSP WebAPP部署应用

            注:在示例1实验的基础上进行此实验,确保目录在/appdata/huwho,进行如下操作

            下载此压缩包:shopxx-a5-Beta.zip

            解压:unzip shopxx-a5-Beta.zip

            创建软链接:ln -sv shop shopxx-v3.0-Beta

                浏览器访问测试

wKiom1lZB6HSwRdAAAGstSjPePo785.png

    7.6 Context组件

            Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。

官方示例:

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

            在上面实验的基础上加入context组件内容

1
2
3
4
5
6
7
8
    
    vi  /etc/tomcat/server .xml
      <Host name= "www.huwho.cn"  appBase= "/appdata/huwho"  unpackWARs= "true"  autoDeploy= "true" >
        <Context path= "/e-shop"  docBase= "/e-shop/eshop"  reloadable= "true" />
        <Valve className= "org.apache.catalina.valves.AccessLogValve"  directory= "logs"
                prefix= "huwho_access_log."  suffix= ".log"
                pattern= "%h %l %u %t &quot;%r&quot; %s %b"  />
         < /Host >
1
2
3
4
    mkdir  -pv  /e-shop
     cd  /e-shop
    mv  shopxx-v3.0-Beta  /e-shop/
    ln  -sv eshop shopxx-v3.0-Beta

             浏览器访问测试

wKiom1lZCRezkU5WAAHUDanAK1Y372.png

        7.7 Valve组件

            用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。

1
2
3
<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"  />

            Valve存在多种类型:

            定义访问日志:

1
org.apache.catalina.valves.AccessLogValve

            定义访问控制:

1
2
org.apache.catalina.valves.RemoteAddrValve 
  <Valve className= "org.apache.catalina.valves.RemoteAddrValve"  deny= "172\.16\.100\.67" />

    8.Tomcat的两个管理应用

        Tomcat有它自己的管理应用,我们只需要经过简单的配置就可以启用它。

一个是manager,另一个是host-manager。

1
2
3
4
  vi  tomcat- users .xml   #配置文件中加入以下三行开启tomcat管理应用 
  <role rolename= "admin-gui" />
  <role rolename= "manager-gui" />
  <user username= "tomcat"  password= "123456"  roles= "manager-gui,admin-gui" />

        配置好了,让我们通过浏览器访问瞧瞧。点击图中标识的位置,就可以进入管理中心了。

wKiom1lZCj6iV0QwAAHswHzdE6I166.png

        提示输入账号以及密码。根据配置文件自己配置的账号密码,输入即可。

wKioL1lZCkKCZVV5AAGDvJUYyG8557.png

        查看管理页面

wKiom1lZCkbAcUV_AAEwpZy4l0o861.png

wKiom1lZCkiCLRtSAADYEM-o8jY401.png

    9.Tomcat集群部署

     9.1 nt(nginx+tomcat)

         1.nginx反向代理Tomcat示例

1
2
3
4
5
6
7
8
9
     server {
         server_name www.huwho.cn;
         listen 80;
         location  / {
         proxy_pass http: //192 .168.0.13:8080;
         }
         location ~* \.(jsp| do ) {
         proxy_pass http: //192 .168.0.13:8080;
       }

        打开浏览器测试,nginx代理成功wKiom1lZC6zjFEh7AAByqC8kG90749.png

        2.nginx负载均衡反向代理Tomcat示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     vi  /etc/nginx/nginx .conf      #http{}段中加入如下内容
     
         upstream tcsrvs {
         #hash $request_uri consistent;
         server 192.168.0.13:8080;
         server 192.168.0.14:8080;
     }
     vi  /etc/nginx/conf .d /huwho .conf
         server {
         server_name www.huwho.com;
         listen 80;
         location  / {
         proxy_pass http: //tcsrvs
         }
       }

    打开浏览器测试,web页面正常访问,且能访问两台Tomat主机

wKiom1lZDFqCoDMpAAByqC8kG90789.png

wKiom1lZDG3wPPfnAABzMxuvJ_M183.png

    9.2 at(httpd+tomcat)

     1.httpd反向代理Tomat示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi  /etc/httpd/conf .d /huwho .conf  
     <VirtualHost *:80>
     ServerName www.huwho.cn
     ProxyRequests Off
     ProxyVia On
     ProxyPreserveHost On
     <Proxy *>
     Require all granted
     < /Proxy >
     ProxyPass / http: //192 .168.0.13:8080/
     ProxyPassReverse / http: //192 .168.0.13:8080/
     <Location />
     Require all granted
     < /Location >
     < /VirtualHost >

wKiom1lZDT3DS6vmAABLZxwzxaM430.png

   2.proxy_http_module代理配置示例(代理+负载均衡)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
     cat  httpd-tomcat.huwho.conf
     <Proxy balancer: //tcsrvs >
         BalancerMember http: //192 .168.0.13:8080 loadfactor=1
         BalancerMember http: //192 .168.0.14:8080 loadfactor=2
         
         ProxySet lbmethod=byrequests
     < /Proxy >
     
     <VirtualHost *:80>
         ServerName www.huwho.cn
         ProxyRequests Off
         ProxyVia On
         ProxyPreserveHost On
         <Proxy *>
             Require all granted
         < /Proxy >
         ProxyPass / balancer: //tcsrvs/
         ProxyPassReverse / balancer: //tcsrvs/ 
         <Location />
             Require all granted
          < /Location >
         <Location  /balancer-manager >
             SetHandler balancer-manager
             ProxyPass !
             Require  ip 10.0.0.1
         < /Location >
     < /VirtualHost >

wKiom1lZDhfw8RooAAByu0MX6rc106.png

wKioL1lZDhezfKkLAABy_brW_qw602.png

            打开浏览器测试,web页面正常访问,且能访问两台Tomat主机

   3. proxy_ajp_module代理配置示例(代理+负载均衡)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     [root@httpd conf.d] # cat http-ajp-huwho.conf 
     <Proxy balancer: //ajsrvs >
         BalancerMember ajp: //192 .168.0.13:8009
         BalancerMember ajp: //192 .168.0.14:8009
         ProxySet lbmethod=byrequests
     < /Proxy >
     
     
     <VirtualHost *:80>
         ServerName ajp.huwho.cn
         ProxyRequests Off
         ProxyVia On
         ProxyPreserveHost On
         <Proxy *>
             Require all granted
         < /Proxy >
         ProxyPass / balancer: //ajsrvs/
         ProxyPassReverse / balancer: //ajsrvs/
         <Location />
             Require all granted
         < /Location >
     < /VirtualHost >

wKiom1lZDnmwyO2FAABydN6CpGk045.pngwKioL1lZDpHgkVOOAABzHONGCqw927.png

         打开浏览器测试,web页面正常访问,且能访问两台Tomat主机



本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1943885,如需转载请自行联系原作者

相关文章
|
4月前
|
XML Java 应用服务中间件
Tomcat - 部署项目的四种方式
Tomcat - 部署项目的四种方式
40 0
|
14天前
|
移动开发 Java 应用服务中间件
tomcat第1章 tomcat介绍、安装、部署项目
tomcat第1章 tomcat介绍、安装、部署项目
|
7天前
|
运维 应用服务中间件 Linux
Tomcat详解(九)——Tomcat虚拟主机配置实战
Tomcat详解(九)——Tomcat虚拟主机配置实战
10 1
|
11天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat
|
8月前
|
运维 监控 Java
【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)下)
【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)下)
136 1
|
8月前
|
运维 负载均衡 前端开发
【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)(上)
【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)
74 0
|
11月前
|
Java 应用服务中间件 Apache
Tomcat环境搭建
Tomcat环境搭建
77 0
|
应用服务中间件
|
网络协议 安全 Java
Linux系统安装Tomcat一条龙服务
Linux系统安装Tomcat一条龙服务
114 0
Linux系统安装Tomcat一条龙服务
|
XML Java 应用服务中间件
【Tomcat】壹 - Tomcat的快速入门:你也许会用Tomcat,但你真的了解它吗?本文章收录了Tomcat的简介、Tomcat各文件夹的作用、Tomcat的安装卸载使用,手动部署Tomcat
【Tomcat】壹 - Tomcat的快速入门:你也许会用Tomcat,但你真的了解它吗?本文章收录了Tomcat的简介、Tomcat各文件夹的作用、Tomcat的安装卸载使用,手动部署Tomcat
【Tomcat】壹 - Tomcat的快速入门:你也许会用Tomcat,但你真的了解它吗?本文章收录了Tomcat的简介、Tomcat各文件夹的作用、Tomcat的安装卸载使用,手动部署Tomcat

热门文章

最新文章