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.
Scarica

Configurazione di FastCGI e PHP