如何在一台服务器上部署多个相同url的应用?
现在的服务器性能越来越强,内存动辄4G、8G,而32位JDK下,单个java堆一般不超过1.7G。那多出来的内存怎么办?建垂直集群(Vertical clusters:垂直集群是指同一机器上部署多个服务器,充分利用硬件资源)可以,简单的部署多个appserver也行。但是应用如何处理?如果多个项目都需要用相同的context root,比如说/,那怎么办?
其实做过网站的朋友都知道,一台服务器上一般不可能只放一个网站,那如何访问到这些网站,有三种方法:
- IP不同,一个网卡上绑定多个IP,不同的IP对应不同的网站。
- 端口不同,不同的网站运行在不同的端口上。
- 虚拟主机不同,通过不同的虚拟主机名(一般都是域名)来访问。
那对于webshpere或者weblogic,很明显可以实行的是上述第三种方案。部署应用时会让我们选择部署到哪台虚拟主机,默认的都为default host,所以我们只要新建一个虚拟主机,名称一般为域名。那么就能实现通过一级域名直接访问应用。即使一台app server上部署了多个应用。
这种设置对于提供互联网服务的应用尤其有效,因为大家本来就是通过域名来访问的。而且即使只有一个应用,设置非默认的虚拟主机名可以起到只能通过域名来访问,而IP地址访问则会得到应用服务找到的错。虽说提高的安全性不多,但能满足年底全市各部门关于“只能通过域名访问,而IP无法访问”的要求。
至于内网用户,可以在内部dns上配置域名解析,或者编写hosts文件,达到同样效果。
更新:对于webshpere,我测试下来即使不同的虚拟主机,相同的上下文根也无法同时启动。在日志里会看到已经有重复的Context root了,这样的话只能配置apache使用它的虚拟主机解决


应该都是这么弄得吧
确实,对于做网站的这是最基础的知识,但是隔行如隔山,很多webshpere等中间件管理员往往不知道virtual host还有这个作用。@Thinkqob