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。

1、修改端口
Tomcat默认的WEB端口为8080,我通常喜欢把它改为80,固然这是彻底没有必要的
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
注意是修改HTTP协议的,也就是protocol="HTTP/1.1"的,不是其余的。

2、增长虚拟目录
一、最简单的方式:直接把JavaEE网站放在$CATALINA_HOME/webapps目录下了,而后经过http://localhost/WebName,WebName为网站的目录名;

二、自定义:把网站放在其它的目录下,好比放在/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的虚拟目录了,固然,这里的名字彻底依我的而定的。

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

一、修改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

二、修改配置文件
在</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了。

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

4、其它问题web

    (1)
apache

经过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访问哪一个网站,个人设置是访问SpringMVCtomcat

本文到此就要结束了,贴上个人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" />app

<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>webapp

<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>jsp

(2)网站

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

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

<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。server


若有批评、指教、疑惑,请:
祝你们使用JAVA愉快!

有什么错误请在后面指出,让我及时更正。

相关文章
相关标签/搜索