一、先來解釋一下虛擬主機的概念:在一個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不可以指定。原因不知。