一、先来解释一下虚拟主机的概念:在一个tomcat上放多个工程,通过不同的URL访问不同的工程。这是我的理解,可能不精确。
二、配置如下:
1、我的环境:tomcat7.x+jdk7.x.;
2、先把%TOMCAT_HOME%下的webapps,复制两份,分别命名为:webapps_1 和 webapps_2。两个目录下的内容和webapps相同。
3、修改%TOMCAT_HOME%/conf目录下的server.xml文件;
4、端口修改:
<!-- 这里默认端口是:8080,修改成 80 --> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
5、修改默认执行引擎:
<!-- 修改默认执行引擎,用于通过IP地址来访问主机时,默认执行的工程 -->
<Engine name="Catalina" defaultHost="www.bohaisoft.com">
6、HostName 配置:
<!-- name的值可以理解为域名,appBase 的值:在步骤2创建的webapps_1 --> <Host name="www.bohaisoft.com" appBase="webapps_1" unpackWARs="true" autoDeploy="true"> <!-- 定义访问的别名,及可以浏览器在里面输入 bohaisoft.com 来访问这个工程 --> <alias>bohaisoft.com</alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <!-- 配置默认ROOT的路径,今天我没有配置成功, 这个配置可以没有 --> <Context docBase="./spring-domo-mvc.war" path="/" reloadable="true"/> </Host> <!-- appBase的值是:webapps_2 --> <Host name="www.bobohai.com" appBase="webapps_2" unpackWARs="true" autoDeploy="true"> <alias>bobohai.com</alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
7、遇到的问题:不能指定默认的ROOT,及必须将工程解压放到ROOT下面,才能通过RUL进行访问。因此必须将war解压文件放到webapp_1下面的ROOT中(先删除掉ROOT下面的文件);另:server.xml 的注释不能使用中文,否则启动报错;
8、配置 host
127.0.0.1 www.bobohai.com
127.0.0.1 www.bohaisoft.com
9、启动tomcat时,就可以通过域名来访问不同的工程了。
10、由问题想到的一些事情:
(1)前段时间完过百度云,在布署工程时,也要求把war重命名:ROOT.war;能猜测百度的人能不能配置默认ROOT???
(2)Eclipse中设置server‘s host name 为域名时,提示有错误:如下图:
总结:tomcat6 使用域名时,可以指定默认的ROOT,tomcat7不可以指定。原因不知。