2 Aprile 2003
Ministero dell’Istruzione Università e Ricerca
“Piano Nazionale di Formazione degli
Insegnanti sulle Tecnologie
dell’Informazione e della Comunicazione”
Tutor B
Servizi Internet di base:
Il server Web e le tecnologie connesse
[email protected]
L’intervento, dopo una introduzione propedeutica sulle
tecnologie WEB di base (Ipertesti, HTML, HTTP, URL)
e avanzate (CGI, Java, Jsp, ASP, PHP), tratta le
principali problematiche legate al server Web APACHE:
storia, caratteristiche, installazione, configurazione,
gestione e sicurezza.
Protocollo d’intesa tra Ufficio Scolastico Regionale del Lazio e CNR Area della Ricerca di Roma II - Tor Vergata
Cos’è il World Wide Web
“...Il World Wide Web è una architettura software
per accedere a documenti tra loro collegati e
distribuiti su migliaia di macchine nell’intera Internet.
Cinque anni fa era un modello per distribuire dati per
la fisica delle alte energie, oggi è l’applicazione che
milioni di persone credono sia Internet.”
Andrew S. Tanenbaum
"Computer Networks" Ottobre 1997
Il server WEB e le Tecnolgie connesse
Introduzione
Definizione autorevole
Le radici del World Wide Web
Il World Wide Web (detto anche Web, WWW o W3) è nato al Cern
nel 1989 per consentire una agevole cooperazione fra i gruppi di
ricerca di fisica, sparsi nel mondo.
E' un'architettura software volta a fornire l'accesso e la navigazione
a un enorme insieme di informazioni collegate fra loro da LINK e
distribuite su milioni di elaboratori.
Tale insieme di documenti forma un ipertesto (hypertext), cioè un
insieme complesso e non sequenziale di associazioni, che permette
all'utente di spostarsi tra argomenti correlati, indipendentemente
dall'ordine in cui questi vengono presentati..
Il concetto di ipertesto risale alla fine degli anni '40:
 Vannevar Bush
 Douglas Engelbart
 Ted Nelson
Il server WEB e le Tecnolgie connesse
Ipertesto
Le Origini
Vannevar Bush
Nel 1945 costruisce Memex, “a conceptual
machine”,un dispositivo dove si possono
memorizzare informazioni di vario genere e
dove e’ possibile eseguire delle consultazioni
a grande velocita’ e flessibilita’ grazie al
meccanismo dei LINK.
“ ..The human mind ….operates by
association. “
"AS We May Think” July 1945,
The Atlantic Monthly
Il server WEB e le Tecnolgie connesse
Ipertesto
Le Origini
Douglas Carl Engelbart
Nel 1963 costruisce il prototipo di
un sistema "oNLine System"
(NLS) che permette hypertext
browsing editing e email.
Per questo sistema inventa il
mouse !!
Il resto e’ storia ...
Il server WEB e le Tecnolgie connesse
Ipertesto
Le Origini
Ted Nelson
“DOCUMENTS ARE PARALLEL BY NATURE …”
Il termine Ipertesto fu
coniato nel 1965 da Ted
Nelson nella ‘Literary
Machines’ per indicare
documenti caratterizzati
da una struttura non sequenziale delle
idee, in alternativa al formato logico
sequenziale tipico dei libri, dei film e
dei discorsi.
Il più recente termine Ipermedia è un
sinonimo che pone in evidenza le
componenti non testuali: animazioni,
suoni e immagini.
Il server WEB e le Tecnolgie connesse
Ipertesto
Le Origini
Hypertext+SGML+Internet = WWW
“World Wide Web: proposal for a
HyperText Project” Marzo 1989
Tim Berners-Lee
Il WWW, la più nota
applicazione usata su
Internet, nasce al CERN,
il più grande centro di
ricerca europeo sulla
fisica delle particelle
elementari, dove lavorano
fisici di tutto il modo che
usano quotidianamente la
Rete per tenersi in
contatto e scambiarsi
dati e opinioni.
Robert Cailliau
Per migliorare le comunicazioni tra ricercatori T.Berners-Lee e R. Cailliau,
nel 1990, propongono un nuovo modo di utilizzare Internet che chiamano
World Wide Web.
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 Web.
Il server WEB e le Tecnolgie connesse
Ipertesto
Il nuovo paradigma
NCSA ---> Netscape
Nel 1992 Mark Andreessen sviluppa l'idea di Mosaic, il browser
grafico che permise al www di svilupparsi, mentre era uno
studente all'universita' dell'Illinois e membro del National
Center for Supercomputing Applications (NCSA).
Nel 1993 M.Andreessen, insieme ad
un gruppo di studenti (Enric Brina),
crea la prima versione di Mosaic.
Lascia in seguito l'NCSA andando
alla Silicon Valley per dare un
contributo alla fondazione con Jim
Clark (Silicon Graphics) alla società
conosciuta come:
Mark Andreessen
Netscape Communications Corporation
Netscape fu sviluppato per semplificare l'uso di Internet nel business.
Il server WEB e le Tecnolgie connesse
WWW
Le prime implementazioni
Le caratteristiche del successo
Il Web ha diverse caratteristiche che hanno contribuito
al suo enorme successo:
architettura di tipo client-server:
ampia scalabilità;
adatta ad ambienti di rete;
architettura distribuita:
perfettamente in linea con le esigenze di gestione di un ipertesto
architettura basata su standard di pubblico dominio:
possibilità per chiunque di proporre una implementazione;
uguali possibilità di accesso per tutte le piattaforme di calcolo
capacità di gestire informazioni di diverso tipo
 grande interesse da parte di tutti gli utenti.
Il server WEB e le Tecnolgie connesse
WWW
Caratteristiche
I 3 standard principali
Sistema di indirizzamento basato su Uniform Resource Locator (URL):
è un meccanismo standard per fare riferimento alle entità
indirizzabili (risorse) nel Web, che possono essere:
documenti (testo, immagini, suoni, ecc.);
programmi eseguibili;
Linguaggio HTML (HyperText Markup Language): è il linguaggio per la
definizione delle pagine Web;
Protocollo HTTP (HyperText Transfer Protocol): è il protocollo che i
client e i server utilizzano per comunicare.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Identificatore uniforme di risorse
L’ URL (Uniform Resource Locators) (RFC 1738), definisce univocamente la
posizione di una risorsa in rete. Una URL è fatta di 3 parti, che specificano:
 il metodo di accesso
 l'host
 l'identità
(come si vuole accedere alla risorsa)
(dove è fisicamente localizzata la risorsa)
(come è identificata la risorsa)
aaa://bbb:ccc/ddd/eee
Metodo di accesso:
aaa = protocollo (http,ftp,https,etc). Per default si assume http
ccc = 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.
Host:
bbb = host name (nessun default) E’ definibile sia come indirizzo a dominio che come indirizzo IP.
Identità:
ddd = pathname. Nel caso dell’ http identifica un percorso relativo a partire dalla root definita nel
server contattato.
eee = 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.htm
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Hyper Text Markup Language
• L’HTML è un linguaggio che usa annotazioni markup per descrivere la
formattazione di documenti
• E’ derivato dall’ SGML (Standard Generalized Markup Language) ISO 8879
• E’ specializzato nel trattamento degli ipertesti e adattato al Web.
• I comandi per la formattazione (tag) sono inseriti in modo esplicito nel testo.
• Un documento descritto in HTML e’ sempre un file ASCII
L’evoluzione dell’HTML è sotto il controllo del consorzio W3C:
•
•
•
•
•
•
versione 1.0
versione 2.0 (RFC 1866 e RFC 2854) (...introdotto il concetto di Form)
versione 3.0
versione 3.2
versione 4.0 (REC-html40-19980424)
versione 4.0.1
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
HTML: il ruolo
Il ruolo di HTML è quindi quello di definire il modo in cui deve essere visualizzata una
pagina Web (detta anche pagina HTML), che tipicamente è un documento di tipo testuale
contenente opportuni tag di HTML.
Il client, quando riceve una pagina compie le seguenti operazioni:
interpreta i tag presenti nella pagina;
formatta la pagina di conseguenza, provvedendo automaticamente ad adattarla alle
condizioni locali (risoluzione dello schermo, dimensione della finestra, profondità di
colore, ecc.);
mostra la pagina formattata sullo schermo.
Nella formattazione si ignorano:
sequenze multiple di spazi;
caratteri di fine riga, tabulazioni, ecc.
I tag HTML possono essere divisi in due categorie:
tag per la formattazione di testo;
tag per altre finalità (inclusione di oggetti,interazione utente,elaborazione locale).
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
HTML: le evoluzioni
Al crescente successo del Web si è accompagnato un continuo lavoro per 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 forma
di interattività superiore a quella offerta dalla navigazione attraverso gli hyperlink
(pagine statiche), ad esempio per consentire agli utenti di consultare una base di dati
remota via Web. La pagine Web generate on-fly da questo tipo di interazione si
definiscono: pagine dinamiche.
Le estensioni più rivoluzionarie del Web in tal senso sono state:
introduzione delle form per l'invio di dati al server Web ed interazione con le
CGI per l’ elaborazione dei dati sul server stesso;
introduzione del linguaggio LiveScript (poi chiamato JavaScript) per la
definizione di computazioni, eseguite dal client, direttamente associate a una
pagina HTML;
introduzione del linguaggio Java per la creazione di file eseguibili, che vengono
trasmessi dal server al client e poi vengono eseguiti in totale autonomia dal client;
indipendentemente dalla piattaforma HW e SW del sistema
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Hyper Text Transfer Protocol
Il protocollo HTTP sovraintende al dialogo fra un client e un server web: il linguaggio nativo del Web.
HTTP non è ancora uno standard ufficiale. Infatti, HTTP 1.0 (rfc 1945) è informational, mentre HTTP
1.1 (rfc 2068) è ancora in fase di proposta.
HTTP è un protocollo ASCII, cioè i messaggi scambiati fra client e server sono costituiti da sequenze
di caratteri ASCII
In questo contesto per messaggio si intende la richiesta del cliente oppure la risposta del
server, intesa come informazione di controllo; viceversa, i dati della URL richiesta che vengono
restituiti dal server non sono necessariamente ASCII (esempi di dati binari: immagini, filmati,
suoni, codice eseguibile). Utilizzo dello standard MIME (sviluppato per la posta elettronica)
L’HTTP prevede che ogni singola interazione fra client-server si svolga secondo il seguente schema:
 apertura di una connessione di livello di transporto (TCP) tra client e server
 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;
 chiusura della connessione di livello transport.
E’ un protocollo di tipo stateless: non è previsto il concetto di sessione all'interno della quale ci si
ricorda dello stato dell'interazione fra client e server. Ogni singola interazione è storia a se ed è del
tutto indipendente dalle altre.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
HTTP 1.0: i problemi aperti
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 riservati
L'unico meccanismo esistente per il controllo degli accessi (Basic Authentication) fa viaggiare la password
dell'utente in chiaro sulla rete.
L’ HTTP versione 1.1 si propone di superare tutti i limiti della vecchia versione !!
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
User Agents
I client (o user agents) sono lo strumento a disposizione dell'utente che gli permette
l'accesso e la navigazione nell'ipertesto del Web. Vengono comunemente chiamati browser
(sfogliatori): NCSA Mosaic (il primo); Netscape Navigator; Microsoft Internet Explorer.
Essi hanno varie competenze:
 trasmettere all'opportuno server le richieste di reperimento dati che derivano dalle azioni
dell'utente;
 ricevere dal server le informazioni richieste;
 visualizzare il contenuto della pagina Web richiesta dall'utente, gestendo in modo appropriato
tutte le tipologie di informazioni in esse contenute;
 consentire operazioni locali sulle informazioni ricevute (ad esempio salvarle su disco, stamparle).
Di norma i browser gestiscono direttamente solo alcune tipologie di informazioni:
 testo formattato;
 immagini fisse;
 codice eseguibile.
Gli altri tipi di informazioni vengono gestiti in uno (o entrambi) dei seguenti modi:
 consegnandoli a un programma esterno:helper
 per mezzo di plug-in, ossia librerie di codice eseguibile e specializzato caricato in 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.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Server Agents
Il server è tipicamente un processo in esecuzione su un elaboratore (Unix !!). Esso, di norma,
è sempre in esecuzione (tranne che in situazioni eccezionali) ed ha delle incombenze molto
semplici:
 rimanere in ascolto di richieste da parte dei client;
 fare del suo meglio per soddisfare ogni richiesta che arriva:
 se possibile, consegnare il documento richiesto;
 altrimenti, spedire un messaggio di notifica di errore.
 deve fare il suo lavoro nel modo più efficiente possibile, dunque deve essere
implementato con un occhio di riguardo alle prestazioni;
 deve essere in grado di gestire molte richieste contemporaneamente, e mentre fa
questo deve continuare a rimanere in ascolto di nuove richieste. Possibili soluzioni:
clonazione del server:per ogni nuova richiesta che arriva, il server (che è 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 richieste; la copia clonata
si occupa di soddisfare la richiesta e poi termina.
server multithreaded:esiste una sola copia del server, che però è progettato per
essere in grado di generare thread multipli
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Modalità di comunicazioni Client-Server
Le modalita’ di comunicazione tra un browser ed un server web avvengono in chiaro attraverso il
protocollo di trasferimento per ipertesti HTTP (Hyper Text Transfer Protocol ).
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
indipendente dal sistema stesso.
La connessione spesso è stabilita dal client prima di ogni richiesta, e chiusa dal server dopo ogni
risposta.
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 cui applicare il
metodo della request.
Le quattro operazioni svolte in sequenza dal protocollo HTTP sono:
•connessione con il server che contiene il documento,
•richiesta del documento,
•recupero della pagina interessata attraverso la risposta del server
•chiusura della connessione.
Questo ciclo viene ripetuto per ciascuna pagina richiesta.
L`HTTP usa la well known port numero 80 del livello di trasporto TCP.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Le comunicazioni Sicure
Le tecnologie piu` comunemente utilizzate per
comunicazione sicura tra il Browser ed il Web Server:
L`SSL
(Secure Socket Layer)
(documentato in un IETF draft nella
sua terza revisione) e` stato sviluppato
dalla Netscape per fornire connessioni
sicure nel trasferimento di dati
sensibili. Un trasferimento SSL utilizza
una porta TCP dedicata:443. E`
necessario quindi specificare nell`URL
un metodo differenziato di accesso:
STTP. La sicurezza nel trasferimento
delle informazioni e` assicurata da una
codifica basata sull`algoritomo RC4
sviluppato dalla RSA, Inc.
realizzare
una
L` SHTTP (Secure HTTP) e` stato
sviluppato
dalla
Enterprise
Integration Technologies (EIT), ora
Verifone, e condivide gli stessi
obiettivi di massima dell`SSL. La
codifica a chiave-pubblica chiaveprivata dei dati si basa sull`algoritmo
di
Rivest-Shamir-Adleman.
Non
utilizza porte proprietarie sul TCP.
La differenza fondamentale tra i due sta nel fatto che SSL crea una
connessione sicura tra client e server sulla quale si puo` poi trasportare
qualsiasi dato mentre l`S-HTTP trasporta i singoli file in modo sicuro,
attraverso un meccanismo di certificati di autenticita` puntuali.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Web Application
Server Side Application
In una applicazione Client-Server si dice di programmi che
verranno eseguiti sul Server. Nel mondo del WEB:
• Scripts CGI
• Applet Java JSP
• ASP
• Script PHP
Client Side Application
In una applicazione Client Server si dice di programmi che
verranno eseguiti sul Client. Nel mondo del WEB:
• JavaScript
• Applet Java
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Sistema Web/Database
Le tecnologie di integrazione delle Web Server Side
Applications con i Database permettono agli utenti in rete
Internet di accedere semplicemente ad una quantita' enorme di
informazioni organizzate in sistemi di gestione di base di dati.
Infatti:
 La gestione e/o consultazione dei dati e' indipendente dalla
dislocazione fisica nella rete delle informazioni.
 Il browser diventa lo strumento per interagire con il database.
 E’ possibile effettuare:
 operazioni di amministrazione e gestione del database;
 operazioni di aggiornamento, convalida e popolamento.
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
Server Side Applications
CGI (Common Gateway Interface): e’ la tecnologia piu’ standard e piu’ vecchia per 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 Web al programma applicativo e
viceversa. Il programma quindi puo’ eseguire qualunque tipo di elaborazione (estrazione di dati da
database, manipolazione degli stessi, calcoli, ecc.). Questa tecnologia e’ abbastanza inefficiente e
abbastanza poco sicura, quindi viene utilizzata sempre piu’ di rado.
ASP (Active Server Pages): e’ una tecnologia sviluppata da Microsoft 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 codice ActiveX (Visual Basic, Visual C++, Java, VBScript) .
JSP (Java Server Pages): e’ una tecnologia sviluppata da Sun come alternativa alle ASP.
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 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 risultati prodotti dal codice
Java. Ovviamente e’ una tecnologia piu’ potente delle ASP.
Il server WEB e le Tecnologie connesse
WWW
Architettura software
Personal Hypertext Prepocessor
Rasmus Lerdorf nel 1994 scritto il PHP/FI (Personal Home Page / Form
Interpreter).
A seguito del successo riscosso nel popolo della rete, Rasmus scrisse una
seconda versione che offriva un maggior numero di funzioni ed il supporto
per interfacciare il database miniSQL.
Nel 1997 la costituzione di un team di lavoro porta alla riscrittura completa
del codice con la versione PHP3.
Con la versione 4 il team di lavoro ha potenziato l'implementazione
dell'impalcatura object-oriented e con il prodotto ZEND (PHP4) offre un
notevole incremento delle prestazioni.
Disponibile come :
• modulo del Web server
(Su Web Server APACHE su
sistemi UNIX)
• script CGI separato
(Su tutti i Web server in ambiente
Unix e Windows9X/Me/NT/2000)
Il server WEB e le Tecnolgie connesse
WWW
Architettura software
A PAtCHy sErver
• E' un webserver free progettato per poter girare come un processo standalone.
• Il suo sviluppo e' curato da Apache Software Foundation un' organizzazione notfor-profit quale fondata nel 1999 dal team di volontari denominato Apache Group.
• Nasce come evoluzione del webserver httpd 1.3 sviluppato dal NCSA (National
Center for Supercomputing Applications); ne ingloba le carrateristiche, risolvendo
i problemi ed implementando nuove features. Da qui il nome: A PAtCHy sErver!
• Nell'aprile 1995 viene distribuita ufficialmente la prima release pubblica v.0.6.2.
• Anziche' continuare a sviluppare delle patch, il team di sviluppo decise di
riscrivere completamente il codice, prevedendo una struttura modulare e un'API
(Application Programming Interface) per una piu' semplice ed efficace gestione.
• Nel dicembre 1995 viene rilasciata la versione 1.0 del server Apache
completamente indipendente dal codice della NCSA.
• E' un progetto nato per creare un webserver stabile, affidabile e veloce.
• Come progetto è aperto a critiche, patches e bugfixes suggerite direttamente
dagli utilizzatori.
Il server WEB e le Tecnolgie connesse
Apache
Le origini
Scheda Tecnica
• Il Web server Apache e' un prodotto Open Source distribuito con il codice
sorgente.
• 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.
• Essendo un prodotto freeware, l'assistenza e' fornita dalla stessa comunita' di
utilizzatori attraverso gruppi di discussione, mailing lists; inoltre, e' possibile trovare
nella rete svariata documentazione tecnica di ausilio.
• Supporto DSO (Dynamic shared objects); i moduli possono essere caricati si
richiesta, in modo da utilizzare una minore quantità di memoria.
• Gestisce configurazioni illimitate per Alias e Redirect.
• Gestione dei VirtualHost.
• L'accesso al servizio HTTP avviene a partire da una porzione del file system che
inizia dal cosiddetto DocumentRoot.
• Apache, una volta avviato, crea dei sottoprocessi (children processes).
Il server WEB e le Tecnolgie connesse
Apache
Caratteristiche
Il Motivo del Successo
Apache è un server web open source (libero accesso al
codice sorgente) disponibile per un gran numero di
piattaforme, fra cui anche Windows e Mac OS X.
Dal '96, anno del rapido declino del vecchio server NCSA,
Apache detiene saldamente la leadership di questo settore.
http://www.netcraft.com/survey/
Market Share for Top Servers Across All Domains August 1995 - May 2001
Il server WEB e le Tecnolgie connesse
Apache
Caratteristiche
Setup
•Tutte le informazioni sulla configurazione e compilazione di Apache,
si trovano nel file INSTALL.
•A partire dalla versione 1.3.4 il file di configurazione e' unico e si
chiama httpd.conf ed e' contenuto nella directory ServerRoot/conf;
(nelle versioni precedenti si dovevano utilizzare tre files:
httpd.conf, srm.conf ed access.conf).
•La configurazione e gestione del servizio HTTP avviene editando
con un normale editor (es: VI) le direttive contenute in httpd.conf
(file ASCII)
Il server WEB e le Tecnolgie connesse
Apache
Installazione
I sorgenti
Nel sito ufficiale WWW.APACHE.ORG, o nei vari mirror sites sparsi sulla rete,
si trova il codice sorgente o il codice binario (precompilato) per le piu' svariate
piattaforme: Unix, MSWindows (dalla versione 1.3).
Per un Host Unix il sorgente sarà un file del tipo: apache_1.3.9.tar.gz
Steps per l'installazione(unix):
cd /temp (posizionamento in una directory temporanea)
Download di apache_1.3.9.tar.gz in /temp
gzip -d apache_1.3.9.tar.gz (unzip del file compresso)
tar -C /usr/local -xvf apache_1.3.9.tar (installazione del codice sorgente
nella directory apache_1.3.9)
cd /usr/local/apache_1.3.9 (posizionamento sulla directory di installazione)
Il server WEB e le Tecnolgie connesse
Apache
Installazione
It worked !
Steps per la compilazione:
cd apache_1.3.9 (posizionamento sulla
directory di installazione)
./configure --prefix=/usr/local/httpd (genera i
makefile adatti al sistema)
make (compilazione)
make install (installazione)
cd /usr/local/httpd/bin (directory in cui viene
posizionato il daemon)
./apachectl start (script di avvio del daemon)
./apachectl stop (script di arresto del daemon)
LocalHost Apache home page ---->
Il server WEB e le Tecnolgie connesse
Apache
Installazione
Struttura delle directory
Le convenzioni per la struttura delle directory di Apache variano tra versioni e distribuzioni.
Di solito l'installazione puo' avvenire nelle directory : /usr/local/apache, /usr/local/httpd
Directory Contenuto
bin
Files eseguibili di programmi di amministrazione
libexec
Moduli caricabili
man
Pagine man (Manuali)
conf
Files di configurazione
icons
Files di immagine per le icone
htdocs
Documenti disponibili sul server (Document root)
cgi-bin
Scripts CGI
include
Files di include di Apache in linguaggio C (necessari per compilare moduli di terze parti)
run
Files di configurazione dello status a runtime (spesso memorizzati con i file di log)
proxy
Gerarchia di cache per i proxy (se viene abilitato il caching)
Il server WEB e le Tecnolgie connesse
Apache
La struttura
Utility di supporto
La distribuzione di Apache include un gran numero di utility di supporto che vengono di
solito installate nella sottodirectory bin
Programma
Descrizione
ab
Semplice strumento per il benchmark
apachectl
Script di controllo a runtime di Apache
apxs
Strumento di estensione di Apache, usato per costruire i Dynamic
Shared Objects (DSO)
dbmmanage
Utility per gestire i files di autenticazione per gli utenti in formato
DBM
htdigest
Utility per gestire i files digest di autenticazione per gli utenti
htpasswd
Utility per gestire i files di autenticazione per gli utenti
logresolve
scopo
Utility batch per elaborare, in un secondo tempo, i files di log allo
di risolvere gli indirizzi IP
logresolve.pl
Scritp in Perl
rotatelogs
Filtro di logging per la rotazione dei file di log
split-logfile
Script in Perl per dividere per host virtuali un file di log combinato
Il server WEB e le Tecnolgie connesse
Apache
La struttura
Le direttive 1
ServerType standalone/inetd : il servizio viene gestito dal daemon httpd che
puo' essere attivato direttamente in fase di inizializzazione del sistema
(standalone), oppure controllato da processo inetd (in questo caso si dovra'
inserire un'opportuna entry nel file /etc/inetd.conf). Quando il daemon viene
controllato da inetd, per ogni richiesta bisogna aspettare l'avvio del daemon;
questa operazione genera quindi un ritardo nelle risposte giustificabile solo per
problemi di sicurezza. Si consiglia la modalita' (standalone).
ServerRoot directory : radice del server. Posizione, all'interno del filesystem,
del HTTPD server; solitamente si usa /usr/local/httpd
PidFile nome file : posizione del file httpd.pid in cui il sistema registra il PID
(Process Identification) del daemon attivato in modalità standalone.
/usr/local/httpd/logs/httpd.pid
Port numero porta : porta utilizzata dal daemon httpd. Default : 80.
(range da 0 a 65535, le prime 1024 porte sono riservate per determinati
protocolli. In generale le porte al di sotto della 1024 sono di sistema).
Gli Host Virtuali vengono configurati con le sezioni , ma queste hanno effetto
solo se Apache sta ascoltando sull'indirizzo IP e sulla porta indicati. (Vedi
Direttiva VirtualHost).
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive 2
User nome utente : tutte le richieste inoltrate al server HTTP vengono
considerate come se fossero eseguite dall'utente indicato in questa
direttiva. Per sicurezza e' importante limitare i privilegi di questo utente;
solitamente si usa l'utente ed il gruppo nobody.
Group nome gruppo : solitamente si utilizza l'utente ed il gruppo <nobody>.
ServerAdmin e-mail : indirizzo di posta elettronica dell'ammistratore del
servizio.
ServerName nome a dominio : in questa direttiva si assegna l'host name (es:
www.quellochevuoi.it), vale a dire il nome, a dominio, con il quale si indentifica
il web server; se non esiste la registrazione nel rispettivo DNS (Domain
Name Server), si deve indicare l'indirizzo IP della macchina che gestisce il
servizio.
DocumentRoot directory : punto di origine del file system per i documenti
web; ServerRoot/htdocs/
Alias path-url path-reale : permette di definire delle directory in posizioni
diverse da quelle reali. Il path-url e' il percorso indicato nelle richieste,
mentre il path-reale indica il percorso effettivo nel file system.
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive 3
UserDir public_html
UserDir disabled/enabled utente
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. Ad esempio sul
server www.nome.it Х presente un utente rossi, la cui home directory Х /home/rossi
contenente una sottodirectory chiamata public_html, se dal browser viene richiesto
www.server.com/~rossi
appariranno
i
files
presenti
nella
directory
/home/rossi/public_html.
DirectoryIndex file indice : quando si accede ad una directory invece che ad un file
specifico, se esiste in quella directory il file index.html viene restituito il contenuto di
questo file invece dell'elenco dei files contenuti nella directory. Questo meccanismo e'
utilizzato per mascherare il contenuto effettivo delle directory.
HostnameLookups on/off : si usa on se si vuole la risoluzione a nome mnemonico nel file
di Logs (vedi CustomLog) ed anche se si vuole applicare un filtro sugli accessi in base al
dominio di appartenenza (utilizzo della direttiva Limit).
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
Questa direttiva definisce le directory dove le Sript CGI possono essere memorizzate e
invocate
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive di logging
ErrorLog nome file : file di log in cui vengono registrati i dati delle transazioni non andate a
buon fine; /usr/local/httpd/logs/error_log
LogLevel livello : Determina il livello di verbosity dei messaggi che vengono scritti nei file
error_log. Livelli di log possibili in ordine crescente di importanza:
•
debug:
messaggi utili al debug;
•
info:
informazioni generali;
•
notice:
condizioni normali ma significative;
•
warn:
warning; (Default)
•
error:
errori generali (del tipo "Premature end of script headers", utili per il debugging degli script CGI);
•
crit:
condizioni critiche;
•
alert:
bisogna provvedere immediatamente;
•
emerg:
emergenze, il sistema è inutilizzabile.
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive di logging
LogFormat formato : e' possibile scegliere tra vari formati di registrazione per il file di log.
I piu’ significativi:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
%b -->
%f -->
%{VAR}e -->
%h -->
%a -->
%l -->
%p -->
%P -->
%r -->
%s -->
%t -->
%T -->
%u -->
%U -->
Byte inviati, esclusi gli headers HTTP;
Il Filename
Il contenuto della variabile d'ambiente {VAR}
L'host remoto
L'indirizzo IP remoto
Il logname remoto, se specificato
La porta dalla quale il server esegue la richiesta
L'ID del processo che esegue la richiesta
La prima riga della richiesta
Lo stato della richiesta
L'orario delle richiesta
Il tempo in secondi per eseguire la richiesta
Il nome dell'utente remoto
L'url richiesta
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive di gestione dei processi
MaxClients numero: imposta il numero massimo di processi
figlio che possono essere attivati; default 256.
MaxRequestsPerChild numero: imposta il numero massimo di
connessioni che vengono elaborate da un processo figlio; il
valore di default a 0 viene interpretato come mancanza di
limite.
MaxSpareServers numero: imposta il numero massimo di
processi figlio inattivi che possono esistere. Default 10.
MinSpareServers numero: numero minimo di processi figlio
inattivi contemporaneamente.
StartServers numero: imposta il numero di processi figlio
creati all'avvio.
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive di controllo MIME
TypesConfig nome file: imposta il nome del file di configurazione
dei tipi MIME; fornisce la mappatura per i vari tipi dati dalle
estensioni dei nomi dei file; /usr/local/httpd/conf/mime.types
DefaultType tipo-MIME: definisce il tipo MIME per tutti quei
documenti che non si identificano in base all'estensione. Di
default: text/plain
AddType MIME type | estensione: con questa direttiva e'
possibile aggiungere altri tipi MIME senza modificare il
contenuto del file mime.types. Nel caso di utilizzo del modulo PHP
con Apache, l'AddType comunica al HTTP server di interpretare
i documenti con estensione .php e di inviare al client solo il
contenuto dell'elaborazione.
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Le direttive di controllo sui file .htaccess
AccessFileName nome file : definisce il nome del file, contenuto in
ogni directory, in cui sono indicate le informazioni per l'accesso alla
directory. Il file non contiene necessariamente solo direttive di
controllo sugli accessi. Di default: .htaccess
AllowOverride All|None|directive-type: indica se il file di
configurazione (.htaccess) per le singole directory viene letto, nel
qual caso indica anche il tipo di direttiva permessa. Con None viene
ignorato qualsiasi file di configurazione all'interno della directory.
• All:
Sono valide tutte le direttive indicate nel file di configurazione
• AuthConfig:
Abilita l'uso di autenticazione e di autorizzazione
• FileInfo:
Abilita l'uso di direttive per il controllo del tipo di documento
• Indexes:
Abilita l'uso di direttive per l'indicizzazione delle directory
• Limit:
Abilita l'uso di direttive per il controllo di accesso degli host
• Options:
Abilita l'uso di direttive di controllo sulle caratteristiche della
directory
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
I marcatori per il controllo sugli accessi
Nel file di configurazione httpd.conf è possibile inserire dei marcatori
(con sintassi simile a quella dell’HTML) che permettono di controllare gli
accessi alle varie directory visibili da Apache:
. Location
. Directory
. Files
. Limit
Esempio (/usr/local/Apache/conf/httpd.conf):
Effetto:
HostnameLookups ON
Solamente i clients appartenenti
al dominio rm.cnr.it possono
consultare i files contenuti nella
directory:
# --------------------------------------------------------# ---------------------------------------------------------
<Directory /miei_docs>
<Limit GET>
order deny, allow
deny from all
allow from rm.cnr.it
</Limit>
</Directory>
# ---------------------------------------------------------
Il server WEB e le Tecnolgie connesse
---------------------------------------------------------
/miei_docs;
---------------------------------------------------------
N.B.:
nell’esempio la direttiva
deve essere
HostnameLookups
ON
Apache
Configurazione: httpd.conf
Le direttive di autenticazione
AuthType type: definisce il protocollo di autenticazione: Basic/Digest(MD5).
Se utilizzata questa direttiva necessita di: AuthName, AuthUserFile e
AuthGroupFile.
AuthName type: permette di specificare il commento che verrà stampato dal
browser al momento della autenticazione.
AuthUserFile filename: puntatore al file che contiene username password . E’
popolato dal comando :
htpasswd -c file_password utente (da abilitare)
AuthGroupFile filename: puntatore al file che contiene i nomi dei gruppi e dei
relativi membri (è un file ASCII).
mio_gruppo: pippo pluto paperino
Require UserName/GroupName/valid-user : attiva
autenticazione per i soggetti individuti in argomento
Il server WEB e le Tecnolgie connesse
Apache
il
protocollo
di
Configurazione: httpd.conf
Il controllo locale sugli accessi
Le funzionalità del file httpd.conf possono essere integrate da file ausiliari (.htaccess) inseriti
nelle directory che si desidera controllare.
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 direttive.
Un problema: Controllare tramite password l’accesso al direttorio /miei_docs
Due soluzioni:
1) approccio locale: .htaccess
2) approccio generale: httpd.conf
/usr/local/Apache/conf/httpd.conf
/usr/local/Apache/conf/httpd.conf
#--------------------------------AccessFileName
.htaccess
AllowOverride
AuthConfig
#---------------------------------
# ---------------------------------------------------------
/htdocs/.htaccess
# ------------------------------------------AuthName
" I miei_docs "
AuthType
Basic
AuthUserFile /usr/local/Apache/passwd
AuthGroupFile /usr/local/Apache/passwd
require
valid-user
# -------------------------------------------
Il server WEB e le Tecnolgie connesse
<Directory /miei_docs>
AuthName
AuthType
AuthUserFile
AuthGroupFile
require
" I miei documenti "
Basic
/usr/local/Apache/passwd
/usr/local/Apache/passwd
valid-user
</Directory>
# ---------------------------------------------------------
Apache
Configurazione: .htaccess
Direttive per i Web Server Virtuali
E' possibile far coesistere piu' Web servers sulla stessa macchina.
Il primo e' il server gli altri vengono identificati come virtual host (VH).
Il web server, risponde sia alle richieste indirizzare all'host sia a quelle
indirizzate ai VH.
Si possono differenziare i documenti a seconda che venga chiamato l'host o
il VH; si possono definire file di logs personalizzati separati per ogni VH.
I virtual hosts sono utilizzati nel webhosting
Apache supporta :
• VirtuaHost basati sul numero IP ( IP-Based vhosts )
• VirtualHost basati sul nome (a dominio) ( Named-Based vhosts )
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
Web Server Virtuali: esempio
#----------------------------------------------------------------------------<VirtualHost
150.146.129.6>
ServerAdmin
[email protected]
ServerName
www.sic.rm.cnr.it
DocumentRoot /export/home/sic/htdocs
ScriptAlias
/cgi-bin/ "/export/home/sic/cgi-bin/"
ErrorLog
/var/apache/logs/150.146.129.6.error_log
CustomLog
/var/apache/logs/150.146.129.6.access_log common
</VirtualHost>
#----------------------------------------------------------------------------Il server WEB e le Tecnolgie connesse
Apache
Configurazione: httpd.conf
I moduli
• Il server Apache e' stato progettato secondo un'architettura modulare
• Tutte le funzionalità del server vengono delegate a specifici moduli software
• Le funzionalita' dei moduli vengono attivate tramite direttive inserite nei files di
configurazione
• Gli amministratori possono rimuovere i moduli la cui funzionalita' non e' richiesta
ottimizzando le prestazioni e riducendo le dimensioni del programma.
• I moduli (http://modules.apache.org), oltre 150, si articolano in:
 Moduli di base: vengono inclusi nella distribuzione di Apache e vengono
compilati per default. Si trovano nella directory : src/modules/standard
 Moduli opzionali: sono inclusi nella distribuzione di Apache ma non
vengono compilati per default nel server.
 Moduli di terze parti: sono moduli che estendono le funzionalita' di
base di Apache. Alcuni sono distribuiti gratuitamente (PHP, Apache/Perl,
ecc), altri sono prodotti commerciali
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: funzionalità
Utilizzo in sicurezza
Disabilitare i Server Side Includes (possibilità di elaborazione sul
server script HTML che producono risultati nei documenti serviti al
client):
Options
-Includes
Disabilitare i .htaccess (dichiarati nella direttiva AccessFileName):
AllowOverride None
Disabilitare gli utenti ai permessi di accesso Unix in scrittura fuori
della propria home directory.
chmod 755 Directory-Name
Il server WEB e le Tecnolgie connesse
Apache
Configurazione: funzionalità
Bibliografia - Sitografia
A. Ford :"Apache Pocket Reference"; O'Reilly Associates, HOPS Libri
K. Jamasa et al.: “Tutto WEB corso completo”; McGrawHill
B. Laurie et al.: “Apache la guida”; O’Reilly, Apogeo OpenPress
A. S. Tanenbaum: “Reti di Computers”; Prentice Hall International, Utet Libreria
D. Giacomini:”Appunti di informatica libera" - 2000;
World Wide Web Consortium home page: http://www.w3.org
The APACHE - HTTP Server Project home page: http://www.apache.org
Apache HTTP Server Version 1.3: http.//httpd.apache.org/
D. Beatrici CNR Polarnet: http://snowcat.artov.rm.cnr.it/corsi
Il server WEB e le Tecnolgie connesse
Bibliografia e Sitografia
Docente: Gaetano Chionchio
Servizi
Informatici di
Campus
Sezione di Roma 2 Tor Vergata
Phone +39 06 4993 4039
Fax
+39 06 4993 4013
GSM +39 335 6201134
Email [email protected]
URL http://www.sic.rm.cnr.it/~gaetano
System & Network
Administrator
Assunto al CNR nel 1987 come progettista elettronico. Dal
1995 si occupa della gestione di sistemi informatici. Presso
l’Area di Ricerca di Roma 2 (Tor Vergata) e’ responsabile
delle infrastrutture di rete, dei servizi di interoperabilità
e dei
progetti avanzati di Campus per il Software
Scientifico e la Formazione Professionale. Riveste la
funzione di consulente informatico per l’Ente presso il
consorzio Parades,l’ASI ,l’ISPESL ed il MIUR. E’ membro
del comitato scientifico per la formazione nella
Commissione Informatica Reti Telematiche del CNR.
Piano Nazionale di Formazione degli Insegnanti sulle
Tecnologie dell’Informazione e della Comunicazione
Il server WEB e le tecnolgie connesse
Scarica

Il server WEB e le tecnologie connesse