Server web: installazione, configurazione. Sviluppo di pagine dinamiche.
Che cos'è un server web
Il server web è il software che "sta dietro" il World Wide Web: esso resta in ascolto delle richieste di accesso ad un sito web (inoltrate da parte di un browser come Internet Explorer, Mozilla od Opera), le processa e restituisce dei dati come risposta. Tali informazioni, che contengono tutti gli elementi necessari per la visualizzazione di una pagina web composta di testi ed immagini, vengono analizzate da parte del browser nel miglior modo possibile quindi presentate all'utente.
I server web comunicano con il browser Internet installato sul personal computer "client" (ossia sulla macchina che richiede l'accesso ad un sito web) attraverso il protocollo HTTP (Hypertext Transfer Protocol): esso standardizza il processo di invio e di ricezione dei dati cosicché qualsiasi client possa agevolmente comunicare con qualunque tipo di server web, senza problemi di compatibilità.
In altri articoli già pubblicati su IlSoftware.it, vi abbiamo illustrato alcune linee guida per la progettazione e la realizzazione delle vostre pagine web: abbiamo presentato il linguaggio HTML, le problematiche connesse alla creazione di una pagina web, abbiamo visto un primo esempio di linguaggio "client-side" qual è JavaScript.
In questa lezione ci accingiamo a spostare l'obiettivo sul lato server cercando di capire come funziona un server web. La comprensione di questo argomento risulta infatti di fondamentale importanza per tutti coloro che desiderino rendersi conto di tutte le problematiche più evolute connesse alla realizzazione ed alla successiva "pubblicazione" in Rete di un sito Internet evoluto.
Chi pensa di limitarsi alla realizzazione di siti web statici (composti, cioè, di solo codice HTML ed eventualmente di script "client-side" DHTML o JavaScript) non sarà interessato agli aspetti relativi all'interazione delle proprie pagine con il server.
Qualora, però, si dovesse rendere necessario lo sviluppo di una o più pagine web dinamiche, in grado cioè di presentare al visitatore contenuti variabili, spesso acquisiti da uno o più database, è assolutamente indispensabile misurarsi con alcuni concetti legati al server web.
Basti pensare poi che, fatta eccezione per i siti web personali e le pagine di presentazione di un'azienda, gran parte delle realtà su Internet sono oggi dinamiche: in base ad una specifica richiesta dell'utente, infatti, un sito web oggi è in grado di offrire, automaticamente, i contenuti più adatti. I motori di ricerca (Google!, Altavista,...) sono solo un esempio di siti web dinamici: l'utente inserisce in un'apposita casella (form) l'argomento cui è interessato, preme il pulsante "Cerca" e, dopo pochi secondi, il server web restituisce delle pagine HTML contenenti il materiale cercato. Pensate ai cataloghi online, sempre più spesso utilizzati dalle aziende per promuovere in Rete in propri prodotti; ai siti di e-commerce (che permettono di ordinare comodamente da casa prodotti e servizi); alle community online (sempre più siti mettono a disposizione forum all'interno dei quali ogni visitatore può esprimere le proprie opinioni).
Nel caso dei siti web dinamici si ha, insomma, un'interazione tra l'utente ed il sito Internet, tra il computer "client" del visitatore ed il server web; si mettono in comunicazione diretta i desideri dell'utente con i contenuti a disposizione sul server.
In questa lezione presenteremo, dapprima, i server web più utilizzati al mondo (Apache e Microsoft IIS) poi alcune tecniche di programmazione per lo sviluppo di procedure "server-side". Gli script "server-side" vengono eseguiti direttamente sul server; il risultato dell'operazione viene quindi trasmesso al browser ("client") dell'utente che sta visitando il sito web. Nel caso di JavaScript, invece, così come abbiamo avuto modo di apprendere nel nostro corso dedicato, gli script contenenti le operazioni da effettuare vengono trasmessi in chiaro - "così come sono" - al browser Internet, interpretati ed eseguiti su ciascun computer client.
L'obiettivo di questa lezione non è quello di improvvisare sistemisti i nostri lettori ma vuole rappresentare un punto di partenza per tutti coloro che desiderano approfondire le tematiche relative alla programmazione lato server.
Comprendere come operano Apache o IIS consentirà, dapprima, di "convertire" - a mero scopo didattico - un personal computer di casa o dell'ufficio a server web: potrete effettuare qui le vostre prime prove di configurazione. Una volta che il sistema risulterà adeguatamente configurato, potrete utilizzarlo per testare le vostre pagine web facenti uso di tecniche di programmazione che implicano l'interazione con il server, prima ancora di caricarle sullo spazio web messovi a disposizione dal vostro provider Internet.
Chi sviluppa siti web dinamici, infatti, è bene allestisca - a casa propria o nel proprio ufficio - uno o più server web in modo tale da verificare il perfetto funzionamento delle pagine realizzate prima ancora di porle online.
I più volenterosi ed i più interessati all'argomento, potranno raffinare le stesse conoscenze con l'obiettivo di allestire un vero e proprio server web personale. Chi dispone di connessioni Internet a larga banda (ADSL o fibra ottica) può provare a rendere uno o più siti web accessibili al mondo intero direttamente da uno dei propri computer di casa o dell'ufficio. Chi possiede una rete locale può pensare alla realizzazione di servizi di gestione della propria attività basati su Intranet.
Il lettore avrà quindi già compreso come la conoscenza del funzionamento del server web apra enormi possibilità. Va sottolineato che la realizzazione di progetti complessi implicherà la necessità di misurarsi immediatamente con problematiche assai importanti come quella della sicurezza. Se non si vuole vedere il proprio server web violato dall'esterno, attraverso la Rete, da parte di hacker e malintenzionati, si dovrà imparare ad applicare patch e severe policy di sicurezza. Queste tematiche, che necessiterebbero una trattazione ampia ed articolata, saranno oggetto di servizi futuri.
Quali server web si possono impiegare
Al giorno d'oggi sono disponibili numerosi server web (gratuiti o meno): alcuni di essi sono liberamente prelevabili da Internet in modo che possano esserne saggiate tutte le caratteristiche.
L'indagine che Netcraft effettua mensilmente (www.netcraft.com) suggerisce quali siano, al momento, i server web più utilizzati in tutto il mondo. Secondo le statistiche disponibili in questa pagina, nel mese di Settembre 2004, Apache risultava in uso sul 67,8% dei server totali a livello mondiale mentre Microsoft IIS sul 21,1%.

Diffusione dei server web negli anni 1995-2004 (fonte: NetCraft - www.netcraft.com)
Gli aspetti che vanno considerati prima della "messa in opera" di un server web sono la facilità d'installazione e di configurazione, le possibilità di personalizzazione, le sue caratteristiche peculiari, le sue dimensioni, le performance garantite ed il consumo di risorse macchina, il supporto di transazioni sicure, la disponibilità del codice sorgente, la puntualità con cui vengono rilasciati aggiornamenti, eventuali patch e nuove versioni, il supporto tecnico, il supporto di più piattaforme hardware-software, la disponibilità di versioni gratuite.
I server web disponibili oggi non consentono solo di restituire pagine statiche ai personal computer che si collegano con un certo sito ma supportano tutti i più recenti linguaggi di scripting.
I tempi in cui il web era concepito come un insieme di pagine statiche collegate da semplici collegamenti ipertestuali (link) sono ormai remoti. Gli sviluppatori di pagine web sentire infatti, da subito, l'esigenza di svincolarsi dalla staticità dell'HTML. Nacquero, quindi, i primi linguaggi "server-side": l'intento era quello di garantire una maggiore interattività delle pagine Internet, restituendo all'utente solo le informazioni cui egli era effettivamente interessato.
CGI (Common Gateway Interface) è una delle prime tecnologie che vennero offerte agli sviluppatori per rendere maggiormente dinamici i propri progetti sul web.
Dopo CGI hanno infatti preso ampiamente piede ASP, PHP, ColdFusion, JSP, Microsoft .NET.
Il denominatore comune dei linguaggi di scripting "server-side" consiste nel fatto che il codice viene eseguito ed interpretato direttamente sul server che ospita il sito Internet (una situazione inversa rispetto a quanto accade nel caso di JavaScript). In questo modo è possibile acquisire dall'utente la lista delle informazioni alle quali egli è interessato, ricercarle sul server quindi proporgliele sotto forma di una normale pagina HTML, preparata "al volo" direttamente sul server web. Il processo è del tutto trasparente agli occhi dell'utente.
Linguaggi come ASP e PHP hanno aperto scenari fantastici, impensabili all'epoca in cui tutto il web era immobile, condizionato dalla staticità dell'HTML: si pensi, a mero titolo esemplificativo, che è oggi possibile generare automaticamente pagine HTML riversando, al loro interno, il contenuto di un database. In pratica, immaginate di poter memorizzare tutte le informazioni che dovranno essere inserite nel vostro sito web (ad esempio, il catalogo dei vostri prodotti con nome, descrizione ed altri dati caratterizzanti) in unico database. Grazie all'utilizzo di script "server-side" il server web sarà in grado di attingere dal database solo le informazioni alle quali il visitatore è interessato, comporre una normale pagina HTML, inserirvi all'interno i dati richiesti e proporre il tutto all'utente. Nel caso di un catalogo memorizzato all'interno di un database (per esempio, in formato Microsoft Access, MySQL oppure di una base dati creata con DBMS più evoluti quali Postgresql, Microsoft SQL Server, Oracle), si dovrà esclusivamente realizzare lo script in grado di recuperare le informazioni e di generare la pagina web. In questo modo si eviterà di sprecare tempo e risorse nello sviluppo di una pagina HTML statica per ciascun prodotto che si vuole mettere in Rete. Eventuali modifiche (grafiche e non) dovranno essere inoltre applicate solo allo script server-side e non ad ogni singola pagina HTML!