转自:http://blog.csdn.net/liuxuejin/article/details/9104055
基于以下说法的领悟:
若只配appBase,不配Context 的docBase(appBase和docBase二选一就可以了),则appBase的每个文件夹里都代表一个应用,每个应用都必须放ROOT文件夹,ROOT里则包含web所有文件,如图:
我们先看appBase,这个目录表示:
1 这个目录下面的子目录将自动被部署为应用。
2 这个目录下面的.war文件将被自动解压缩并部署为应用
而docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。
总结:
如果你想自己指定路径,那么应该在docBase里面
如果你想简单,那么直接把他们复制到appBase下面就行了
如果你把他们弄重复了,也就是2个指向了一个目录,看上去也能运行,但你的应用下面的每个子目录,其实是被部署为单独的应用的。
比如你的应用为
myApp, 放在了
d:\project\myApp
里面有2个子目录
d:\project\myApp\images
d:\project\myApp\js
你可以通过
1 设置 appBase 指向 d:\project 来让系统自动部署
2 你可以手工指定docBase到 d:\project\myApp
3 如果你指定了 appBase到 d:\project\myApp 那么
d:\project\myApp\images这个将不再是普通的子目录,而是一个单独的虚拟目录,或者叫应用了。因为其被自动部署
d:\project\myApp\js 也一样的后果
---------------------------------------------------------分割线--------------------------------------------------------
转自:http://www.cnblogs.com/gentoo/archive/2012/10/13/2722463.html
这个文件位于 tomcat 6 安装目录之下的 conf 目录之内,实际内容位于 /etc/tomcat6/server.xml。
正如该文件的扩展名所示,这是一个 xml 格式的文件,打开之后将会看到如下的结构:
即一个由 Server->Service->Engine->Host->Context 组成的四层结构,从里层向外层分别是:
一个 Connector 即一个对外界开放的端口,简单理解就是大部分网络服务程序都会遇到的 IpAddress:Port 的组合,比如 192.168.0.10:8080 就是一个端口,当然在 Connector 里可以定义的内容要丰富得多,即 Connector 这个 XML 节点里可以加上许多属性。下面列举一下常用的:
一个简单的 Connector 定义如下:
Executor 用于定义共享的线程池。默认情况下每个 Connector 都会产生自己的一个线程池,如果你想多个 Connector 共享一个线程池,则可以先定义一个线程池,如:
然后修改上述的 Connector 配置,增加 executor 属性,修改后的配置如下:
一个 Host 配置即为一个虚拟主机,例如下面是一个简单的 Host 配置:
dog.com
Host 配置节点各个属性的作用:
下面举例说明如何创建一个新的虚拟主机 www.dog.com:
在目录 /var/lib/tomcat6 下面可以看到安装 Tomcat 时默认创建的 webapps 目录,为了方便管理我们即将创建的虚拟主机的文档也在 /var/lib/tomcat6 里创建:
$ sudo mkdir dog
然后在 dog 目录里面创建目录 ROOT,再在 ROOT 里面创建文件 index.html(内容随便)。
现在将目录的所有者和所有组都更改为 tomcat:
$ sudo chown -R tomcat:tomcat dog
然后在 server.xml 的 Host 节点下增加如下 Host 节点:
重启 Tomcat 服务就可以在浏览器里通过地址 http://www.dog.com 访问这个新创建的虚拟主机了,当然你必须要先在 /etc/hosts 文件里增加 www.dog.com 到 127.0.0.1 的解析记录,如下:
127.0.0.1 www.dog.com
有时一个虚拟主机可能会同时绑定多个域名,比如 www.dog.com 和 dog.com,这时可以通过在 Host 配置节点里增加 Alias 实现,比如:
> dog.com>
另外上面示例当中的
默认的 Engine 节点如下:
这个应该不用展开叙述了,其中 defaultHost 用于指定访客在没有相应的虚拟主机时,Tomcat 默认选择的虚拟主机的名称。考虑如下的情形:
假如有3个域名都 DNS 解析到你的服务器,比如 dog.com, www.dog.com, api.dog.com,当前你只配置了虚拟主机 dog.com 和 www.dog.com,那么当有个访客通过 api.dog.com 访问你的服务器时,Tomcat 就会依据 defaultHost 的设置返回其中一个虚拟主机运行的结果。实际应用中 defaultHost 应该设置为你的主力域名,比如 www.dog.com。
有时我们需要在一台服务器上跑多个站点,通过 Tomcat 很容易实现这点,下面假设我们要搭建 www.dog.com 和 www.cat.com 这两个站点。
首先要确定你的两个域名的 DNS 已经能正确解析到你的服务器,因为这里我们是做实验,所以可以在本机添加域名解析。修改 /etc/hosts 文件,加入如下两行:
127.0.0.1 www.cat.com 127.0.0.1 www.dog.com
然后在 /var/lib/tomcat6 目录里分别创建名字为 cat 和 dog 的两个目录,然后在每个目录里都创建名字为 ROOT 的目录,并在 ROOT 里面创建名字为 index.html 文件(内容随便)。然后将目录 cat 和 dog 的所有者和所有组都更改为 tomcat,方法参考上一节,这里不再赘述。
现在编辑 Tomcat 的主配置文件 server.xml,在默认的 Host 节点下面再加入如下两个新的 Host 节点:
在 Host 节点里面可以根据上一节的说明加入自己需要的属性或者 Alias 和 Value 子节点。重启 Tomcat 服务,现在应该可以在浏览器里分别通过 http://www.dog.com 和 http://www.cat.com 浏览这两个站点了。