目录
1.实验描述
2.实验环境
2.实验过程
2.1 创建order和user项目
2.2 打包项目
2.3 修改tomcat的server.xml的配置
2.4 启动tomcat
2.5 配置本地host
2.6 验证
1.实验描述
目前有两个域名,分别是:
order.abc.com
user.abc.com
两个项目,分别是order和user,那么希望在一个tomcat下配置两个host,使得order.abc.com访问order项目,user.abc.com访问user项目,同时要避免两个项目重复加载
2.实验环境
apache-tomcat-8.5.13、jdk8、win10
3.实验过程
2.1 创建order和user项目
这里我直接使用springboot快速创建了两个项目order和user,分别在两个项目中做了一个测试Controller如下:
order:
@RestController
@RequestMapping("/order")
public class TestController {
@GetMapping("/detail")
public String order(){
return "order";
}
}
user:
@RestController
@RequestMapping("/user")
public class TestController {
@GetMapping("/detail")
public String user() {
return "user";
}
}
2.2 打包项目
将order和user项目package打成war,然后解压,生成order和user的两个项目。将order和user分别复制到如下两个目录,复制完成后的项目路径如下:
D:/testproject/order
D:/testproject/user
2.3 修改tomcat的server.xml的配置
主要修改的有两处
- 修改默认的端口为80
- 增加host配置
修改完成后的配置如下:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" relaxedQueryChars="[]|{}^\`"<>" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="order.abc.com"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="D:/testproject/order"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="user.abc.com"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="D:/testproject/user"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
2.4 启动tomcat
双击tomcat bin目录下的startup.bat,启动tomcat
2.5 配置本地host
127.0.0.1 user.abc.com order.abc.com
2.6 验证
访问http://order.abc.com/order/detail,结果如下:
访问http://user.abc.com/user/detail,结果如下:
验证成功。同时查看tomcat启动日志,两个项目都仅仅启动一次。实验完成