tomcat deploy部署項目三種方法

一、將應用文件夾或war文件直接copy到tomcat的webapps目錄下,這樣tomcat啓動的時候會將webapps目錄下的文件夾或war文件的內容當成應用部署。這種方式最簡單且無須書寫任何配置文件。
二、在tomcat的server.xml配置文件中的Host節點下增長Context子節點,如:html

 
<Context path= "/test" docBase= "D:\private\tomcat\test.war" />
//其中path制定訪問url路徑, docBase項目真是路徑

其中,path即context path;docBase指向應用所在的文件夾或war文件,能夠是絕對路徑,也能夠是相對路徑(相對該Context所在的Host的appBase屬性值);
三、在tomcat的conf/[Engine]/[Host]目錄下新建xml文件,文件名爲context path,內容以下:java

 
<Context docBase= "D:\private\tomcat\test.war"
  privileged= "true" antiResourceLocking= "false" antiJARLocking= "false" >
  <!-- Link to the user database we will get roles from -->
  <ResourceLink name= "users" global= "UserDatabase"
  type= "org.apache.catalina.UserDatabase" />
</Context>

其中,docBase與第二種方式中的含義同樣;nginx

當Host的autoDeploy屬性值爲true時,以上三種配置Context的方式中,只有第一、3兩種方式配置署的應用不須要重啓tomcat便可完成部署;第二種方式須要重啓tomcat;另外,第1種方式不能指定特定的context path;web

 

 

修改Tomcat默認訪問根目錄

 

Tomcat安裝後,Tomcat的主目錄是webapps/root目錄。spring

在conf文件夾下面找到server.xml 配置文件打開apache

在<hosts>  ......</hosts>中間添加一行tomcat

<Context path="" docBase="/usr/tomcat/apache-tomcat/webapps/xxx" debug="0" reloadable="true"/>
--------------------- app

 


一個tomcat下部署不一樣端口多個應用

打開server.xml.多加上

 <Service name="web">
    <Connector port="8088"   protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>
 
    <Engine name="web" defaultHost="localhost">
        <Host name="localhost" appBase="webapp1">
          <Context docBase="/data/java/appstore-web" path="" reloadable="true" />
        </Host>
    </Engine>
  </Service>
  
  <Service name="web2">
    <Connector port="8089"   protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>
    <Engine name="web2" defaultHost="localhost">
        <Host name="localhost" appBase="webapp2">
          <Context docBase="/data/java/appstore-web2" path="" reloadable="true" />
        </Host>
    </Engine>
  </Service>

 

1)啓動tomcat後,在tomcat配置目錄:/usr/local/tomcat/conf下,除了默認的Catalina文件夾外,還會生成web1和web2兩個文件夾。緣由是Engine組件中,指定了所用的web1和web2。固然,咱們能夠將不一樣service組件的Engine name都指定成Catalina。框架

2)啓動tomcat後,在tomcat目錄:/usr/local/tomcat下,除了默認的webapps文件夾外,還會生成webapp1和webapp2兩個目錄。緣由是Host組件中,指定了appBase偉webapp1和webapp2.固然,咱們能夠將不一樣service組件的Host appBase指定成默認的webapps。webapp

 

二、配置說明:

1)appBase是虛擬主機存放webapp的目錄,它能夠是相對路徑,也能夠是絕對路徑。若是是相對路徑,則相對於$CATALINA_HOME,嚴格並準確地說是CATALINA_BASE。

2)path是URI的匹配路徑,至關於nginx的location後的路徑。tomcat要求每一個虛擬主機必須配置一個空字符串的path,該條context做爲URI沒法被明確匹配時的默認context,它至關於nginx中location / {}的做用。

3)docBase則是每一個webapp的存放目錄(或者是已歸檔的war文件),它能夠是相對路徑,也能夠是絕對路徑,提供相對路徑時它相對於appBase。該目錄通常在appBase的目錄下,但並不規定必定要放在appBase下。對於web服務來講,它至關於nginx的root指令,但對於webapp來講,一個context就至關於一個webapp,而docBase正是webapp的路徑。
---------------------  

 

注意:

1)如果多個項目都用了spring框架,那麼在配置成一個tomcat多端口多應用時,可能會報錯:

 

13-Apr-2018 12:52:08.716 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [/data/ttbrain-log-admin/] instead of [/data/Disu/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:151)
at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:116)
at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 

緣由是:部署在同一容器中的Web項目,要配置不一樣的<param-value>,不能重複,不然就會報上面相似的錯誤。

 

---------------------  參考:https://blog.csdn.net/liuxiao723846/article/details/79940428  

相關文章
相關標籤/搜索