Linux系统通过设置二级域名访问项目

应用背景:某公司已有官网和域名,后随着业务扩展,又相继开发了三个项目。起初,这三个项目是通过服务器ip地址+项目名进行访问。但后来由于公司服务器托管方迁移机房,原先IP地址不能再使用,从而导致移动端产品无法进行使用,须修改项目中涉及到IP地址引用的地方,生成新的apk,重新发布,扩展性差。公司决定从长远着想,放弃使用IP访问项目的方式,改而使用域名进行访问。但考虑到实际情况,不可能为每个项目都申请一个顶级域名,所以提出使用三个二级域名,分别配置到三个项目中,从而实现使用域名访问项目,以后如果服务器IP地址发生改变,只需在域名管理平台修改IP地址即可。

总体步骤是:1.申请二级域名,绑定服务器IP;

          2.配置tomcat中的server.xml。

下面分开详细讲解具体实现:

1.登录域名管理平台,点击域名管理,选中要绑定到的顶级域名,然后点击域名解析:
这里写图片描述

点击后弹出域名解析的操作界面,在子域名/主机名处输入你要绑定的二级域名,Type使用默认的就好,同步建立子网站处输入项目所在服务器的IP地址,然后点击添加次级域名即可.如下图:
这里写图片描述

2.修改tomcat/conf里面的server.xml的配置

首先保证三个项目正常部署在同一个tomcat里,默认端口号是都是80,这时候访问的url均为http://IP地址/各自项目名/

然后修改tomcat配置,如果注释掉原本的host配置,将会导致只能使用域名进行访问 不能再使用原来的IP地址进行访问。新增三个host,

      <!-- 注释掉原来默认的Host-->
      <!-- <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      </Host>  -->
      <!--新增3个项目的配置-->
    <Host name="health.develop.com"  appBase="/usr/local/tomcat/health/"
            unpackWARs="true" autoDeploy="true">
        xmlValidation="false" xmlNamespaceAware="false"> 
    </Host>

    <Host name="krk.develop.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
      <Context path="" docBase="/usr/local/tomcat/apache-tomcat-7.0.57/webapps/krk" debug="0" reloadable="true"/> 
    </Host>

    <Host name="smart.develop.com"  appBase="webapps"  unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
       <Context path="" docBase="/usr/local/tomcat/apache-tomcat-7.0.57/webapps/Smart" debug="0" reloadable="true"/> 
    </Host>

三个host配置的name对应三个域名,下面的context节点的docBase分别对应三个项目路径,Context的path属性不用配置。

最后重启tomcat,即可实现使用域名访问项目了。

细心的网友可能是发现,第一个项目与第二个项目配置不太一样,当我把第一种方式替换成跟第二、三种一样的的配置方式时,发现竟然报如下异常,java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded,项目也访问不了。无奈只能采取两种配置方式并存,不知是什么原因,知道的网友不妨说下。
回归正题,这里面涉及到appBase和docBase的区别了

我们先看appBase,这个目录表示:
1 这个目录下面的子目录将自动被部署为应用。
2 这个目录下面的.war文件将被自动解压缩并部署为应用

而docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。

所以如果你想自己指定路径,那么应该在docBase里面。

同时要注意的是server.xml是tomcat的核心配置文件,如果在修改过程中出错,重启后可能tomcat就会报错,或者没报错,但是项目就是访问不了,不用想,肯定是server.xml哪里不小心配置错了,少个符号,少个闭合标签均有可能,总之要细心。关于第一种项目配置方式,我将在另一篇博客中讲述,陷于篇幅关系,就不在这里赘述了。
补充,另一篇地址:https://blog.csdn.net/shenxiaomo1688/article/details/80946154

猜你喜欢

转载自blog.csdn.net/shenxiaomo1688/article/details/80946032
今日推荐