MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB...

49
MENU MENU 22 Aprile - 16 Maggio 22 Aprile - 16 Maggio 2002 2002 L’intervento, dopo una introduzione L’intervento, dopo una introduzione propedeutica sulle tecnologie propedeutica sulle tecnologie WEB WEB di base di base (Ipertesti, HTML, HTTP, URL) (Ipertesti, HTML, HTTP, URL) e avanzate e avanzate (CGI, Java, Jsp, (CGI, Java, Jsp, ASP, PHP), ASP, PHP), tratta le principali problematiche tratta le principali problematiche legate al server legate al server Web Web APACHE: APACHE: storia, storia, caratteristiche, installazione, caratteristiche, installazione, configurazione, gestione e sicurezza. configurazione, gestione e sicurezza. Servizi Internet di base: Servizi Internet di base: Il server Web e le tecnologie Il server Web e le tecnologie connesse connesse [email protected] [email protected] .it .it Ministero dell’Istruzione Università e Ministero dell’Istruzione Università e Ricerca Ricerca LA CONNESSIONE IN RETE LOCALE LA CONNESSIONE IN RETE LOCALE E GEOGRAFICA” E GEOGRAFICA” Aspetti tecnici e normativi Aspetti tecnici e normativi

Transcript of MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB...

Page 1: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

22 Aprile - 16 Maggio 200222 Aprile - 16 Maggio 2002

L’intervento, dopo una introduzione propedeutica L’intervento, dopo una introduzione propedeutica sulle tecnologie sulle tecnologie WEBWEB di base di base (Ipertesti, HTML, HTTP, (Ipertesti, HTML, HTTP, URL)URL) e avanzate e avanzate (CGI, Java, Jsp, ASP, PHP),(CGI, Java, Jsp, ASP, PHP), tratta le tratta le principali problematiche legate al server principali problematiche legate al server WebWeb APACHE:APACHE: storia, caratteristiche, installazione, storia, caratteristiche, installazione, configurazione, gestione e sicurezza.configurazione, gestione e sicurezza.

Servizi Internet di base:Servizi Internet di base: Il server Web e le tecnologie Il server Web e le tecnologie

connesseconnesse

[email protected]@src.cnr.it

Ministero dell’Istruzione Università e RicercaMinistero dell’Istruzione Università e Ricerca

““LA CONNESSIONE IN RETE LA CONNESSIONE IN RETE LOCALELOCALE

E GEOGRAFICA”E GEOGRAFICA”

Aspetti tecnici e normativiAspetti tecnici e normativi

Page 2: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

““...Il World Wide Web è una ...Il World Wide Web è una architetturaarchitettura software software per accedere a documenti tra loro collegati e per accedere a documenti tra loro collegati e distribuiti su migliaia di macchine nell’intera distribuiti su migliaia di macchine nell’intera Internet.Internet.

Cinque anni fa era un modello per distribuire dati Cinque anni fa era un modello per distribuire dati per la fisica delle alte energie, oggi è per la fisica delle alte energie, oggi è l’applicazione che milioni di persone credono sia l’applicazione che milioni di persone credono sia Internet.”Internet.”

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IntroduzioneIntroduzione

Cos’è il World Wide WebCos’è il World Wide Web

Definizione Definizione autorevoleautorevole

Andrew S. Tanenbaum Andrew S. Tanenbaum

"Computer Networks" Ottobre 1997"Computer Networks" Ottobre 1997

Page 3: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU Le radici del World Wide Le radici del World Wide WebWeb

Il Il World Wide WebWorld Wide Web (detto anche (detto anche WebWeb,, WWWWWW o o WW33)) è nato al è nato al Cern nel 1989 per consentire una agevole cooperazione fra i Cern nel 1989 per consentire una agevole cooperazione fra i gruppi di ricerca di fisica, sparsi nel mondo.gruppi di ricerca di fisica, sparsi nel mondo.E' un'architettura software volta a fornire l'accesso e la E' un'architettura software volta a fornire l'accesso e la navigazione a un enorme insieme di informazioni collegate fra navigazione a un enorme insieme di informazioni collegate fra loro da loro da LINKLINK e distribuite su milioni di elaboratori. e distribuite su milioni di elaboratori.Tale insieme di documenti forma un Tale insieme di documenti forma un ipertestoipertesto ((hypertexthypertext), ), cioè un cioè un insieme complesso insieme complesso ee non sequenziale di associazioni non sequenziale di associazioni, , che permette all'utente di spostarsi tra argomenti correlati, che permette all'utente di spostarsi tra argomenti correlati, indipendentemente dall'ordine in cui questi vengono presentati..indipendentemente dall'ordine in cui questi vengono presentati..

Il concetto di ipertesto risale alla fine degli anni '40:Il concetto di ipertesto risale alla fine degli anni '40:

Vannevar Bush Vannevar Bush Douglas Engelbart Douglas Engelbart Ted NelsonTed Nelson

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IpertestoIpertesto Le OriginiLe Origini

Page 4: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Nel 1945 costruisce Nel 1945 costruisce MemexMemex,, “a “a conceptual machineconceptual machine”,”,un dispositivo un dispositivo dove si possono memorizzare dove si possono memorizzare informazioni di vario genere e dove e’ informazioni di vario genere e dove e’ possibile eseguire delle consultazioni possibile eseguire delle consultazioni a grande velocita’ e flessibilita’ grazie al a grande velocita’ e flessibilita’ grazie al meccanismo dei meccanismo dei LINK.LINK.

Vannevar Vannevar BushBush

“ “ ..The ..The human mindhuman mind ….operates ….operates by association.by association. “ “

""AS We May ThinkAS We May Think” July 1945,” July 1945,The Atlantic MonthlyThe Atlantic Monthly

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IpertestoIpertesto Le OriginiLe Origini

Page 5: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Nel 1963 costruisce il prototipo Nel 1963 costruisce il prototipo di un sistema "di un sistema "oNLine oNLine SystemSystem" (" (NLSNLS) che permette ) che permette hypertext browsing editing e hypertext browsing editing e email.email.

Douglas Carl Douglas Carl EngelbartEngelbart

Per questo sistema inventa il Per questo sistema inventa il mouse !!mouse !!

Il resto e’ storia ...Il resto e’ storia ...

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IpertestoIpertesto Le OriginiLe Origini

Page 6: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il termine Il termine IpertestoIpertesto fu fu coniato nel 1965 da Ted coniato nel 1965 da Ted Nelson nella ‘Nelson nella ‘Literary Literary MachinesMachines’ per indicare ’ per indicare documenti documenti caratterizzaticaratterizzati

Ted NelsonTed Nelson

da una struttura non sequenziale da una struttura non sequenziale delle idee, in alternativa al formato delle idee, in alternativa al formato logico sequenziale tipico dei libri, logico sequenziale tipico dei libri, dei film e dei film e dei discorsi.dei discorsi.

Il più recente termine Il più recente termine IpermediaIpermedia è è un sinonimo che pone in evidenza un sinonimo che pone in evidenza le componenti non testuali: le componenti non testuali: animazioni, suoni e immagini.animazioni, suoni e immagini.

““DOCUMENTS ARE PARALLEL BY NATURE …”DOCUMENTS ARE PARALLEL BY NATURE …”

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IpertestoIpertesto Le OriginiLe Origini

Page 7: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Per migliorare le comunicazioni tra ricercatori Per migliorare le comunicazioni tra ricercatori T.Berners-LeeT.Berners-Lee e e R. R. CailliauCailliau, nel 1990, propongono un nuovo modo di utilizzare Internet , nel 1990, propongono un nuovo modo di utilizzare Internet che chiamano che chiamano World Wide WebWorld Wide Web. .

Al di là del nome, la cosa più interessante è che in questa proposta Al di là del nome, la cosa più interessante è che in questa proposta sono già presenti tutte le idee guida che ancora oggi caratterizzano il sono già presenti tutte le idee guida che ancora oggi caratterizzano il Web.Web.

““World Wide Web: proposal for World Wide Web: proposal for a a HyperText HyperText Project”Project” Marzo 1989

Hypertext+SGML+Internet = Hypertext+SGML+Internet = WWWWWW

Tim Berners-LeeTim Berners-Lee Robert CailliauRobert Cailliau

Il WWW, la più nota Il WWW, la più nota applicazione usata su applicazione usata su Internet, nasce al Internet, nasce al CERN, il più grande CERN, il più grande centro di ricerca centro di ricerca europeo sulla fisica europeo sulla fisica delle particelle delle particelle elementari, dove elementari, dove lavorano fisici di tutto il lavorano fisici di tutto il modo che usano modo che usano quotidianamente la quotidianamente la Rete per tenersi in Rete per tenersi in contatto e scambiarsi contatto e scambiarsi dati e opinioni. dati e opinioni.

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

IpertestoIpertesto Il nuovo Il nuovo paradigmaparadigma

Page 8: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Nel 1992 Mark Andreessen sviluppa l'idea di Nel 1992 Mark Andreessen sviluppa l'idea di MosaicMosaic, il , il browser grafico che permise al www di svilupparsi, mentre browser grafico che permise al www di svilupparsi, mentre era uno studente all'universita' dell'Illinois e membro del era uno studente all'universita' dell'Illinois e membro del NNational ational CCenter for enter for SSupercomputing upercomputing AApplicationspplications ( (NCSANCSA).).

NCSA ---> NetscapeNCSA ---> Netscape

Mark AndreessenMark Andreessen

Nel Nel 19931993 M.Andreessen, insieme M.Andreessen, insieme ad un gruppo di studenti (ad un gruppo di studenti (Enric Enric BrinaBrina), crea la prima versione di ), crea la prima versione di Mosaic.Mosaic.

Lascia in seguito l'NCSA andando Lascia in seguito l'NCSA andando alla Silicon Valley per dare un alla Silicon Valley per dare un contributo alla fondazione con contributo alla fondazione con Jim ClarkJim Clark (Silicon Graphics) alla (Silicon Graphics) alla società conosciuta come:società conosciuta come:

Netscape Communications Netscape Communications CorporationCorporation

Netscape fu sviluppato per semplificare l'uso di Internet nel Netscape fu sviluppato per semplificare l'uso di Internet nel business.business.

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Le prime Le prime implementazioniimplementazioni

Page 9: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il Web ha diverse caratteristiche che hanno Il Web ha diverse caratteristiche che hanno contribuito al suo enorme successo:contribuito al suo enorme successo:

architettura di tipo client-server:architettura di tipo client-server:ampia scalabilità;ampia scalabilità;adatta ad ambienti di rete;adatta ad ambienti di rete;

architettura distribuita:architettura distribuita:perfettamente in linea con le esigenze di gestione di un perfettamente in linea con le esigenze di gestione di un ipertestoipertesto

architettura basata su standard di pubblico dominio:architettura basata su standard di pubblico dominio:possibilità per chiunque di proporre una implementazione;possibilità per chiunque di proporre una implementazione;uguali possibilità di accesso per tutte le piattaforme di uguali possibilità di accesso per tutte le piattaforme di calcolocalcolo

capacità di gestire informazioni di diverso tipocapacità di gestire informazioni di diverso tipo grande interesse da parte di tutti gli utenti.grande interesse da parte di tutti gli utenti.

Le caratteristiche del Le caratteristiche del successosuccesso

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW CaratteristicheCaratteristiche

Page 10: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Sistema di indirizzamentoSistema di indirizzamento basato su basato su Uniform Resource Uniform Resource LocatorLocator ( (URLURL)):: è un meccanismo standard per fare è un meccanismo standard per fare riferimento alle entità riferimento alle entità indirizzabili (risorse) nel Web, indirizzabili (risorse) nel Web, che possono essere:che possono essere:

documenti (testo, immagini, suoni, ecc.);documenti (testo, immagini, suoni, ecc.);programmi eseguibili;programmi eseguibili;

Linguaggio HTMLLinguaggio HTML ( (HyperText Markup LanguageHyperText Markup Language)): è il : è il linguaggio per la linguaggio per la definizione delle pagine Web;definizione delle pagine Web;

Protocollo HTTPProtocollo HTTP ( (HyperText Transfer ProtocolHyperText Transfer Protocol)): è il protocollo : è il protocollo che i che i client e i server utilizzano per comunicare.client e i server utilizzano per comunicare.

I 3 standard principaliI 3 standard principali

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 11: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

L’ URL (Uniform Resource Locators) (L’ URL (Uniform Resource Locators) (RFC 1738RFC 1738), definisce univocamente ), definisce univocamente la posizione di una risorsa in rete. Una URL è fatta di 3 parti, che la posizione di una risorsa in rete. Una URL è fatta di 3 parti, che specificano:specificano:

il il metodo di accessometodo di accesso (come si vuole accedere alla risorsa) (come si vuole accedere alla risorsa) l'l'hosthost (dove è fisicamente localizzata (dove è fisicamente localizzata la risorsa)la risorsa) l'l'identitàidentità (come è identificata la risorsa) (come è identificata la risorsa)Metodo di accesso:Metodo di accesso:

aaaaaa = protocollo (http,ftp,https,etc). Per default si assume http= protocollo (http,ftp,https,etc). Per default si assume http

cccccc = porta TCP utilizzata nella trasmissione. Se non specificata viene utilizzata la porta di = porta TCP utilizzata nella trasmissione. Se non specificata viene utilizzata la porta di default per il protocollo selezionato. Per esempio: 80 per l’ http, 21 per l’ftp,443 per https.default per il protocollo selezionato. Per esempio: 80 per l’ http, 21 per l’ftp,443 per https.

Host:Host: bbbbbb = host name (nessun default) E’ definibile sia come indirizzo a dominio che come indirizzo = host name (nessun default) E’ definibile sia come indirizzo a dominio che come indirizzo IP.IP.

Identità:Identità:dddddd = pathname. Nel caso dell’ http identifica un percorso relativo a partire dalla root definita = pathname. Nel caso dell’ http identifica un percorso relativo a partire dalla root definita nel server contattato.nel server contattato.

eeeeee = filename. Nel caso dell’ http se non specificato corrisponde al file di indice configurato nel = filename. Nel caso dell’ http se non specificato corrisponde al file di indice configurato nel server web. Tipicamente per default corrisponde a index.html o index.htmserver web. Tipicamente per default corrisponde a index.html o index.htm

aaa://bbb:ccc/ddd/eeeaaa://bbb:ccc/ddd/eee

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Identificatore uniforme di Identificatore uniforme di risorserisorse

Page 12: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

• L’HTML è un linguaggio che usa annotazioni L’HTML è un linguaggio che usa annotazioni markupmarkup per descrivere la per descrivere la formattazione di documentiformattazione di documenti

• E’ derivato dall’ E’ derivato dall’ SGMLSGML ((Standard Generalized Markup LanguageStandard Generalized Markup Language)) ISO 8879ISO 8879

• E’ specializzato nel trattamento degli ipertesti e adattato al Web.E’ specializzato nel trattamento degli ipertesti e adattato al Web.

• I comandi per la formattazione I comandi per la formattazione ((tagtag)) sono inseriti in modo esplicito nel sono inseriti in modo esplicito nel testo.testo.

• Un documento descritto in HTML e’ sempre un file ASCIIUn documento descritto in HTML e’ sempre un file ASCII

L’evoluzione dell’HTML è sotto il controllo del consorzio W3C:L’evoluzione dell’HTML è sotto il controllo del consorzio W3C:

• versione 1.0versione 1.0• versione 2.0 (RFC 1866 e RFC 2854) versione 2.0 (RFC 1866 e RFC 2854) (...introdotto il concetto di (...introdotto il concetto di FormForm))• versione 3.0versione 3.0• versione 3.2versione 3.2• versione 4.0 (REC-html40-19980424)versione 4.0 (REC-html40-19980424)• versione 4.0.1versione 4.0.1

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Hyper Text Markup Hyper Text Markup LanguageLanguage

Page 13: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il ruolo di HTML è quindi quello di definire il modo in cui deve essere visualizzata Il ruolo di HTML è quindi quello di definire il modo in cui deve essere visualizzata una pagina Web (detta anche una pagina Web (detta anche pagina HTMLpagina HTML), che tipicamente è un documento di ), che tipicamente è un documento di tipo testuale contenente opportuni tipo testuale contenente opportuni tag di HTMLtag di HTML..

Il client, quando riceve una pagina compie le seguenti operazioni:Il client, quando riceve una pagina compie le seguenti operazioni:

interpreta i tag presenti nella pagina;interpreta i tag presenti nella pagina;formatta la pagina di conseguenza, provvedendo automaticamente ad formatta la pagina di conseguenza, provvedendo automaticamente ad adattarla alle condizioni locali (risoluzione dello schermo, dimensione della adattarla alle condizioni locali (risoluzione dello schermo, dimensione della finestra, profondità di colore, ecc.);finestra, profondità di colore, ecc.);mostra la pagina formattata sullo schermo.mostra la pagina formattata sullo schermo.

Nella formattazione si ignorano:Nella formattazione si ignorano:

sequenze multiple di spazi;sequenze multiple di spazi;caratteri di fine riga, tabulazioni, ecc.caratteri di fine riga, tabulazioni, ecc.

I tag HTML possono essere divisi in due categorie:I tag HTML possono essere divisi in due categorie:

tag per la formattazione di testo;tag per la formattazione di testo;tag per altre finalità (inclusione di oggetti,interazione utente,elaborazione tag per altre finalità (inclusione di oggetti,interazione utente,elaborazione locale).locale).

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

HTML: il ruolo HTML: il ruolo

Page 14: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Al crescente successo del Web si è accompagnato un continuo lavoro per Al crescente successo del Web si è accompagnato un continuo lavoro per ampliarne le possibilità di utilizzo e le funzionalità offerte agli utenti.ampliarne le possibilità di utilizzo e le funzionalità offerte agli utenti.In particolare, si è presto sentita l'esigenza di fornire un supporto a una qualche In particolare, si è presto sentita l'esigenza di fornire un supporto a una qualche forma di forma di interattività superioreinterattività superiore a quella offerta dalla navigazione attraverso a quella offerta dalla navigazione attraverso gli gli hyperlinkhyperlink ( (pagine statichepagine statiche), ad esempio per consentire agli utenti di ), ad esempio per consentire agli utenti di consultare una base di dati remota via Web. La pagine Web generate consultare una base di dati remota via Web. La pagine Web generate on-flyon-fly da da questo tipo di interazione si definiscono: questo tipo di interazione si definiscono: pagine dinamichepagine dinamiche..

Le estensioni più rivoluzionarie del Web in tal senso sono state:Le estensioni più rivoluzionarie del Web in tal senso sono state:

introduzione delle introduzione delle formform per l'invio di dati al server Web ed interazione con per l'invio di dati al server Web ed interazione con le le CGI CGI per l’ elaborazione dei dati sul server stesso;per l’ elaborazione dei dati sul server stesso;

introduzione del linguaggio introduzione del linguaggio LiveScriptLiveScript (poi chiamato (poi chiamato JavaScriptJavaScript) per la ) per la definizione di computazioni, eseguite dal client, direttamente associate a definizione di computazioni, eseguite dal client, direttamente associate a una pagina HTML;una pagina HTML;

introduzione del linguaggio introduzione del linguaggio JavaJava per la creazione di file eseguibili, che per la creazione di file eseguibili, che vengono trasmessi dal server al client e poi vengono eseguiti in totale vengono trasmessi dal server al client e poi vengono eseguiti in totale autonomia dal autonomia dal clientclient; indipendentemente dalla piattaforma HW e SW del ; indipendentemente dalla piattaforma HW e SW del sistemasistema

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

HTML: le HTML: le evoluzioni evoluzioni

Page 15: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il protocollo HTTP sovraintende al dialogo fra un client e un server web: il linguaggio nativo Il protocollo HTTP sovraintende al dialogo fra un client e un server web: il linguaggio nativo del Web.del Web.HTTP non è ancora uno standard ufficiale. Infatti, HTTP 1.0 (HTTP non è ancora uno standard ufficiale. Infatti, HTTP 1.0 (rfc 1945rfc 1945) è ) è informationalinformational, , mentre HTTP 1.1 (mentre HTTP 1.1 (rfc 2068rfc 2068) è ancora in fase di proposta.) è ancora in fase di proposta.

HTTP è un HTTP è un protocollo ASCIIprotocollo ASCII, cioè i messaggi scambiati fra client e server sono costituiti da , cioè i messaggi scambiati fra client e server sono costituiti da sequenze di sequenze di caratteri ASCIIcaratteri ASCII

In questo contesto per In questo contesto per messaggiomessaggio si intende la richiesta del cliente oppure la risposta si intende la richiesta del cliente oppure la risposta del server, intesa come informazione di controllo; viceversa, i dati della URL richiesta del server, intesa come informazione di controllo; viceversa, i dati della URL richiesta che vengono restituiti dal server non sono necessariamente che vengono restituiti dal server non sono necessariamente ASCII ASCII (esempi di dati binari: (esempi di dati binari: immagini, filmati, suoni, codice eseguibile). Utilizzo dello standard immagini, filmati, suoni, codice eseguibile). Utilizzo dello standard MIMEMIME (sviluppato per (sviluppato per la posta elettronica)la posta elettronica)

L’HTTP prevede che ogni singola interazione fra client-server si svolga secondo il seguente L’HTTP prevede che ogni singola interazione fra client-server si svolga secondo il seguente schema:schema:

apertura di una connessione di livello di transporto apertura di una connessione di livello di transporto ((TCPTCP) ) tra client e server tra client e server invio di una singola richiesta da parte del client, che specifica la URL desiderata;invio di una singola richiesta da parte del client, che specifica la URL desiderata; invio di una risposta da parte del server e dei dati di cui alla URL richiesta;invio di una risposta da parte del server e dei dati di cui alla URL richiesta; chiusura della connessione di livello transport.chiusura della connessione di livello transport.

E’ un protocollo di tipo E’ un protocollo di tipo statelessstateless: non è previsto il concetto di : non è previsto il concetto di sessionesessione all'interno della all'interno della quale ci si ricorda dello stato dell'interazione fra client e server. Ogni singola interazione è quale ci si ricorda dello stato dell'interazione fra client e server. Ogni singola interazione è storia a se ed è del tutto indipendente dalle altre.storia a se ed è del tutto indipendente dalle altre.Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie

connesseconnesseWWWWWW Architettura softwareArchitettura software

Hyper Text Transfer ProtocolHyper Text Transfer Protocol

Page 16: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il protocollo HTTP è nato con una finalità (lo scambio di informazioni fra gruppi di ricercatori) che si è radicalmente modificata col passare del tempo. Infatti, attualmente (V1.0) il suo utilizzo si è ampliato enormemente e si cerca di sfruttarlo anche per transazioni di tipo commerciale. Questo ha messo alla frusta il protocollo soprattutto da tre punti di vista:Efficienza nell'uso della rete

Il problema di fondo è che il protocollo HTTP prevede che si apra e chiuda una connessione TCP per ogni singola coppia richiesta-risposta. Si deve tenere presente che l'apertura e la chiusura delle connessioni TCP non è banale (three way handshake per l'apertura, idem più timeout per la chiusura); durante l'apertura e la chiusura non c'è controllo di flusso;la dimensione tipica dei dati trasmessi è piccola (pochi KByte);il TCP usa la tecnica dello slow start per il controllo di flusso.Di conseguenza, si ha che il protocollo HTTP impone un grave overhead sulla rete (sono frequentissime le fasi di apertura/chiusura di connessioni TCP); gli utenti hanno la sensazione che le prestazioni siano scarse (per via dello slow start).

Assenza del concetto di sessione

In moltissime situazioni (ad esempio nelle transazioni di tipo commerciale) è necessario ricordare lo stato dell'interazione fra client e server, che si svolge per fasi successive. Questo in HTTP è impossibile, per cui si devono trovare soluzioni ad hoc (ad esempio, restituire pagine HTML dinamiche contenenti un campo HIDDEN che identifica la transazione).In proposito c'è una proposta (State Management, rfc 2109) basata sull'uso dei cookies, cioè particolari file che vengono depositati presso il client e che servono a gestire una sorta di sessione.

Carenza di meccanismi per lo scambio di dati riservatiL'unico meccanismo esistente per il controllo degli accessi (Basic Authentication) fa viaggiare la password dell'utente in chiaro sulla rete.

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

HTTP 1.0: i problemi apertiHTTP 1.0: i problemi aperti

L’ L’ HTTP versione 1.1HTTP versione 1.1 si propone di superare tutti i limiti della vecchia si propone di superare tutti i limiti della vecchia versione !!versione !!

Page 17: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

I I clientclient (o (o user agentsuser agents) sono lo strumento a disposizione dell'utente che gli permette ) sono lo strumento a disposizione dell'utente che gli permette l'accesso e la navigazione nell'ipertesto del Web. Vengono comunemente chiamati l'accesso e la navigazione nell'ipertesto del Web. Vengono comunemente chiamati browserbrowser (sfogliatori): (sfogliatori): NCSA MosaicNCSA Mosaic (il primo); (il primo); Netscape NavigatorNetscape Navigator; ; Microsoft Microsoft Internet ExplorerInternet Explorer..Essi hanno varie competenze:Essi hanno varie competenze:

trasmettere all'opportuno server le richieste di reperimento dati che derivano dalle trasmettere all'opportuno server le richieste di reperimento dati che derivano dalle azioni dell'utente;azioni dell'utente; ricevere dal server le informazioni richieste;ricevere dal server le informazioni richieste; visualizzare il contenuto della pagina Web richiesta dall'utente, gestendo in modo visualizzare il contenuto della pagina Web richiesta dall'utente, gestendo in modo appropriato tutte le tipologie di informazioni in esse contenute;appropriato tutte le tipologie di informazioni in esse contenute; consentire operazioni locali sulle informazioni ricevute (ad esempio salvarle su disco, consentire operazioni locali sulle informazioni ricevute (ad esempio salvarle su disco, stamparle).stamparle).

Di norma i browser gestiscono direttamente solo alcune tipologie di informazioni:Di norma i browser gestiscono direttamente solo alcune tipologie di informazioni:

testo formattato;testo formattato; immagini fisse;immagini fisse; codice eseguibile.codice eseguibile.

Gli altri tipi di informazioni vengono gestiti in uno (o entrambi) dei seguenti modi:Gli altri tipi di informazioni vengono gestiti in uno (o entrambi) dei seguenti modi:

consegnandoli a un programma esterno:consegnandoli a un programma esterno:helperhelper per mezzo di per mezzo di plug-inplug-in, ossia librerie di codice eseguibile e specializzato caricato in , ossia librerie di codice eseguibile e specializzato caricato in memoria secondo le necessità. In questa situazione, se il necessario plug-in è installato, il memoria secondo le necessità. In questa situazione, se il necessario plug-in è installato, il browser provvede a caricarlo e gli affida la gestione delle informazioni da trattare.browser provvede a caricarlo e gli affida la gestione delle informazioni da trattare.

User AgentsUser Agents

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 18: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server è tipicamente un processo in esecuzione su un elaboratore Il server è tipicamente un processo in esecuzione su un elaboratore (Unix !!).(Unix !!). Esso, di Esso, di norma, è sempre in esecuzione (tranne che in situazioni eccezionali) ed ha delle norma, è sempre in esecuzione (tranne che in situazioni eccezionali) ed ha delle incombenze molto semplici:incombenze molto semplici:

rimanere in ascolto di richieste da parte dei client;rimanere in ascolto di richieste da parte dei client; fare del suo meglio per soddisfare ogni richiesta che arriva:fare del suo meglio per soddisfare ogni richiesta che arriva:

se possibile, consegnare il documento richiesto;se possibile, consegnare il documento richiesto; altrimenti, spedire un messaggio di notifica di errore.altrimenti, spedire un messaggio di notifica di errore.

deve fare il suo lavoro nel modo più efficiente possibile, dunque deve essere deve fare il suo lavoro nel modo più efficiente possibile, dunque deve essere implementato con un occhio di riguardo alle prestazioni;implementato con un occhio di riguardo alle prestazioni; deve essere in grado di gestire molte richieste contemporaneamente, e mentre deve essere in grado di gestire molte richieste contemporaneamente, e mentre fa questo deve continuare a rimanere in ascolto di nuove richieste. Possibili fa questo deve continuare a rimanere in ascolto di nuove richieste. Possibili soluzioni:soluzioni:

clonazione del serverclonazione del server:per ogni nuova richiesta che arriva, il server (che è :per ogni nuova richiesta che arriva, il server (che è sempre in ascolto) crea una nuova copia di se stesso alla quale affida la sempre in ascolto) crea una nuova copia di se stesso alla quale affida la gestione della richiesta;si mette quindi nuovamente in attesa di nuove gestione della richiesta;si mette quindi nuovamente in attesa di nuove richieste; la copia clonata si occupa di soddisfare la richiesta e poi termina.richieste; la copia clonata si occupa di soddisfare la richiesta e poi termina.

server multithreadedserver multithreaded:esiste una sola copia del server, che però è :esiste una sola copia del server, che però è progettato per essere in grado di generare thread multipliprogettato per essere in grado di generare thread multipli

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Server AgentsServer Agents

Page 19: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUModalità di comunicazioni Client-Modalità di comunicazioni Client-ServerServer

Le modalita’ di comunicazione tra un browser ed un server web avvengono Le modalita’ di comunicazione tra un browser ed un server web avvengono in chiaroin chiaro attraverso il protocollo di trasferimento per ipertesti HTTP (Hyper Text Transfer attraverso il protocollo di trasferimento per ipertesti HTTP (Hyper Text Transfer Protocol ). Protocol ).

Questo protocollo lavora per creare, trasferire e gestire dei dati formattati secondo il Questo protocollo lavora per creare, trasferire e gestire dei dati formattati secondo il linguaggio HTML (Hypertext Markup Language) da un sistema ad un altro in maniera linguaggio HTML (Hypertext Markup Language) da un sistema ad un altro in maniera indipendente dal sistema stesso. indipendente dal sistema stesso.

La connessione spesso è La connessione spesso è stabilita dal client prima di ogni richiestastabilita dal client prima di ogni richiesta, e , e chiusa dal server chiusa dal server dopo ogni rispostadopo ogni risposta. .

L'HTTP disciplina i riferimenti attraverso gli URI (Universal Resource Identifier) che L'HTTP disciplina i riferimenti attraverso gli URI (Universal Resource Identifier) che possono essere divisi per locazione URL e per nome URN, indica in tal modo la risorsa a possono essere divisi per locazione URL e per nome URN, indica in tal modo la risorsa a cui applicare il metodo della request.cui applicare il metodo della request.

Le quattro operazioni svolte in sequenza dal protocollo HTTP sono: Le quattro operazioni svolte in sequenza dal protocollo HTTP sono:

•connessione con il server che contiene il documento, connessione con il server che contiene il documento,

•richiesta del documento, richiesta del documento,

•recupero della pagina interessata attraverso la risposta del serverrecupero della pagina interessata attraverso la risposta del server

•chiusura della connessione. chiusura della connessione.

Questo ciclo viene ripetuto per ciascuna pagina richiesta.Questo ciclo viene ripetuto per ciascuna pagina richiesta.

L`HTTP usa la L`HTTP usa la well known port numero 80well known port numero 80 del livello di trasporto del livello di trasporto TCPTCP. .

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 20: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Le tecnologie piu` comunemente utilizzate per realizzare una Le tecnologie piu` comunemente utilizzate per realizzare una comunicazione sicura tra il Browser ed il Web Server:comunicazione sicura tra il Browser ed il Web Server:

Le comunicazioni Le comunicazioni SicureSicure

L`L`SSLSSL ( (Secure Socket LayerSecure Socket Layer) ) (documentato in un (documentato in un IETF IETF draftdraft nella sua terza revisione) e` nella sua terza revisione) e` stato sviluppato dalla Netscape per stato sviluppato dalla Netscape per fornire connessioni sicure nel fornire connessioni sicure nel trasferimento di dati sensibili. Un trasferimento di dati sensibili. Un trasferimento SSL utilizza una trasferimento SSL utilizza una porta porta TCPTCP dedicata: dedicata:443443. E` necessario . E` necessario quindi specificare nell`URL un quindi specificare nell`URL un metodo differenziato di accesso: metodo differenziato di accesso: STTP. La sicurezza nel trasferimento STTP. La sicurezza nel trasferimento delle informazioni e` assicurata da delle informazioni e` assicurata da una codifica basata sull`algoritomo una codifica basata sull`algoritomo RC4 sviluppato dalla RC4 sviluppato dalla RSA, IncRSA, Inc..

L` L` SHTTP SHTTP ((Secure HTTPSecure HTTP) e` stato ) e` stato sviluppato dalla Enterprise sviluppato dalla Enterprise Integration Technologies (Integration Technologies (EITEIT), ora ), ora VerifoneVerifone, e condivide gli stessi , e condivide gli stessi obiettivi di massima dell`SSL. La obiettivi di massima dell`SSL. La codifica a chiave-pubblica chiave-codifica a chiave-pubblica chiave-privata dei dati si basa privata dei dati si basa sull`algoritmo di sull`algoritmo di RRivest-ivest-SShamir-hamir-AAdlemandleman. Non utilizza porte . Non utilizza porte proprietarie sul TCP.proprietarie sul TCP.

La differenza fondamentale tra i due sta nel fatto che La differenza fondamentale tra i due sta nel fatto che SSL crea una SSL crea una connessione sicura tra client e server sulla quale si puo` poi connessione sicura tra client e server sulla quale si puo` poi trasportare qualsiasitrasportare qualsiasi dato mentre dato mentre l`S-HTTP trasporta i singoli file in l`S-HTTP trasporta i singoli file in modo sicuro, attraverso un meccanismo di certificati di autenticita` modo sicuro, attraverso un meccanismo di certificati di autenticita` puntuali.puntuali.

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 21: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Server Side ApplicationServer Side ApplicationIn una applicazione Client-Server si dice di programmi che In una applicazione Client-Server si dice di programmi che verranno eseguiti sul Server. Nel mondo del WEB:verranno eseguiti sul Server. Nel mondo del WEB:

• Scripts CGIScripts CGI• Applet Java JSPApplet Java JSP• ASPASP• Script PHPScript PHP

Client Side ApplicationClient Side Application

In una applicazione Client Server si dice di programmi che In una applicazione Client Server si dice di programmi che verranno eseguiti sul Client. Nel mondo del WEB:verranno eseguiti sul Client. Nel mondo del WEB:

• JavaScriptJavaScript• Applet JavaApplet Java

Web ApplicationWeb Application

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 22: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Le tecnologie di integrazione delle Le tecnologie di integrazione delle Web Server Side Web Server Side ApplicationsApplications con i con i DatabaseDatabase permettono agli utenti in permettono agli utenti in rete Internet di accedere semplicemente ad una quantita' rete Internet di accedere semplicemente ad una quantita' enorme di informazioni organizzate in sistemi di gestione di enorme di informazioni organizzate in sistemi di gestione di base di dati. base di dati.

Infatti:Infatti:

La gestione e/o consultazione dei dati e' indipendente dalla La gestione e/o consultazione dei dati e' indipendente dalla dislocazione fisica nella rete delle informazioni. dislocazione fisica nella rete delle informazioni.

Il browser diventa lo strumento per interagire con il Il browser diventa lo strumento per interagire con il database. database.

E’ possibile effettuare: E’ possibile effettuare:

operazioni di amministrazione e gestione del database; operazioni di amministrazione e gestione del database;

operazioni di aggiornamento, convalida e popolamento.operazioni di aggiornamento, convalida e popolamento.

Sistema Web/DatabaseSistema Web/Database

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Page 23: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUServer Side ApplicationsServer Side Applications

CGI (Common Gateway Interface):CGI (Common Gateway Interface): e’ la e’ la tecnologiatecnologia piu’ piu’ standardstandard e piu’ vecchia per e piu’ vecchia per interfacciare un server Web con un programma, scritto in un linguaggio qualunque, che interfacciare un server Web con un programma, scritto in un linguaggio qualunque, che viene eseguito sul server. Attraverso questa interfaccia e’ possibile passare dati dal server viene eseguito sul server. Attraverso questa interfaccia e’ possibile passare dati dal server Web al programma applicativo e viceversa. Il programma quindi puo’ eseguire qualunque Web al programma applicativo e viceversa. Il programma quindi puo’ eseguire qualunque tipo di elaborazione (estrazione di dati da database, manipolazione degli stessi, calcoli, tipo di elaborazione (estrazione di dati da database, manipolazione degli stessi, calcoli, ecc.). Questa tecnologia e’ abbastanza inefficiente e abbastanza poco sicura, quindi viene ecc.). Questa tecnologia e’ abbastanza inefficiente e abbastanza poco sicura, quindi viene utilizzata sempre piu’ di rado.utilizzata sempre piu’ di rado.

ASP (Active Server Pages):ASP (Active Server Pages): e’ una tecnologia sviluppata da e’ una tecnologia sviluppata da MicrosoftMicrosoft e e successivamente adottata anche da altri produttori di server Web (ad es. Netscape). E’ successivamente adottata anche da altri produttori di server Web (ad es. Netscape). E’ basata sul meccanismo di introdurre all’interno di una pagina HTML delle query SQL per basata sul meccanismo di introdurre all’interno di una pagina HTML delle query SQL per l’interrogazione del database. Quando la pagina viene referenziata da un browser remoto, l’interrogazione del database. Quando la pagina viene referenziata da un browser remoto, il server Web esegue la query ed inserisce i dati ottenuti come risposta all’interno della il server Web esegue la query ed inserisce i dati ottenuti come risposta all’interno della pagina HTML, quindi invia la pagina risultante al browser. Le pagine quindi vengono pagina HTML, quindi invia la pagina risultante al browser. Le pagine quindi vengono costruite dinamicamente dal server Web come integrazione del codice HTML statico e dei costruite dinamicamente dal server Web come integrazione del codice HTML statico e dei risultati delle query.risultati delle query.

JSP (Java Server Pages):JSP (Java Server Pages): e’ una tecnologia sviluppata da e’ una tecnologia sviluppata da SunSun come alternativa alle ASP. come alternativa alle ASP. Funzionano nello stesso modo, salvo che nelle pagine HTML invece di essere inserito del Funzionano nello stesso modo, salvo che nelle pagine HTML invece di essere inserito del codice SQL viene inserito del codice Java. Attraverso Java e’ possibile effettuare qualunque codice SQL viene inserito del codice Java. Attraverso Java e’ possibile effettuare qualunque elaborazione (estrazione dei dati, successiva manipolazione degli stessi, calcoli, ecc.). Il elaborazione (estrazione dei dati, successiva manipolazione degli stessi, calcoli, ecc.). Il server Web poi costruisce la pagina come integrazione del codice HTML statico e dei server Web poi costruisce la pagina come integrazione del codice HTML statico e dei risultati prodotti dal codice Java. Ovviamente e’ una tecnologia piu’ potente delle ASP.risultati prodotti dal codice Java. Ovviamente e’ una tecnologia piu’ potente delle ASP.Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie

connesseconnesseWWWWWW Architettura softwareArchitettura software

Page 24: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUPersonal Hypertext Personal Hypertext PrepocessorPrepocessor

Rasmus LerdorfRasmus Lerdorf nel 1994 scritto il nel 1994 scritto il PHP/FIPHP/FI ( (Personal Home Page / Personal Home Page / Form InterpreterForm Interpreter). ).

A seguito del successo riscosso nel popolo della rete, Rasmus scrisse A seguito del successo riscosso nel popolo della rete, Rasmus scrisse una seconda versione che offriva un maggior numero di funzioni ed il una seconda versione che offriva un maggior numero di funzioni ed il supporto per interfacciare il database supporto per interfacciare il database miniSQLminiSQL..

Nel 1997 la costituzione di un team di lavoro porta alla riscrittura Nel 1997 la costituzione di un team di lavoro porta alla riscrittura completa del codice con la versione completa del codice con la versione PHP3PHP3. .

Con la Con la versione 4versione 4 il team di lavoro ha potenziato l'implementazione il team di lavoro ha potenziato l'implementazione dell'impalcatura object-oriented e con il prodotto dell'impalcatura object-oriented e con il prodotto ZENDZEND ( (PHP4PHP4) offre ) offre

un notevole incremento delle prestazioni.un notevole incremento delle prestazioni.

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

WWWWWW Architettura softwareArchitettura software

Disponibile come :Disponibile come :

• modulo del Web modulo del Web serverserver (Su Web Server APACHE su (Su Web Server APACHE su sistemi UNIX)sistemi UNIX)

• script CGI separatoscript CGI separato(Su tutti i Web server in (Su tutti i Web server in ambiente Unix e ambiente Unix e Windows9X/Me/NT/2000)Windows9X/Me/NT/2000)

Page 25: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUAA PAPAttCHCHy sy sEErverrver

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Le originiLe origini

• E' un webserver free progettato per poter girare come un processo E' un webserver free progettato per poter girare come un processo standalone. standalone.

• Il suo sviluppo e' curato da Apache Software Foundation un' organizzazione Il suo sviluppo e' curato da Apache Software Foundation un' organizzazione not-for-profit quale fondata nel 1999 dal team di volontari denominato not-for-profit quale fondata nel 1999 dal team di volontari denominato Apache Group.Apache Group.

• Nasce come evoluzione del webserver httpd 1.3 sviluppato dal NCSA Nasce come evoluzione del webserver httpd 1.3 sviluppato dal NCSA (National Center for Supercomputing Applications); ne ingloba le (National Center for Supercomputing Applications); ne ingloba le carrateristiche, risolvendo i problemi ed implementando nuove features. Da carrateristiche, risolvendo i problemi ed implementando nuove features. Da qui il nome:qui il nome: A PAtCHy sErver! A PAtCHy sErver!

• Nell'aprile 1995 viene distribuita ufficialmente la prima release pubblica Nell'aprile 1995 viene distribuita ufficialmente la prima release pubblica v.0.6.2. v.0.6.2.

• Anziche' continuare a sviluppare delle Anziche' continuare a sviluppare delle patchpatch, il team di sviluppo decise di , il team di sviluppo decise di riscrivere completamente il codice, prevedendo una struttura modulare e riscrivere completamente il codice, prevedendo una struttura modulare e un'API (Application Programming Interface) per una piu' semplice ed efficace un'API (Application Programming Interface) per una piu' semplice ed efficace gestione.gestione.

• Nel dicembre 1995 viene rilasciata la versione 1.0 del server Apache Nel dicembre 1995 viene rilasciata la versione 1.0 del server Apache completamente indipendente dal codice della NCSA. completamente indipendente dal codice della NCSA.

• E' un progetto nato per creare un webserver stabile, affidabile e veloce.E' un progetto nato per creare un webserver stabile, affidabile e veloce.

• Come progetto è aperto a critiche, patches e bugfixes suggerite Come progetto è aperto a critiche, patches e bugfixes suggerite direttamente dagli utilizzatori.direttamente dagli utilizzatori.

Page 26: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUScheda TecnicaScheda Tecnica

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Caratteristiche Caratteristiche

• Il Web server Apache e' un prodotto Open Source distribuito con il codice Il Web server Apache e' un prodotto Open Source distribuito con il codice sorgentesorgente.

• Apache e' un HTTP server derivato da quello della NCSA, e costituisce uno Apache e' un HTTP server derivato da quello della NCSA, e costituisce uno standard di fatto per la piattaforma Linux ed anche per altri sistemi operativi. standard di fatto per la piattaforma Linux ed anche per altri sistemi operativi.

• Essendo un prodotto Essendo un prodotto freewarefreeware, l'assistenza e' fornita dalla stessa comunita' di , l'assistenza e' fornita dalla stessa comunita' di utilizzatori attraverso gruppi di discussione, mailing lists; inoltre, e' possibile utilizzatori attraverso gruppi di discussione, mailing lists; inoltre, e' possibile trovare nella rete svariata documentazione tecnica di ausilio. trovare nella rete svariata documentazione tecnica di ausilio.

• Supporto DSO (Dynamic shared objects); i moduli possono essere caricati si Supporto DSO (Dynamic shared objects); i moduli possono essere caricati si richiesta, in modo da utilizzare una minore quantità di memoria. richiesta, in modo da utilizzare una minore quantità di memoria.

• Gestisce configurazioni illimitate per Gestisce configurazioni illimitate per Alias e RedirectAlias e Redirect. .

• Gestione dei Gestione dei VirtualHostVirtualHost. .

• L'accesso al servizio HTTP avviene a partire da una porzione del file system L'accesso al servizio HTTP avviene a partire da una porzione del file system che inizia dal cosiddetto che inizia dal cosiddetto DocumentRootDocumentRoot. .

• Apache, una volta avviato, crea dei sottoprocessi (Apache, una volta avviato, crea dei sottoprocessi (children processeschildren processes).).

Page 27: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUIl Motivo del SuccessoIl Motivo del Successo

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Caratteristiche Caratteristiche

Apache è un Apache è un server web open sourceserver web open source (libero (libero accesso al codice sorgente) disponibile per un gran accesso al codice sorgente) disponibile per un gran numero di piattaforme, fra cui anche Windows e numero di piattaforme, fra cui anche Windows e Mac OS X.Mac OS X.

Dal '96, anno del rapido declino del vecchio server Dal '96, anno del rapido declino del vecchio server NCSA, Apache detiene saldamente la leadership di NCSA, Apache detiene saldamente la leadership di questo settore.questo settore.

Market Share for Top Servers Across All Domains August 1995 - May 2001Market Share for Top Servers Across All Domains August 1995 - May 2001

http://www.netcraft.com/survey/

Page 28: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUSetupSetup

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache InstallazioneInstallazione

•Tutte le informazioni sulla configurazione e compilazione di Tutte le informazioni sulla configurazione e compilazione di Apache, si trovano nel file INSTALL.Apache, si trovano nel file INSTALL.

•A partire dalla versione 1.3.4 il file di configurazione e' unico e A partire dalla versione 1.3.4 il file di configurazione e' unico e si chiama si chiama httpd.confhttpd.conf ed e' contenuto nella directory ed e' contenuto nella directory ServerRoot/ServerRoot/conf; (nelle versioni precedenti si dovevano conf; (nelle versioni precedenti si dovevano utilizzare tre files: httpd.conf, srm.conf ed access.conf). utilizzare tre files: httpd.conf, srm.conf ed access.conf).

•La configurazione e gestione del servizio HTTP avviene La configurazione e gestione del servizio HTTP avviene editando con un normale editor (es: VI) le direttive contenute editando con un normale editor (es: VI) le direttive contenute in httpd.conf (file ASCII)in httpd.conf (file ASCII)

Page 29: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUI sorgentiI sorgenti

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache InstallazioneInstallazione

Nel sito ufficiale Nel sito ufficiale WWW.APACHE.ORGWWW.APACHE.ORG, o nei vari mirror sites sparsi sulla , o nei vari mirror sites sparsi sulla rete, si trova il codice sorgente o il codice binario (precompilato) per le rete, si trova il codice sorgente o il codice binario (precompilato) per le piu' svariate piattaforme: Unix, MSWindows (dalla versione 1.3).piu' svariate piattaforme: Unix, MSWindows (dalla versione 1.3).

Per un Host Unix il sorgente sarà un file del tipo: Per un Host Unix il sorgente sarà un file del tipo: apache_1.3.9.tar.gzapache_1.3.9.tar.gz

Steps per Steps per l'installazione(unix)l'installazione(unix)::

cd /temp cd /temp (posizionamento in una directory temporanea)(posizionamento in una directory temporanea)

Download di apache_1.3.9.tar.gzDownload di apache_1.3.9.tar.gz in /temp in /temp

gzip -d apache_1.3.9.tar.gzgzip -d apache_1.3.9.tar.gz (unzip del file compresso) (unzip del file compresso)

tar -C /usr/local -xvf apache_1.3.9.tartar -C /usr/local -xvf apache_1.3.9.tar (installazione del codice (installazione del codice sorgente nella directory apache_1.3.9) sorgente nella directory apache_1.3.9)

cd /usr/local/apache_1.3.9cd /usr/local/apache_1.3.9 (posizionamento sulla directory di (posizionamento sulla directory di

installazione)installazione)

Page 30: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUIt worked !It worked !

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache InstallazioneInstallazione

Steps per Steps per la compilazionela compilazione:: cd apache_1.3.9 (posizionamento sulla cd apache_1.3.9 (posizionamento sulla directory di installazione) directory di installazione)

./configure --prefix=/usr/local/httpd (genera ./configure --prefix=/usr/local/httpd (genera i makefile adatti al sistema) i makefile adatti al sistema)

make (compilazione) make (compilazione)

make install (installazione) make install (installazione)

cd /usr/local/httpd/bin (directory in cui cd /usr/local/httpd/bin (directory in cui viene posizionato il daemon) viene posizionato il daemon)

./apachectl start (script di avvio del ./apachectl start (script di avvio del daemon) daemon)

./apachectl stop (script di arresto del ./apachectl stop (script di arresto del daemon) daemon)

LocalHost Apache home page ---->LocalHost Apache home page ---->

Page 31: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUStruttura delle directoryStruttura delle directory

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache La strutturaLa struttura

Le convenzioni per la struttura delle directory di Apache variano tra versioni e Le convenzioni per la struttura delle directory di Apache variano tra versioni e distribuzioni.distribuzioni.

Di solito l'installazione puo' avvenire nelle directory :Di solito l'installazione puo' avvenire nelle directory : /usr/local/apache/usr/local/apache, , /usr/local/httpd/usr/local/httpd

Directory Directory ContenutoContenuto

binbin Files eseguibili di programmi di amministrazioneFiles eseguibili di programmi di amministrazione

libexeclibexec Moduli caricabiliModuli caricabili

manman Pagine man (Manuali)Pagine man (Manuali)

confconf Files di configurazioneFiles di configurazione

iconsicons Files di immagine per le iconeFiles di immagine per le icone

htdocshtdocs Documenti disponibili sul server (Document root)Documenti disponibili sul server (Document root)

cgi-bincgi-bin Scripts CGIScripts CGI

includeinclude Files di Files di includeinclude di Apache in linguaggio C (necessari per compilare moduli di terze di Apache in linguaggio C (necessari per compilare moduli di terze parti)parti)

runrun Files di configurazione dello status a runtime (spesso memorizzati con i file di log)Files di configurazione dello status a runtime (spesso memorizzati con i file di log)

proxyproxy Gerarchia di cache per i proxy (se viene abilitato il caching)Gerarchia di cache per i proxy (se viene abilitato il caching)

Page 32: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUUtility di supportoUtility di supporto

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache La strutturaLa struttura

La distribuzione di Apache include un gran numero di utility di supporto che La distribuzione di Apache include un gran numero di utility di supporto che vengono di solito installate nella sottodirectory vengono di solito installate nella sottodirectory binbin

Programma Programma DescrizioneDescrizione

abab Semplice strumento per il benchmarkSemplice strumento per il benchmark

apachectlapachectl Script di controllo a runtime di ApacheScript di controllo a runtime di Apache

apxs apxs Strumento di estensione di Apache, usato per costruire i Strumento di estensione di Apache, usato per costruire i Dynamic Dynamic Shared Objects (DSO)Shared Objects (DSO)

dbmmanage dbmmanage Utility per gestire i files di autenticazione per gli utenti in Utility per gestire i files di autenticazione per gli utenti in formato formato DBMDBM

htdigest htdigest Utility per gestire i files digest di autenticazione per gli utentiUtility per gestire i files digest di autenticazione per gli utenti

htpasswd htpasswd Utility per gestire i files di autenticazione per gli Utility per gestire i files di autenticazione per gli utenti utenti

logresolvelogresolve Utility batch per elaborare, in un secondo tempo, i Utility batch per elaborare, in un secondo tempo, i files di log allo scopo files di log allo scopo di risolvere gli indirizzi IPdi risolvere gli indirizzi IP

logresolve.pllogresolve.pl Scritp in PerlScritp in Perl

rotatelogs rotatelogs Filtro di logging per la rotazione dei file di logFiltro di logging per la rotazione dei file di log

split-logfilesplit-logfile Script in Perl per dividere per host virtuali un file di log Script in Perl per dividere per host virtuali un file di log combinatocombinato

Page 33: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENULe direttive 1Le direttive 1

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

ServerTypeServerType standalone/inetdstandalone/inetd : : il servizio viene gestito dal daemon il servizio viene gestito dal daemon httpdhttpd che puo' essere attivato direttamente in fase di inizializzazione del che puo' essere attivato direttamente in fase di inizializzazione del sistema sistema (standalone)(standalone), oppure controllato da processo , oppure controllato da processo inetdinetd (in questo (in questo caso si dovra' inserire un'opportuna entry nel file caso si dovra' inserire un'opportuna entry nel file /etc/inetd.conf/etc/inetd.conf). ). Quando il daemon viene controllato da Quando il daemon viene controllato da inetdinetd, per ogni richiesta bisogna , per ogni richiesta bisogna aspettare l'avvio del daemon; questa operazione genera quindi un ritardo aspettare l'avvio del daemon; questa operazione genera quindi un ritardo nelle risposte giustificabile solo per problemi di sicurezza. Si consiglia la nelle risposte giustificabile solo per problemi di sicurezza. Si consiglia la modalita' modalita' (standalone)(standalone). .

ServerRootServerRoot directorydirectory : : radice del server. Posizione, all'interno del radice del server. Posizione, all'interno del filesystem, del HTTPD server; solitamente si usa /usr/local/httpdfilesystem, del HTTPD server; solitamente si usa /usr/local/httpd

PidFilePidFile nome filenome file : : posizione del file posizione del file httpd.pidhttpd.pid in cui il sistema registra il in cui il sistema registra il PID (Process Identification) del daemon attivato in modalità standalone.PID (Process Identification) del daemon attivato in modalità standalone./usr/local/httpd/logs/httpd.pid/usr/local/httpd/logs/httpd.pid

PortPort numero porta numero porta : : porta utilizzata dal daemon httpd. Default : 80. porta utilizzata dal daemon httpd. Default : 80. (range da 0 a 65535, le prime 1024 porte sono riservate per determinati (range da 0 a 65535, le prime 1024 porte sono riservate per determinati protocolli. In generale le porte al di sotto della 1024 sono protocolli. In generale le porte al di sotto della 1024 sono di sistemadi sistema). ). Gli Gli Host VirtualiHost Virtuali vengono configurati con le sezioni , ma queste hanno vengono configurati con le sezioni , ma queste hanno effetto solo se Apache sta ascoltando sull'indirizzo IP e sulla porta effetto solo se Apache sta ascoltando sull'indirizzo IP e sulla porta indicati. (Vedi Direttiva indicati. (Vedi Direttiva VirtualHostVirtualHost).).

Page 34: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive 2Le direttive 2

UserUser nome utentenome utente : : tutte le richieste inoltrate al server HTTP vengono tutte le richieste inoltrate al server HTTP vengono considerate come se fossero eseguite dall'utente indicato in questa considerate come se fossero eseguite dall'utente indicato in questa direttiva. Per sicurezza e' importante limitare i privilegi di questo direttiva. Per sicurezza e' importante limitare i privilegi di questo utente; solitamente si usa l'utente ed il gruppo utente; solitamente si usa l'utente ed il gruppo nobodynobody. .

GroupGroup nome grupponome gruppo : : solitamente si utilizza l'utente ed il gruppo solitamente si utilizza l'utente ed il gruppo <<nobodynobody>. >.

ServerAdminServerAdmin e-maile-mail : : indirizzo di posta elettronica dell'ammistratore indirizzo di posta elettronica dell'ammistratore del servizio. del servizio.

ServerNameServerName nome a dominionome a dominio : : in questa direttiva si assegna l'host in questa direttiva si assegna l'host name (es: name (es: www.quellochevuoi.itwww.quellochevuoi.it), vale a dire il nome, a dominio, con il ), vale a dire il nome, a dominio, con il quale si indentifica il web server; se non esiste la registrazione nel quale si indentifica il web server; se non esiste la registrazione nel rispettivo DNS (Domain Name Server), si deve indicare l'indirizzo IP rispettivo DNS (Domain Name Server), si deve indicare l'indirizzo IP della macchina che gestisce il servizio. della macchina che gestisce il servizio.

DocumentRootDocumentRoot directory directory :: punto di origine del file system per i punto di origine del file system per i documenti web; documenti web; ServerRoot/ServerRoot/htdocs/ htdocs/

AliasAlias path-url path-realepath-url path-reale : : permette di definire delle directory in permette di definire delle directory in posizioni diverse da quelle reali. Il posizioni diverse da quelle reali. Il path-urlpath-url e' il percorso indicato nelle e' il percorso indicato nelle richieste, mentre il richieste, mentre il path-realepath-reale indica il percorso effettivo nel file indica il percorso effettivo nel file

system.system.

Page 35: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive 3Le direttive 3

UserDirUserDir public_htmlpublic_htmlUserDirUserDir disabled/enabled disabled/enabled utenteutenteCon questa direttiva si consente agli utenti di un server di avere all'interno Con questa direttiva si consente agli utenti di un server di avere all'interno dell'utenza personale una directory in cui posizionare i propri documenti HTML. dell'utenza personale una directory in cui posizionare i propri documenti HTML. Ad esempio sul server www.nome.it Х presente un utente Ad esempio sul server www.nome.it Х presente un utente rossirossi, la cui home , la cui home directory Х directory Х /home/rossi/home/rossi contenente una sottodirectory chiamata contenente una sottodirectory chiamata public_htmlpublic_html, se , se dal browser viene richiesto dal browser viene richiesto www.server.com/~rossiwww.server.com/~rossi appariranno i files presenti appariranno i files presenti nella directory nella directory /home/rossi/public_html/home/rossi/public_html. .

DirectoryIndexDirectoryIndex file indicefile indice : quando si accede ad una directory invece che ad un : quando si accede ad una directory invece che ad un file specifico, se esiste in quella directory il file file specifico, se esiste in quella directory il file index.htmlindex.html viene restituito il viene restituito il contenuto di questo file invece dell'elenco dei files contenuti nella directory. contenuto di questo file invece dell'elenco dei files contenuti nella directory. Questo meccanismo e' utilizzato per mascherare il contenuto effettivo delle Questo meccanismo e' utilizzato per mascherare il contenuto effettivo delle directory. directory.

HostnameLookupsHostnameLookups on/offon/off : si usa : si usa onon se si vuole la risoluzione a nome mnemonico se si vuole la risoluzione a nome mnemonico nel file di Logs (vedi nel file di Logs (vedi CustomLogCustomLog) ed anche se si vuole applicare un filtro sugli ) ed anche se si vuole applicare un filtro sugli accessi in base al dominio di appartenenza (utilizzo della direttiva accessi in base al dominio di appartenenza (utilizzo della direttiva LimitLimit).).

ScriptAliasScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin//cgi-bin/ /usr/local/apache/cgi-bin/Questa direttiva definisce le directory dove le Sript CGI possono essere Questa direttiva definisce le directory dove le Sript CGI possono essere memorizzate e invocate memorizzate e invocate

Page 36: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENULe direttive di loggingLe direttive di logging

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

ErrorLogErrorLog nome filenome file : : file di log in cui vengono registrati i dati delle transazioni non file di log in cui vengono registrati i dati delle transazioni non andate a buon fine; /usr/local/httpd/logs/error_logandate a buon fine; /usr/local/httpd/logs/error_log

LogLevelLogLevel livellolivello : : Determina il livello di verbosity dei messaggi che vengono scritti Determina il livello di verbosity dei messaggi che vengono scritti nei file error_log. Livelli di log possibili in ordine crescente di importanza:nei file error_log. Livelli di log possibili in ordine crescente di importanza:

• debug: messaggi utili al debug; debug: messaggi utili al debug;

• info:info: informazioni generali; informazioni generali;

• notice: condizioni normali ma significative; notice: condizioni normali ma significative;

• warn:warn: warning; (Default) warning; (Default)

• error:error: errori generali (del tipo "Premature end of script headers", utili per il debugging degli errori generali (del tipo "Premature end of script headers", utili per il debugging degli script CGI); script CGI);

• crit: condizioni critiche; crit: condizioni critiche;

• alert: bisogna provvedere immediatamente; alert: bisogna provvedere immediatamente;

• emerg: emergenze, il sistema è inutilizzabile. emerg: emergenze, il sistema è inutilizzabile.

Page 37: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

LogFormatLogFormat formato formato :: e' possibile scegliere tra vari formati di registrazione per il file e' possibile scegliere tra vari formati di registrazione per il file di log.di log.

I piu’ significativi:I piu’ significativi:

• %b --> Byte inviati, esclusi gli headers HTTP;

• %f --> Il Filename• %{VAR}e --> Il contenuto della variabile d'ambiente {VAR}• %h --> L'host remoto• %a --> L'indirizzo IP remoto• %l --> Il logname remoto, se specificato• %p --> La porta dalla quale il server esegue la richiesta• %P --> L'ID del processo che esegue la richiesta• %r --> La prima riga della richiesta• %s --> Lo stato della richiesta• %t --> L'orario delle richiesta• %T --> Il tempo in secondi per eseguire la richiesta• %u --> Il nome dell'utente remoto• %U --> L'url richiesta

Le direttive di loggingLe direttive di logging

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Page 38: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive di gestione dei Le direttive di gestione dei processiprocessi

MaxClientsMaxClients numeronumero:: imposta il numero massimo di imposta il numero massimo di processi processi figliofiglio che possono essere attivati; default 256. che possono essere attivati; default 256.

MaxRequestsPerChildMaxRequestsPerChild numeronumero:: imposta il numero imposta il numero massimo di connessioni che vengono elaborate da un massimo di connessioni che vengono elaborate da un processo processo figliofiglio; il valore di default a 0 viene ; il valore di default a 0 viene interpretato come mancanza di limite. interpretato come mancanza di limite.

MaxSpareServersMaxSpareServers numeronumero:: imposta il numero massimo imposta il numero massimo di processi di processi figliofiglio inattivi che possono esistere. Default inattivi che possono esistere. Default 10. 10.

MinSpareServersMinSpareServers numeronumero:: numero minimo di processi numero minimo di processi figliofiglio inattivi contemporaneamente. inattivi contemporaneamente.

StartServersStartServers numeronumero:: imposta il numero di processi imposta il numero di processi figliofiglio creati all'avvio. creati all'avvio.

Page 39: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive di controllo MIMELe direttive di controllo MIME

TypesConfigTypesConfig nome filenome file:: imposta il nome del file di imposta il nome del file di configurazione dei tipi MIME; fornisce la mappatura per i configurazione dei tipi MIME; fornisce la mappatura per i vari tipi dati dalle estensioni dei nomi dei file; vari tipi dati dalle estensioni dei nomi dei file; /usr/local/httpd/conf/mime.types /usr/local/httpd/conf/mime.types

DefaultTypeDefaultType tipo-MIMEtipo-MIME:: definisce il tipo MIME per tutti quei definisce il tipo MIME per tutti quei documenti che non si identificano in base all'estensione. Di documenti che non si identificano in base all'estensione. Di default: text/plain default: text/plain

AddTypeAddType MIME type | estensioneMIME type | estensione:: con questa direttiva e' con questa direttiva e' possibile aggiungere altri tipi MIME senza modificare il possibile aggiungere altri tipi MIME senza modificare il contenuto del file contenuto del file mime.typesmime.types. Nel caso di utilizzo del . Nel caso di utilizzo del modulo PHP con Apache, l'AddType comunica al HTTP modulo PHP con Apache, l'AddType comunica al HTTP server di interpretare i documenti con estensione .php e di server di interpretare i documenti con estensione .php e di inviare al client solo il contenuto dell'elaborazione.inviare al client solo il contenuto dell'elaborazione.

Page 40: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive di controllo sui Le direttive di controllo sui file .htaccessfile .htaccess

AccessFileNameAccessFileName nome filenome file : : definisce il nome del file, definisce il nome del file, contenuto in ogni directory, in cui sono indicate le informazioni contenuto in ogni directory, in cui sono indicate le informazioni per l'accesso alla directory. Il file non contiene per l'accesso alla directory. Il file non contiene necessariamente solo direttive di controllo sugli accessi. Di necessariamente solo direttive di controllo sugli accessi. Di default: default: .htaccess.htaccess

AllowOverrideAllowOverride All|None|directive-type:All|None|directive-type: indica se il file di indica se il file di configurazione configurazione (.htaccess(.htaccess)) per le singole directory viene letto, per le singole directory viene letto, nel qual caso indica anche il tipo di direttiva permessa. Con nel qual caso indica anche il tipo di direttiva permessa. Con NoneNone viene ignorato qualsiasi file di configurazione all'interno viene ignorato qualsiasi file di configurazione all'interno della directory.della directory. • All:All: Sono valide tutte le direttive indicate nel file di Sono valide tutte le direttive indicate nel file di

configurazione configurazione

• AuthConfig:AuthConfig: Abilita l'uso di autenticazione e di autorizzazione Abilita l'uso di autenticazione e di autorizzazione

• FileInfo:FileInfo: Abilita l'uso di direttive per il controllo del tipo di Abilita l'uso di direttive per il controllo del tipo di documento documento

• Indexes:Indexes: Abilita l'uso di direttive per l'indicizzazione delle Abilita l'uso di direttive per l'indicizzazione delle directory directory

• Limit:Limit: Abilita l'uso di direttive per il controllo di accesso degli host Abilita l'uso di direttive per il controllo di accesso degli host

• Options:Options: Abilita l'uso di direttive di controllo sulle Abilita l'uso di direttive di controllo sulle caratteristiche della caratteristiche della directorydirectory

Page 41: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUI marcatori per il controllo sugli I marcatori per il controllo sugli accessiaccessi

Nel file di configurazione httpd.conf è possibile inserire dei Nel file di configurazione httpd.conf è possibile inserire dei marcatori (con sintassi simile a quella dell’HTML) che permettono marcatori (con sintassi simile a quella dell’HTML) che permettono di controllare gli accessi alle varie directory visibili da Apache:di controllare gli accessi alle varie directory visibili da Apache:

. Location . Location . . FilesFiles

. Directory . Directory . . LimitLimit

Esempio Esempio (/usr/local/Apache/conf/httpd.conf):: # ---------------------------------------------------------

HostnameLookupsHostnameLookups ONON# ---------------------------------------------------------

<<DirectoryDirectory /miei_docs/miei_docs>> <<LimitLimit GET> GET> order order denydeny, , allowallow denydeny from from allall allowallow from from rm.cnr.itrm.cnr.it </</LimitLimit>> </Directory</Directory>># ---------------------------------------------------------

Effetto:Effetto: ---------------------------------------------------------

Solamente i Solamente i clientsclients appartenenti al dominio appartenenti al dominio rm.cnr.itrm.cnr.it possono consultare i possono consultare i files contenuti nella directory: files contenuti nella directory:

/miei_docs/miei_docs;;---------------------------------------------------------

N.B.:N.B.: nell’nell’esempio esempio la direttivala direttiva HostnameLookupsHostnameLookups deve deve

essereessere ONON

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Page 42: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

Le direttive di autenticazioneLe direttive di autenticazione

AuthTypeAuthType typetype:: definisce il protocollo di autenticazione: definisce il protocollo di autenticazione: Basic/Digest(MD5). Se utilizzata questa direttiva necessita di: Basic/Digest(MD5). Se utilizzata questa direttiva necessita di: AuthName, AuthUserFile e AuthGroupFile.AuthName, AuthUserFile e AuthGroupFile.

AuthNameAuthName typetype:: permette di specificare il commento che verrà permette di specificare il commento che verrà stampato dal browser al momento della autenticazione.stampato dal browser al momento della autenticazione.

AuthUserFileAuthUserFile filenamefilename:: puntatore al file che contiene username puntatore al file che contiene username password . E’ popolato dal comando :password . E’ popolato dal comando :

htpasswd -c file_password utente (da abilitare)htpasswd -c file_password utente (da abilitare)

AuthGroupFileAuthGroupFile filenamefilename:: puntatore al file che contiene i nomi dei puntatore al file che contiene i nomi dei gruppi e dei relativi membri (è un file ASCII).gruppi e dei relativi membri (è un file ASCII).

mio_gruppo: pippo pluto paperinomio_gruppo: pippo pluto paperino

RequireRequire UserName/GroupName/ UserName/GroupName/valid-uservalid-user : : attiva il protocollo di attiva il protocollo di autenticazione per i soggetti individuti in argomentoautenticazione per i soggetti individuti in argomento

Page 43: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: .htaccesConfigurazione: .htaccesss

Il controllo locale sugli accessiIl controllo locale sugli accessi

Le funzionalità del file Le funzionalità del file httpd.confhttpd.conf possono essere integrate da file ausiliari possono essere integrate da file ausiliari (.htaccess(.htaccess) ) inseriti nelle directory che si desidera controllare.inseriti nelle directory che si desidera controllare.

L’utilizzo rallenta il server (i file debbono essere interpretati ad ogni accesso) ma ne L’utilizzo rallenta il server (i file debbono essere interpretati ad ogni accesso) ma ne facilita la gestione locale (delegabile al web master) sempre autorizzata da opportune facilita la gestione locale (delegabile al web master) sempre autorizzata da opportune direttive.direttive.

/usr/local/Apache/conf/httpd.conf/usr/local/Apache/conf/httpd.conf

#---------------------------------#---------------------------------AccessFileName .htaccess AccessFileName .htaccess AllowOverride AuthConfig AllowOverride AuthConfig #---------------------------------#---------------------------------

/htdocs/.htaccess/htdocs/.htaccess

# -------------------------------------------# -------------------------------------------AuthName " I miei_docs "AuthName " I miei_docs "AuthType AuthType Basic BasicAuthUserFile AuthUserFile /usr/local/Apache/passwd/usr/local/Apache/passwdAuthGroupFile AuthGroupFile /usr/local/Apache/passwd/usr/local/Apache/passwdrequire valid-user require valid-user # -------------------------------------------# -------------------------------------------

/usr/local/Apache/conf/httpd.conf/usr/local/Apache/conf/httpd.conf

# ---------------------------------------------------------

<<DirectoryDirectory /miei_docs/miei_docs>>

AuthName " I miei documenti "AuthName " I miei documenti " AuthType AuthType Basic Basic AuthUserFile AuthUserFile /usr/local/Apache/passwd/usr/local/Apache/passwd AuthGroupFile AuthGroupFile /usr/local/Apache/passwd/usr/local/Apache/passwd require valid-user require valid-user </Directory</Directory>># ---------------------------------------------------------

Un problema: Controllare tramite password l’accesso al direttorio /miei_docsUn problema: Controllare tramite password l’accesso al direttorio /miei_docs

Due soluzioni: Due soluzioni:

1) approccio locale: .htaccess 1) approccio locale: .htaccess 2) approccio generale: httpd.conf 2) approccio generale: httpd.conf

Page 44: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUDirettive per i Web Server Direttive per i Web Server VirtualiVirtuali

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

E' possibile far coesistere piu' Web servers sulla stessa macchina.E' possibile far coesistere piu' Web servers sulla stessa macchina.

Il primo e' il server gli altri vengono identificati come Il primo e' il server gli altri vengono identificati come virtual hostvirtual host ( (VHVH). ).

Il web server, risponde sia alle richieste indirizzare all'host sia a quelle Il web server, risponde sia alle richieste indirizzare all'host sia a quelle indirizzate ai VH. indirizzate ai VH.

Si possono differenziare i documenti a seconda che venga chiamato Si possono differenziare i documenti a seconda che venga chiamato l'host o il VH; si possono definire file di logs personalizzati separati per l'host o il VH; si possono definire file di logs personalizzati separati per ogni VH. ogni VH.

I virtual hosts sono utilizzati nel webhostingI virtual hosts sono utilizzati nel webhosting

Apache supporta : Apache supporta :

• VirtuaHost basati sul numero VirtuaHost basati sul numero IPIP ( ( IP-Based vhostsIP-Based vhosts ) )• VirtualHost basati sul VirtualHost basati sul nomenome (a dominio) ( (a dominio) ( Named-Based vhostsNamed-Based vhosts ) )

Page 45: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUWeb Server Virtuali: esempioWeb Server Virtuali: esempio

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: httpd.confhttpd.conf

#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------

<<VirtualHostVirtualHost 150.146.129.6> 150.146.129.6>

ServerAdminServerAdmin [email protected]@infoweb.artov.rm.cnr.it

ServerNameServerName www.sic.rm.cnr.it www.sic.rm.cnr.it

DocumentRootDocumentRoot /export/home/sic/htdocs /export/home/sic/htdocs

ScriptAliasScriptAlias /cgi-bin/ "/export/home/sic/cgi-bin/" /cgi-bin/ "/export/home/sic/cgi-bin/"

ErrorLogErrorLog /var/apache/logs/150.146.129.6.error_log /var/apache/logs/150.146.129.6.error_log

CustomLogCustomLog /var/apache/logs/150.146.129.6.access_log /var/apache/logs/150.146.129.6.access_log

commoncommon

<</VirtualHost/VirtualHost>>

#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------

Page 46: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUI moduliI moduli

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: funzionalitàfunzionalità

• Il server Apache e' stato progettato secondo un'architettura modulare Il server Apache e' stato progettato secondo un'architettura modulare

• Tutte le funzionalità del server vengono delegate a specifici moduli Tutte le funzionalità del server vengono delegate a specifici moduli softwaresoftware

• Le funzionalita' dei moduli vengono attivate tramite direttive inserite nei Le funzionalita' dei moduli vengono attivate tramite direttive inserite nei files di configurazionefiles di configurazione

• Gli amministratori possono rimuovere i moduli la cui funzionalita' non e' Gli amministratori possono rimuovere i moduli la cui funzionalita' non e' richiesta ottimizzando le prestazioni e riducendo le dimensioni del richiesta ottimizzando le prestazioni e riducendo le dimensioni del programma. programma.

• I moduli (I moduli (http://modules.apache.orghttp://modules.apache.org)), oltre 150, si articolano in: , oltre 150, si articolano in:

Moduli di base:Moduli di base: vengono inclusi nella distribuzione di Apache e vengono inclusi nella distribuzione di Apache e vengono compilati per default. Si trovano nella directory : vengono compilati per default. Si trovano nella directory : src/modules/standard src/modules/standard

Moduli opzionali:Moduli opzionali: sono inclusi nella distribuzione di Apache ma sono inclusi nella distribuzione di Apache ma non vengono compilati per default nel server. non vengono compilati per default nel server.

Moduli di terze parti:Moduli di terze parti: sono moduli che estendono le funzionalita' sono moduli che estendono le funzionalita' di base di Apache. Alcuni sono distribuiti gratuitamente (PHP, di base di Apache. Alcuni sono distribuiti gratuitamente (PHP, Apache/Perl, ecc), altri sono prodotti commercialiApache/Perl, ecc), altri sono prodotti commerciali

Page 47: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUUtilizzo in Utilizzo in sicurezzasicurezza

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

ApacheApache Configurazione: Configurazione: funzionalitàfunzionalità

Disabilitare i Disabilitare i Server Side IncludesServer Side Includes (possibilità di elaborazione (possibilità di elaborazione sul server script HTML che producono risultati nei documenti sul server script HTML che producono risultati nei documenti serviti al client):serviti al client):

OptionsOptions -Includes-Includes

Disabilitare i Disabilitare i .htaccess.htaccess (dichiarati nella direttiva (dichiarati nella direttiva AccessFileNameAccessFileName): ):

AllowOverrideAllowOverride NoneNone

Disabilitare gli utenti ai Disabilitare gli utenti ai permessi di accesso Unix in permessi di accesso Unix in scritturascrittura fuori della propria home directory. fuori della propria home directory.

chmodchmod 755755 Directory-NameDirectory-Name

Page 48: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENUBibliografia - SitografiaBibliografia - Sitografia

Il server WEB e le Tecnolgie Il server WEB e le Tecnolgie connesseconnesse

Bibliografia e SitografiaBibliografia e Sitografia

A. Ford :"A. Ford :"Apache Pocket ReferenceApache Pocket Reference"; O'Reilly Associates, HOPS Libri"; O'Reilly Associates, HOPS Libri

K. Jamasa et al.: “K. Jamasa et al.: “Tutto WEB corso completoTutto WEB corso completo”; McGrawHill”; McGrawHill

B. Laurie et al.: “B. Laurie et al.: “Apache la guidaApache la guida”; O’Reilly, Apogeo OpenPress”; O’Reilly, Apogeo OpenPress

A. S. Tanenbaum: “A. S. Tanenbaum: “Reti di ComputersReti di Computers”; Prentice Hall International, Utet ”; Prentice Hall International, Utet LibreriaLibreria

D. Giacomini:”D. Giacomini:”Appunti di informatica liberaAppunti di informatica libera" - 2000;" - 2000;

World Wide Web Consortium home page: World Wide Web Consortium home page: http://www.w3.orghttp://www.w3.org

The APACHE - HTTP Server Project home page: The APACHE - HTTP Server Project home page: http://www.apache.orghttp://www.apache.org

Apache HTTP Server Version 1.3: Apache HTTP Server Version 1.3: http.//httpd.apache.org/http.//httpd.apache.org/

D. Beatrici CNR Polarnet: D. Beatrici CNR Polarnet: http://snowcat.artov.rm.cnr.it/corsihttp://snowcat.artov.rm.cnr.it/corsi

Page 49: MENU 22 Aprile - 16 Maggio 2002 Lintervento, dopo una introduzione propedeutica sulle tecnologie WEB di base (Ipertesti, HTML, HTTP, URL) e avanzate (CGI,

MENUMENUMENUMENU

LA CONNESSIONE IN RETE LOCALE E LA CONNESSIONE IN RETE LOCALE E GEOGRAFICA (aspetti tecnici e normativi)GEOGRAFICA (aspetti tecnici e normativi) Il server WEB e le tecnolgie Il server WEB e le tecnolgie

connesseconnesse

Docente: Docente: Gaetano Gaetano ChionchioChionchio

System & System & Network Network

AdministratorAdministrator

Assunto nel 1987 come progettista elettronico Assunto nel 1987 come progettista elettronico CADCAD. Dal 1995 si occupa della gestione di sistemi . Dal 1995 si occupa della gestione di sistemi informatici. Presso l’Area di Ricerca di Roma 2 (informatici. Presso l’Area di Ricerca di Roma 2 (Tor Tor VergataVergata) e’ responsabile delle infrastrutture di ) e’ responsabile delle infrastrutture di rete, dei servizi di interoperabilità e dei progetti rete, dei servizi di interoperabilità e dei progetti avanzati di avanzati di CampusCampus per il per il Software ScientificoSoftware Scientifico e e la la Formazione ProfessionaleFormazione Professionale. Riveste la funzione . Riveste la funzione di consulente informatico per l’Ente presso il di consulente informatico per l’Ente presso il consorzio consorzio ParadesParades, l’, l’ASIASI e l’ e l’ISPESLISPESL. E’ membro . E’ membro del comitato scientifico per la formazione nella del comitato scientifico per la formazione nella CIRT.CIRT.

SServizi ervizi IInformatici di nformatici di

CCampusampusPhonePhone +39 06 4993 4039+39 06 4993 4039

FaxFax +39 06 4993 4013+39 06 4993 4013

GSMGSM +39 335 6201134+39 335 6201134

GSMGSM +39 347 2757142+39 347 2757142

EmailEmail [email protected]@src.cnr.it

URLURL http://www.sic.rm.cnr.it/~gaetanohttp://www.sic.rm.cnr.it/~gaetano

Sezione di Roma 2 Tor Sezione di Roma 2 Tor VergataVergata