本文主要講在Tomcat中部署項目的幾種方式:靜態部署、動態部署。html
靜態部署項目有好幾種方式,比較典型的有以下4種:java
直接將web項目文件件拷貝到webapps目錄中,Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啓動時,會加載全部這個目錄下的應用。web
也能夠將web項目打包成一個 war包放在目錄下,服務器會自動解開這個war包,並在這個目錄下生成一個同名的文件夾。一個war包就是有特性格式的jar包,它是將一個web程序的全部內容進行壓縮獲得。具體如何打包,可使用許多開發工具的IDE環境,如Eclipse等。也能夠用 cmd 命令:jar -cvf mywar.war myweb。apache
webapps這個默認的應用目錄也是能夠改變。打開Tomcat的conf目錄下的server.xml文件,將下面內容中appBase修改便可改掉便可:瀏覽器
1 <Host name="localhost" appBase="webapps" 2 unpackWARs="true" autoDeploy="true" 3 xmlValidation="false" xmlNamespaceAware="false">
建立一個虛擬主機目錄方式以下:tomcat
1)修改server.xml文件,在<Engine>標籤中新建一個<Host>標籤:服務器
<Host name="mytest.com" appBase="mytest" unpackWARs="true" autoDeploy="true"></Host>
其中虛擬主機地址名是mytest.com,目錄地址是mytest。網絡
2)在Tomcat目錄中建立mytest文件夾,並在該文件夾下新建aaa文件夾,在該文件夾中建立1.html文件:app
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div> 這是test~~ </div> 9 </body> 10 </html>
3)配置hosts代理:webapp
打開本地的C:\Windows\System32\drivers\etc\hosts配置文件,添加127.0.0.1 mytest.com。
修改本地hosts緣由:當在瀏覽器中打開某個url地址時,首先會到本地hosts文件中查找該域名對應的IP,若是查找不到,就會到對應網絡運營商的DNS服務器上解析查找對應的域名的IP,若是查找到了,就返回給瀏覽器,瀏覽器就給對應的IP地址發送請求,從而將對應頁面請求回來並呈現。而咱們上邊配置的mytest.com域名,並非想去網絡運營商DNS服務器上查找IP,而是要讓其對應到本地計算機IP上,到本地Tomcat中配置的mytest目錄中訪問資源,所以須要將mytest.com解析地址設置爲本地計算機。
4)關閉瀏覽器代理(非必操做步驟)
說明:在有些公司網絡中,都是經過代理服務器訪問外部網站的,若是不是經過代理服務器訪問外部網站,就能夠忽略這個步驟。
關掉代理緣由:不關掉代理的話,就會到代理服務器計算機上請求對應地址內容,而代理服務器上的hosts文件並無配置對應域名的IP。
5)啓動Tomcat服務器(已啓動的要重啓),測試是否部署成功
在瀏覽器中輸入:http://mytest.com:8080/aaa/1.html
顯示內容以下說明部署成功:
1)在Host標籤內,添加<Context path="/訪問資源目錄" docBase="e:/xxx"/>
在Tomcat的配置文件中,一個Web應用就是一個特定的Context,能夠經過在server.xml中新建Context裏部署一個web應用程序。
1 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 2 3 <Context path="/hello" docBase="D:\aaa" debug="0" privileged="true"></Context> 4 5 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 6 prefix="localhost_access_log" suffix=".txt" 7 pattern="%h %l %u %t "%r" %s %b" /> 8 </Host>
說明:
path是虛擬路徑;
docBase 是應用程序的物理路徑;
workDir 是這個應用的工做目錄,存放運行時生成的與這個應用相關的文件;
debug 則是設定debug level, 0表示提供最少的信息,9表示提供最多的信息;
privileged設置爲true的時候,才容許Tomcat的Web應用使用容器內的Servlet;
reloadable 若是爲true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,能夠在不重起tomcat的狀況下改變應用程序,實現熱部署;
antiResourceLocking 和antiJARLocking 熱部署是須要配置的參數,默認false避免更新了某個webapp,有時候Tomcat並不能把舊的webapp徹底刪除,一般會留下WEB-INF/lib下的某個jar包,必須關閉Tomcat才能刪除,這就致使自動部署失敗。設置爲true,Tomcat在運行對應的webapp時,會把相應的源文件和jar文件複製到一個臨時目錄裏。
注意:
若是有多個Context標籤,其path地址要不同,不然報錯;
能夠將部署目錄放在任何一個目錄中,而不用放在Tomcat工程中,例如本示例中放在D盤的aaa文件中。
2)在D盤建立aaa文件夾,並建立1.html文件:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div> 這是test~~ </div> 9 </body> 10 </html>
3)啓動Tomcat(已啓動須要重啓),測試是否部署成功:
在瀏覽器中輸入:http://localhost:8080/hello/1.html
顯示內容以下說明部署成功:
1)打開conf\Catalina\localhost目錄,並建立hello4.xml文件,並添加以下內容:
1 <?xml version='1.0' encoding='utf-8'?> 2 3 <Context path="/hello4" docBase="D:\aaa" debug="0" privileged="true"></Context>
2)在D盤建立aaa文件夾,並建立1.html文件
這個在上邊步驟都有。
3)啓動Tomcat(已啓動須要重啓),測試是否部署成功:
在瀏覽器中輸入:http://localhost:8080/hello4/1.html
顯示內容以下說明部署成功:
動態部署也稱做熱部署,是指動態建立部署目錄後,不須要重啓Tomcat就能夠生效。必須在Tomcat的管理界面下完成。
動態部署也有兩種方式:
1)建立用戶名和密碼
動態部署都是在Tomcat的管理界面進行的,這裏說的管理界面指的是Tomcat項目包中webapps/ROOT下提供的界面,即http://localhost:8080/地址打開的頁面。
在這個頁面中,右上角有個Manager App按鈕,點擊這個按鈕進入管理界面,但須要輸入用戶名和密碼,所以首先要配置用戶名和密碼。
配置方法:打開Tomcat項目中conf目錄下的tomcat-users.xml文件,在<tomcat-users>標籤中添加下面代碼:
1 <role rolename="manager-gui"/> 2 <role rolename="manager-script"/> 3 <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
role標籤說明:
指定權限,rolename屬性有四種權限能夠設置:
user標籤說明:
username指定用戶名;
password指定密碼;
roles指定該用戶具備的權限,多個權限之間用逗號隔開。
注意:上邊這些權限說明能夠在Tomcat項目提供的http://localhost:8080/manager/html地址上看到。
2)啓動Tomcat服務器,打開http://localhost:8080界面,點擊右上角Manager App按鈕,輸入用戶名和密碼,進入Tomcat管理界面:
在在頁面中,Applications欄目顯示的是當前已啓動的部署目錄地址,從下圖能夠看到,咱們上邊靜態方式部署的目錄都在:
3)在管理界面中下邊Deploy欄目,進行新項目目錄添加和管理:
Context Path(required):輸入訪問路徑名,相似靜態部署中的,這表明你的應用的訪問地址。
XML Configration file URL:中要指定一個xml文件地址,好比咱們在F:\下創建一個hmcx.xml文件,這個是可選項,若是不填該項,就須要在下邊的WAR or Directory URL中指定部署目錄地址。
WAR or Directory URL:輸入部署目錄地址。
填寫完這些信息,點擊下邊的Deploy按鈕便可完成部署。
這時,咱們在上邊的Applications列表中,能夠看到路徑是/hello5的項目已添加。
4)測試是否部署成功
此次就不須要重啓Tomcat,而是在瀏覽器直接輸入:http://localhost:8080/hello5/1.html。
顯示以下效果說明部署成功:
在管理界面的Deploy欄目中,還有個WAR file to deploy子欄目,這個就是經過上傳.war包方式部署,這種方式更簡單。
java工程打包出來的是一個jar包,而Web工程打包出來的是一個WAR包。具體如何建立和打包,後邊會補充。
速學堂:http://www.sxt.cn/tomcat/tomcat-deployment.html