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:\WINDOWS\system32\drivers\etc\hosts
比如你想增加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。

时间: 2024-08-05 00:10:35

Tomcat的Server.xml虚拟主机和虚拟目录的配置的相关文章

虚拟主机和虚拟目录配置

要想在本机上出现这样:输入www.baidu.com,但是进入的却是自己的目录 1.在windows/system32/etc/host文件中添加 127.0.0.1  www.baidu.com 2.在tomcat/conf/server.xml文件中添加  <Host name="www.baidu.com"  appBase="d:\ship"><!--此处即为添加虚拟主机,这个的在第一部完成后才能添加,否则启动tomcat报错--> 

(2) tomcat配置文件server.xml详解

1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可,本文的tomcat安装在/application/tomcat下,因此$CATALINA_HOME=/application/tomcat. 其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器. <?xml version="1.0" encoding=&q

解决tomcat中server.xml设置二级域名 [java.lang.OutOfMemoryError: PermGen space]

<Host name="XXX.XXX.XXX" debug="0" appBase="C:\\JavaWeb\\mytomcatServer\\XXX"  unpackWARs="true" autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false">  <Alias>

在tomcat的server.xml下面配置一次工程变量,那么可以不用每次都对该工程进行配置,只需要启动服务器就行

在tomcat的安装目录下,找到server.xml文件,具体位置是:D:\tomcat\apache-tomcat-6.0.36\conf\server.xml. 在该文件下面最后配置<Context path="/struts“  docBase="D:\training\struts\WebRoot" reloadable="true" /> 其中path中的内容是你要配置的工程名:docBase里面的内容是该工程WebRoot的绝对路径

配置Tomcat时server.xml和content.xml自动还原问题

转载:http://www.tuicool.com/articles/iuu6bqF[配置Tomcat时server.xml和content.xml自动还原问题] 当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为什么会还原? Tomcat服务器在Eclipse中启动时,会自动发布Eclipse中部署的项目,但是我的项目是自己手动在外面部署的,Ec

tomcat中server.xml配置详解

Tomcat Server的结构图如下:该文件描述了如何启动Tomcat Server. <Server port="8005" shutdown="SHUTDOWN"> <Listener /> <GlobaNamingResources></GlobaNamingResources> <Service name="Catalina"> <Executor ...... />

TomCat中server.xml编码的问题

这两天刚刚看了博客大牛的关于Javaweb的入门教程,里面开始介绍了关于Tomcat配置虚拟主机的内容,自己照猫画虎,但是出现了启动Tomcat后闪退的问题.查看了logs中的错误日志,报错信息如下所示: 警告: Catalina.start using conf/server.xml: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效. 上网查看了别

tomcat配置文件server.xml具体解释

元素名 属性 解释 server port 指定一个port,这个port负责监听关闭tomcat 的请求 shutdown 指定向port发送的命令字符串 service name 指定service 的名字 Connector ( 表示client和service 之间的连接) port 指定server端要创建的port号,并在这个断口监听来自client的请求 minProcessors server启动时创建的处理请求的线程数 maxProcessors 最大能够创建的处理请求的线程数

tomcat 的 server.xml配置文件

tomcat的配置文件在其安装后生成的conf目录下,其中主配置文件便是conf下的server.xml文件. server.xml文件由server->service->engine->host->context结构组成. <?xml version="1.0" encoding="UTF-8"?> <!-- tomcat实例顶层元素,代表整个容器.由org.apache.catalina.Server接口来定义 port