平常的開發我們都是通過IDE進行項目的部署,但有時候我們不得不進行手工部署(例如在Server上)。
手工部署分為以下幾步:
第1步: 用maven打war包 (假如得到的war包名為: appkit-web.war)
mvn package
如果想打包過程中跳過測試,采用以下命令:
mvn package -Dmaven.test.skip=ture
第2步: 把war包拷貝到tomcat安裝的webapps目錄下
cp target/appkit-web.war ~/software/apache-tomcat-7.0.54/webapps/
第3步: 啟動tomcat (我的tomcat的根目錄為:/Users/aborn/software/apache-tomcat-7.0.54)
./bin/catalina.sh run
然后在瀏覽器中打開 http://localhost:8080/appkit-web/index.html
這里有個問題,它默認根目錄是要加項目名的,如上加了appkit-web, 這樣有些資源文件加載不出來(因為資源文件是以根目錄為相對路徑)。
要想修改這個根目錄,只要修改Tomcat的server.xml配置文件(它在 conf/server.xml)
在<Host>與</Host>之間加上以下這句話
<Context path="/" docBase="appkit-web" debug="0" privileged="true"/>這個配置的path指的是根目錄,docBase指的是war名。
這樣只要在瀏覽器上打開:http://localhost:8080/index.html 就行了。
<!-- Tomcat Manager Context -->
<Context path="/manager" docBase="manager" debug="0"privileged="true"/>
path="" 為部署后運行的url路徑,docBase為你的war的文件名。 第一次運行的時候,tomcat會自動解壓war,生成path指定名稱的網站。
這里docBase中的"manager"就表示war文件名稱為“manager.war"
修改server.xml在tomcat下部署多個WEB工程
第一步:
server.xml 修改如下:
<Host name="localhost" appBase="WebRoot"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="F:\myeclipse8work\teset\WebRoot"
workDir="F:\java\tomcat-work" reloadable="true">
</Context>
</Host>
<Host name="zhangda" appBase="WebRoot"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="F:\myeclipse8work\hibernate\WebRoot"
workDir="F:\java\tomcat-work2" reloadable="true">
</Context>
</Host>
wordDir 是設置不同項目的緩存目錄,不同的項目設置不同緩存目錄。
第二步:
在C:\Windows\System32\drivers\etc下找到hosts文件,修改如下內容:
127.0.0.1 localhost
127.0.0.1 zhangda
去掉前面的“#”。
第三步:
在瀏覽器輸入:http://localhost:8080 可以訪問 F:\myeclipse8work\teset\WebRoot 內容。
在瀏覽器輸入:http://zhangda:8080 可以訪問 F:\myeclipse8work\hibernate\WebRoot 內容。
tomcat server.xml配置
一、修改端口
Tomcat默認的WEB端口為8080,我一般喜歡把它改成80,當然這是完全沒有必要的
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
注意是修改HTTP協議的,也就是protocol="HTTP/1.1"的,不是其他的。
二、增加虛擬目錄
1、最簡單的方式:直接把JavaEE網站放在$CATALINA_HOME/webapps目錄下了,然后通過http://localhost/WebName,WebName為網站的目錄名;
2、自定義:把網站放在其它的目錄下,比如放在/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的虛擬目錄了,當然,這里的名字完全依個人而定的。
三、增加虛擬主機
其實這才是本文要說的重點,也就是本文開頭說的那種案例。我們每開發一個網站,都是通過http://localhost/WebName的形式訪問,是不是很麻煩?
1、修改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
2、修改配置文件
在</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了。
3、目錄設置
主機SpringMVC的WEB文件全放在/var/www/webapp/SpringMVC目錄下,在該目錄下增加ROOT目錄,放入你的JavaEE網站工程,這樣,你就可以通過http://SpringMVC訪問你的網站了,后面少了/SpringMVC這個字串,在IP上與運行環境保持了一致。
四、其它問題
通過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訪問哪個網站,我的設置是訪問SpringMVC
