应用背景:某公司已有官网和域名,后随着业务扩展,又相继开发了三个项目。起初,这三个项目是通过服务器ip地址+项目名进行访问。但后来由于公司服务器托管方迁移机房,原先IP地址不能再使用,从而导致移动端产品无法进行使用,须修改项目中涉及到IP地址引用的地方,生成新的apk,重新发布,扩展性差。公司决定从长远着想,放弃使用IP访问项目的方式,改而使用域名进行访问。但考虑到实际情况,不可能为每个项目都申请一个顶级域名,所以提出使用三个二级域名,分别配置到三个项目中,从而实现使用域名访问项目,以后如果服务器IP地址发生改变,只需在域名管理平台修改IP地址即可。
总体步骤是:1.申请二级域名,绑定服务器IP;
2.修改默认端口号;
3.配置tomcat中的server.xml。
下面分开详细讲解具体实现:
1.登录域名管理平台,点击域名管理,选中要绑定到的顶级域名,然后点击域名解析:
点击后弹出域名解析的操作界面,在子域名/主机名处输入你要绑定的二级域名,Type使用默认的就好,同步建立子网站处输入项目所在服务器的IP地址,然后点击添加次级域名即可.如下图:
2.修改默认端口号:tomcat默认监听端口是8080,我们如果想不带端口的直接访问项目,就必须监听80 端口;我们需要把service.xml文件里的
<Connector port="8080" protocol="HTTP/1.1" 的**port值改为80**
3.修改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