Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)

先停止tomcat服务

1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动生成此目录)

2.新建admin.xml(admin为项目名称,要对应)

admin.xml内容:

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" debug="0"docBase="/home/jenkins/webapps/admin"reloadable="false">
</Context>

3.把项目移动到 /home/jenkins/webapps

项目完整目录为:/home/jenkins/webapps/admin

但很多时候,我们希望不需要项目名称,直接输入域名就可以访问了,做法是:

(1).为了保险起见,删掉tomcat服务器中的webapps目录下的ROOT文件夹。

(2).将xml文件名改为ROOT(ROOT.xml)

项目访问路径是以xml文件名为准的(ROOT会自动忽略)。

4.启动tomcat

下面介绍怎么使用这种方法进行域名配置,一般我们会遇到这种情况,客户会给我们一个域名,让这个域名可以访问前端网站、后端管理网站和api接口,那么我们可以把前端网站配置成域名直接访问,然后其他两个配置两个不同的域名后缀(本例使用admin和ser)即可。可以满足需求。下面以域名 www.test007.com 进行配置。

1.配置server.xml

修改访问端口为80

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

添加一个<Host>并配置域名到新<Host>中,后面如果更换域名直接修改name的属性即可。

      <Host name="www.test007.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

2.为了保险起见,删掉tomcat服务器中的webapps目录下的ROOT文件夹,启动tomcat、停止tomcat

3.进入 confCatalinawww.test007.com 目录, www.test007.com目录为上面的域名

4.新建ROOT.xml(前端网站配置文件)并添加如下内容,docBase的属性根据自己实际前端网站项目路径修改

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:UsersAdministratorDesktopproject" reloadable="false" >
</Context>

5.新建admin.xml(后端管理网站配置文件)并添加如下内容,docBase的属性根据自己实际后端管理网站项目路径修改

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:UsersAdministratorDesktopproject-admin" reloadable="false" >
</Context>

5.新建ser.xml(后端管理网站配置文件)并添加如下内容,docBase的属性根据自己实际服务端接口项目路径修改

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:UsersAdministratorDesktopproject-api" reloadable="false" >
</Context>

6.启动tomcat, 三端的完整域名为:前端 http://www.test007.com ; 后端管理 http://www.test007.com/admin ; api接口 http://www.test007.com/ser

更简单的方法新增的<Host>如下即可:

        <Host name="www.test007.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            <Context path="" docBase="C:UsersAdministratorDesktopproject" reloadable="true" crossContext="true" />
            <Context path="admin" docBase="C:UsersAdministratorDesktopproject-admin" reloadable="true" crossContext="true" /> 
            <Context path="ser" docBase="C:UsersAdministratorDesktopproject-api" reloadable="true" crossContext="true" /> 
        </Host>

注1:xmlValidation="false" xmlNamespaceAware="false"

加上这两个属性就可以在
<Context path="" docBase="" reloadable="true" />
中的docBase里直接配置项目名称,也就是webapps下的你的war包解压的根目录名称,而不用配置绝对路径,没有这两个属性配置相对路径无法将该项目设置为默认项目,访问localhost仍然是tomcat 首页,亲测有效。 

注2:

我们先看appBase,这个目录表示:
1 这个目录下面的子目录将自动被部署为应用。
2 这个目录下面的.war文件将被自动解压缩并部署为应用
而docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。
总结:
如果你想自己指定路径,那么应该在docBase里面
如果你想简单,那么直接把他们复制到appBase下面就行了

如果想war包自动解压部署【可以只更新war不重启tomcat】那可以这么配置【其中(/Users/weishengbin/0test/pro)为应用总目录,同tomcat中的webapps目录】:

而(/Users/weishengbin/0test/pro/admin)为应用目录。

<Host name="localhost" appBase="/Users/weishengbin/0test/pro" unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/Users/weishengbin/0test/pro/admin" reloadable="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>
原文地址:https://www.cnblogs.com/007sx/p/5750448.html