tomcat deploy部署项目三种方法

1、将应用文件夹或war文件直接copy到tomcat的webapps目录下,这样tomcat启动的时候会将webapps目录下的文件夹或war文件的内容当成应用部署。这种方式最简单且无须书写任何配置文件。
2、在tomcat的server.xml配置文件中的Host节点下增加Context子节点,如:

 
<Context path="/test"docBase="D:private omcat est.war"/>
//其中path制定访问url路径, docBase项目真是路径

其中,path即context path;docBase指向应用所在的文件夹或war文件,可以是绝对路径,也可以是相对路径(相对该Context所在的Host的appBase属性值);
3、在tomcat的conf/[Engine]/[Host]目录下新建xml文件,文件名为context path,内容如下:

 
<Context docBase="D:private omcat est.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与第二种方式中的含义一样;

当Host的autoDeploy属性值为true时,以上三种配置Context的方式中,只有第1、3两种方式配置署的应用不需要重启tomcat即可完成部署;第二种方式需要重启tomcat;另外,第1种方式不能指定特定的context path;

修改Tomcat默认访问根目录

Tomcat安装后,Tomcat的主目录是webapps/root目录。

在conf文件夹下面找到server.xml 配置文件打开

在<hosts>  ......</hosts>中间添加一行

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


一个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。

2、配置说明:

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 
 

原文地址:https://www.cnblogs.com/youxin/p/5274858.html