一、将应用文件夹或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