Tomcat动态Web服务

Tomcat

Web站点架构中属于后端应用程序服务器阶段,并且是运行 *.jsp代码的平台,基于Java编写实现


Java是可以写应用程序的一个实用的编程语言,其中后端应用程序与前端服务器或者之间通过固定的CGI(Common Gateway Interface)协议进行交互

Java是一个纯面向对象的编程语言,使用JDK(Java Development Kit)Java开发调试工具进行编译,然后在JVM(Java Virtual Machine)上运行

通过servlet类库来提高Java程序的快速开发,实现运行动态服务器网站的应用

通过JSP(Java Server Page)类库实现将代码嵌入到web服务html语言中使用,实现分离管理

Java技术分为三个方向:(基于JDK)

SE(Standard Edition):标准版

EE(Enterprise Edition):升级版

ME(Mobile Edition):手机端(不常用)


Tomcat的基础

需要能够使用tomcat,前提是需要部署JDK

安装方法:(注意需要另外安装JDK)

1.Base Repo:

    # yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel(通过依赖关系下载安装其他组件)

    # 安装需要使用的tomcat相关包,会自动解决依赖性关系

      tomcat-admin-webapps      提供管理tomcat的应用程序

      tomcat-webapps     提供应用程序

      tomcat-docs-webapp    提供一些应用程序文档

2.网站下载

    # http://www.oracle.com/technetwork/java/javase/downloads/index.html

    # 此网站是下载jdk工具包,可下载“.rpm”结尾的包直接安装,为便于命令行使用,可将二进制程序文件路径加入PATH变量

    # http://tomcat.apache.org/ 网站下载tomcat安装包

    # tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/

    # cd /usr/local

    # ln -sv apache-tomcat-VERSION  tomcat  (可便于后续版本的升级)

    # 所有相关配置文件,二进制程序,都会在/usr/local/tomcat目录下

    # 因为需要普通用户身份运行,需要修改用户、数组信息:

            chown -R USER.GROUP /usr/local/tomcat

    # 此安装模式下启动tomcat 的方式:

            需要切换普通用户

            /usr/local/tomcat/bin/catalina.sh start



Tomcat的配置(基于Base Repo安装环境下)

1.配置文件的基本构成:(/etc/tomcat/目录下)

server.xml: 主配置文件

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

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

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

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

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

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


2.主配置文件,也就是核心组件/etc/tomcat/server.xml的基本格式如下:

<Server>

   <Service>

      <connector/>

      <connector/>

       ...

      <Engine>

          <Host>

              <Context/>

              <Context/>

               ...

          </Host>

          <Host>

           ...

           </Host>

         ...

     </Engine>

  </Service>

</Server>

tomcat依赖于不同组件的集合,具体分为以下几个类型:

顶级组件:Server

表现为一个Java进程,监听在8005端口,默认是可接收“SHUTDOWN”指令来关闭tomcat服务(为其他用户联机进入串改,可自定义),各server监听的端口不能相同,因此,在同一物理主机启动多个实例时,需要修改其监听端口为不同的端口

服务类组件:Service

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

连接器组件:Connector

主要负责接收请求,主要有三类:http、https、ajp(apache jserv protocol)

容器类组件:Engine、Host、Context(用来存放动态站点代码的配置段)

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

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

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

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

Context组件:当应用程序的文件不在Host组件内设定的站点内时,可用此组件进行设置,实现URL的映射,格式如下:

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

/PATH:表示应用程序名

/PATH/TO/SOMEDIR:表示应用程序映射后的路径地址,一把情况下,为了便于管理,通常此路径是应用程序的软连接

被嵌套类组件:Valve、Logger、Realm, Loader、Manager, ...

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


3.tomcat服务是默认监听在8080端口,因为tomcat内部运行的都是应用程序,不需要特权,为避免影响安全,所以是以普通用户的方式运行(普通用户默认是不可以监听1023以下的端口的)


4.默认的站点根路径:/usr/share/tomcat/webspps/(是/var/lib/tomcat/webapps的链接)

在根路径下存放着各类应用程序,每个应用程序有独立的组织结构,结构如下:

index.jsp, index.html:主页;

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

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

classes/:类文件,当前应用程序所提供的类;

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

需要注意的是,区别于其他的web服务器,tomcat默认的主网页会另外存放在根路径下的ROOT子目录中

其中有两个管理应用程序:

manager:管理webapps应用程序,可网页界面进行操作

host-manager:管理虚拟主机

都需要在/etc/tomcat/tomcat-users.xml文件中,建立对应的管理账号



deploy:部署应用程序

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

部署有两种方式:

1.自动部署:auto deploy

2.手动部署:

    冷部署:把webapp复制到指定的位置,而后才启动tomcat

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

    手动部署工具:manager、ant脚本、tcd(tomcat client deployer)等                

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

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

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

redeploy:重新部署



Tomcat添加反代服务

1.通过nginx实现反代服务,设置简单,在虚拟主机server{……}语句块下设置URL转发即可,示例如下:

location / {

proxy_pass http://www.a.com:8080; (假设此主机名是tomcat主机)

}

2.利用httpd服务的proxy_module模块配置相关虚拟主机信息,其中:

proxy_http_module:适配http协议客户端

proxy_ajp_module:适配ajp协议客户端

在httpd服务器上设置的proxy_http_module代理配置的示例如下:(ajp协议只需将下面“http”换为“ajp”)

<VirtualHost *:80>

ServerName www.a.com (假设此主机名是tomcat主机)

ProxyRequests Off

ProxyVia On

ProxyPreserveHost On (保留客户端发送的请求中访问的主机名)

<Proxy *> (对代理服务的授权)

Require all granted

</Proxy>

ProxyPass / http://www.a.com:8080/ (将所有内容都代理到tomcat上)

ProxyPassReverse / http://www.a.com:8080/

<Location /> (对URL的授权)

Require all granted

</Location>

</VirtualHost>

<LocationMatch "\.(jsp|do)$>      (只代理动态页面到tomcat上)

ProxyPass / http://tc1.magedu.com:8080/

</LocationMatch>


Tomcat的负载均衡的实现

1.基于nginx作为负载调度器时,则是需要通过配置upstream {…}语句块和server{…}语句块,进行相关配置

2.基于haproxy作为负载调度器时,则是通过frontend配置段和backend配置段进行性设置

3.还有少数会使用httpd作为负载调度器,基本的配置示例如下:

<proxy balancer://NAME>

BalancerMember http://TomcatServer1_IP:8080 (当时用ajp协议时,则将端口号改为默认的8009即可实现)

BalancerMember http://TomcatServer2_IP:8080

ProxySet lbmethod=byrequests

</Proxy>

<VirtualHost *:80>

ServerName www.a.com

ProxyVia On

ProxyRequests Off

ProxyPreserveHost On

<Proxy *>

Require all granted

</Proxy>

ProxyPass / balancer://NAME/

ProxyPassReverse / balancer://NAME/

<Location />

Require all granted

</Location>

<Location /balancer-manager> (启用自带的页面管理接口)

SetHandler balancer-manager

ProxyPass !

Require all granted

</Location>

</VirtualHost>

 

tomcat主机一般情况下都是需要做会话保持功能,方法有如下三种:

1.session sticky(会话粘性)

通过Source_IP的调度算法或者Cookie实现 (此方法可能存在单点失败的问题)

2.sesssion cluster

在tomcat主机上启用集群配置 (不适用于大规模环境)

3.session server

利用专门主机,存储会话,常用的存储系统:memcached、redis

memcached

高性能、分布式的内存对象缓存系统

基于最简单的Key---Value键值对来进行存储,并且所有数据都是存储在内存中,一旦memcached进程关闭,则存储就会丢失



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值