分布式技术-Tomcat容器01 | QiuRiMangCao

分布式技术-Tomcat容器01 | QiuRiMangCao

@author QiuRiMangCao | 秋日芒草
@Description 分布式技术 | Tomcat容器 | 01 | 其他
@time 2017-08-11

[Tomcat容器]

区域代理服务器的作用?
答:结合DNS,让浏览器访问最近的代理服务器,
让后代理服务器收集请求后通过负载均衡去访问具体的服务器。

区域代理是怎么实现的?
答:地区1-访问dns拿到网站的ip地址-返回区域代理服务器的ip地址-区域代理服务器缓存-请求具体的web服务器

/temp:运行时产生临时文件存放目录

server.xml :相当于一个总的tomcat容器

tomcat结构
<Service name="Catalina"> 一个Service就是一个站点
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 连接器
    <Engine defaultHost="localhost" name="Catalina"> 引擎
        <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 域名
    <context> 内容

Service 包含connector和container的集合

<Server port="8005" shutdown="SHUTDOWN"> 管理tomcat所有组件,可以包含多个Service

http请求-connector连接-container的引擎Engine

connector用于接收外部请求,socket暴露端口,根据protocol协议来接收请求,并封装request和response

container
    Engine :pipeline(接收connector请求通过管道的设计模式依次传递给子容器)客户端处理引擎
    Host : web服务器的虚拟主机
context
    部署web容器的上下文

清楚架构设计和每个模块的功能后,可以详细的阅读以下源代码
阅读源码的方式:将源码下载到本地,并跑起来,断点去调试源代码

tomcat源码入口:Bootstrap.java 中 main方法

如何配置服务端的本地目录映射成web站点目录,提供给客户端访问?
答:该web站点称为虚拟目录,并且一个虚拟目录只有一个虚拟根目录,其他的为子目录

为什么访问:http://localhost:8080/就能访问到tomcat根目录?
答:tomcat会默认去去webapps下的root应用下的程序

我们如何设置自己的虚拟根目录和子目录?
答:
1. appBase="webapps" 将root子目录映射为根目录
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
2. 在Server.xml中设置<Context> 通过在host节点下设置context
<Context path="" docBase="" /> path:访问目录目录的路径,必须为空,才能访问我们存放docBase下的文件
docBase:指定虚拟目录映射到服务器端本地文件系统的路径
docBase:配置为相对路径是相对于appBase="webapps"来的

创建虚拟子目录方式
方法1:
<Context path="/virtual" docBase="" /> /virtual就是虚拟子目录
可以通过http://localhost:8080/virtual/来访问

方法2:
D:\apache-tomcat-8.0.43\conf\Catalina\localhost下
<Context path="/virtual" reloadble="true" docBase="" /> /virtual就是虚拟子目录

方法3
<Context path="/virtual" reloadble="true" docBase="D:\DEMO.war" />

方法4
在host元素下的appbase属性设置应用程序的基准目录中如何WEB-INF/web.xml

这样我们可以通过server.xml这4中方法来找公司项目部署的位置

一个文件系统目录可以被映射成为多个虚拟web目录
虚拟web子目录名称可以是多级目录结构形式

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
配置unpackWARs="false" 这样可以不解压war

Host中的主机名不能重复

基于主机名的虚拟主机
    1.在server.xml中配置多个站点
    2.修改system32/drivers/etc/hosts
    3.通过www.baidu.com:8080/index.html就能使用

基于端口号
    一个tomcat部署二个应用可以用多个Service来区分,端口号不同来通过nginx来反代
        注意二个service的name不能重复

建议使用虚拟子目录来管理不同项目就行,
<Context path="/virtual" reloadble="true" docBase="D:\DEMO.war" />
不同的path定位到不同的应用


task:1.tomcat源码下载
      2.pipeline介绍
      3.Charles工具的安装
      4.反射
      5.如何调用main方法
      6.tomcat运行支持的3种模式
      7.分库分表
      8.Mycat
      9.Telnet命令的使用
      10.Restful

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值