SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Corso di Basi di Dati e Laboratorio




                           Apache
              Alfio Ferrara - Stefano Montanelli




 A.A. 2005/2006             Basi di Dati e Laboratorio                1




Apache

• Server Web open source
• Il progetto ha origine nel 1995
• Apache ha un’architettura modulare e
  altamente configurabile
• http://www.apache.org




 A.A. 2005/2006             Basi di Dati e Laboratorio                2




Diffusione sul mercato
Dicembre 2005 - http://news.netcraft.com
    69.97 %
  (52.025.380)




                         20.92 %
                       (15.557.786)
                                                 2.53 %
                                               (1.881.861)
                                                             0.79 % (577.384 )


   APACHE             MICROSOFT                    JAVA          ZEUS

 A.A. 2005/2006             Basi di Dati e Laboratorio                3




                                                                                 1
Architettura

• Componenti principali
   – Inizializzazione e configurazione
   – Parser delle richieste HTTP
   – Allocazione della memoria
• Moduli
   – Autentificazione e sicurezza
   – Redirezione
   – Estensioni (supporto ai linguaggi di scripting)



 A.A. 2005/2006     Basi di Dati e Laboratorio   4




Installazione

• In breve…
   –$      ./configure --prefix=PREFIX
   –$      make
   –$      make install
   –$      PREFIX/bin/apachectl start
• Due opzioni importanti:
   – Perl 5 è richiesto per l’esecuzione di diversi
     script (apxs). È consigliata l’opzione --with-perl
   – DSO per il supporto al caricamento dinamico
     dei moduli

 A.A. 2005/2006     Basi di Dati e Laboratorio   5




Avvio del server

• Il server viene avviato sulla porta
  specificata (assieme alle altre opzioni di
  configurazione) nel file httpd.conf
• In ambiente UNIX Apache può essere
  avviato tramite inetd oppure:
   – /usr/local/apache/bin/httpd, oppure
     attraverso lo script apachectl
• In ambiente Windows l’avvio è analogo a
  quello degli altri servizi NT

 A.A. 2005/2006     Basi di Dati e Laboratorio   6




                                                          2
Configurazione

• Avviene editando il file httpd.conf
• Le opzioni di configurazione sono definite
  tramite direttive
• Principali elementi della configurazione:
   – Variabili d’ambiente
   – Gestione degli accessi
   – Comportamento a seguito di specifiche
     richieste



 A.A. 2005/2006      Basi di Dati e Laboratorio   7




DSO e moduli
• DSO (Dynamic Shared Objects)
   – Consentono il caricamento dei moduli di Apache a
     run-time
• Sono supportati tramite il modulo mod_so.c che
  deve essere compilato staticamente con Apache
• Il modulo mod_so consente l’uso della direttiva
  LoadModule nel file di configurazione per il
  caricamento dei moduli richiesti




 A.A. 2005/2006      Basi di Dati e Laboratorio   8




Apxs

• La gestione dei moduli è stata semplificata
  attraverso l’utility apxs che permette di
  generare i DSO
• Vantaggi di DSO:
   – Flessibilità
   – Estendibilità (ad esempio l’aggiunta del
     modulo di supporto per PHP)
• Svantaggi:
   – Prestazioni inferiori rispetto alla compilazione
     statica dei moduli

 A.A. 2005/2006      Basi di Dati e Laboratorio   9




                                                        3
Moduli

Direttive per la gestione dei moduli:
• LoadModule nomemodulo nomefile
   – Carica il modulo nomemodulo istituendo un
     link con il nomefile ad esso associato
        • E.g., LoadModule dir_module modules/mod_dir.so

• <IfModule [!]nomemodulo> … </IfModule>
   – Esegue un’insieme di direttive solo nel caso
     che nomemodulo sia caricato (o non caricato)
        • E.g., <IfModule mod_ssl.c>
                     Include conf/ssl.conf
                </IfModule>

 A.A. 2005/2006              Basi di Dati e Laboratorio          10




Direttive
• Le direttive istruiscono Apache sulle azioni da
  intraprendere in risposta ad una richiesta per una
  specifica risorsa
• Vengono utilizzati dei marcatori per definire lo scope di
  una direttiva
• Esempi di direttive:
   –   <Directory>
   –   <DirectoryMatch>
   –   <Files>
   –   <FilesMatch>
   –   <Location>
   –   <LocationMatch>
   –   <VirtualHost>


 A.A. 2005/2006              Basi di Dati e Laboratorio          11




Direttive
• <Directory dirpath> … </Directory>
   – Specifica un insieme di direttive da applicare alla cartella indicata
     in dirpath e alle sottocartelle in essa contenute
         • E.g., <Directory “/var/www/site/unimi/quot;>
                    Allow from dico.unimi.it
                    Options Indexes
                 </Directory>
• <DirectoryMatch regexpr> … </ DirectoryMatch>
   – Specifica un insieme di direttive da applicare alle cartelle che
     soddisfano l’espressione regolare regexpr
         • E.g., <DirectoryMatch “^/www/[0-9]{3}quot;>
                    Order allow, deny
                    Allow from dico.unimi.it
                 </DirectoryMatch>


 A.A. 2005/2006              Basi di Dati e Laboratorio          12




                                                                             4
Direttive
• <Files filename> … </Files>
   – Specifica un insieme di direttive da applicare al file
     filename
• <FilesMatch regexpr> … </FilesMatch>
   – Specifica un insieme di direttive da applicare ai files
     che soddisfano l’espressione regolare regexpr
• <Location url> … </Location>
   – Specifica un insieme di direttive da applicare alle
     risorse specificate in url
• <LocationMatch regexpr> … </LocationMatch>
   – Specifica un insieme di direttive da applicare alle
     risorse che soddisfano l’espressione regolare regexpr


 A.A. 2005/2006           Basi di Dati e Laboratorio   13




Direttive
• <VirtualHost addr[:port]> … </ VirtualHost>
   – Configura un host-virtuale
         • E.g., <VirtualHost 192.168.0.7:8081>
                     ServerAdmin webmaster@dico.unimi.it
                     DocumentRoot “C:/docs”
                     ServerName webdico:8081
                  </VirtualHost>




 A.A. 2005/2006           Basi di Dati e Laboratorio   14




Variabili d’ambiente
• Sono utilizzate dal server per registrare
  informazioni e per condividerle con altre
  applicazioni (ad esempio con applicazioni CGI)
• Le principali direttive per manipolare le variabili
  d’ambiente sono:
   –   BrowserMatch
   –   PassEnv
   –   RewriteRule
   –   SetEnv
   –   SetEnvIf
   –   UnsetEnv


 A.A. 2005/2006           Basi di Dati e Laboratorio   15




                                                               5
BrowserMatch

• BrowserMatch riconosce il client che
  effettua la chiamata sulla base del campo
  user-agent della richiesta HTTP
   – BrowserMatch “Mozilla/2 nokeepalive”
   – BrowserMatch “RealPlayer 4.0”
                            force-response-1.0




 A.A. 2005/2006   Basi di Dati e Laboratorio   16




PassEnv, SetEnv, e UnSetEnv

• PassEnv passa ad uno script CGI il valore
  di una delle variabili d’ambiente
   – PassEnv SPECIAL_PATH
• SetEnv definisce il valore di assegnazione
  di una variabile d’ambiente
   – SetEnv SPECIAL_PATH /bin
• UnSetEnv rimuove una variabile di
  ambiente:
   – UnSetEnv SPECIAL_PATH

 A.A. 2005/2006   Basi di Dati e Laboratorio   17




SetEnvIf

• SetEnvIf definisce il valore di una variabile
  sulla base degli attributi della richiesta
  HTTP:
   – Remote_Host
   – Remote_Addr
   – Server_Addr
   – Request_Method
   – Request_Protocol
   – Request_URI

 A.A. 2005/2006   Basi di Dati e Laboratorio   18




                                                    6
Esempio
•    SetEnvIf Request_URI ^/manual/(de|en|it)/ prefLang=$1
•    SetEnvIf Request_URI quot;.gif$quot; object_is_image=gif
•    SetEnvIf Request_URI quot;.jpg$quot; object_is_image=jpg
•    SetEnvIf Request_URI quot;.xbm$quot; object_is_image=xbm


• Il valore delle variabili prefLang e
  object_is_image viene definito sulla base
  della risorsa richiesta tramite HTTP



    A.A. 2005/2006     Basi di Dati e Laboratorio   19




Controllo dell’accesso

• L’accesso alle risorse viene definito sulla
  base di tre principali criteri:
      – Authorization
      – Authentication
      – Access control




    A.A. 2005/2006     Basi di Dati e Laboratorio   20




Criteri di accesso

• Authentication
      – Verifica dell’identità del richiedente
• Authorization
      – Verifica dei permessi associati ad un utente
        autenticato
• Access control
      – Definizione di criteri di accesso generici (ad
        esempio sulla base dell’IP di provenienza
        della richiesta)


    A.A. 2005/2006     Basi di Dati e Laboratorio   21




                                                             7
Autenticazione

• Meccanismo base per l’autenticazione:
   – Il server riceve una richiesta per una risorsa
     protetta
   – Invia una risposta con header 401
     (Authentication required)
   – Il browser si occupa di chiedere all’utente i dati
     di autentifica e di memorizzarli per le
     successive transazioni




 A.A. 2005/2006         Basi di Dati e Laboratorio        22




Protezione delle risorse

• Per creare un semplice meccanismo di
  protezione delle risorse occorre:
   – Creare un file contenente una password
   – Definire una configurazione che utilizzi la
     password definita




 A.A. 2005/2006         Basi di Dati e Laboratorio        23




Creazione di una password
• htpasswd -c /percorso_accessibile_ad_apache/file username


• La password viene crittata e associata ad
  uno o più utenti attraverso una direttiva
• La direttiva specifica la directory o la
  risorsa a cui si applica la restrizione
  d’accesso




 A.A. 2005/2006         Basi di Dati e Laboratorio        24




                                                               8
Direttiva

• La direttiva (directory) che specifica
  l’accesso per una data cartella è composta
  dagli elementi seguenti:
      – AuthType - tipo di identificazione (basic)
      – AuthName - nome dell’autentificazione
      – AuthUserFile - locazione del file delle
        password
      – AuthGroupFile - file delle password di un
        gruppo
      – Require - caratteristiche richieste per
        l’autentificazione

    A.A. 2005/2006    Basi di Dati e Laboratorio   25




Esempio
•    AuthType Basic
•    AuthName ”Area ristrettaquot;
•    AuthUserFile /usr/…passwords
•    Require user tizio caio


• Per applicare un’autentifica ad un ramo del
  file system visibile al server Web senza
  modificarne la configurazione è possibile
  ricorrere al file .htaccess collocato nella
  directory protetta e contenente la direttiva

    A.A. 2005/2006    Basi di Dati e Laboratorio   26




Controllo dell’accesso

• Le direttive Allow e Deny sono utilizzate
  per vincolare l’accesso sulla base delle
  caratteristiche della richiesta
• Esempi:
      – deny from 159.149
      – deny from www.dominio.esempio
      – deny from .com
      – allow from 127.0.0.1
      – allow from islab.dico.unimi.it
      – allow from unimi.it

    A.A. 2005/2006    Basi di Dati e Laboratorio   27




                                                        9
Combinare le direttive

• L’istruzione order permette di definire un
  ordine di precedenza nell’esaudire le
  direttive specificate
• Esempio:
    – Order Deny,Allow
      Deny from all
      Allow from 127.0.0.1
• Consente solo un accesso locale


 A.A. 2005/2006            Basi di Dati e Laboratorio         28




Completezza
• La direttiva satisfy permette di stabilire se tutte le restrizioni
  (all) o solo alcune (any) devono essere rispettate
• Esempio:
    –   <Directory /usr/local/apache/htdocs/commerce>
    –   AuthType Basic
    –   AuthName intranet
    –   AuthUserFile /www/passwd/users
    –   Require user customer
    –   Allow from internal.com
    –   Satisfy any
    –   </Directory>
• Alla cartellla commerce accedono gli utenti in possesso di
  password o quelli del dominio internal.com



 A.A. 2005/2006            Basi di Dati e Laboratorio         29




                                                                       10

Contenu connexe

Tendances

Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsApache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsFulvio Corno
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Kelyon Srl
 
Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Danilo Dominici
 
Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015Kelyon Srl
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazioneEnrico Pirozzi
 

Tendances (6)

Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsApache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
 
Apache HTTP Server
Apache HTTP ServerApache HTTP Server
Apache HTTP Server
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015
 
Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)
 
Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazione
 

Similaire à Laboratorio Di Basi Di Dati 08 Il Web Server Apache

Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Clientguestbe916c
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Serverguestbe916c
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Webguestbe916c
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansDavide Nardone
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksNicolò Carandini
 
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppCorso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppAndrea Picchi
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance ToolsAndrea Tosato
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked DataSynapta
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked DataDavide Allavena
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
Guida esame 70 687 configuring windows 8
Guida esame 70 687 configuring windows 8Guida esame 70 687 configuring windows 8
Guida esame 70 687 configuring windows 8Sebastiano Della Puppa
 

Similaire à Laboratorio Di Basi Di Dati 08 Il Web Server Apache (20)

Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Web
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with Netbeans
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
Net core base
Net core baseNet core base
Net core base
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework Benchmarks
 
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppCorso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked Data
 
Stack tecnologico Per Linked Data
Stack tecnologico Per Linked DataStack tecnologico Per Linked Data
Stack tecnologico Per Linked Data
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
Il testing con zend framework
Il testing con zend frameworkIl testing con zend framework
Il testing con zend framework
 
Il testing con zend framework
Il testing con zend frameworkIl testing con zend framework
Il testing con zend framework
 
Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9
 
Oai Data Adapter
Oai Data AdapterOai Data Adapter
Oai Data Adapter
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
Guida esame 70 687 configuring windows 8
Guida esame 70 687 configuring windows 8Guida esame 70 687 configuring windows 8
Guida esame 70 687 configuring windows 8
 

Plus de guestbe916c

Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controlloguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M Lguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q Lguestbe916c
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioniguestbe916c
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logicaguestbe916c
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Datiguestbe916c
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logicaguestbe916c
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazioneguestbe916c
 

Plus de guestbe916c (20)

Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Algebra
AlgebraAlgebra
Algebra
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q L
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
 
S Q L
S Q LS Q L
S Q L
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logica
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Dati
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazione
 

Laboratorio Di Basi Di Dati 08 Il Web Server Apache

  • 1. Corso di Basi di Dati e Laboratorio Apache Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Apache • Server Web open source • Il progetto ha origine nel 1995 • Apache ha un’architettura modulare e altamente configurabile • http://www.apache.org A.A. 2005/2006 Basi di Dati e Laboratorio 2 Diffusione sul mercato Dicembre 2005 - http://news.netcraft.com 69.97 % (52.025.380) 20.92 % (15.557.786) 2.53 % (1.881.861) 0.79 % (577.384 ) APACHE MICROSOFT JAVA ZEUS A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  • 2. Architettura • Componenti principali – Inizializzazione e configurazione – Parser delle richieste HTTP – Allocazione della memoria • Moduli – Autentificazione e sicurezza – Redirezione – Estensioni (supporto ai linguaggi di scripting) A.A. 2005/2006 Basi di Dati e Laboratorio 4 Installazione • In breve… –$ ./configure --prefix=PREFIX –$ make –$ make install –$ PREFIX/bin/apachectl start • Due opzioni importanti: – Perl 5 è richiesto per l’esecuzione di diversi script (apxs). È consigliata l’opzione --with-perl – DSO per il supporto al caricamento dinamico dei moduli A.A. 2005/2006 Basi di Dati e Laboratorio 5 Avvio del server • Il server viene avviato sulla porta specificata (assieme alle altre opzioni di configurazione) nel file httpd.conf • In ambiente UNIX Apache può essere avviato tramite inetd oppure: – /usr/local/apache/bin/httpd, oppure attraverso lo script apachectl • In ambiente Windows l’avvio è analogo a quello degli altri servizi NT A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  • 3. Configurazione • Avviene editando il file httpd.conf • Le opzioni di configurazione sono definite tramite direttive • Principali elementi della configurazione: – Variabili d’ambiente – Gestione degli accessi – Comportamento a seguito di specifiche richieste A.A. 2005/2006 Basi di Dati e Laboratorio 7 DSO e moduli • DSO (Dynamic Shared Objects) – Consentono il caricamento dei moduli di Apache a run-time • Sono supportati tramite il modulo mod_so.c che deve essere compilato staticamente con Apache • Il modulo mod_so consente l’uso della direttiva LoadModule nel file di configurazione per il caricamento dei moduli richiesti A.A. 2005/2006 Basi di Dati e Laboratorio 8 Apxs • La gestione dei moduli è stata semplificata attraverso l’utility apxs che permette di generare i DSO • Vantaggi di DSO: – Flessibilità – Estendibilità (ad esempio l’aggiunta del modulo di supporto per PHP) • Svantaggi: – Prestazioni inferiori rispetto alla compilazione statica dei moduli A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  • 4. Moduli Direttive per la gestione dei moduli: • LoadModule nomemodulo nomefile – Carica il modulo nomemodulo istituendo un link con il nomefile ad esso associato • E.g., LoadModule dir_module modules/mod_dir.so • <IfModule [!]nomemodulo> … </IfModule> – Esegue un’insieme di direttive solo nel caso che nomemodulo sia caricato (o non caricato) • E.g., <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule> A.A. 2005/2006 Basi di Dati e Laboratorio 10 Direttive • Le direttive istruiscono Apache sulle azioni da intraprendere in risposta ad una richiesta per una specifica risorsa • Vengono utilizzati dei marcatori per definire lo scope di una direttiva • Esempi di direttive: – <Directory> – <DirectoryMatch> – <Files> – <FilesMatch> – <Location> – <LocationMatch> – <VirtualHost> A.A. 2005/2006 Basi di Dati e Laboratorio 11 Direttive • <Directory dirpath> … </Directory> – Specifica un insieme di direttive da applicare alla cartella indicata in dirpath e alle sottocartelle in essa contenute • E.g., <Directory “/var/www/site/unimi/quot;> Allow from dico.unimi.it Options Indexes </Directory> • <DirectoryMatch regexpr> … </ DirectoryMatch> – Specifica un insieme di direttive da applicare alle cartelle che soddisfano l’espressione regolare regexpr • E.g., <DirectoryMatch “^/www/[0-9]{3}quot;> Order allow, deny Allow from dico.unimi.it </DirectoryMatch> A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  • 5. Direttive • <Files filename> … </Files> – Specifica un insieme di direttive da applicare al file filename • <FilesMatch regexpr> … </FilesMatch> – Specifica un insieme di direttive da applicare ai files che soddisfano l’espressione regolare regexpr • <Location url> … </Location> – Specifica un insieme di direttive da applicare alle risorse specificate in url • <LocationMatch regexpr> … </LocationMatch> – Specifica un insieme di direttive da applicare alle risorse che soddisfano l’espressione regolare regexpr A.A. 2005/2006 Basi di Dati e Laboratorio 13 Direttive • <VirtualHost addr[:port]> … </ VirtualHost> – Configura un host-virtuale • E.g., <VirtualHost 192.168.0.7:8081> ServerAdmin webmaster@dico.unimi.it DocumentRoot “C:/docs” ServerName webdico:8081 </VirtualHost> A.A. 2005/2006 Basi di Dati e Laboratorio 14 Variabili d’ambiente • Sono utilizzate dal server per registrare informazioni e per condividerle con altre applicazioni (ad esempio con applicazioni CGI) • Le principali direttive per manipolare le variabili d’ambiente sono: – BrowserMatch – PassEnv – RewriteRule – SetEnv – SetEnvIf – UnsetEnv A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  • 6. BrowserMatch • BrowserMatch riconosce il client che effettua la chiamata sulla base del campo user-agent della richiesta HTTP – BrowserMatch “Mozilla/2 nokeepalive” – BrowserMatch “RealPlayer 4.0” force-response-1.0 A.A. 2005/2006 Basi di Dati e Laboratorio 16 PassEnv, SetEnv, e UnSetEnv • PassEnv passa ad uno script CGI il valore di una delle variabili d’ambiente – PassEnv SPECIAL_PATH • SetEnv definisce il valore di assegnazione di una variabile d’ambiente – SetEnv SPECIAL_PATH /bin • UnSetEnv rimuove una variabile di ambiente: – UnSetEnv SPECIAL_PATH A.A. 2005/2006 Basi di Dati e Laboratorio 17 SetEnvIf • SetEnvIf definisce il valore di una variabile sulla base degli attributi della richiesta HTTP: – Remote_Host – Remote_Addr – Server_Addr – Request_Method – Request_Protocol – Request_URI A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  • 7. Esempio • SetEnvIf Request_URI ^/manual/(de|en|it)/ prefLang=$1 • SetEnvIf Request_URI quot;.gif$quot; object_is_image=gif • SetEnvIf Request_URI quot;.jpg$quot; object_is_image=jpg • SetEnvIf Request_URI quot;.xbm$quot; object_is_image=xbm • Il valore delle variabili prefLang e object_is_image viene definito sulla base della risorsa richiesta tramite HTTP A.A. 2005/2006 Basi di Dati e Laboratorio 19 Controllo dell’accesso • L’accesso alle risorse viene definito sulla base di tre principali criteri: – Authorization – Authentication – Access control A.A. 2005/2006 Basi di Dati e Laboratorio 20 Criteri di accesso • Authentication – Verifica dell’identità del richiedente • Authorization – Verifica dei permessi associati ad un utente autenticato • Access control – Definizione di criteri di accesso generici (ad esempio sulla base dell’IP di provenienza della richiesta) A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  • 8. Autenticazione • Meccanismo base per l’autenticazione: – Il server riceve una richiesta per una risorsa protetta – Invia una risposta con header 401 (Authentication required) – Il browser si occupa di chiedere all’utente i dati di autentifica e di memorizzarli per le successive transazioni A.A. 2005/2006 Basi di Dati e Laboratorio 22 Protezione delle risorse • Per creare un semplice meccanismo di protezione delle risorse occorre: – Creare un file contenente una password – Definire una configurazione che utilizzi la password definita A.A. 2005/2006 Basi di Dati e Laboratorio 23 Creazione di una password • htpasswd -c /percorso_accessibile_ad_apache/file username • La password viene crittata e associata ad uno o più utenti attraverso una direttiva • La direttiva specifica la directory o la risorsa a cui si applica la restrizione d’accesso A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  • 9. Direttiva • La direttiva (directory) che specifica l’accesso per una data cartella è composta dagli elementi seguenti: – AuthType - tipo di identificazione (basic) – AuthName - nome dell’autentificazione – AuthUserFile - locazione del file delle password – AuthGroupFile - file delle password di un gruppo – Require - caratteristiche richieste per l’autentificazione A.A. 2005/2006 Basi di Dati e Laboratorio 25 Esempio • AuthType Basic • AuthName ”Area ristrettaquot; • AuthUserFile /usr/…passwords • Require user tizio caio • Per applicare un’autentifica ad un ramo del file system visibile al server Web senza modificarne la configurazione è possibile ricorrere al file .htaccess collocato nella directory protetta e contenente la direttiva A.A. 2005/2006 Basi di Dati e Laboratorio 26 Controllo dell’accesso • Le direttive Allow e Deny sono utilizzate per vincolare l’accesso sulla base delle caratteristiche della richiesta • Esempi: – deny from 159.149 – deny from www.dominio.esempio – deny from .com – allow from 127.0.0.1 – allow from islab.dico.unimi.it – allow from unimi.it A.A. 2005/2006 Basi di Dati e Laboratorio 27 9
  • 10. Combinare le direttive • L’istruzione order permette di definire un ordine di precedenza nell’esaudire le direttive specificate • Esempio: – Order Deny,Allow Deny from all Allow from 127.0.0.1 • Consente solo un accesso locale A.A. 2005/2006 Basi di Dati e Laboratorio 28 Completezza • La direttiva satisfy permette di stabilire se tutte le restrizioni (all) o solo alcune (any) devono essere rispettate • Esempio: – <Directory /usr/local/apache/htdocs/commerce> – AuthType Basic – AuthName intranet – AuthUserFile /www/passwd/users – Require user customer – Allow from internal.com – Satisfy any – </Directory> • Alla cartellla commerce accedono gli utenti in possesso di password o quelli del dominio internal.com A.A. 2005/2006 Basi di Dati e Laboratorio 29 10