应用到: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista
Internet Information Services (IIS) 7.0 增加了对 FastCGI 协议的支持,该协议可提高 IIS Web 服务器上承载的常用应用程序框架(如 PHP)的性能和可靠性。 FastCGI 可提供高性能的通用网关接口 (CGI) 协议的替代方案,这是一种使外部应用程序能与 Web 服务器接合的标准方式。
适用于 Windows Server® 2008 和 Windows Vista® Service Pack 1 (SP1) 的 IIS 7 目前包括一个内置的 FastCGI 组件。 本主题说明如何使用 FastCGI 模块将 PHP 应用程序托管在 Windows Server 2008 和 带 SP1 的 Windows Vista 的 IIS 7 上。
重要提示:本主题提供了关于如何在 Windows Server 2008 和 带 SP1 的 Windows Vista 上安装和使用 FastCGI 组件的说明。 对于 Windows Vista(非 SP1),没有官方支持的 FastCGI 组件。 如果必须在 Windows Vista 操作系统上使用 FastCGI 组件,则强烈建议升级到 带 SP1 的 Windows Vista。
在 Windows Server 2008 上启用 IIS 7.0 中的 FastCGI 支持
在 Windows Server 2008 上启用 IIS 7.0 中的 FastCGI 支持
- 打开“服务器管理器”。
- 在右窗格中的“角色摘要”下,单击“添加角色”。
- 使用“添加角色向导”选择“CGI”角色服务。 这样便可同时启用 CGI 和 FastCGI 服务。
在 Windows Vista SP1 上启用 IIS 7.0 中的 FastCGI 支持
在 Windows Vista SP1 上启用 IIS 7.0 中的 FastCGI 支持
- 转至 Windows 的“开始”菜单,打开“控制面板”。
- 双击“程序和功能”。
- 单击“打开或关闭 Windows 功能”。
- 在 Windows 的“功能”对话框中,展开“Internet 信息服务”、“万维网服务”和“应用程序开发功能”,然后选择“CGI”。 单击“确定”。
- 从下面的其中一个位置安装 FastCGI 模块的更新。 此更新可解决多个已知的与常用 PHP 应用程序的兼容性问题。
安装和配置 PHP
建议对 IIS 7 FastCGI 使用 PHP 的非线程安全内部版本。 与标准的内部版本相比,PHP 的非线程安全内部版本不执行任何线程安全检查,因而可显著提高性能。 之所以不必执行这些检查是因为 FastCGI 可确保单线程的执行环境。
安装 PHP
- 转至 PHP 网站,然后下载最新的 PHP 非线程安全二进制文件。
- 将文件解压到您选择的目录,如 C:\PHP。 重命名 Php.ini,建议命名为 Php.ini
- 打开 Php.ini 文件,然后取消注释并如下所示修改设置:
- 设置 fastcgi.impersonate = 1。 IIS 中的 FastCGI 支持模拟呼叫客户端的安全令牌的功能。 这样便可允许 IIS 定义在其下运行请求的安全上下文。
- 设置 cgi.fix_pathinfo=1。Cgi.fix_pathinfo 可对 CGI 提供实际的 PATH_INFO/PATH_TRANSLATED 支持。 以前的 PHP 行为是将 PATH_TRANSLATED 设置为 SCRIPT_FILENAME,并且在 PATH_INFO 中忽略该设置。 有关 PATH_INFO 的详细信息,请参阅 CGI 说明。 将 PATH_INFO 的值设置为 1 将促使 PHP CGI 将其路径与说明匹配。
- 设置 cgi.force_redirect = 0。
- 将 open_basedir 设置为指向网站内容所在的文件夹或网络路径。
- 要测试 PHP 是否安装成功,请在命令提示符处键入以下内容:
C:\PHP>php –info
如果 PHP 安装正确且计算机上提供了其所有的依赖项,则此命令将会输出当前的 PHP 配置信息。
将 IIS 7.0 配置为使用 UI 处理 PHP 请求
对于要托管 PHP 应用程序的 IIS 7,您必须添加处理程序映射,该映射会命令 IIS 使用 FastCGI 协议将 PHP 文件的所有请求都传给 PHP 应用程序框架。
使用 UI 添加服务器级别的处理程序映射
- 打开“IIS 管理器”,然后移至服务器级别。
- 双击处理程序映射。
- 在“操作”窗格中,单击“添加模块映射”。
- 在“添加模块映射”对话框中,指定配置设置,如下所示:
- 请求路径:*.php
- 模块:FastCgiModule
- 可执行文件:C:\[PHP 的安装路径]\php-cgi.exe
- 名称:PHPviaFastCGI
- 单击“确定”。
- 在请您确认是否要为可执行文件创建 FastCGI 应用程序的对话框中,单击“是”。
- 要验证处理程序映射是否正常工作,请在 C:\inetpub\wwwroot 文件夹下创建一个 Phpinfo.php 文件,其中包含:
<?php phpinfo(); ?>
- 打开 Web 浏览器,然后导航至 http://localhost/phpinfo.php。如果一切内容都经过正确设置,则您会看到标准的 PHP 信息页面。
将 IIS 7.0 配置为使用命令行处理 PHP 请求
还可以使用 Appcmd.exe 添加处理程序映射。
使用命令行添加服务器级别的处理程序映射
- 要创建 FastCGI 应用程序进程池,请运行以下命令:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCgi /+[fullPath=’c:\{php_folder}\php-cgi.exe’]
- 要创建处理程序映射,请运行以下命令:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name=’PHP_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\{php_folder}\php-cgi.exe’,resourceType=’Either’]
注意:如果使用的是 PHP 的 4.x 版本,则可以使用 Php.exe 来代替 Php-cgi.exe。
配置 PHP 和 FastCGI 的回收行为
确保 FastCGI 总是在本机 PHP 回收开始之前回收 Php-cgi.exe 进程。 配置属性 instanceMaxRequests 控制着 FastCGI 进程回收行为。 此属性可指定回收之前 FastCGI 将要处理的请求数量。 PHP 也具有类似的进程回收功能,该功能由环境变量 PHP_FCGI_MAX_REQUESTS 控制。 通过将 instanceMaxRequests 设置为一个小于或等于 PHP_FCGI_MAX_REQUESTS 的值,便可确保本机 PHP 进程回收逻辑永远都不会开始。
要设置这些配置属性,请使用以下命令:
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath=’c:\{php_folder}\php-cgi.exe’].instanceMaxRequests:10000
C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+[fullPath=’c:\{php_folder}\php-cgi.exe’].environmentVariables.[name=’PHP_FCGI_MAX_REQUESTS’, value=’10000′]
注意:如果这些参数未经过设置,则(大部分 PHP 内部版本)会使用以下默认设置:instanceMaxRequests = 200、PHP_FCGI_MAX_REQUESTS = 500。
转自微软Windows Server技术中心:http://technet.microsoft.com/zh-cn/library/dd239230(WS.10).aspx
[转帖]将 FastCGI 配置为主机 PHP 应用程序 (IIS 7):等您坐沙发呢!