tomcat虚拟主机_动力节点Java学院整理

对于Tomcat服务器,可以放置多个网站(多个web应用),这就是讲配置多个虚拟主机,可以看成好像有多个主机,而每个主机上有一个web应用。如同之前的文章所说的,对于Tomcat服务器来讲,在server.xml文件中,一个<Host>标签就代表着一台虚拟主机,之前的文章所用的都是默认的虚拟主机,这个在server.xml文件中是这样定义的:

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

可以看到这个已有的虚拟主机的名称(“localhost”)正好是浏览器访问本机的回环地址的主机名,appBase属性是存放web应用的目录,autoDeploy指是否自动部署,unpackWARs指是否自动解压war包,如果为false则不解压直接从war包中运行应用程序。

  而我们想配置多个虚拟主机也是这样,在server.xml文件中添加<Host>标签,指定name属性和appBase属性之后,再添加web应用。

  通常配置虚拟主机方式与网站域名比较相关,而我没有有域名的网址,因此直接修改hosts文件将域名重定向作为学习在服务器中虚拟主机的添加和配置。

  修改Tomcat服务器中的server.xml文件,添加<Host>标签,name属性采取“域名”的方式,并将该虚拟主机存放web应用的目录【fjdingsd】放在非Tomcat所在的【D】盘下:

<Host name="www.fjdingsd.com" appBase="D:\fjdingsd" autoDeploy="true" unpackWARs="true">
</Host>

   【news】目录中:

当在server.xml中添加好虚拟主机之后,直接将web应用放置在对应的虚拟主机存放web应用目录,注意,这里是由<Host>标签中appBase定义的D盘下【fjdingsd】目录,而我的web应用【news】就应该放这其中,在我的web应用所在目录中有自定义的home.html文件。

现在就是需要将定义的虚拟主机名和ip绑定,因为没有向DNS服务器注册,所以我就使用hosts文件中将我的虚拟主机名与本机ip地址绑定:  

这样启动Tomcat服务器,在浏览器中输入,可以看到: 

 

这样就配置好了一个虚拟主机,并且在这虚拟主机中还有web应用。

  这里只是小试一下对Tomcat服务器的虚拟主机配置,而如果想真正让外界访问我们配置的虚拟主机(网站),应该向DNS服务器注册域名才行。

  不管在Tomcat服务器中添加了多少个虚拟主机,最终都是转为ip地址向服务器访问。这里就会有一个问题,如果每个web应用都设置了首页,而又不在浏览器中输入域名,而是直接通过ip地址打开,那么服务器怎么知道应该是去哪个虚拟主机寻求资源呢?

  答案就在Tomcat服务器的引擎<Engine>上,由server.xml文件中的<Engine>标签定义了Tomcat服务器的默认虚拟主机:

<Engine defaultHost="localhost" name="Catalina">
 ...
 <Host name="localhost" ...> </Host>
 <Host name="www.fjdingsd.com" ...> </Host>
 ...
</Engine>

因此如果我想改变Tomcat服务器的默认虚拟主机,就修改<Engine>标签中的“defaultHost”属性。

================================================================

  如果要将开发好的web应用部署到远程服务器中,可以将web应用进行压缩成war格式,再进行传输,在Tomcat服务器运行的过程中,如果在其存放web应用的目录中检测到新增的war包,则会进行自动解压并部署(<Host>中的unpackWARs属性和autoDeploy属性)。这种方式最适合向远程服务器进行新的web应用传递并管理。
  那么如何对开发好的web应用进行war打包呢:

      在cmd中键入 “jar -cvf  应用名.war  应用名”。

如我的web应用为D盘下【fjdingsd】目录中的【news】目录,那么我在cmd中就该这么输入:jar  -cvf  news.war  news

并得到了war文件: 

 

然后将这个news.war往Tomcat的【webapps】目录中一放,过几秒后Tomcat就会对其自动解压,Tomcat服务器一定要先打开才会看到自动解压的过程。

  过3、4秒后:

如果在Tomcat运行的过程中,将已经自动解压的war包删除,则过几秒Tomcat也会自动将解压后的web应用删除,这点请注意。

  如果是在Tomcat服务器未启动之前,将war包放入【webapps】目录中,那么Tomcat启动后会自动解压并部署。

  如果在是Tomcat解压的war包,而在将Tomcat关闭后再删除war包,那么在此启动Tomcat后之前由war包解压出来的web应用不会被删除。

Tomcat的体系结构  

  Tomcat的体系结构可以从其最重要的server.xml文件中进行结构分析,下图是一张Tomcat的体系结构图:

  

结合server.xml文件可以看到:  

  Tomcat启动后,也就是服务器(<Server>标签),启动后也会启动一些监听器(<Listener>)和一些全局命名资源(<GlobalNamingResources>)。

  除了服务器(<Server>标签)被启动后,还会启动“服务”(<Service>),正如在cmd中键入的“services.msc”的那种。 

 

  在服务(<Service>)下会有各种连接器(<Connector>),如上面体系结构图所示,其中和浏览器打交道的连接器(<Connector>)定义了连接协议(protocol),连接端口(port),连接超时(connectionTimeout)等等属性,当然还要别的用途的连接器。

  

  在服务(<Service>)下除了各种连接器(<Connector>),还有一个引擎(<Engine>),当浏览器将一些请求发来时就通过连接器(<Connector>)交给引擎(<Engine>),引擎(<Engine>)中可以包含一个或多个虚拟主机(<Host>),而引擎也规定了哪个虚拟主机是默认访问的。 

 

  引擎(<Engine>)通过寻找指定的虚拟主机(<Host>)将请求交给它,然后由虚拟主机(<Host>)来寻找是哪个web应用,虚拟主机(<Host>)定义了浏览器需输入的主机名称、web应用存放的位置,和别的一些属性等等 

 

  而至于何种web应用就要看采用哪种虚拟目录映射了,如果是添加<Context>,那么一个<Context>标签就代表一个web应用  

  或者是直接将web应用所在目录放在<Host>标签指定的路径,那么就没有<Context>标签来代表该web应用

(0)

相关推荐

  • tomcat目录结构简介_动力节点Java学院整理

    tomcat目录结构简介 如果我们有一个web应用,名称为"mail"(同时也是web应用所在目录的名称),那么其目录内不同类型的文件应该服从如下放置的规则: 一般来讲: 对于html.jsp.css.js文件等,可以直接放置在web应用所在目录中,当然如果某些文件比较多,可以另外创建一些目录来存放. 而对于除了上述几种文件外,一些不希望被外界能访问到的文件必须放在[WEB-INF]目录中,文件名不许更改,纯大写,一点不能有区别,否则必定出错,而在这个目录下会存放一些我们开发所需的Ja

  • Linux下Tomcat8.0.44配置使用Apr的方法

    听说Apr可以提高tomcat很多的性能,配置具体如下 1.安装apr 1.5.2 [root@ecs-3c46 ]# cd /usr/local/src [root@ecs-3c46 src]# wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz [root@ecs-3c46 src]# tar -xzvf apr-1.5.2.tar.gz [root@ecs-3c46 src]# cd apr-1.5.2 [root@ecs-3c46 apr

  • 详解tomcat热部署和热加载的方法

    详解tomcat热部署和热加载的方法 我在项目开发过程中,经常要改动Java/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml -> context 属性中 设置 reloadable="true" <Context docBase="xxx" path="/xxx" reloadable="true"/&

  • Linux server配置安装Java与Tomcat服务器教程详解

    系统:Ubuntu 16.04 dev_desktop 1.Java安装并配置环境变量 (1)从Java官方网站下载最新版JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载jdk压缩包 jdk-8u144-linux-x64.tar.gz (2)  将压缩包解压并复制到/usr/lib 目录下 tar -zxvf jdk-8u144-linux-x64.tar.gz sudo cp -r ./jdk

  • tomcat之目录映射_动力节点Java学院整理

    web应用的概念:一个web应用包含了许多我们做好的web资源,里面或许包括了多个静态web资源和动态web资源,如html.css.js文件,jsp文件,Java程序,jar包和配置文件等等,如我在Tomcat的[webapps]目录下的自定义目录[fjdingsdapp]中包含了一个1.html文件,那么这个在[fjdingsdapp]整个可以运行文件中的所有资源可以称为是我开发的一个web应用程序,简称web应用,而单单[fjdingsdapp]这个包含所有我开发的web资源称为我的web

  • Linux 中Tomcat远程调试代码的实现方法

    Linux 中的tomcat远程调试代码 1,是要编辑catalina.sh文件.  而且要改成这 样: CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp :transport=dt_socket,server=y,suspend=n,address=5888" 2.eclipse 中设置: 第一步: 第二步: 第三步: 以上就是Linux 中Tomcat远程调试代码的实现方法,如有疑问请留言

  • tomcat虚拟主机_动力节点Java学院整理

    对于Tomcat服务器,可以放置多个网站(多个web应用),这就是讲配置多个虚拟主机,可以看成好像有多个主机,而每个主机上有一个web应用.如同之前的文章所说的,对于Tomcat服务器来讲,在server.xml文件中,一个<Host>标签就代表着一台虚拟主机,之前的文章所用的都是默认的虚拟主机,这个在server.xml文件中是这样定义的: <Host name="localhost" appBase="webapps" autoDeploy=&

  • Tomcat管理平台_动力节点Java学院整理

    我们可能会将很多web应用交给Tomcat,那么Tomcat服务器就要对我们这些载入的web应用进行管理,那么从哪里进入Tomcat服务器的管理平台呢?首先我们将Tomcat服务器启动,进入其主页,发现右侧三项"Server Status"."Manager App"."Host Manager"点击时都需要输入密码: 需要密码 那么用户名和密码是什么呢? 这就要看Tomcat的[conf]目录中的[tomcat-users.xml]文件了,这个

  • Nginx简介_动力节点Java学院整理

    1.什么是Nginx Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx.Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色.稳定的服务. Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证.由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自

  • web压力测试工具_动力节点Java 学院整理

    0. Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利. 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理.根据项目网站的说法,Grinder的 主要目标用户是"理解他们所测代码的人--Grinder不仅仅是带有一组相关响应时间的'黑盒'测试.由于测试过程可以进行编码--而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间. 1. Pylot -Pylot 是

  • HashSet工作原理_动力节点Java学院整理

    对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码: public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { // 使用 HashMap 的 key 保存 HashSet 中

  • Java JVM原理与调优_动力节点Java学院整理

    JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.是运行Java应用最底层部分. JDK(Java Development kit) 整个Java的核心,包括了Java运行环境(Java Runtime E

  • Java字符编码简介_动力节点Java学院整理

    1. 概述 本文主要包括以下几个方面:编码基本知识,Java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687".注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示". 2. 编码基本知识 最早的编码是iso88

  • Java异常继承结构解析_动力节点Java学院整理

    Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是"意外.例外"的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界.内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图.错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的.假若程序在运行期间出现了错误

  • 深入理解Java中的final关键字_动力节点Java学院整理

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

  • Java线程安全的常用类_动力节点Java学院整理

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用.在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的. statck:堆栈类,先进后出 hashtable:就比hashmap多了个线程安全 除了这些之外,其他的集合大都是非线程安全的类和接口. 线程安全的类其方法是同步

随机推荐