Web server

Il World Wide Web, spesso abbreviato in WWW, permette di riunire milioni di persone su internet, per questo nell?ultimo periodo ha ottenuto una crescita costante di utenti collegati. Con un semplice clic del mouse e la capacità di visualizzare automaticamente moltissime informazioni multimediali, i browser Web consentono a tutti di parteciparvi.

Il web è reso disponibile da tre importanti tecnologie:

·     Il sistema di indirizzi URL (Uniform Resource Locators) che consente a quasi tutti i tipi di informazioni di essere recuperati da quasi tutti i punti internet

·     Il protocollo HTTP (HyperText Transfer Protocol), un insieme di regole che i server web e i client web (cioè i browser) devono seguire per poter comunicare.

·     Il linguaggio HTML(HyperText Markup Language) che consente agli autori di creare un ipertesto multimediale utilizzabile da qualsiasi browser web.

Una caratteristica del web sono i documenti multimediali, il che significa che sono composti da testo, immagini, audio, video e molto ancora.

Un?altra caratteristica peculiare è che i documenti Web possono contenere puntatori ad altri documenti Web, creando il cosiddetto ipertesto: le informazioni così sono collegate tra loro in modo da formare un vasto spazio di documenti interconnessi.

La caratteristica fondamentale è data dal fatto che il web è decentrato: gli utenti eseguono i propri browser e ognuno può accedere a informazioni su ogni server attivo, secondo un sistema chiamato client-server.

Il browser web funge da client e ottiene le informazioni dal server in rete: collegandosi con l?URL di un?home page qualsiasi, si invia automaticamente un messaggio alla macchina relativa a quell?indirizzo, sperando che quella macchina sia accesa e funzionante, che la sua connessione a Internet sia attiva e che il suo server Web sia pronto a ricevere ed elaborare la richiesta.

In pratica il browser invia una richiesta utilizzando come metodo l?http, fornendo informazioni su se stessi e sui dati da trasferire. A questo punto spetta al server Web, che sta girando sulla macchina, elaborare il messaggio ricevuto.

Ora, tutto ciò che deve fare un server web è tradurre un?URL in un nome di file, che dovrà poi inviare il risultato al richiedente oppure in un nome di programma, che sarà eseguito per inviarne il risultato al richiedente. Tutto il resto del lavoro consiste in semplici aggiustamenti e rifiniture del risultato.

In ogni caso qualsiasi sia la macchina in cui è installato il server web, il compito svolto da questo programma è ricevere informazioni che viaggiano sulla rete e agisce sui messaggi inviati dal browser richiedente.

Apache, nato come rimpiazzo del web server sviluppato dalla NCSA (National Center for Supercomputing Applications)[1], è uno dei server web più utilizzati al mondo: infatti andando a visitare un sito di sondaggi molto attendibile come quello della Netcraft, si notano nella sezione ?web server survey? i risultati dell?ultimo sondaggio sui server web.

Come si vede dal grafico della figura 3.1.1, Apache è il più utilizzato dai programmatori in internet ed è stato scelto per lo sviluppo di questa applicazione.

I siti attivi, grazie a questo server web, sono più del 60% nel mese di novembre dell?anno 2002, in base ad una crescita continua che ha subito negli anni precedenti.


Figura 3.1.1. Rappresentazione grafica della percentuale dei server web presenti su internet. Fonte: www.netcraft.com

Il successo di Apache è dovuto soprattutto al fatto che è un programma gratuito. Inoltre, lasciando il software in mano di chiunque e completo di sorgenti, ha permesso agli utenti di contribuire a migliorare continuamente il prodotto finale.

Secondo i principali autori di Apache[2], le caratteristiche principali che un server web dovrebbe avere sono:

·     La velocità, in modo da poter gestire un numero elevato di richieste appesantendo il meno possibile la memoria della macchina.

·     Poter gestire più richieste alla volta

·     Autenticare chi effettua le richieste: in modo da dar maggior privilegi ad alcuni utenti.

·     Fornire risposte sensate a richieste errate.

·     Negoziare uno stile e una lingua con chi effettua le richieste.

·     Fungere da server proxy. Un server proxy accetta richieste dal client e le inoltra ad altri server, i quali rispondono al client

·     Essere sicuro.

Apache è un programma che è in grado di girare su adeguati sistemi operativi multitasking come Unix.

L?eseguibile in tale ambiente è httpd che, una volta avviato, attraverso l?istruzione apchectl start, dirige la sua attenzione sul sito Web il quale, in pratica, consiste in una directory indipendente dal sistema operativo.

Tale directory del sito contiene quattro sottodirectory:

·     conf che contiene i file di configurazione, dei quali httpd.conf è il più importante

·     htdocs contenente gli script, nel nostro caso Php, che verranno interpretati e messi a disposizione dei client in formato html

·     logs contiene i dati di log, sia per gli accessi sia per gli errori

·     cgi-bin contiene gli script CGI, programmi che possono essere eseguiti da Apache per restituire dati ai client.

Essendo Apache un programma freeware, è possibile scaricare il codice sorgente configurandolo e compilandolo. In particolare, in questo progetto, Php è stato compilato naturalmente come modulo di Apache. Quindi, quando questo server web è stato configurato, nel file httpd.conf sono state aggiunte delle righe in modo che l?interprete Php analizzasse i file con l?estensione che gli abbiamo imposto. Per questo, ora, il server è in grado di eseguire gli script Php, attraverso l?interprete, che vanno posti nelle directory contenenti i documenti da distribuire tramite HTTP indicata, da Apache, con il nome document root e impostata da noi, nonché per default in htdocs.

Anche con Apache abbiamo un?architettura client-server rappresentata nella figura 3.1.2.

Figura 3.1.2. Architettura client-server

Normalmente la transizione tra un browser qualsiasi e apache funziona così ma, andando più nel dettaglio, queste richieste del client e le risposte del server devono rispettare dei protocolli di rete.

Una volta digitato l?URL nel browser, quest?ultimo si accorge che inizia con http e deduce che dovrà servirsi del protocollo HTTP. Subito dopo analizza il nome del server che, a sua volta, utilizza il DNS (Domain Name Service) per tradurre il nome fornitogli dal browser in un indirizzo IP.

HTTP è un metodo standard di invio documenti attraverso la rete Web e si basa sul protocollo TCP/IP (Transmission Control Protocol /Internet Protocol).

Il client stabilisce una connessione TCP verso il server e invia una richiesta in formato HTTP attraverso il canale di comunicazione.

La richiesta è composta da diversi elementi: il metodo, l?URI (Uniform Resource Identifier), la versione del protocollo e informazioni facoltative per modificare o integrare la richiesta.

Il campo più importante di una richiesta è METHOD, che indica al server come gestire i dati in arrivo e sono: GET che permette di restituire i dati richiesti, HEAD che permette di ottenere solamente le informazioni relative ad un documento, POST che viene utilizzata per trasferire i dati da un client ad un server solitamente tramite un form, PUT che indica al server di memorizzare i dati ricevuti e DELETE che indica al server di cancellare i dati.

Altre intestazioni meno usate sono TRACE e CONNECT. Di queste intestazioni il server esamina la richiesta e risponde adeguatamente secondo le regole che gli sono state impostate.

La risposta potrà essere composta di file HTML, come nel nostro caso, grafici, audio e molti altri tipi di file.

Quando si trova in stato di riposo, Apache non fa altro che attendere messaggi da indirizzi IP e dalle porte TCP (la porta di default per l?http è la 80) specificate nel file httpd.conf.

Quando si presenta una richiesta HTTP su una porta valida, Apache la elabora e ne analizza le intestazioni (header); successivamente applica le regole contenute nel suo file di configurazione e svolge le operazioni appropriate per soddisfare la richiesta.

I file contenuti nella cartella htdocs saranno i documenti messi a disposizione del client e che il richiedente potrà visualizzare.

Se si decidesse di disattivare il sito web, sarà sufficiente arrestare Apache attraverso il comando apachectl stop.

 



[1] Fonte: ?http:\\www.apache.org?

[2] Ben Laurie e Peter Laurie, ?Apache The Definitive Guide?

Hosted by www.Geocities.ws

1