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 "%r" %s %b" /> </Host>
2.为了保险起见,删掉tomcat服务器中的webapps目录下的ROOT文件夹,启动tomcat、停止tomcat
3.进入 conf\Catalina\www.test007.com 目录, www.test007.com目录为上面的域名
4.新建ROOT.xml(前端网站配置文件)并添加如下内容,docBase的属性根据自己实际前端网站项目路径修改
<?xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="C:\Users\Administrator\Desktop\project" reloadable="false" > </Context>
5.新建admin.xml(后端管理网站配置文件)并添加如下内容,docBase的属性根据自己实际后端管理网站项目路径修改
<?xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="C:\Users\Administrator\Desktop\project-admin" reloadable="false" > </Context>
5.新建ser.xml(后端管理网站配置文件)并添加如下内容,docBase的属性根据自己实际服务端接口项目路径修改
<?xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="C:\Users\Administrator\Desktop\project-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:\Users\Administrator\Desktop\project" reloadable="true" crossContext="true" /> <Context path="admin" docBase="C:\Users\Administrator\Desktop\project-admin" reloadable="true" crossContext="true" /> <Context path="ser" docBase="C:\Users\Administrator\Desktop\project-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 "%r" %s %b" /> </Host>