一般在tomcat服務器上部署 java web應用程序有兩種方式:靜態和動態
一、靜態部署
靜態部署即在啓動tomcat服務器之前部署好我們的web應用程序,只有當tomcat服務器啓用後,我們的web應用程序才能被訪問)
1、利用tomcat自動部署
將web應用程序拷貝到/usr/local/tomcat/webapps/下,然後重啓tomcat服務器即可,此時由於配置文件配置了autoDeploy="true,tomcat啓動此將自動加載該web應用
2、修改server.xml文件部署
可以將應用程序單獨放在一個目錄下
mkdir /webapps/
vim /usr/local/tomcat/conf/server.xml
添加如下一行
<Context path ="/Test" reloadable ="false" docBase ="/webapps"/>
path:是訪問時的根地址,表示訪問的路徑;如上述例子中,訪問該應用程序地址如下:http://localhost:8080/Test/
reloadable:表示可以在運行時在classes與lib文件夾下自動加載類包。其中reloadable="false"表示當應用程序 中的內容發生更改之後服務器不會自動加載,這個屬性在開發階段通常都設爲true,方便開發,在發佈階段應該設置爲false,提高應用程序的訪問速度。
docbase:表示應用程序的路徑,注意斜槓的方向“/”。 docBase可以使用絕對路徑,也可以使用相對路徑,相對路徑相對於webapps。
增加自定義web部署文件(推薦使用,不需要重啓Tomcat )
這種方式和方法2差不多,但不是在Server.xml文件中添加Context標籤,而是在$CATALINA_HOME/conf /Catalina/localhost中添加一個xml文件,如test.xml.在Tomcat安裝目錄conf/Catalina /localhost下,裏面有Tomcat自帶的三個應用,隨意複製其中的一個XML文件,然後修改docbase指向你自己的應用程序,並把文件名改 名,各參數參見方法2中的<Context>標籤的參數,或者你也可以自己新建一個XML文件。(注意此文件名將作爲Context中的path屬性值,不管文件裏的path屬性值如何設置也是無效的 ),將以下內容複製過去,修改相應路徑即可。
Xml代碼:
<Context path ="/Test" docBase ="/webapps"
debug ="0" privileged ="true" reloadable ="false" >
</Context>
訪問地址如下:http://localhost:8080/Test/
二、動態部署
動態部署是指可以在服務器啓動之後部署web應用程序,而不用重新啓動服務器。動態部署要用到服務器提供的manager.war文件,如果 在$CATALINA_HOME/webapps/下沒有該文件,你必須去重新下載tomcat,否則不能完成以下的功能。要想使用該管理程序必須首先編 輯$CATALINA_HOME/conf/tomcat-users.xml文件,內容如下:(關於這個文件的更多內容,請參考 Java Web應用程序的安全模型二 )
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<user username="coresun" password="coresun" roles="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
然後在瀏覽器中鍵入如下地址:http://localhost:8080/ ,應該看到一個加菲貓了吧。點擊左邊的Tomcat Manager鏈接,提示輸入用戶名和密碼,本文都是coresun ,然後可以看到以下頁面:
(1)Context Path(option): 中輸入/Pet
(2)XML Configration file URL 中要指定一個.xml文件,比如我們在F:/下建立一個Pet.xml文件,內容如下:<Context reloadable ="false" / > 。docBase 不用寫了,因爲要在下一個文本框中填入。或者更簡單點,這個文本框什麼都不填。
(3)WAR or Directory URL: 中鍵入F:/PetWet或者F:/Pet.war都可以,然後點擊Deploy按鈕,看看上面是不是已經看到了你web應用程序,名字就是你Context Path(option):中的名字。
(4)如果你部署.war文件還有更加簡單的方式,下面還有個Select WAR file upload 點擊瀏覽選擇.war文件,然後點擊Deploy也可以。
讓tomcat只運行conf/server.xml中指定的web應用
可以有以下2種辦法:
實現一:
1)將要部署的WEB應用放在webapps以外的路徑, 並在server.xml相應的Context 中的docBase 指定.
2)刪除webapps中的所有文件夾, 以及conf/catalina/localhost下所有xml文件.
注: webapps是server.xml中的Host 元素的appBase 屬性的值.
實現二:
修改server.xml中Host 元素的屬性, 添加或修改: deployXML ="false" deployOnStartup ="false" autoDeploy="false"
含義:
deployXML ="false" : 不部署conf/catalina/localhost下的xml相應的WEB應用
deployOnStartup ="false" :tomcat啓動時, 不部署webapps下的所有web應用
autoDeploy ="false" :避免tomcat在掃描改動時, 再次把webapps下的web應用給部署進來.
注:
Tomcat中webapps目錄下不能直接存放網頁格式的文件,否則無法訪問到該文件,必須有子目錄才能訪問該網頁文件。
例如:我們直接將index.html放在webapps目錄中,通過瀏覽器http://localhost:8080/index.html 是無法訪問到index.html的。而必須要webapps/petweb/index.html纔可以通過http://localhost:8080/petweb/index.html 訪問到index.html頁面。