zoukankan      html  css  js  c++  java
  • Tomcat的Server.xml虚拟主机和虚拟目录的配置

    以前开发JavaEE网站都布置在Tomcat下,布置目录一般为$CATALINA_HOME/webapps/WebName,所以要访问网站,则在http://localhost后必须要加上上下文路径(ContextPath)/WebName,而运行环境一般为http://www.abc.com,上下文路径为空。这样就造成了开发环境与运行环境的差异,虽然在JSP中可以通过<%=request.getContextPath()%>解决,但如果换成其它模板,比如Velocity,就又不行了。

    本文通过参考各大网友的做法以及自己的亲身实践,成功地在Tomcat下设置多个虚拟主机和多个虚拟目录,写出来以供各网友参考和自己做个笔记。

    Tomcat 5和Tomcat 6的配置文件为:$CATALINA_HOME/conf/server.xml,其它的版本的Tomcat的配置文件没有用过。

    注意以下的一,二,……步骤不是顺序的,是可以选择的。

    说明:虚拟主机在server.xml为Host,虚拟目录为Context。

    一、修改端口
    Tomcat默认的WEB端口为8080,我一般喜欢把它改成80,当然这是完全没有必要的
    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    注意是修改HTTP协议的,也就是protocol="HTTP/1.1"的,不是其他的。

    二、增加虚拟目录
    1、最简单的方式:直接把JavaEE网站放在$CATALINA_HOME/webapps目录下了,然后通过http://localhost/WebName,WebName为网站的目录名;

    2、自定义:把网站放在其它的目录下,比如放在/var/www/webapp目录下,那么就要修改server.xml了。
    在</Host>前增加以下内容即可:
    <Context path="/SpringMVC" docBase="/var/www/webapp/SpringMVC" workDir="/var/www/webtmp/SpringMVC" debug="5" reloadable="false" crossContext="true" />
    则可以通过http://localhost/SpringMVC访问了,也就是在主机名为localhost中增加了一个名为SpringMVC的虚拟目录了,当然,这里的名字完全依个人而定的。

    三、增加虚拟主机
    其实这才是本文要说的重点,也就是本文开头说的那种案例。我们每开发一个网站,都是通过http://localhost/WebName的形式访问,是不是很麻烦?

    1、修改hosts文件,增加主机名
    (1)Linux系统的hosts文件为/etc/hosts
    (2)Windows系统的hosts文件为C:WINDOWSsystem32driversetchosts
    比如你想增加www.local.com主机,则在此文件中增加一行:127.0.0.1 www.local.com,也就是说当你访问www.local.com时,其实是访问127.0.0.1;
    我比较喜欢简短的域名,所以我增加的是:127.0.0.1 SpringMVC

    2、修改配置文件
    在</Host>后再增加一个Host结点:
    <Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" />
    即增加了一个名为SpringMVC的虚拟主机,当然也可以是name="www.local.com",这个根据具体情况定。
    这样,访问的IP就是:http://SpringMVC了。

    3、目录设置
    主机SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目录下,在该目录下增加ROOT目录,放入你的JavaEE网站工程,这样,你就可以通过http://SpringMVC访问你的网站了,后面少了/SpringMVC这个字串,在IP上与运行环境保持了一致。

    四、其它问题

        (1)

    通过http://SpringMVC访问的是SpringMVC网站;
    通过http://localhost访问的是Tomcat自带的网站;
    我们在hosts文件中已经知道,SpringMVC和localhost都对应的IP是:127.0.0.1
    那么,通过http://127.0.0.1访问的是那个网站呢?

    在Host的父节点是:<Engine name="Catalina" defaultHost="SpringMVC">
    从上可以看出,defaultHost="SpringMVC"决定了127.0.0.1访问哪个网站,我的设置是访问SpringMVC

    本文到此就要结束了,贴上我的server.xml文件内容:
    <?xml version="1.0" encoding="utf-8" ?>
    <Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.core.AprLifecycleListener"
       SSLEngine="on" />
    <Listener className="org.apache.catalina.core.JasperListener" />
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

    <GlobalNamingResources>
       <Resource name="UserDatabase" auth="Container"
        type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"
        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
        pathname="conf/tomcat-users.xml" />
    </GlobalNamingResources>

    <Service name="Catalina">
       <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
        redirectPort="8443" />
       <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
       <Engine name="Catalina" defaultHost="SpringMVC">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase" />
        <Host name="localhost" appBase="webapps" unpackWARs="true"
         autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <!--HelloMule-->
         <!--
          <Context path="/mule" docBase="/var/www/webapp/Mule"
          workDir="/var/www/webtemp/Mule" debug="5" reloadable="false"
          crossContext="true" />
         -->
        </Host>
        <Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC"
         unpackWARs="true" autoDeploy="false" xmlValidation="false"
         xmlNamespaceAware="false" />
       </Engine>
    </Service>
    </Server>

    (2)

    首先,修改$tomcat/conf/server.xml文件。 
    在server.xml文件中,有一段如下: 
    Xml代码  

    <engine name="Catalina" defaultHost="localhost改为你的域名"> 

    <host name="localhost改为你的域名" appBase="webapps"  unpackWARs="true" autoDeploy="true"          xmlValidation="false" xmlNamespaceAware="false">      ……      <host>   </engine>   
    在<host></host>标签之间添加上: 
    Xml代码  <Context path="" docBase="myjsp" debug="0" reloadable="true" />   
    path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页,则该键值留为空; 
    docBase是默认目录的路径,它默认的是$tomcat/webapps/ROOT目录,现在我在webapps目录下建了一个myjsp目录,让该目录作为我的默认目录。 
    debug和reloadable一般都分别设置成0和true。

  • 相关阅读:
    php防止刷流量攻击
    PHP序列化变量的4种方法
    php递归操作目录 递归对参数转义
    php 图像裁剪(自定义裁剪图片大小)
    jquery实现点击文字后变成文本框且可修改
    mysql查看表注释和字段注释的方法
    php 获取中文字符串首字母
    Nginx.conf配置
    光盘作为yum源
    win7下安装mongodb
  • 原文地址:https://www.cnblogs.com/apache-x/p/5504812.html
Copyright © 2011-2022 走看看