欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tomcat学习笔记 -【 虚拟主机与虚拟目录】

程序员文章站 2022-04-23 21:34:51
...

和Nginx类似,Tomcat也有虚拟主机、虚拟目录的概念。借助于虚拟主机功能,允许在一台Tomcat服务器上面创建多个虚拟主机。通过虚拟目录的设置,可以自定义web应用的存放目录,不再强硬要求web应用一定存放在Tomcat的webapps目录。了解一点运维的活儿,我会比较HappyTomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

 

【一】虚拟主机:Virtual Host

 [一]  简介:“虚拟主机”功能可以在一台物理机器上面“模拟”出多台逻辑机器,本质上是将 不同的域名绑定到同一个IP地址上面。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

 [二] 进行DNS设置:修改C:\WINDOWS\system32\drivers\etc下面的hosts文件,示例如下Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

127.0.0.1    localhost www.excelsoft.com

 [三] 修改Tomcat的配置文件/conf/server.xml,添加如下内容:Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

  <Host name = "www.excelsoft.com" appBase = "E:\webapps">
      <Context path = "" docBase = "E:\webapps\first-web" reloadable = "false"/>
  </Host>

  [说明]
  1.  可以设置多台虚拟主机、也可以给一台虚拟主机添加多个web应用。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
  2. jsp页面编译为class文件的存放路径如下,最后一个层级为虚拟主机的名称:
   \work\Catalina\www.excelsoft.comTomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

  [四] 再次修改server.xml:修改为缺省的80端口、http协议默认即为80端口Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

  <Connector port="80" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443"
  />

     访问路径为:http://www.excelsoft.com

  [五] 关于默认主机:如果通过IP地址进行访问、默认访问的是localhost虚拟主机。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

   <Engine name="Catalina" defaultHost="localhost">
       <Host name="localhost"  appBase="webapps"
         unpackWARs="true" autoDeploy="true"
	 xmlValidation="false" xmlNamespaceAware="false">
	    ..
       </Host>
   </Engine>

   [说明]
   1. unpackWARs:默认为true
    是否将web应用的war包进行解压缩,即使不解压缩仍可访问。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
   2. autoDeploy:默认为trueTomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
    在Tomcat运行时添加新的war包、是否自动进行部署,如果设为false、在Tomcat重启时才会进行部署。
   3. 创建war包:创建war包、占用更少的存储空间,便于进行网络传输。

       使用jar命令:

jar -cvf first-web.war first-web

      使用winRar:创建first-web.rar,修改后缀名为war即可。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

 

 【二】 虚拟目录:Virtual Directory

 [一] 简介:虚拟目录,用于将服务器上面的一个web应用目录、映射为可供外部用户访问的url路径。Apache、Tomcat、Nginx等web服务器都有虚拟目录的概念。Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

 [二] 修改server.xml:这是一种不被推荐的方式,需要重启Tomcat才能生效。

    <1>. 在<Host>节点下面添加:  

<Context path = "" docBase = "E:\webapps\first-web" reloadable = "false"/>

   [说明]Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
    1. 缺省的访问路径:访问时无需添加web应用的名称。
    2. 通过docBase自定义web应用的存放路径:不再要求一定存放在Tomcat的webapps路径下面。
    3. 设置reloadable属性为false:当class文件发生替换时、Tomcat的类加载器不会重新加载,生产环境

    下应设为false、避免反复加载严重影响Tomcat的效率。

    <2>.  其他示例:  Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

<Context path = "/first" docBase = "E:\webapps\first-web" reloadable = "true"/>

   [说明]
   1. 访问路径为/first
   2. 开发环境下reloadable为true:java文件修改编译之后、Tomcat会重新加载。
   3. 关于path:Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
    如果访问路径缺省、那么jsp转为java文件并编译的存放路径为"_",即
      \work\Catalina\www.excelsoft.com\_\org\apache\jsp
      - index_jsp.java
      - index_jsp.class
    如果path设为/first、jsp文件的编译存放路径为
      \work\Catalina\www.excelsoft.com\first\org\apache\jsp

    4. 关于项目资源修改后的重新加载:Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

      html/css/js:静态资源修改后无须重启Tomcat,用户访问时、Tomcat直接加载最新的资源。

      jsp页面:修改后无须重启Tomcat,用户访问jsp页面时,Tomcat会比较该jsp页面和由该jsp页面编译

   生成的class文件的时间戳,如果jsp页面较新Tomcat会重新编译并覆盖掉之前的class文件。

      class文件:在开发环境下可设置reloadable属性为true,如果修改了java文件并重新编译为class文件,
   Tomcat的类加载器会重新加载(reload)该class。

    <3>. 不需要重启Tomcat的方式:Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

    1. 修改server.xml:主机名www.excelsoft.com不再包含<Context>节点。

   <Host name = "www.excelsoft.com">
   </Host>

    2. 进入\conf\Catalina目录,创建文件夹www.excelsoft.com(和虚拟主机名保持一致)Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录

    3. 进入该文件夹,创建first.xml,内容如下:

   <?xml version="1.0" encoding="UTF-8"?>
   <Context path = "/first" docBase = "E:\webapps\first-web" reloadable = "true"/>

   [说明]
     要求文件名和访问路径保持一致。
     无须重启Tomcat:文件名修改为first_web.xml、同时修改访问路径为path = "/first_web"Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录
     如果修改了默认访问路径,需要重启Tomcat:Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录文件名称修改为ROOT.xml、访问路径修改为path = ""

 

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

对Tomcat的了解总算深入了一点,还有更多精彩内容需要研究!

欢迎拍砖或点赞!Tomcat学习笔记 -【 虚拟主机与虚拟目录】
            
    
    博客分类: Nginx/Tomcat/Jetty tomcat虚拟主机虚拟目录