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