tomcat部署應用的幾種方式


接着上篇 tomcat配置詳解,再來學習下如何在tomcat下部署應用 

1.部署方式

第一種,最常用,直接把WAR包或者文件夾直接放到webapps目錄下面,這時訪問路徑就是WAR包或者文件夾的名稱。

 如果想要context為空,即以http://localhost:8080/ 形式訪問,只要將WAR包重命名為ROOT.WAR或者將文件夾重命名為ROOT

ps:webapps其實是Host節點appBase屬性的值,相對路徑是相對於$CATALINA_BASE的,即$CATALINA_BASE/webapps,也可以配置為其他的值,或者一個絕對路徑,這樣那個目錄下的WAR包或者文件夾都會在Tomcat啟動時被自動發布

第二種, 在host節點下增加一個Context節點,一個Host節點可以包含多個Context節點。

<Context path="/test" docBase="test"/>其中path就是Context,如果要配置根目錄,只有設置path=””;docBase就是文件夾名稱或者是WAR包名,如果是相對路徑,則是相對於它所在Host節點的appBase

ps:不要將docBase指向webapps下的某個WAR或者文件夾,這樣可能會導致應用被多次發布;這種方式發布應用,需要重啟Tomcat才能生效

我修改了默認的server.xml,

<Host name="localhost"  appBase="myapps"
            unpackWARs="false" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/test" docBase="assetmgmt"/>
</Host>

發現http://127.0.0.1:8080/assetmgmt/或http://127.0.0.1:8080/test/ 都能訪問,出現這種情況是由於assetmgmt.war放在了myapps下導致項目被重復部署

第三種,在conf\Catalina\localhost下面添加test.xml,

<?xml version="1.0" encoding="UTF-8"?>

<Context path="" docBase="C:\Users\du\Desktop\to\apache-tomcat-6.0.43_manage\assetmgmt.war" >

</Context>

這樣就能通過http://127.0.0.1:8080/test/ 訪問了

這種方式其實是在$CATALINA_BASE/conf/{enginename}/{hostname},默認是$CATALINA_BASE/conf/Catalina/localhost下面添加一個{context}.xml,這樣就使用這個xml的文件名作為項目path:http://127.0.0.1:8080/{context}/訪問,如果{context}有多層,則用#間隔,例如a#b#c.xml,就用http://127.0.0.1:8080/a/b/c/訪問

ps:path不用指定,同樣也不能把war包放在{hostname}的{appBase}下,不用重啟Tomcat部署就能生效

第四種,直接登錄tomcat 管理控制台:http://localhost:8080/,使用tomcat manager發布

2.其它部署配置

1.如果想只啟動一個tomcat,使用不同端口提供服務,只要增加Service節點並相應改動相關值,

<Service name="Catalina1">
  <Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
  <Engine defaultHost="localhost" name="Catalina1">
    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
      <Context path="/test" docBase="test"/>
    </Host>
  </Engine>
</Service>

2.如果一個站點配置多個應用,可以同過增加host虛擬主機的方式實現

<Host appBase="aaa" autoDeploy="true" name="www.aaa.com" unpackWARs="true"
xmlNamespaceAware="false" xmlValidation="false">
<Context path="/test" docBase="test"/>
</Host>

<Host appBase="bbb" autoDeploy="true" name="www.bbb.com" unpackWARs="true"
xmlNamespaceAware="false" xmlValidation="false">
<Context path="/test" docBase="test"/>
</Host>

這樣www.aaa.com:8080/test的訪問實際是訪問$CATALINA_BASE/aaa/test的訪問,而對www.bbb.com:8080/test的訪問實際是對$CATALINA_BASE/bbb/test的訪問

 

 

參考文章:

1.Tomcat6上部署應用配置詳解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM