Configurazione di FastCGI per PHP in IIS7 Piergiorgio Malusardi IT Pro Evangelist http://blogs.technet.com/pgmalusardi Supporto di FastCGI in IIS 7 IIS Worker Process Read Configuration Authenticate Authorize Map Request Handle Request Send Response Log Request Coda delle richieste Protocollo FastCGI su named pipe o TCP Process pool FastCGI per PHP5 PHP: passi di installazione Copia dei binari • Usare zip con binari “non-thread safe” • In alternativa – scaricare installer di PHP Configurare php.ini • fastcgi.impersonate = 1 • cgi.fix_pathinfo = 1 • open_basedir = “C:\Percorso\al\folder\del\tuo\sito” Configurare IIS • Abilitare CGI • Configurare l’handler per *.php perché usi FastCGI • Modificare impostazioni di FastCGI Test • C:\php\php-cgi.exe –info • http://localhost/phpinfo.php Configurare PHP • In php.ini • • • • • fastcgi.impersonate = 1 cgi.fix_pathinfo = 1 cgi.force_redirect = 0 open_basedir = <directory radice delle applicazioni> extension_dir = “./ext” piergiorgio malusardi – Microsoft Italia Configurare FastCGI per PHP in IIS7 • Configurare la security isolation • • • Prevenire errori dovuti al riciclo di PHP • • • Impostare PHP_FCGI_MAX_REQUESTS >= instanceMaxRequests Default: instanceMaxRequest=200 e PHP_FCGI_MAX_REQUEST=500 Per alta densità di siti • • • • Un AppPool per sito web Abilitare FastCGI impersonation Usare un IdleThreshold dinamico Ridurre l’IdleTimeout Ridurre maxInstances (può impattare le performance) Altri consigli • Usare lo switch “-d” della command line per distinguere i process pool FastCGI • • C:\phpdir\php.exe|-d my.website=www.contoso.com Usare la cache di output di IIS7 per pagine semi-dinamiche Usare più versioni di PHP App Pool #1 (user1) Process Pool per PHP 5 Sito Web #1 C:\PHP526\php-cgi.exe App Pool #2 (user2) Process Pool per PHP 4 Sito Web #2 C:\PHP447\php.exe Configurazione di PHP per sito PHPRC=“C:\inetpub\website1\” App Pool #1 (user1) Process Pool #1 Sito Web #1 App Pool #2 (user2) Process Pool #2 Sito Web #2 PHPRC=“C:\inetpub\website2\” Configurazione di PHP per sito Configurare i process pool FastCGI Combinazione di Percorso e argomenti identifica in modo univoco la definizione dei process pool <fastCgi> <application fullPath="C:\PHP\php-cgi.exe" arguments="-d my.website=website1"> <environmentVariables> <environmentVariable name="PHPRC" value="C:\WebSites\website1" /> </environmentVariables> </application> </fastCgi> La variabile d’ambiente PHPRC contiene il percorso al file php.ini Configurazione di PHP per sito Configurare l’handler mapping <system.webServer> <handlers accessPolicy="Read, Script"> <add name="PHP via FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe|-d my.website=website2" resourceType="Unspecified" requireAccess="Script" /> </handlers> </system.webServer> Riferimento al process pool FastCGI concatenando [Percorso]|[argomenti] DEMO: CONFIGURAZIONE DI FASTCGI E PHP Risorse • Sito ufficiale di IIS: http://www.iis.net • Configurare FastCGI e PHP: http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-phpapplications-on-iis-70/ • Moduli aggiuntivi per IIS7: http://www.iis.net/downloads © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.