Apache 和 IIS 的巧妙结合

发表于:2007-06-09来源:作者:点击数: 标签:
Apache 和 IIS 的巧妙结合 前段时间决定运用PHP5来 开发 最新的项目。由于很多程序还是用PHP4开发的,所以就涉及到如何同时调试PHP4和PHP5程序的问题了。经过一番试验,终于找到一种简单的方法,让我可以方便的调试PHP4和PHP5程序。 基本设置 原理说穿了很简

Apache 和 IIS 的巧妙结合
前段时间决定运用PHP5来开发最新的项目。由于很多程序还是用PHP4开发的,所以就涉及到如何同时调试PHP4和PHP5程序的问题了。经过一番试验,终于找到一种简单的方法,让我可以方便的调试PHP4和PHP5程序。

基本设置
原理说穿了很简单,就是让IIS运行PHP4,然后让Apache2运行PHP5。难点主要就是如何解决PHP4和PHP5使用各自php.ini的问题。

Apache 和 IIS 的巧妙结合
前段时间决定运用PHP5来开发最新的项目。由于很多程序还是用PHP4开发的,所以就涉及到如何同时调试PHP4和PHP5程序的问题了。经过一番试验,终于找到一种简单的方法,让我可以方便的调试PHP4和PHP5程序。

基本设置
原理说穿了很简单,就是让IIS运行PHP4,然后让Apache2运行PHP5。难点主要就是如何解决PHP4和PHP5使用各自php.ini的问题。

一、首先安装配置IIS+PHP4,方法就不啰嗦了。然后在IIS中,将默认网站的TCP端口设置为8080,以避免和Apache发生冲突;
二、安装Apache(我装的Apache 2.0.52)和PHP5。安装PHP5时,不要把PHP5的php.ini复制到C:\Windows中,这样会覆盖掉PHP4的php.ini文件。只要把PHP5的php.ini放在PHP5安装目录里面就行了;
三、配置Apache以支持PHP5:


LoadModule php5_module "d:/usr/local/php-5.0.3-Win32/php5apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
PHPIniDir "d:/usr/local/php-5.0.3-Win32"

其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置(也就是PHP5的安装目录)。

按照上面的配置后,PHP4和PHP5就可以同时运行了。使用 http://localhost:8080/ 就是访问IIS+PHP4,而 http://localhost/ 就是访问Apache+PHP5。

进一步优化
现在对刚刚的设置进一步优化,避免访问IIS+PHP4还要指定端口号的麻烦。

一、修改Apache配置文件,启用Proxy模块;


LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

二、继续修改Apache配置文件,让Apache处理对IIS+PHP4的访问;
ProxyPass /iis/ http://127.0.0.1:8080/
ProxyPassReverse /iis http://127.0.0.1:8080

这两行配置告诉Apache,当处理以/iis路径的请求时转发到 http://127.0.0.1:8080/。由于Apache的代理功能对于访问者来说是完全透明的,因此我们就可以使用下面的路径分别访问IIS+PHP4和Apache+PHP5:
http://localhost/iis/ 访问IIS+PHP4
http://localhost/ 访问Apache+PHP5

现在感觉就好多了,不用输入端口号就可以很方便的访问PHP4和PHP5程序了。

让不同的虚拟主机分别使用PHP4和PHP5
按照上面的思路,还可以让不同的虚拟主机使用不同版本的PHP。参考下面的配置:


<VirtualHost *:80>
    ServerAdmin daut@dualface.com
    DocumentRoot E:/www/dualface_dot_com
    ServerName www.dualface.com
    ServerAlias dualface.com
    DefaultLanguage zh-CN
    AddDefaultCharset UTF-8
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin daut@dualface.com
    ServerName dev.dualface.com
    DefaultLanguage zh-CN
    AddDefaultCharset GB2312
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

上面的配置中,一个虚拟主机的域名是 www.dualface.com。这个虚拟主机使用了PHP5,所以直接由Apache处理访问请求。另一个虚拟主机是 dev.dualface.com,由Apache转发到 http://127.0.0.1:8080/ 到处理。

当然了,我们不一定非要用IIS+PHP4和Apache+PHP5这种组合,改为Apache+PHP4和Apache+PHP5也是可以的,只不过多安装一套Apache而已。而且利用这个技巧,不但可以让虚拟主机使用不同的PHP,还可以让IIS来运行ASP、ASP.NET程序、Apache来处理静态网页和PHP程序,充分发挥Apache和IIS各自的强项。

原文转自:http://www.ltesting.net