冤家不路窄—网站发布软件共存比拼
【IT168 专稿】软件冲突,服务冲突,程序不兼容——恐怕这些都是最困扰我们网络管理员的问题,作为服务器管理来说也应该尽量避免上述问题的产生,因为一旦出现冲突和不兼容故障,排查起来是非常麻烦的,而且不能够按照常规思路去解决。不过有的时候我们不得不冒着冲突的风险去搭建服务环境,最常见的就是网站发布系统了。今天笔者就为各位IT168的读者介绍如何来解决网站发布软件共存的问题,让这些冤家不路窄。
一、为什么必须让多个发布软件共存:
很多时候由于企业规模和经费投入的原因,我们必须在同一台服务器上发布多个网站,而网站的构建语言有的是基于ASP有的是基于PHP的,按照常规环境搭建方法来说,ASP和IIS配合很完美而PHP则和apache是好搭档。所以为了保证网站的稳定性,减少语言和发布软件之间存在的兼容问题,我们不得不在同一台服务器上既安装IIS又安装Apache,同时发布不同网站。这时就会遇到这种多发布软件共存的冤家路窄问题。
二、从端口入手让冤家共存:
众所周知网站的发布都是基于端口的,即使是没有标明端口的地址也是默认使用80端口的。所以说要想让IIS和Apache两个页面发布工具能够同时发布不同站点的话,最常用最简单的方法就是将不同站点的发布端口进行修改。(如图1)
![]() |
| 图1 点击看大图 |
例如IIS上将发布站点变成http://ip:80,而apache上则将网站地址改为http://ip:81。这样这两个网站就不会相冲突。当然如果我们能够直接在企业DNS或ISP的DNS服务器上针对这两个网站进行地址解析的话,就可以使用域名1访问IIS发布的站点,使用域名2访问Apache发布的站点了,不过访问时要对于非80端口的网站添加端口信息。这样用户在访问两个站点时就不会察觉到他们在同一台服务器上了。而且由于两个网站和两个站点发布程序使用了不同的端口,也不会产生冲突问题。
缺点——访问两个站点时必须通过端口来区分,用户输入比较麻烦,而且就算是通过DNS解析不同名称也无法避免添加端口的操作。
三、从IIS主机头入手让冤家共存:(如图2)
![]() |
| 图2 点击看大图 |
熟悉Windows 2003系统中IIS 6的读者都会知道其添加了一个新的功能——主机头,通过主机头设置可以帮助我们用不同的域名访问不同的站点,当然这和虚拟目录有着本质区别。下面简单介绍下。
当我们用虚拟目录发布网站后访问不同虚拟目录实际使用的是诸如http://www.softer.com/111/,http://www.softer.com/222/这样的地址,明眼人马上就能够看出他们是在同一台服务器上使用虚拟目录发布的。然而当我们通过主机头发布网站后访问不同主机头实际使用的是诸如http://www.softer.com,http://www.ruanzheng.com这样的完全不同的地址,而这两个地址实际上解析的都是同一个IP。这就是主机头和虚拟目录的差别。
因此我们也可以利用IIS 6的主机头来实现冤家不路窄的功能,即在IIS上通过不同的主机头来发布不同站点,然后用Apache使用其中的一个主机头来发布站点。
缺点——主机头发布容易让管理者产生混淆,不太好管理不同站点。另外这种将Apache依托IIS主机头的方式也带来了一定的隐性故障。
四、代理方式让冤家共存:
还有一种方式可以让IIS和Apache和平共处,那就是将apache设为使用80端口,IIS使用其它端口比如81,然后将apache作为IIS的代理。具体方法是先用IIS发布基于81端口的网站,接下来用Apache发布基于80端口的网站,之后编辑Apache的httpd.conf配置文件,将下面四行的注释取消使之有效。(如图3)
![]() |
| 图3 点击看大图 |
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
然后建立一个虚拟主机,将该域名的所有访问转向81端口,从而实现IIS站点和Apache站点共存的目的。虚拟主机建立的方法也是编辑httpd.conf配置文件,添加如下内容。
<VirtualHost *:80>
//添加一个虚拟主机,端口是80
ServerName www.softer.com
//服务器的域名为www.softer.com
ProxyPass / http://localhost:81/
//将http://localhost:81/这个地址的站点通过此虚拟主机发布出去
ProxyPassReverse / http://localhost:81/
//当要解析此虚拟主机时发送请求到http://localhost:81/
</VirtualHost>
这样,对外就可以只需要一个端口了,即可以同时使用apache和IIS的功能了,而且两者都使用的80端口。
缺点——将apache作为IIS的代理会在一定程度上影响IIS网站的速度,毕竟经过代理,性能方面受到一定有影响。
五、总结:
由此可见保证Apache和IIS两个网站发布服务共存的方法比较多,但是真正能够完美解决的却没有,本文介绍的三个方法是通过三种截然不同的思路出发而诞生的,不过或多或少都存在着使用上不方便,性能上受影响等问题。各位读者只能够根据自己企业网络的实际情况去选择了,当然如果能够将这对冤家分开的话还是应该尽量安装在不同服务器上,或者使用同一个发布软件发布多个站点。
