一、將應用文件夾或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的主目錄是webapps/root目錄。spring
在conf文件夾下面找到server.xml 配置文件打開apache
在<hosts> ......</hosts>中間添加一行tomcat
<Context path="" docBase="/usr/tomcat/apache-tomcat/webapps/xxx" debug="0" reloadable="true"/>
--------------------- app
<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