Tecnologie lato Server: i Server Web Stefano Clemente [email protected] © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto in italiano: © 2002 Prentice Hall H. M. Deitel, P. J. Deitel, T. R. Nieto Internet & World Wide Web – How To Program (Second Edition) Riferimenti bibliografici • H. M. Deitel, P. J. Deitel, T. R. Nieto Internet & World Wide Web – How To Program (Second Edition) ed. Prentice Hall 2002 Capitolo 21 25 Ottobre 2005 Stefano Clemente 2 Introduzione • Web Server − Software specializzato nel rispondere alle richieste provenienti dai client (browser) attraverso l’invio di risorse (pagine web) • Il client richiede attraverso URI (URL) un documento del server Web • Il server mappa la URI in un documento che si trova − nel suo file-system − nella sua rete locale e lo restituisce al client • La comunicazione tra client e server avviene per mezzo del protocollo HTTP − Esamineremo due web server • Internet Information Server (IIS) di Microsoft • Apache di Apache Software Foundation (open source) 25 Ottobre 2005 Stefano Clemente 3 Tipi di richieste HTTP • Metodi di richiesta HTTP − GET • richiesta di un documento al Web Server − POST • invio dei dati che l’utente del client ha immesso nella form • GET può inviare contenuti di una form come parte della URL per recuperare una particolare risorsa dal server web − http://www.google.it/advanced_search?hl=it in cui la parte seguente il punto interrogativo (nella forma <query>=<query_utente>) rappresenta la query dell’utente − In una GET la lunghezza massima di <query_utente> è di 1024 caratteri; se eccede questo limite si usa il metodo POST • POST è usata anche per modificare i contenuti del web server (es. forum) • I browser solitamente fanno cache delle pagine web per velocizzare l’accesso a queste in caso debbano essere ricaricate − non vengono messe in cache le pagine relative a richieste POST − vengono messe in cache le pagine relative a richieste GET 25 Ottobre 2005 Stefano Clemente 4 Architettura di sistema • I web server fanno parte dell’architettura client-server a n livelli − ogni livello corrisponde a una specifica funzionalità − i livelli possono essere su macchine separate o sulla stessa macchina • Es. Architettura a tre livelli 25 Ottobre 2005 Stefano Clemente 5 Architettura di sistema • Database Server – Livello Informazione − Gestisce i dati utilizzati dalle applicazioni − Memorizza i dati in Relational Database Management System (RDBMS) • Web Server – Livello Medio − Realizza la business logic e la presentation logic − Controlla le interazioni tra i client e i dati dell’applicativo − Agisce da intermediario tra gli altri due livelli 25 Ottobre 2005 Stefano Clemente 6 Architettura di sistema • Web Server – Livello Medio (2) − Controller logic • Elabora le richieste dei client • Reperisce i dati dal DB − Presentation logic • Elabora i dati del livello informazione • Presenta i dati al client − Business logic • Rafforza le regole − Decide in che modo i client possono accedere ai dati e in che modo l’applicazione deve elaborarli • Assicura la validità dei dati prima di aggiornare il DB 25 Ottobre 2005 Stefano Clemente 7 Architettura di sistema • Client – Livello Client − Interfaccia utente dell’applicativo − Gli utenti interagiscono con l’applicazione attraverso l’interfaccia utente − Interagisce con il livello intermedio per fare richieste e per reperire dati sul DB − Mostra i dati all’utente 25 Ottobre 2005 Stefano Clemente 8 Script lato client o lato server? • Gli script lato client − servono per la validazione dei dati immessi dagli utenti − possono accedere al browser per utilizzare caratteristiche specifiche dello stesso e manipolare i documenti − migliorano le pagine web con ActiveX®, applets, etc. • La validazione eseguita sul client − riduce il numero delle richieste fatte al server • Limiti degli script lato client − sono dipendenti dal browser − visibili agli utenti attraverso la visualizzazione del sorgente HTML della pagina • JavaScript è la tecnologia più popolare 25 Ottobre 2005 Stefano Clemente 9 Script lato client o lato server? • Script lato server − Forniscono una maggiore flessibilità nella scrittura dei programmi − Generano risposte personalizzate per i client − Hanno possibilità maggiori rispetto agli script lato client • gli script lato server possono accedere al file system del server • gli script lato client non possono accedere al file system del client − Possono accedere a software sul server per estendere le proprie funzionalità • ActiveX – Microsoft Internet Information Server • Moduli – Apache 25 Ottobre 2005 Stefano Clemente 10 Microsoft Internet Information Server (IIS): Installazione 25 Ottobre 2005 Stefano Clemente 11 Microsoft Internet Information Server (IIS): Installazione 25 Ottobre 2005 Stefano Clemente 12 Microsoft Internet Information Server (IIS): Installazione 25 Ottobre 2005 Stefano Clemente 13 Microsoft Internet Information Server (IIS): Installazione 25 Ottobre 2005 Stefano Clemente 14 25 Ottobre 2005 Stefano Clemente 15 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 16 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 17 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 18 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 19 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 20 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 21 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 22 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 23 Apache: Installazione 25 Ottobre 2005 Stefano Clemente 24 25 Ottobre 2005 Stefano Clemente 25 Avvio e Arresto dei Web Server 25 Ottobre 2005 Stefano Clemente 26 25 Ottobre 2005 Stefano Clemente 27 25 Ottobre 2005 Stefano Clemente 28 Avvio e Arresto di IIS 25 Ottobre 2005 Stefano Clemente 29 Avvio e Arresto di Apache Se non si fosse riusciti a installare Apache come servizio bisogna eseguire in cmd il comando "C:\Programmi\Apache Group\Apache2\bin\Apache.exe" -k install 25 Ottobre 2005 Stefano Clemente 30 La struttura delle directory di default: IIS 25 Ottobre 2005 Stefano Clemente 31 La struttura delle directory di default: Apache 25 Ottobre 2005 Stefano Clemente 32 Configurazione dei Web Server • Per studiare il modo di configurare i due web server creeremo una struttura di directory comune ai due web server − Creeremo la directory web sotto c:\ contenente • html • cgi-bin • icons sulla falsa riga della struttura di Apache e il file test.html sotto c:\web\html • Poiché entrambi sono in ascolto sulla porta 80, non è possibile avviarli contemporaneamente a meno di ridefinire la porta di ascolto; assegneremo − La porta 81 a IIS − La porta 82 a Apache In questo modo riusciremo a distinguere anche gli esempi che si riferiscono all’uno o all’altro web server 25 Ottobre 2005 Stefano Clemente 33 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 34 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 35 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 36 Configurazione di IIS • La versione di IIS per Windows XP è ridotta e non consente la definizione di più siti sullo stesso server − è possibile sulle versioni server di Windows • Modifichiamo la porta settando la porta 81 • Modifichiamo la home-directory di default in c:\web\html • Per modificare le proprietà del sito − cliccare con il tasto destro del mouse sul sito predefinito − dal menu pop-up scegliere “Proprietà” 25 Ottobre 2005 Stefano Clemente 37 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 38 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 39 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 40 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 41 Configurazione di IIS 25 Ottobre 2005 Stefano Clemente 42 Configurazione di IIS • Una volta avviato IIS…. 25 Ottobre 2005 Stefano Clemente 43 Configurazione di Apache • Per Apache non esiste un tool grafico, ma un file di configurazione da editare a mano − "C:\Programmi\Apache Group\Apache2\conf\httpd.conf“ − Si possono usare editor come “Blocco Note” di windows − Cercare le stringhe da modificare con la funzione di ricerca (in “Blocco Note”: menu Modifica → Trova • Modifiche a httpd.conf − − − − − Listen 82 ServerName <fully_qualified_domain_name>:82 DocumentRoot "C:/web/html“ <Directory " C:/web/html"> DirectoryIndex test.html 25 Ottobre 2005 Stefano Clemente 44 Configurazione di Apache 25 Ottobre 2005 Stefano Clemente 45 Configurazione di Apache • Una volta avviato Apache…. 25 Ottobre 2005 Stefano Clemente 46 Le altre directory • Nelle configurazioni viste finora, non c’è alcun accenno alle altre due directory di c:\web • Secondo le configurazioni attuali sui due web server possiamo accedere solo ai documenti e directory contenute in c:\web\html; se infatti copiassimo test.html anche sotto le altre due directory….. 25 Ottobre 2005 Stefano Clemente 47 Le altre directory IIS Apache 25 Ottobre 2005 Stefano Clemente 48 Le altre directory: icons • Per la directory icons i due server restituiscono lo stesso errore • È infatti una directory che non è situata sotto la root directory del server (c:\web\html) • La configurazione da eseguire sui server deve permettere di rendere valida la URL http://<nome_host>/icons/test.html • Questo vuol dire − per IIS creare una directory virtuale − per Apache creare un alias 25 Ottobre 2005 Stefano Clemente 49 icons: configurazione di IIS 25 Ottobre 2005 Stefano Clemente 50 icons: configurazione di IIS 25 Ottobre 2005 Stefano Clemente 51 icons: configurazione di IIS 25 Ottobre 2005 Stefano Clemente 52 icons: configurazione di IIS 25 Ottobre 2005 Stefano Clemente 53 icons: configurazione di Apache • Modifiche a httpd.conf − Alias /icons/ "C:/web/icons/" − <Directory "C:/web/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> • Riavvio di Apache!!! 25 Ottobre 2005 Stefano Clemente 54