在Windows 2008 R2服务器的 IIS7.5中不仅可以托管.NET类应用程序,微软也开放了PHP应用程序的托管,实际上,这可以追溯到IIS 7.0对PHP的正式支持,在IIS上配置FastCGI托管PHP代码有许多高级设置.
在IIS 7.5中,这些参数可以通过图形界面进行配置,下面是在IIS 7.5中的图形配置窗口:
图 1 设置FastCGI解析程序的路径
图 2 设置每个实例可以处理的最大请求数
图 3 创建环境变量 PHP_FCGI_MAX_REQUESTS
在IIS 7.5中,这些参数不仅可以通过以上的图形界面进行配置,也可以通过编辑applicationHost.config 配置文件中进行配置。在Windows中,配置文件中路径是%systemroot%\System32\inetsrv\config\applicationHost.config。
打开applicationHost.config 配置文件就可以看到所有针对应用程序池和Web网站的修改内容,并可以看到虚拟目录在IIS配置中创建的项目。
我们完成的所有修改内容都保存于<system.applicationHost>元素之下。
创建应用程序池则定义在<applicationPools>标记内:
- <applicationPools>
- <add name="DefaultAppPool" />
- <add name="WebSite1AppPool" />
- <add name="WebSite2AppPool" />
- <applicationPoolDefaults>
- <processModel identityType="NetworkService" />
- </applicationPoolDefaults>
- </applicationPools>
复制代码 可以在<sites>标记中看到针对网站本身的配置:
- <site name="WebSite1" id="2" serverAutoStart="true">
- <application path="/" applicationPool="WebSite1AppPool">
- <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\webSite1" />
- </application>
- <bindings>
- <binding protocol="http" bindingInformation="*:80:www.website1.com" />
- </binding>
- </site>
- <site name="WebSite2" id="3" serverAutoStart="true">
- <application path="/" applicationPool="WebSite2AppPool">
- <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\webSite2" />
- </application>
- <bindings>
- <binding protocol="http" bindingInformation="*:80:www.website2.com" />
- </bindings>
- </site>
复制代码
我在这个文件中为PHP应用程序增加了以下FastCGI设置:
- <fastCgi>
- <application fullPath="{approot}phpphp-cgi.exe" maxInstances="4" instanceMaxRequests="10000" requestTimeout="180" activityTimeout="180">
- <environmentVariables>
- <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
- </environmentVariables>
- </application>
- </fastCgi>
复制代码
在上面的配置中, fullPath 指定了FastCGI解析程序的路径, maxInstances 指定可以启动的最大实例数目, instanceMaxRequests 指定了每个实例可以处理的最大请求数, requestTimeout 指定了请求的超时时间为180秒, activityTimeout 指定了活动会话超时时间为180秒,另外还创建了一个环境变量 PHP_FCGI_MAX_REQUESTS ,默认值设为10000。
在这些项中,可以看到:通过简单地编辑applicationHost.config文件,很容易就可以创建一个网站。注意,这种创建一个网站的方式并非最佳实践方式,因为在编辑文件的过程中无法进行配置检查,一旦出现错误,那么可能会导致非法的IIS配置,进而可能导致服务器运行发生失效。我们强烈建议:如果需要直接编辑applicationHost.config文件,那么请务必事先备份该文件,或者启用Windows Server 2008内置的Shadow Copy特性来管理文件的不同版本。
事实上,PHP项目也包括一个 web.config 配置文件,可以通过它配置index.php为网站默认首页,以及为.php扩展的文件注册 PHP FastCGI 处理程序。
|