
Il “cocktail” perfetto per un server web highspeed
Lighttpd, PHP e XCache: basta miscelare questi elementi per mettere su un sito ad alte prestazioni in grado di soddisfare rapidamente ogni richiesta
(pagina 1 di 4)
L'obiettivo che ci proponiamo è installare e configurare
un “server web ad alte prestazioni”. Ma cosa si intende
esattamente con questa affermazione. In generale, in
campo informatico, questa definizione può essere tradotta
con richiesta di risorse hardware ridotta al minimo e velocità
di esecuzione, cioè rapidità nello svolgere il compito per
cui il software è stato sviluppato. Ma, volendo, nella stessa
affermazione
possiamo far rientrare anche sicurezza, affidabilità
e stabilità, in modo da ottenere un quadro più generale. Ovviamente,
tutto questo vale anche nell'ambito dei server web,
dove l'argomento velocità di esecuzione è particolarmente sentito:
non è mai opportuno far attendere troppo un utente che ha
fatto richiesta di una pagina web, altrimenti è probabile che la
prossima volta “sbarcherà” su altri lidi. Allora vediamo cosa è
possibile fare in questo senso.
Un mondo ricco di alternative
Così come accade per altre categorie di software, anche in quella
dei server web le alternative non mancano, quindi alla fine tutto
dipende da esigenze individuali, dal tipo di sistema operativo
utilizzato, dal comportamento specifico che si vuole ottenere
e dalle richieste che bisogna soddisfare. Allora, è chiaro che
la scelta è influenzata proprio dal sistema operativo utilizzato.
Ad esempio, mettere su un server web in ambiente Microsoft
significa, a parte qualche outsider, dover scegliere tra Apache
( http://httpd.apache.org) o IIS di Misoft
( www.microsoft. com/window sserver2003/
iis/default. mspx)? Il primo,
Open Source, al momento è utilizzato su
circa il 60% dei server presenti su Internet,
il secondo, proprietario, è un ottimo
sistema, ma spesso soggetto a qualche
bug di sicurezza. Inoltre, molto può
dipendere anche dalle applicazioni che
il server deve eseguire, le quali, purtroppo, a volte richiedono
esplicitamente l'uno o l'altro sistema, impedendo di fatto una
scelta ponderata in relazione a quello che ci serve specificatamente.
In ambiente GNU/Linux e Unix più in generale, invece,
le alternative possibili sono molto più numerose, permettendoci
di indirizzare le nostre scelte verso una piattaforma che
calzi a pennello con le nostre esigenze. In questo caso specifico,
poiché l'obiettivo principale è raggiungere il massimo dal
punto di vista delle prestazioni velocistiche, la scelta è caduta su
lighttpd. In realtà, ci sarebbero anche alternative come thttpd
( www.acme.com/software/thttpd) e nginx ( http://nginx.net), ma
le loro loro caratteristiche sono orientate a campi di applicazione
diversi, che puntano a soddisfare esigenze differenti da quelli
che sono i nostri obiettivi. Per la precisione, thttpd è molto
adatto per essere installato su dispositivi embedded, mentre
nginx è orientato alla gestione di reverse proxy, un particolare
tipo di server che si occupa di smistare le richieste verso altri
server
che elaborano effettivamente le richieste da parte dei client,
come, ad esempio i server web Apache, IIS, lighttpd, ecc. In
questo caso, quindi, scartiamo queste due ipotesi e passiamo
a lighttpd.
 |
Lighttpd è stato installato correttamente e risponde alle nostre richieste |
LIGHTTPD si accontenta di poco
Il suo pregio più grande è la leggerezza
Il vantaggio principale offerto da Lighttpd, in particolare
se confrontato ad altri software analoghi, è sicuramente
la leggerezza che, comunque, non ne pregiudica la
potenza e le funzionalità. Per questo motivo, una qualunque
macchina in grado di “far girare” decentemente
una distribuzione GNU/Linux riesce a farlo funzionare
senza riscontrare alcun decadimento di prestazioni.
Ovviamente, tutto dipende dalle richieste che il server
dovrà soddisfare, ma in genere le risorse hardware
necessarie sono ridotte al minimo. Discorso diverso se
si vuole fare in modo che vengano servite anche pagine
dinamiche in PHP, ma questo è più che altro un problema
di prestazioni legato alla stessa piattaforma di sviluppo,
in parte risolvibile attraverso la configurazione di
opportuni sistemi di caching.
LIGHTTPD come soluzione del problema "C10K"
Lighttpd (pronunciato “lighty”) è nato come “passatempo” di
un laureando in informatica. Questo sviluppatore, occupato
nella stesura della tesi, aveva bisogno di trovare qualcosa di
alternativo a cui dedicarsi quando non era impegnato nel lavoro
accademico. La sfida? Risolvere il problema “c10k”, ovvero
creare un programma che riuscisse a gestire diecimila connessioni
contemporanee girando su un unico server. In queste
condizioni, Apache, per quanto affidabile, tende a rallentare e
ad avere problemi di performance già dopo le prime 100/150 connessioni
e questo, purtroppo, non è risolvibile se non attraverso
una revisione totale del codice. In breve tempo, lo sviluppatore
risolse il problema con un approccio totalmente nuovo.
Tutto ciò che poteva essere riutilizzato veniva messo in una
cache. Le operazioni, quindi, venivano eseguite soltanto una
volta ogni qualche secondo e i risultati venivano tenuti in memoria
per permettere al sistema di sgravarsi dalla necessità di
rieseguire operazioni già archiviate. In breve tempo furono inserite
tutte le principali funzionalità necessarie ad un completo
webserver, tenendo sempre in gran conto efficienza, sicurezza
e scalabilità. Attualmente il progetto è abbastanza maturo
da permetterne l'applicazione anche su sistemi più complessi e
moltissimi amministratori hanno deciso di utilizzarlo per rimpiazzare
Apache. I motivi della ”migrazione” sono molti, mentre
sono pochi gli amministratori che poi tornano indietro.
Installiamo il server web
Lighttpd è un prodotto abbastanza maturo. Quasi tutte le principali
distribuzioni forniscono i pacchetti precompilati pronti per
l'installazione. In Debian GNU/Linux e Ubuntu, ad esempio,
è sufficiente eseguire da una console il comando seguente:
sudo apt-get install lighttpd
Così facendo installiamo il programma e le poche dipendenze
necessarie alla sua corretta esecuzione. Dopo aver eseguito
questo comando, lighttpd è immediatamente pronto all'uso e
dovrebbe essere disponibile anche una pagina di test, per verificarne
il funzionamento. In caso
contrario è possibile gestire l'esecuzione di lighttpd con il comando
/etc/init.d/lighttpd start, oppure stop o restart a seconda
delle esigenze, come accade per tutti gli altri servizi in generale.
Ovviamente, è possibile installare lighttpd anche partendo
dai sorgenti. Gli unici requisiti (a parte un compilatore, ovviamente)
sono gli header (i pacchetti di sviluppo) delle librerie libpcre
zlib. A questo punto, per procedere con l'installazione, diventiamo
root (su o sudo -s), preleviamo il pacchetto lighttpd-
1.4.18.tar.bz2 , scompattiamolo con tar -xvjf
lighttpd-1.4.18.tar.bz2, entriamo nella nuova directory (cd lighttpd-
1.4.18) ed eseguiamo il solito ./configure, seguito subito dopo
da make e make install; tutto verrà correttamente installato
in /usr/local. Per avviare lighttpd, il comando è lighttpd -f
,
dove configfile è il file di configurazione del server.
Una copia di tale file è disponibile nella directory doc dei sorgenti
di lighttpd. Ovviamente, si tratta di una configurazione generica
che deve essere adattata alle proprie esigenze. Come
vedremo più avanti, per raggiungere il nostro obiettivo, è necessario
installare anche altri componenti: PHP ( www.php.net)
e il tool XCache ( http://xcache.lighttpd.net). Eseguiremo l'installazione
prendendo ancora una volta come esempio Debian GNU/Linux
(Ubuntu), ma seguendo le indicazioni contenute nel box “Lightppd
sulle altre distro”, è facile fare la stessa cosa su altri sistemi,
in alcuni casi, però, bisogna controllare i nomi dei pacchetti
che potrebbero essere leggermente differenti. Per quanto riguarda,
invece, la necessità di installare XCache, in particolare,
sottolineamo che la sua presenza è indispensabile e più
avanti scopriremo il perché.
Aggiungere il supporto PHP su Ubuntu
Lighttpd necessità di questo importante componente. Ecco come installarlo
Installazione Php
Apriamo una console da Applicazioni/
Accessori/Terminale ed
eseguiamo il comando sudo apt-get install
php5-cgi. Verrà installato l'ambiente di
esecuzione PHP e il supporto (CGI), che
potrà essere così utilizzato dal webserver.
Un modulo particolare
Lighttpd dispone già del modulo
“fastcgi”, basta solo abilitarlo. In
Debian GNU/Linux e Ubuntu possiamo farlo
con il comando “lighty-enable-mod”
(come per Apache) nel modo seguente: lighty-
enable-mod fastcgi.
Ultimi dettagli
Abbiamo installato PHP5, quindi
è necessario indicare al “motore”
fastcgi di utilizzare l'eseguibile corretto.
Apriamo il file /etc/lighttpd/conf-enabled/
10-fastcgi.conf, sostituiamo “php5-
cgi” a “php-cgi” e riavviamo lighttpd.
LIGHTPPD sulle altre Distro
Se presente nelle repository basta un comando
Lighttpd è disponibile come pacchetto precompilato per
la maggior parte delle distribuzioni. Abbiamo visto
come installarlo su Debian GNU/Linux, Ubutnu e tutte le
derivate da queste, ma anche su altre distribuzioni
come Fedora, Mandriva, Gentoo, Sabayon e OpenSUSE è
possibile farlo con la stessa semplicità. Infatti, se le
sorgenti dei pacchetti (repository) sono correttamente
configurate, la procedura di installazione si limita ad un
solo comando, da scegliere tra quelli seguenti a seconda
di quale distribuzione si utilizza:
Fedora - yum install lighttpd
Mandriva - urpmi lighttpd
OpenSUSE - yast -i lighttpd
Gentoo - emerge lighttpd
Foresight - sudo conary update lighttpd
Arch Linux - pacman -S lighttpd
Struttura modulare e PHP
Lighttpd è stato sviluppato per essere modulare: appena installato,
infatti, risulta configurato solo nelle funzioni di base e tutto quello
che potrebbe peggiorare le sue performance è disattivato.
Chi usa Apache potrebbe, quindi, trovarsi un po' disorientato,
in quanto è abituato ad avere tutte le funzionalità
più avanzate già pronte per essere utilizzate. L'installazione
del motore PHP, ad esempio, prevede l'abilitazione del supporto
“fast-cgi”. Lighttpd, per sua natura, delega a questo modulo
il compito di eseguire programmi esterni (come Perl
( www.perl.com) o, appunto, PHP) e recuperarne il risultato
dell'elaborazione. Il vantaggio principale di questo approccio
è la possibilità di tenere sotto controllo tutte le parti del webserver
e di fare in modo che un problema ad un programma
esterno non possa compromettere il funzionamento del resto
del sistema. Apache stesso, tra le modalità di esecuzione del
codice PHP, prevede la possibilità di attivare una configurazione
simile, e questa, in molti casi, sembra essere la scelta più
azzeccata.
Adesso è il turno di XCache
Anche in questo caso i comandi da eseguire sono pochi e tutto avviene automaticamente
Installare XCACHE
Apriamo ancora una volta la
console da Applicazioni/
Accessori/Terminale ed eseguiamo il
comando sudo apt-get install php5-
xcache, proprio come abbiamo fatto in precedenza
per il componente PHP.
Il valore corretto