Tomcat全攻略

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 

    <Server>
        <Service>
            <connector/>
            <connector/>
            ...
            <Engine>
                <Host>
                     <Context/>
                     <Context/>
                    ...
                 </Host>
                 <Host>
                  ...
                 </Host>
                  ...
            Engine>
        </Service>
    </Server>

每一个组件都由一个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 手动提供一测试类应用,并冷部署:

 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 通过浏览器访问测试

 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反代:来自前端的反代服务器,以下提供四种情况

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内部用于接收请求并进行相应处理的主机或虚拟主机,示例:

 <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:

<Host name="www.huwho.cn" appBase="/appdata/huwho" unpackWARs="true" autoDeploy="true">
</Host>
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>

通过浏览器访问测试:

示例2:JSP WebAPP部署应用

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

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

解压:unzip shopxx-a5-Beta.zip

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

浏览器访问测试

7.6 Context组件

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

官方示例:

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

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

   
   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>
   mkdir -pv /e-shop
    cd /e-shop
   mv shopxx-v3.0-Beta /e-shop/
   ln -sv eshop shopxx-v3.0-Beta

浏览器访问测试

        7.7 Valve组件

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

<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存在多种类型:

定义访问日志:

org.apache.catalina.valves.AccessLogValve

定义访问控制:

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

    8.Tomcat的两个管理应用

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

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

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

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

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

查看管理页面

9.Tomcat集群部署

9.1 nt(nginx+tomcat)

 1.nginx反向代理Tomcat示例

    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代理成功

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

    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主机

9.2 at(httpd+tomcat)

1.httpd反向代理Tomat示例

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>

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

    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>

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

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

    [[email protected] 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>

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

时间: 2024-10-11 23:26:32

Tomcat全攻略的相关文章

JDK - Tomcat - Eclipse - JSP - Servlet 配置运行全攻略

花了将近两个月的时间,从 JDK 开始一步一步摸索,历经千辛万苦,终于让第一个 Servlet 运行起来了,创建第一个 Servlet  程序确实要比创建第一个 Asp.net 程序困难多了,但是不要紧,趁着我还没忘先记下来,下回你再来的时候就轻松多了! 1.下载并安装JDK5.0 或者 JDK1.4.2 不要对版本号产生什么疑问,据我的理解,JDK5.0 也就是JDK1.5 ,是 JDK1.4.2 的重要升级,里面加了许多新的语言特性,为什么叫 5.0 而不叫1.5 ,我想可能是出于商业上的考

活水渠 - 云影院之云时代看片全攻略

本文讨论了大数据时代最热门的两大应用之一的云计算(另一应用是物联网)对网络视频观看体验的具体影响,以及在观看方式上区别于传统下载方式的优点. 一.视频门户类网站 此类网站以优酷.乐视等为代表,主营传统网络视频业务,使用浏览器进行直接点击链接进行观看. 优点:电视节目丰富.观看技术手段简单.大型网站服务器稳定 缺点:看不了热门电影,精华视频要收费,免费用户要看广告 解决:浏览器辅助工具或插件解决收费和广告问题,在此基础上还诞生了视频门户网 站的入口集成网站,每天看云帆可免VIP直接观看主流视频门户

fiddler Android下https抓包全攻略

fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考. 一.普通https抓包设置 先对Fiddler进行设置: 勾选“CaptureHTTPS CONNECTs”,接着勾选“Decrypt HTTPS traffic”.同时,由于我

webBrowser中操作网页元素全攻略

webBrowser中操作网页元素全攻略 2012-12-20 14:21 188人阅读 评论(0) 收藏 举报 1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBrowser1.Document.GetElementById("控件ID").InnerText; 或webBrowser1.Document.GetElementById("控件ID").GetAttr

Windows Socket五种I/O模型——代码全攻略(转)

Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权.这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误.但功能强大.为了解决这个问题,提出了进行I/O操作的一些I/O模型,下面介绍最常见的三种: Windows Socket五种I/O模型——代码全攻

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配全攻略(最权威的官方适配指导)

前台页面优化全攻略(三)

经过前两篇文章的实践,你的网站加载速度一定有了非常明显的变化.能把实践跟到这篇文章的人想必一定是极客中的极客.如果你仍对网站的加载速度不满意,可以看看再尝试一下本文中几近疯狂的终极优化方案. 你可以对网站进行快速的优化,但网站日常的节食却很难.也许你已经花了很大的力气去优化你的CSS和JavaScript代码,但是你所做的努力马上又会因为老板或客户期望的新功能而付之东流.所以看来不论是人还是网页,减肥都贵在坚持. 这篇终极减肥方案可能不适合所有的网站,但是我相信它可以引起你对网页大小的重视. 1

.Net常用技巧_VS2005[C#] 操作 Excel 全攻略(转)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; using System.Data.SqlClient; using System.Data.

Linux(CentOS)搭建SVN服务器全攻略

虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos上搭建SVN 安装#yum install subversion 1)创建svn用户#groupadd svn#useradd -g sky user//是将user加入到sky組內切换用户#su svn以后代码库的创建维护等,都用这个帐户来操作. 2)创建版本库编辑.bash_profile 加上如下配置SVN_HOME=