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