33
$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $ Server web e protocollo HTTP Dott. Emiliano Bruni ([email protected])

Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

  • Upload
    votruc

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Server web e protocollo HTTP

Dott. Emiliano Bruni([email protected])

Page 2: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Argomenti del corso

Cenni generali sul webIIS e ApacheIl server web Micsosoft® Internet Information Server 5.0Il server web Apache 2.0Il protocollo HTTP

Page 3: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

TerminologiaGPL: Licenza software. I programmi distribuiti sotto questa licenza sono gratuiti, se ne hanno i sorgenti e possono essere modificati e redistribuiti a patto di essere distribuito ancora sotto licenza GPLServer web: Software che distribuisce pagine www agli utenti che ne fanno richiestaLogs: File che tengono traccia gli eventi, gli accessi, i problemi relativi ad un determinato softwarePagine statiche: Pagine www con contenuto statico ed immutabile a meno di non modificare fisicamente il contenuto della pagina stessaPagine dinamiche: Pagine www generate da un software esterno che si possono modificare il proprio contenuto in base ad informazioni e parametri esterniLinguaggi scripting: Linguaggi con cui è possibile scrivere pagine www dinamiche

Page 4: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

TerminologiaCGI: Interfaccia con cui il server web dialoga con il software esterno e tramite la quale riceve il documento www generato dallo stessoBrowser: Programma con cui l’utente visualizza le pagine HTMLFrame: Un sito o una sua sottosezione si dice fatta a frame quando la pagina visualizzata in realtà è formata da più pagine distinte. Per il browser ogni pagina costituente (detta, per l’appunto, frame) è come se fosse una finestra separata del browser e, per esempio, ha leproprie sbarre di scorrimento separate da quelle degli altri framePath: Percorso sul disco rigido di un file o di una cartellaWYSIWYG: (What you see is what you get – Ciò che vedi è ciò che ottieni). Lo si dice di un programma atto a generare un documento ove la finestra di creazione e modifica del documento contiene il documento esattamente come appare poi nella sua forma finale al software di visualizzazione del documentoO.S.: Abbreviazione inglese di “sistema operativo”

Page 5: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

TerminologiaHTTP: Sintassi con cui il server web invia le pagine HTML al browserURL: (Unificated resource location) stringa che contiene tutte le informazioni necessarie a recuperare un documento. E’ l’analogo postale del’informazione“nome+cognome+via+n.civico+cap+citta+provincia”. Nel protocollo HTTP è nella forma http://www.dominio.ext/path/nomefile.htmDaemon: (demone) software in attesa di fornire informazioni. Se le informazioni sono accessibili dall’esterno del calcolatore su cui il daemon gira si parla anche di daemon pubblico.Server: Computer su cui gira almeno un daemon pubblicoClient: Software che si collega ad un daemon su di un server per ottenere informazioni

Page 6: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Cenni generali sul web

Il concetto di URLConcetti generali di un server webL’interfaccia CGI

Per cosa sono utili i CGICome funziona l’interfaccia CGII linguaggi di scripting

Page 7: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il concetto di URLSignifica: Unificated resource locationStringa che contiene tutte le informazioni necessarie a localizzare un documento sulla rete. Può essere visto come l’analogo postale del-l’ informazione: “nome+cognome+via+n.civico+cap+citta+provincia+nazione”.

La sua sintassi completa è:<schema>://<user>:<password>@<host>:<port>/<url-path>?query

Nel protocollo HTTP è nella forma http://www.dominio.ext/path/nomefile.htm

Page 8: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Cos’è un server web

Software che usualmente distribuisce pagine www agli utenti che ne fanno richiestaDefinizione di document root e recupero documentiIl concetto di alias

Page 9: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il protocollo HttpVisualizziamo la pagina http://www.micso.it/Browser

telnet su www.micso.it:80richiede il documento “/”

Serverricerca documento sul HDInvia il documento al browser

Browser elabora la rispostarichiede eventuali altri elementi della pagina (immagini, suoni, video)

Page 10: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

IIS e Apache

Apache in breveI numeri di Apache

Vantaggi di ApacheSvantaggi di ApacheIIS in breveVantaggi di IISSvantaggi di IIS

Page 11: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Apache in breveE’ il più potente, flessibile web serverE’ il server web più utilizzato in INTERNET. E’ attivo su oltre 6 milioni di server web in INTERNET (febbraio 2000) Altamente configurabile ed estendibilePersonalizzazione modulare (C++/Perl)Distribuito in formato sorgentePer WinNT/9x/2k,Netware,OS/2,*nix

Page 12: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

I numeri di ApacheSu Internet Windows conta poco ed è Unix ad avere il predominio.

Page 13: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Vantaggi di ApacheE’ OpenSourceE’ modulare ed estendibileGira su qualsiasi O.S.E’ il server web più utilizzato su InternetSupporto interno di tutti i motori di scriptingFa girare nativamente gli applet JavaE’ robusto e bug-free

Page 14: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Svantaggi di Apache

Supporto minimo per ASPSupporto in fase di sviluppo per .NET

Page 15: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

IIS in breve

E’ il web server di casa Microsoft E’ presente “gratuitamente” sui CD di installazione di Windows 2000 Pro/Server e su WinXP

Page 16: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Vantaggi di IIS

Supporto completo per ASPSupporto completo per .NETFacilmente integrabile con l’Active Directory e con gli utenti di un dominio Windows

Page 17: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Svantaggi di IIS

Software non apertoMolti bug di sicurezza presentiMaggiore lavoro di aggiornamento patchAltri linguaggi di scripting girano su shell esterne

Page 18: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Installazione di IIS5.0La struttura a directoryIl concetto di default documentUno sguardo al file di log degli accessiIl concetto di applicativo web e il file global.asaWeb scripting sotto IISMessaggi di errore e loro personalizzazioneI server web virtuali sotto IIS

Page 19: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

La struttura a directoryc:\Inetpub\wwwroot

Directory base_vti_*

Estensioni del frontpagec:\winnt\system32\LogFiles

Log dei server webc:\Inetpub\scripts

Default, unica cartella per scriptglobal.asa

File di inizializzazione applicativo web

Page 20: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il server web Apache 2.0

Installazione su RedHatLa struttura a directoryIl file di configurazioneI server web virtuali sotto ApacheWeb scripting sotto Apache

Page 21: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Installazione su RedHat

Già installato, altrimenti…Pacchetti RPM (rpm –ivh httpd*)Esecuzione

Manuale: service httpd start

Automatica: setup

Page 22: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

La struttura a directory/etc/httpd/: configurazione, moduli, logs

conf/: file di configurazionehttpd.conf:

conf.d/: configurazione x modulologs/: i file di log

access_log: monitorizza tutti gli accesserror_log: tiene traccia di tutti gli errori

modules/: l’apache è modulare e potete far partire solo le funzionalità che vi servono senza caricare funzionalità che non utilizzate sovraccaricando inutilmente il sistema

/var/www/html/: sito web

Page 23: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il file di configurazionePath: /etc/httpd/conf/httpd.confContiene tutte le direttive per configurare le opzioni del server webPiù di 200 opzioni configurabili tra cui:

Path vari file e directory dei sistemaAttivazione,disattivazione dei moduliConfigurazione privilegi di accessoConfigurazione server web virtualiTuning dei processi httpd

Page 24: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

L’interfaccia CGIAcronimo per “Common Gateway Interface”Specifica il modo in cui il server può eseguire programmi residenti sul server e il modo in cui il server e il programma possono scambiarsi informazioniSvincolato dal linguaggio di programmazione. Ogni linguaggio utilizzabile sul server può essere usato per creare uno script CGI

Page 25: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Per cosa sono utili i CGIGenerazione di contenuti…

…variabili nel tempo o dipendenti da proprietà mutabili…disponibili sul sistema ma non in formato direttamente fruibile…non direttamente accessibile per motivi di sicurezza…con interfaccia di accesso complessa o non trasferibile via html

Page 26: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Come funziona l’interfaccia CGI1. Il client richiede un URL o

invia un form premendo il pulsante invio.

2. Il server si accorge che l’URL punta a uno script CGI.

3. Il server passa allo script tutta una serie di informazioni tra cui quelle eventualmente ricevute dal client.

4. Lo script elabora le informazioni ricevute e restituisce al server il risultato dell’elaborazione, di solito, in HTML.

5. Il server restituisce il risultato al browser del client.

WEB SERVER

Invia il form

Richiede unURL al server L'URL è un

programmaesterno

Esecuzionidati dell'utenteIl programma

invia il risultatoall'utente

Page 27: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

I linguaggi di scripting

Tutti i linguaggi che girano sul server possono essere usati come linguaggi di scripting

• ASP• C#• Cobol• Java••

• PHP• Perl• Visual basic• C e C++• Shell• Pyton

Page 28: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

ProgrammaI linguaggi di scripting più comuni

Esempi di possibili linguaggi di scriptingIl PHPIl Perl

Il Mason

Creiamo un sistema di benvenutoIn PHPIn PerlIn Mason

Un sito a pseudo-frame utilizzando i templateIl problema dei frameLa soluzione in Mason

Page 29: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il PHPPro

OpenSourceTempi di apprendimento molto rapidiIntegrabile nel codice html

ControNon è Object OrientedNon è modulare ed è complicato aggiungere nuove funzionalità.

Page 30: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il PerlPro

OpenSourceObject OrientedE’ modulare.Struttura del linguaggio veramente completa ed esaustiva.Immensa libreria di moduli per qualsiasi funzionalita (CPAN).E’ possibile programmare il server Apache.

ControTempi un po’ lunghi per piena padronanza del linguaggio.Non è integrabile nel codice HTML.

Page 31: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Il MasonI vantaggi del Perl + quelli del PHPPro

Tutti quelli del Perl.Integrabile nel codice htmlNato per l’ambiente CGI e quindi semplice utilizzo in tale modalità

ControTempi un po’ lunghi per avere padronanza del linguaggioLievemente meno efficiente del PHP e del Perl in termini di risposta.

Page 32: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Script di esempio

Scriviamo delle pagine dinamiche che ci salutano nei linguaggi:

PHPPerlMason

Page 33: Server web e protocollo HTTP - ebruni.it · se fosse una finestra separata del browser e, per esempio, ha le ... • Visual basic • C e C++ •Shell •Pyton $Id: web_e_http 1.0

$Id: web_e_http 1.0 2003/12/14 00:31:23 bruni Exp $

Altre fonti di informazioneApache

http://www.apache.org/PHP

http://www.php.org/Perl

http://www.perl.com/http://www.cpan.org/http://perl.apache.org/

Masonhttp://www.masonhq.com/

Riferimenti personalihttp://www.ebruni.it/[email protected]