之前開發JavaEE網站都佈置在Tomcat下,佈置目錄通常爲$CATALINA_HOME/webapps/WebName,因此要訪問網站,則在http://localhost後必需要加上上下文路徑(ContextPath)/WebName,而運行環境通常爲http://www.abc.com,上下文路徑爲空。這樣就形成了開發環境與運行環境的差別,雖然在JSP中能夠經過<%=request.getContextPath()%>解決,但若是換成其它模板,好比Velocity,就又不行了。
本文經過參考各大網友的作法以及本身的親身實踐,成功地在Tomcat下設置多個虛擬主機和多個虛擬目錄,寫出來以供各網友參考和本身作個筆記。
Tomcat 5和Tomcat 6的配置文件爲:$CATALINA_HOME/conf/server.xml,其它的版本的Tomcat的配置文件沒有用過。
注意如下的一,二,……步驟不是順序的,是能夠選擇的。
說明:虛擬主機在server.xml爲Host,虛擬目錄爲Context。
1、修改端口
Tomcat默認的WEB端口爲8080,我通常喜歡把它改爲80,固然這是徹底沒有必要的
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
注意是修改HTTP協議的,也就是protocol="HTTP/1.1"的,不是其餘的。
2、增長虛擬目錄
一、最簡單的方式:直接把JavaEE網站放在$CATALINA_HOME/webapps目錄下了,而後經過http://localhost/WebName,WebName爲網站的目錄名;
二、自定義:把網站放在其它的目錄下,好比放在/var/www/webapp目錄下,那麼就要修改server.xml了。
在</Host>前增長如下內容便可:
<Context path="/SpringMVC" docBase="/var/www/webapp/SpringMVC" workDir="/var/www/webtmp/SpringMVC" debug="5" reloadable="false" crossContext="true" />
則能夠經過http://localhost/SpringMVC訪問了,也就是在主機名爲localhost中增長了一個名爲SpringMVC的虛擬目錄了,固然,這裏的名字徹底依我的而定的。
3、增長虛擬主機
其實這纔是本文要說的重點,也就是本文開頭說的那種案例。咱們每開發一個網站,都是經過http://localhost/WebName的形式訪問,是否是很麻煩?
一、修改hosts文件,增長主機名
(1)Linux系統的hosts文件爲/etc/hosts
(2)Windows系統的hosts文件爲C:\WINDOWS\system32\drivers\etc\hosts
好比你想增長www.local.com主機,則在此文件中增長一行:127.0.0.1 www.local.com,也就是說當你訪問www.local.com時,實際上是訪問127.0.0.1;
我比較喜歡簡短的域名,因此我增長的是:127.0.0.1 SpringMVC
二、修改配置文件
在</Host>後再增長一個Host結點:
<Host name="SpringMVC" appBase="/var/www/webapp/SpringMVC" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" />
即增長了一個名爲SpringMVC的虛擬主機,固然也能夠是name="www.local.com",這個根據具體狀況定。
這樣,訪問的IP就是:http://SpringMVC了。
三、目錄設置
主機SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目錄下,在該目錄下增長ROOT目錄,放入你的JavaEE網站工程,這樣,你就能夠經過http://SpringMVC訪問你的網站了,後面少了/SpringMVC這個字串,在IP上與運行環境保持了一致。
4、其它問題web
(1)
apache
經過http://SpringMVC訪問的是SpringMVC網站;
經過http://localhost訪問的是Tomcat自帶的網站;
咱們在hosts文件中已經知道,SpringMVC和localhost都對應的IP是:127.0.0.1
那麼,經過http://127.0.0.1訪問的是那個網站呢?
在Host的父節點是:<Engine name="Catalina" defaultHost="SpringMVC">
從上能夠看出,defaultHost="SpringMVC"決定了127.0.0.1訪問哪一個網站,個人設置是訪問SpringMVCtomcat
本文到此就要結束了,貼上個人server.xml文件內容:
<?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" />app
<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>webapp
<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>jsp
(2)網站
首先,修改$tomcat/conf/server.xml文件。
在server.xml文件中,有一段以下:
Xml代碼
spa
<engine name="Catalina" defaultHost="localhost改成你的域名">
debug
<host name="localhost改成你的域名" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> …… <host> </engine>
在<host></host>標籤之間添加上:
Xml代碼 <Context path="" docBase="myjsp" debug="0" reloadable="true" />
path是說明虛擬目錄的名字,若是你要只輸入ip地址就顯示主頁,則該鍵值留爲空;
docBase是默認目錄的路徑,它默認的是$tomcat/webapps/ROOT目錄,如今我在webapps目錄下建了一個myjsp目錄,讓該目錄做爲個人默認目錄。
debug和reloadable通常都分別設置成0和true。server
若有批評、指教、疑惑,請:
祝你們使用JAVA愉快!
有什麼錯誤請在後面指出,讓我及時更正。