昨天项目需要配置一个虚拟主机,由于权限问题,所以我的帐户不能直接写webapps目录,所以需要在server上给偶配置一个虚拟主机目录。
OK,上internet啊,google了一下发现是需要修改$TOMCAT_HOME$/conf下的server.xml文件中的<Host>标签。我用网上的说法试验了大半个钟头就是不行,后来还是自己努力了下解决问题。在修改之前,我们最好备份一下server.xml,将它拷贝成server.copy.xml,以防后患。
你可以在<Engine>目录下发现<host>标签,一个Tomcat只能由一个Engine,但是一个Engine下面可以由多个Host,也就是虚拟主机,这里的Host就是虚拟主机的意思。在这里再提一下以前不知道的Host下的Context标签的用处,原来是配置一个web应用,一个Context(上下文)就是一个web应用,那么什么是web应用呢,它其实就是建立的一个Web工程,有WEB-INF文件夹,有web.xml配置文件。因为一般情况下,一个网站占用一个虚拟主机,而一个网站不能由一个web工程所完成,所以就会分成多个小的web工程(web应用),比如一个门户网站,它有portal、bbs、blog、album等等。这些都可以用Context来配置,在Context中制定path="" docBase="portal"那么当用户输入http://yoursite.com/就会进入porta目录下,访问porta下的欢迎页面。注意这里的path为空表示默认的目录,path="luntan" docBase="bbs",当用户输入http://yoursite.com/luntan/便会进入你的bbs文件夹下。有人说我用一个web工程也可以这样做的,对的,没错但是当系统较大而且所要请求资源较多时,那样做将会非常麻烦容易出错。
对了,说虚拟主机
你找到server.xml文件中的</Host>标签后,也就是第一个默认Host的结束标签,在它的后面添加一个<Host>标签,至于里面写什么,完全可以照搬那个默认的Host标签的内容,当然还有要修改的地方了,就是哪个name属性和appBase属性,name 就是指定你这个虚拟主机想用什么名字被访问到,比如name="yoursite.com",appBase就是你这个虚拟主机设置在你本地的哪个目录了,appBase="D:\web"。然后还要记着添加一个<context>标签,指定默认的访问目录
<Context path="" docBase="D:\web\login" />
这下,server.xml文件的配置就算结束了,保存关闭文件。
然后,重点来了,重点是还需要让你的服务器自己将这个yoursite.com名字映射到这台机器上,需要做的是,修改C:\WINDOWS\system32\drivers\etc下的hosts文件,
源文件可能是
- # Copyright (c) 1993-1999 Microsoft Corp.
- #
- # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
- #
- # This file contains the mappings of IP addresses to host names. Each
- # entry should be kept on an individual line. The IP address should
- # be placed in the first column followed by the corresponding host name.
- # The IP address and the host name should be separated by at least one
- # space.
- #
- # Additionally, comments (such as these) may be inserted on individual
- # lines or following the machine name denoted by a '#' symbol.
- #
- # For example:
- #
- # 102.54.94.97 rhino.acme.com # source server
- # 38.25.63.10 x.acme.com # x client host
- 127.0.0.1 localhost
注意最后一行,你现在照这个样子添加
127.0.0.1 yoursite.com
然后保存修改,通过你的浏览器访问http://yoursite.com/现在就应该可以访问到你的D:\web\login下的文件了。当然如果你要在公网上访问,你还需要在DNS服务器上注册你的域名了,这些就是这里需要阐述的了
有问题可以发邮件到kongxiaoyang@gmail.com
大家一块学习进步!