以前開(kāi)發(fā)JavaEE網(wǎng)站都布置在Tomcat下,布置目錄一般為$CATALINA_HOME/webapps/WebName,所以要訪問(wèn)網(wǎng)站,則在http://localhost后必須要加上上下文路徑(ContextPath)/WebName,而運(yùn)行環(huán)境一般為http://www.abc.com,上下文路徑為空。這樣就造成了開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境的差異,雖然在JSP中可以通過(guò)<%=request.getContextPath()%>解決,但如果換成其它模板,比如Velocity,就又不行了。
本文通過(guò)參考各大網(wǎng)友的做法以及自己的親身實(shí)踐,成功地在Tomcat下設(shè)置多個(gè)虛擬主機(jī)和多個(gè)虛擬目錄,寫(xiě)出來(lái)以供各網(wǎng)友參考和自己做個(gè)筆記。
Tomcat 5和Tomcat 6的配置文件為:$CATALINA_HOME/conf/server.xml,其它的版本的Tomcat的配置文件沒(méi)有用過(guò)。
注意以下的一,二,……步驟不是順序的,是可以選擇的。
說(shuō)明:虛擬主機(jī)在server.xml為Host,虛擬目錄為Context。
一、修改端口
Tomcat默認(rèn)的WEB端口為8080,我一般喜歡把它改成80,當(dāng)然這是完全沒(méi)有必要的
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
注意是修改HTTP協(xié)議的,也就是protocol="HTTP/1.1"的,不是其他的。
二、增加虛擬目錄
1、最簡(jiǎn)單的方式:直接把JavaEE網(wǎng)站放在$CATALINA_HOME/webapps目錄下了,然后通過(guò)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" />
則可以通過(guò)http://localhost/SpringMVC訪問(wèn)了,也就是在主機(jī)名為localhost中增加了一個(gè)名為SpringMVC的虛擬目錄了,當(dāng)然,這里的名字完全依個(gè)人而定的。
三、增加虛擬主機(jī)
其實(shí)這才是本文要說(shuō)的重點(diǎn),也就是本文開(kāi)頭說(shuō)的那種案例。我們每開(kāi)發(fā)一個(gè)網(wǎng)站,都是通過(guò)http://localhost/WebName的形式訪問(wèn),是不是很麻煩?
1、修改hosts文件,增加主機(jī)名
(1)Linux系統(tǒng)的hosts文件為/etc/hosts
(2)Windows系統(tǒng)的hosts文件為C:\WINDOWS\system32\drivers\etc\hosts
比如你想增加www.local.com主機(jī),則在此文件中增加一行:127.0.0.1 www.local.com,也就是說(shuō)當(dāng)你訪問(wèn)www.local.com時(shí),其實(shí)是訪問(wèn)127.0.0.1;
我比較喜歡簡(jiǎn)短的域名,所以我增加的是:127.0.0.1 SpringMVC
2、修改配置文件
在</Host>后再增加一個(gè)Host結(jié)點(diǎn):
<Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" />
即增加了一個(gè)名為SpringMVC的虛擬主機(jī),當(dāng)然也可以是name="www.local.com",這個(gè)根據(jù)具體情況定。
這樣,訪問(wèn)的IP就是:http://SpringMVC了。
3、目錄設(shè)置
主機(jī)SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目錄下,在該目錄下增加ROOT目錄,放入你的JavaEE網(wǎng)站工程,這樣,你就可以通過(guò)http://SpringMVC訪問(wèn)你的網(wǎng)站了,后面少了/SpringMVC這個(gè)字串,在IP上與運(yùn)行環(huán)境保持了一致。
四、其它問(wèn)題
通過(guò)http://SpringMVC訪問(wèn)的是SpringMVC網(wǎng)站;
通過(guò)http://localhost訪問(wèn)的是Tomcat自帶的網(wǎng)站;
我們?cè)趆osts文件中已經(jīng)知道,SpringMVC和localhost都對(duì)應(yīng)的IP是:127.0.0.1
那么,通過(guò)http://127.0.0.1訪問(wèn)的是那個(gè)網(wǎng)站呢?
在Host的父節(jié)點(diǎn)是:<Engine name="Catalina" defaultHost="SpringMVC">
從上可以看出,defaultHost="SpringMVC"決定了127.0.0.1訪問(wèn)哪個(gè)網(wǎng)站,我的設(shè)置是訪問(wèn)SpringMVC
本文到此就要結(jié)束了,貼上我的server.xml文件內(nèi)容:
<?xml version="1.0" encoding="utf-8" ?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="SpringMVC">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<!--HelloMule-->
<!--
<Context path="/mule" docBase="/var/www/webapp/Mule"
workDir="/var/www/webtemp/Mule" debug="5" reloadable="false"
crossContext="true" />
-->
</Host>
<Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC"
unpackWARs="true" autoDeploy="false" xmlValidation="false"
xmlNamespaceAware="false" />
</Engine>
</Service>
</Server>
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。