In questa guida vedremo come utilizzare Internet Information Server (IIS), il server web nativamente presente su Windows in modo da sfruttarlo al meglio per applicazioni PHP.
Iniziamo cercando di rispondere alla domanda posta nel titolo della lezione, esaminando i motivi che ci spingevano a non considerare IIS come un valido supporto per le applicazioni PHP e quelli che oggi fanno riaprire la questione.
IIS e PHP in passato
In passato applicazioni PHP non giravano al meglio su Internet Information Server. Il motivo risiedeva nel fatto che PHP poteva giare su IIS solamente in due modalità: o usando CGI o come ISAPI Extension.
CGI in genere fornisce stabilità all'applicazione PHP, poiché in questo ambiente esite un solo thread per processo, questo a tutto svantaggio delle performance: per ogni richiesta HTTP che arriva al server web viene creato un nuovo processo, operazione costosa in termini di risorse della macchina.
Usare invece ISAPI per far girare PHP, comporta un aumento delle performance, grazie al naturale supporto multi-threading offerto. Il problema qui si presenta quando alcune applicazioni PHP utilizzano estensioni non-thread-safe. Queste estensioni possono causare problemi di instabilità con questo modello di esecuzione, tipico di IIS.
IIS e PHP oggi con FastCGI
Negli utimi anni Microsoft ha rilasciato un componente per IIS, noto come FastCGI, disponibile per diverse versioni di IIS, che consente ad applicazioni PHP di girare in modo sia stabile che performante.
Il modulo FastCGI infatti crea una serie di processi, che vengono gestiti in pool e riutilizzati per successive richieste HTTP. All'interno di questi processi, il runtime di PHP e le relative estensioni e applicazioni girano gestite da un singolo thread.
In questo ambiente di esecuzione le estensioni PHP non-thread-safe non danno problemi e al contempo il riutilizzo dei processi del pool non crea problemi di performance.
Inoltre Microsoft sta testando le più note applicazioni Open Source per PHP per garantirne una efficace esecuzione in ambiente Windows con IIS. Oggi, alcune delle più note applicazioni come WordPress, Drupal, Gallery, Joomla e molte altre possono essere installate in modo automatico direttamente dalla Web Application Gallery, tramite un tool gratuito oppure installate e configurate manualmente con delle guide apposite presenti sul sito community di IIS.
IIS può inoltre essere usato come server web per gestire contenuti statici, o dinamici come pagine ASP e ASP.NET, offrendo quindi un server web in cui far girare applicazioni fatte con tecnologie diverse.
Quale versione di Internet Information Server?
Nel corso della guida vedremo come configurare IIS 7.x la versione di IIS presente su Windows Vista, Windows 7, Windows Server 2008 e Windows Server 2008 R2.
La versione 7 di IIS porta con sé alcune differenze importanti sia dal punto di vista architetturale, sia da quello della disponibilità: troviamo la stessa versione del server web sia sui sistemi operativi client come Windows Vista e Windows 7 sia su quelli server come Windows Server 2008. La stessa architettura modulare e gli strumenti di configurazione consentono un facile passaggio da ambienti di sviluppo e test a quelli di produzione.
Tuttavia la componente FastCGI può essere scaricata anche per IIS 5.1, presente in Windows XP e IIS 6.0 presente in Windows Server 2003.