16 Temmuz 2011 Cumartesi

iss 7 de php kullanmak için yapılması gerekenler

Using FastCGI to Host PHP Applications on IIS 7.0

Author: Mike Volodarsky

Introduction

The FastCGI support in IIS enables popular application frameworks that support FastCGI protocol to be hosted on the IIS web server in a high-performance and reliable way. FastCGI provides a high-performance alternative to the Common Gateway Interface (CGI), a standard way of interfacing external applications with Web servers that has been supported as part of the IIS feature-set since the very first release. 
Microsoft IIS 7.0 for Windows Server® 2008 and Windows Vista SP1 now includes a built-in FastCGI component. This walkthrough leads you through the steps to use FastCGI module to host PHP applications on IIS7 in Windows Server 2008 and Windows Vista SP1.
  IMPORTANT: This article provides instructions on how to install and use FastCGI component on Windows Server 2008 and Windows Vista SP1. There is no officially supported FastCGI component for Windows Vista (not SP1). It is strongly recommended to upgrade to Windows Vista SP1 if you need to use FastCGI component on Windows Vista Operating System.

Enable FastCGI support in IIS7.0

To enable FastCGI support on IIS7.0 in Windows Server 2008:
Add CGI role service by going to Server Manager -> Roles -> Add Role Services. This enables both CGI and FastCGI services
 
To enable FastCGI support on IIS7.0 in Windows Vista SP1:
Add CGI feature by going to Control Panel -> Programs and Features -> Turn Windows features on or off. This enables both CGI and FastCGI services.

Install and Configure PHP

It is recommended to use a non-thread safe build of PHP with IIS 7.0 FastCGI. Non-thread safe build of PHP provides significant performance gains over the standard build by not doing any thread-safety checks, which are not necessary, since FastCGI ensures a single threaded execution environment.
Note: There is no installer package for non-thread safe build of PHP.
    1.  Download the latest non-thread safe binaries of PHP from http://www.php.net/downloads.php.
    2.  Unpack the files to a directory of your choice (e.g. C:\PHP). Rename the php.ini-recommended to php.ini.
    3.  Open php.ini file, then uncomment and modify settings as follows:
a. Set fastcgi.impersonate = 1. FastCGI under IIS supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under.
b. Set cgi.fix_pathinfo=1. cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's previous behavior was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not care what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting this to 1 will cause PHP CGI to fix it's paths to conform to the spec
c. Set cgi.force_redirect = 0.
d. Set open_basedir to point to a folder or network path where the content of the web site(s) is located.
    4.  To test if the PHP installation is successful, run the following from the command line prompt:
C:\PHP>php –info
If PHP was installed correctly and all its dependencies are available on the machine, then this command will output the current PHP configuration information.

Configure IIS 7.0 to Handle PHP Requests

In order for IIS 7.0 to host PHP applications, it is necessary to add a handler mapping that tells IIS to pass all requests for PHP files to PHP application framework via FastCGI protocol.
To add a handler mapping at a server level
    1.  Open IIS Manager and then select and open “Handler Mappings” at the server level:
 
   2.  Select “Add Module Mapping” action and specify the configurations settings as below:

    • Request path: *.php
    • Module: FastCgiModule
    • Executable: C:\[Path to your PHP installation]\php-cgi.exe
    • Name: PHP via FastCGI
    3.  Click OK. The dialog box appears asking if you want to create a FastCGI application for this executable. Click Yes.

    4.  Test that the handler mapping works correctly by creating a phpinfo.php file in the C:\inetpub\wwwroot folder that contains the following:
<?php phpinfo(); ?>.
    5.  Open a browser and navigate to http://localhost/phpinfo.php. If everything was setup correctly, then you will see the standard PHP information page.
Alternatively, the above mentioned steps can be completed by using command line tool appcmd.
    1.  To create the FastCGI application process pool, run the following command:
C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\{php_folder}\php-cgi.exe']     2.  After that, create the handler mapping:
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'] Note: If you are using a PHP version 4.X, instead of php-cgi.exe, you can use php.exe.

Configure PHP and FastCGI Recycling Behavior

Make sure that FastCGI always recycles php-cgi.exe processes before the native PHP recycling kicks in. The FastCGI process recycling behavior is controlled by the configuration property instanceMaxRequests. This property specifies how many requests FastCGI process will process before recycling. PHP also has a similar process recycling functionality that is controlled by an environment variable PHP_FCGI_MAX_REQUESTS. By setting instanceMaxRequests to be smaller or equal to PHP_FCGI_MAX_REQUESTS, you can ensure that native PHP process recycling logic will never kick in.
To set these configuration properties use the following commands:
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']
Note: If those parameters have not been set, then the following default settings are used: instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 (on most PHP builds).

Hiç yorum yok:

Yorum Gönder