以前開發(fā)JavaEE網(wǎng)站都布置在Tomcat下,布置目錄一般為$CATALINA_HOME/webapps/WebName,所以要訪問網(wǎng)站,則在http://localhost后必須要加上上下文路徑(ContextPath)/WebName,而運行環(huán)境一般為http://www.,上下文路徑為空。這樣就造成了開發(fā)環(huán)境與運行環(huán)境的差異,雖然在JSP中可以通過<%=request.getContextPath()%>解決,但如果換成其它模板,比如Velocity,就又不行了。 本文通過參考各大網(wǎng)友的做法以及自己的親身實踐,成功地在Tomcat下設(shè)置多個虛擬主機和多個虛擬目錄,寫出來以供各網(wǎng)友參考和自己做個筆記。 Tomcat 5和Tomcat 6的配置文件為:$CATALINA_HOME/conf/server.xml,其它的版本的Tomcat的配置文件沒有用過。 注意以下的一,二,……步驟不是順序的,是可以選擇的。 說明:虛擬主機在server.xml為Host,虛擬目錄為Context。 一、修改端口 Tomcat默認(rèn)的WEB端口為8080,我一般喜歡把它改成80,當(dāng)然這是完全沒有必要的 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 注意是修改HTTP協(xié)議的,也就是protocol="HTTP/1.1"的,不是其他的。 二、增加虛擬目錄 1、最簡單的方式:直接把JavaEE網(wǎng)站放在$CATALINA_HOME/webapps目錄下了,然后通過http://localhost/WebName,WebName為網(wǎng)站的目錄名; 2、自定義:把網(wǎng)站放在其它的目錄下,比如放在/var/www/webapp目錄下,那么就要修改server.xml了。 在</Host>前增加以下內(nèi)容即可: <Context path="/SpringMVC" docBase="/var/www/webapp/SpringMVC" workDir="/var/www/webtmp/SpringMVC" debug="5" reloadable="false" crossContext="true" /> 則可以通過http://localhost/SpringMVC訪問了,也就是在主機名為localhost中增加了一個名為SpringMVC的虛擬目錄了,當(dāng)然,這里的名字完全依個人而定的。 三、增加虛擬主機 其實這才是本文要說的重點,也就是本文開頭說的那種案例。我們每開發(fā)一個網(wǎng)站,都是通過http://localhost/WebName的形式訪問,是不是很麻煩? 1、修改hosts文件,增加主機名 (1)Linux系統(tǒng)的hosts文件為/etc/hosts (2)Windows系統(tǒng)的hosts文件為C:\WINDOWS\system32\drivers\etc\hosts 比如你想增加www.local.com主機,則在此文件中增加一行:127.0.0.1 www.local.com,也就是說當(dāng)你訪問www.local.com時,其實是訪問127.0.0.1; 我比較喜歡簡短的域名,所以我增加的是:127.0.0.1 SpringMVC 2、修改配置文件 在</Host>后再增加一個Host結(jié)點: <Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" /> 即增加了一個名為SpringMVC的虛擬主機,當(dāng)然也可以是name="www.local.com",這個根據(jù)具體情況定。 這樣,訪問的IP就是:http://SpringMVC了。 3、目錄設(shè)置 主機SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目錄下,在該目錄下增加ROOT目錄,放入你的JavaEE網(wǎng)站工程,這樣,你就可以通過http://SpringMVC訪問你的網(wǎng)站了,后面少了/SpringMVC這個字串,在IP上與運行環(huán)境保持了一致。 四、其它問題 通過http://SpringMVC訪問的是SpringMVC網(wǎng)站; 通過http://localhost訪問的是Tomcat自帶的網(wǎng)站; 我們在hosts文件中已經(jīng)知道,SpringMVC和localhost都對應(yīng)的IP是:127.0.0.1 那么,通過http://127.0.0.1訪問的是那個網(wǎng)站呢? 在Host的父節(jié)點是:<Engine name="Catalina" defaultHost="SpringMVC"> 從上可以看出,defaultHost="SpringMVC"決定了127.0.0.1訪問哪個網(wǎng)站,我的設(shè)置是訪問SpringMVC 本文到此就要結(jié)束了,貼上我的server.xml文件內(nèi)容: <GlobalNamingResources> <Service name="Catalina"> |
|