`
obullxl
  • 浏览: 182059 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat的Server.xml虚拟主机和虚拟目录的配置

    博客分类:
  • Java
阅读更多

以前开发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上与运行环境保持了一致。

四、其它问题
通过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>

如有批评、指教、疑惑,请:obullxl@163.com
祝大家使用JAVA愉快!


------------------------------

同URL:http://hi.baidu.com/obullxl/blog/item/9b4a7006707dc27003088153.html

------------------------------

0
1
分享到:
评论

相关推荐

    基于tomcat配置文件server.xml详解

    该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可。其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器。 &...

    Tomcat6.x+IIS6+jk2 整合

    软件环境:Window server 2003+ IIS6.0 + Tomcat6.0 + JK2 ...tomcat的一些虚拟主机配置可以见配置文件server.xml 在访问过测试页后ISAPI筛选器"jakarta"会显示绿色箭头,红色是配置错误 不知道还有没有漏掉的 ^_^

    Tomcat6.x+IIS6+jk2最新整合

    我整我整整了我大半天,不过直得整合的好处就不说了 ...tomcat的一些虚拟主机配置可以见配置文件server.xml 在访问过测试页后ISAPI筛选器"jakarta"会显示绿色箭头,红色是配置错误 不知道还有没有漏掉的 ^^

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议.zip

    ├─5.05 tomcat运维-server.xml配置文件注释.mp4 ├─5.06 tomcat运维-web站点部署.mp4 ├─5.07 tomcat运维-部署开源站点.mp4 ├─5.08 tomcat运维-tomcat优化.mp4 ├─5.09 tomcat运维-tomcat性能优化.mp4 ├─...

    apahce2.2.4整合tomcat6.0.016

    #虚拟主机 # Virtual hosts Include conf/extra/httpd-vhosts.conf #TOMCAT整合开始 LoadModule jk_module modules/mod_jk-apache-2.2.4.so JkWorkersFile conf/workers.properties JkOptions +ForwardKeySize +...

    JavaWeb程序Tomcat及Servlet配置:实例与组件包-zip压缩包

    配置Tomcat通常包括设置端口号、虚拟主机、SSL/TLS证书、线程池等。 Tomcat的server.xml文件是主要的配置文件,其中定义了上述的各种设置。 Servlet: Servlet是JavaWeb应用程序的一部分,它扩展了服务器的功能。 ...

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

    如同之前的文章所说的,对于Tomcat服务器来讲,在server.xml文件中,一个标签就代表着一台虚拟主机,之前的文章所用的都是默认的虚拟主机,这个在server.xml文件中是这样定义的: ... 可以看到这个已有的虚拟主机...

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    然后再设置TOMCAT虚拟主机 2 配置 tomcat 2.1. 配置 server 的关闭 我们需要在一台机器上跑 4 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。在 TomcatA\conf, TomcatB\conf, ...

    Tomcat源码研究

    5 虚拟主机配置文件  tomcat/conf/server.xml &lt;!-- 默认的主机 --&gt; &lt;Host name="localhost" appBase="webapps"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false"&gt; ...

    windows_server2003+tomcat+iis6整合

    另外,在Tomcat中配置好虚拟主机,方法:(此方法请记住使用!) 在 &lt;Engine&gt; 之间添加: &lt;Host name="it942.com" appBase="webapps" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware=...

    详解Tomcat多域名的配置

    这就需要在tomcat里配置多域名,添加多个虚拟主机。 主要在server.xml里面设置: 在&lt;Engine&gt;&lt;/Engine&gt;里面添加两个&lt;Host&gt;&lt;/Host&gt;标签,内容如下: &lt;Host name=www.123.com appBase=/usr/local/tomcat/webapps/123 ...

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    #设定本虚拟主机的访问日志 access_log logs/host.access.log main; #对 "/" 所有应用启用负载均衡 location / { proxy_pass http://127.0.0.1; #保留用户真实信息 proxy_set_header X-Real-IP $...

    Jetty中文手册

    如何配置虚拟主机(Virtual Hosts) 如何配置会话ID(Session IDs) 如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源...

    LemonLDAPSSOValve

    复制/opt/platform-tomcat/lib的 LemonLDAPSSOValve-1.0-SNAPSHOT.jar配置在 server.xml 中注册 LemonLDAPSSOValve: 您可以从 LemonLDAP 网站找到有关可用配置选项的信息: ://lemonldap-ng.org/documentation/1.0...

    zabbix监控Nginx/Tomcat/MySQL

    A机器:zabbix服务端(192.168.234.128)B机器:zabbix客户端(192.168.234.125)在B机器(zabbix客户端)操作:编辑nginx虚拟主机配置文件:在server{}中添加以下内容:重载nginx配置:测试:#nginx状态信息已显示...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java 面试题 总结

    从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、...

Global site tag (gtag.js) - Google Analytics