Server  »  Articoli  »  Altri Server 

Lighttpd e PHP: un Web server dinamico

di: Ermanno Ancona     10 Luglio 2007

Nel precedente articolo abbiamo visto come installare e configurare il web server Lighttpd per poter fornire pagine statiche; in questo vedremo come modificare la configurazione del server per renderlo interattivo ed offrire contenuti dinamici, in particolare utilizzando script PHP.

Innanzitutto va fatta un'importante premessa: diversamente da quanto comunemente accade con Apache (per lo meno in ambiente *nix) PHP non funziona come modulo di lighttpd. Lo standard adottato per il supporto a PHP è FastCGI. Per chiarire un po' le idee ricordo sinteticamente che, una delle prime tecniche adottate per rendere i contenuti web dinamici fu CGI, Common Gateway Interface. Sostanzialmente uno standard che consentiva ad un server http di comunicare con un'applicazione esterna scritta in un linguaggio qualunque. Tra i vantaggi di questo approccio vi erano sicuramente semplicità, isolamento di processi (l'applicazione girando come processo separato non può mandare in crash il server), indipendenza dall'architettura. Purtroppo per ogni richiesta da parte di un client, il server crea un nuovo processo, il processo deve inizializzarsi, eseguire le operazioni di comunicazione dei dati attraverso standard input/output ed infine terminare chiudendo la richiesta. Tutto il meccanismo impegna notevoli risorse e limita pesantemente il numero di connessioni gestibili contemporaneamente.

Per sopperire a tale manchevolezza Open Market sviluppò la tecnologia FastCGI rendendola poi pubblica. In questo caso i processi sono persistenti e, terminata una richiesta, rimangono in attesa della successiva anziché chiudersi, eliminando i tempi connessi a fork, startup e cleanup. Mentre la comunicazione tra web server e programmi CGI avviene tramite pipe, i processi FastCGI usano un socket unix o una connessione TCP/IP. Un notevole vantaggio di quest'approccio è che il programma può essere eseguito su una macchina remota, con privilegi diversi dal web server ed eventualmente in una propria gabbia di chroot.

Malgrado i miglioramenti persiste comunque una proliferazione di processi, tuttavia il team di sviluppo di Lightppd sostiene di aver ottenuto migliori prestazioni rispetto ad Apache 1.3.x + mod_php4 e fornisce sul proprio sito i risultati dei test.

PHP e FastCGI

Riprendendo le fila del precedente articolo ricordo che abbiamo cominciato i nostri esperimenti utilizzando una Linux box Fedora Core 6, appoggiandoci a Yum per l'installazione dei pacchetti necessari. Per poter utilizzare PHP quest'ultimo deve essere installato con il supporto FastCGI. Le principali pacchettizzazioni prevedono php-cgi facilitando di molto la vita, se invece preferite la compilazione dai sorgenti le opzioni minimali da usare sono:

./configure --enable-fastcgi --enable-discard-path --enable-force-redirect

A queste dovrete aggiungere tutte quelle risultanti dall'output di php_info() se volete mantenere le medesime caratteristiche con cui lo state attualmente usando come modulo di Apache.

Ma torniamo a noi, per verificare che sulla nostra Fedora Core 6 ci troviamo nelle condizioni ideali digitiamo:

# php-cgi -v
 PHP 5.1.6 (cgi-fcgi) (built: Oct  4 2006 11:12:18)
 Copyright (c) 1997-2006 The PHP Group
 Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

Una risposta simile a quella riportata immediatamente sotto al comando, in cui è visibile la stringa evidenziata in rosso cgi-fcgi, ci garantisce il supporto.
Individuiamo ora la posizione dell'eseguibile che dovremo utilizzare in fase di configurazione:

# which php-cgi
 /usr/bin/php-cgi

Infine un giro di ricognizione nella directory dei moduli /usr/lib/lighttpd/ ci rivela che il pacchetto precedentemente installato, lighttpd.i386, non include il modulo FastCGI. Niente paura, ricorriamo all'aiuto di yum usando la wildcard *:

# yum list lighttpd*

Scopriamo due ulteriori pacchetti: lighttpd-fastcgi.i386 e lighttpd-mod_mysql_vhost.i386. Il primo certamente farà al caso nostro installiamolo, dunque, con il comando:

# yum install lighttpd-fastcgi

Guide Server

Guida risparmio energetico per server

Dalla determinazione dei consumi al risparmio, dalla...

Guida Subversion

SVN è uno dei sistemi per il versioning più utilizzati al mondo....

Guida Application server

Cosa sono, quali sono e come possono essere utilizzati nella...

Altre guide

Newsletter

Ogni settimana, in due distinte newsletter: notizie a approfondimenti su Apache e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto