win2003 IIS6配置PHP 5.3.3(fastCGI方式+eAccelerator)+ASP.NET 4.0(MVC3)

来源:互联网 发布:java创建对象 编辑:程序博客网 时间:2024/06/05 14:56

直入正题。

这个环境的部署很有讲究,折腾了一天,大概说一下思路:

自从哪个PHP的版本开始(5.2也不知道多少),就分了thread-safe版和non-thread-safe版,简称就是ts和nts版本,还区分了VC6和VC编译的版本,我作一下解释。(可以参见官方:http://windows.php.net/)

VC6是用在Apache服务器上的,而VC9则适用于IIS,这个比较明确,官方也给了明确说明。

ts和nts版本就比较讲究了。这个大家可以参考(http://blog.163.com/daizhen_dz@yeah/blog/static/129411342201042992157604/),我也是从这里学习到的。

IIS添加fastCGI模块,使其能够得以运行,再配置fastCGI的配置文件,添加对php-cgi.exe的支持。
结论就是,以fastCGI方式运行PHP会得到性能和资源的平衡。

MVC3的站,大都是通过没有后缀的方式请求的(controller/action的形式),我的解决方式我认为很合理:在PHP站中什么都不改,而针对.NET 4.0的站,添加对*(所有请求)请求的拦截处理,使用aspnet-isapi来处理请求,这样既不影响PHP性能(不会先经过aspnet的isapi处理),也不影响.NET站的运行。

环境需要以下资源:

  1. fastCGI for IIS(微软官方有下)
  2. .NET 4.0 Runtime(官方有下)
  3. PHP 5.3.3(为什么要这个版本,后续会解释,下载需要从php.net中windows的PHP里,archives中找,http://windows.php.net/downloads/releases/archives/)
  4. eAccelerator binary for PHP 5.3.3(一开始果断装了最新版的5.4.12,但是eAccelerator自己编译有点麻烦,官方的安装教程是源码安装的,但是服务器上哪来的VS,所以就通过二进制安装,直接找编译好的

对于以上环境做一些解释

  1. 只要是.NET 4.0,就不需要额外安装MVC3了,里面自带了,如果是4.0以下版本,还需要装MVC
  2. PHP和eAccelerator的版本是很有讲究的。官方的安装教程(https://github.com/eaccelerator/eaccelerator/wiki)教你的是从源码安装,linux下很合理,windows服务器上哪来的VS给你编译,所以就开始找binary版本(编译好的DLL)了,渠道可以参考官方的(https://github.com/eaccelerator/eaccelerator/wiki/InstallFromBinary)。
    我是从http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds 这里下载的,这个哥们编译了好多版本的eAccelerator,但是最新的版本也只能支持到PHP 5.3.3。
    我尝试了用5.4.12加载eAccelerator for PHP 5.3.3,结果证明不行,PHP错误日志输出版本不匹配,也尝试了低版本的PHP,依然不行。因此我还是将PHP降级到5.3.3,运行后成功。

具体安装步骤比较复杂,我写个简明版的。。主要就是些配置方面的东西,关键要把原理搞明白。

    1. PHP下好,放在c:\php里,PHP配置不详解了,再配个eAccelerator。
    2. 安装IIS,记得把ASP.NET勾上
    3. 打开IIS,添加fastCGI扩展(IIS7默认就带的,win2003的IIS6得自己配上),不会的话网上搜
    4. 让fastCGI支持php cgi扩展。
      打开C:\WINDOWS\system32\inetsrv,这是IIS fastCGI的目录,修改fcgiext.ini文件,末尾添上

      [Types]php=PHP[PHP]ExePath=C:\PHP\php-cgi.exeInstanceMaxRequests=10000ActivityTimeout=600RequestTimeout=600EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:C:\PHP\
    5. 添加PHP网站,啥都不用配就行了
    6. 添加.NET网站。选好ASP.NET版本,假设4.0。为了能处理没有后缀的请求,在”主目录”里”配置”,”映射”,下面那块”通配符应用程序映射”,添加一条 “C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll“,然后取消勾选”检查文件是否存在”。

基本就是这个过程了,这样就达到了既能跑.NET站,也能跑PHP站的目的了。

原创粉丝点击