zoukankan      html  css  js  c++  java
  • 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 
     

  • 相关阅读:
    C# 数据库连接字符串拼接
    C# 线程同步计数存在的问题
    字符串操作
    字符串位置
    6个基本函数
    占位符
    str转换成int
    python运算符6
    python运算符5
    python运算符4
  • 原文地址:https://www.cnblogs.com/youxin/p/5274858.html
Copyright © 2011-2022 走看看