Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
Il TechAdvisor Mirko Conte spiega come progettare, installare e configurare MySQL Cluster, la versione di punta del database open source più utilizzato al mondo.
Durante la presentazione, Mirko ha condiviso numerose informazioni teoriche e pratiche per comprendere dove, come e quando utilizzare al meglio MySQL Cluster. In questa sessione ha trattato i seguenti punti:
- Valutare MySQL Cluster nel proprio progetto
- Esempi di architettura
- Requisiti hardware/network
- Sessione hands-on
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/progettare-installare-gestire-e-ottimizzare-mysql-cluster#progettare
Back to Basics, webinar 6: Messa in esercizioMongoDB
Questo è l'ultimo webinar della serie Back to Basics
che ti offrirà un'introduzione al database MongoDB. Questo webinar ti guiderà attraverso tutti i passaggi per l'implementazione della produzione.
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Architetture web - Linguaggi e standard - Web server, application server, dat...Fulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
Il TechAdvisor Mirko Conte spiega come progettare, installare e configurare MySQL Cluster, la versione di punta del database open source più utilizzato al mondo.
Durante la presentazione, Mirko ha condiviso numerose informazioni teoriche e pratiche per comprendere dove, come e quando utilizzare al meglio MySQL Cluster. In questa sessione ha trattato i seguenti punti:
- Valutare MySQL Cluster nel proprio progetto
- Esempi di architettura
- Requisiti hardware/network
- Sessione hands-on
Per saperne di più, scaricate le slide e guardate il video della presentazione del nostro TechAdvisor su http://www.par-tec.it/progettare-installare-gestire-e-ottimizzare-mysql-cluster#progettare
Back to Basics, webinar 6: Messa in esercizioMongoDB
Questo è l'ultimo webinar della serie Back to Basics
che ti offrirà un'introduzione al database MongoDB. Questo webinar ti guiderà attraverso tutti i passaggi per l'implementazione della produzione.
Deploy MongoDB su Infrastruttura Amazon Web ServicesStefano Dindo
Lo scopo della presentazione è quella di fornire una visione a 360 gradi su come realizzare un'architettura MongoDB su un'infrastruttura Cloud Amazon Web Services.
La presentazione è suddivisa in quattro aree:
- Introduzione di base su MongoDB
- Preview delle caratteristiche di MongoDB 3
- Come organizzare architetture Replica Set e Sharding di MongoDB in VPC Cloud di Amazon Web Services
- Introduzione alle logiche di Schema Design di MongoDB
Architetture web - Linguaggi e standard - Web server, application server, dat...Fulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSMorlini Gabriele
Esperienza di migrazione di un intero sistema informativo da VM a container, utilizzando Docker, Rancher e ZFS. Durante lo speech verrà mostrato come abbiamo ristrutturato il nostro sistema informativo aziendale affrontando tematiche di disaster recovery, monitoraggio e backup. Saranno illustrati i vantaggi ottenuti e le sfide che abbiamo dovuto affrontare durante la migrazione di Alfresco, Gitlab, Redmine, SemanticMediaWiki. Migrando a container abbiamo ottenuto backup online 24x7, la possibilità di creare ambienti on-demand per le migrazioni e l'indipendenza dal provider dell'infrastruttura.
DbUp è una libreria .NET che facilita il deploy delle modifiche allo schema del database di una applicazione. Tiene traccia degli scripts SQL che sono già stati applicati ed esegue gli script di modifica, necessari ad effettuare la migrazione del database.
Nat come esporre servizi https senza esporre l'applicazioneGiuliano Latini
Review degli strumenti a disposizione e loro contestualizzazione per erogare servizi tramite il protocollo HTTP reso sicuro (HTTPS) utilizzando il servizio Internet Let's Encripts e confronto tra gli approcci tecnologici applicabili a Apache, Nginx e Traefik.
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS Imola Informatica
Esperienza di migrazione di un intero sistema informativo da VM a container, utilizzando Docker, Rancher e ZFS. Durante lo speech verrà mostrato come abbiamo ristrutturato il nostro sistema informativo aziendale affrontando tematiche di disaster recovery, monitoraggio e backup. Saranno illustrati i vantaggi ottenuti e le sfide che abbiamo dovuto affrontare durante la migrazione di Alfresco, Gitlab, Redmine, SemanticMediaWiki. Migrando a container abbiamo ottenuto backup online 24x7, la possibilità di creare ambienti on-demand per le migrazioni e l'indipendenza dal provider dell'infrastruttura.
Proposta per un MSP (Managed Service Provider).
Zabbix, OcsInventory e GLPI: 3 pacchetti open source per offrire servizi di monitoring, hardware software inventory e IT asset management.
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Data Driven Innovation
La soluzione per il monitoraggio real time dei log applicativi di applicazioni distribuite come Spark, si basa su tecnologie open source presenti nella maggior parte delle distribuzioni Hadoop, quali Kafka, Flume e Solr. Ne sfrutta le capacità di gestione di grandi volumi di dati da fruire in tempo reale, per la gestione dei tracciamenti delle applicazioni Scala o Java, mediante l'integrazione con le librerie di log4j. Gli sviluppatori potranno utilizzare una dashbord di monitoraggio per aggregare e filtrare i logs prodotti dal loro codice.
Presentazione nell'ambito del corso di Sistemi Operativi Avanzati 14/15 della magistrale in Informatica dell'Università degli Studi di Salerno. Autori: Giovanni Grano & Gino Farisano
Vorrei scrivere un libro sul PHP e cerco chi possa aiutarmi nella correzione delle bozze e per la pubblicazione, l'idea e di metterci i seguenti contenuti. vorrei differenziarmi dai soliti libri italiani tutti uguali tra di loro e che manifestano un'orientamento spiccatamente accademico e poco pratico. Io vorrei fare esempi pratici che da solo comprendono quello che in altri libri trovi in capitoli di costrutti elementari e difficilmente utilizzati in quel modo nella pratica.
2. Premessa
• Il Web è basato su un'architettura client-server
• Un processo particolare (Web server) si occupa di
processare le richieste di risorse Web
• Le richieste sono veicolate attraverso il protocollo
HTTP (Hyper Text Transfer Protocol)
• Ci sono modi diversi di implementare un Web server
• Ci sono diversi Web server
2
3. Tre modalità di gestione richieste HTTP
Piattaforma
client
Browser
Richiesta Richiesta
http http Risposta
(1) Richiesta Risposta (i) http
Risposta http
http http
Processo (a) (c) processo
server (4) listener-dispatcher
(b)
(2) fork thread 1 (ii) (iv)
thread 2
helper 1
Processo thread 3
(iii) helper 2
figlio thread 4
helper 3
Metodo fork Metodo multithread Metodo helper
(aka worker) (aka prefork)
(3)
Piattaforma Apache 1.3.x
server Apache 2.x
3
4. Due parole su sicurezza e prestazioni
Processo
Thread
molti processi molti processi
un processo più thread un thread
molti thread per processo per processo
4
6. Apache: A patchy server
1994: public domain HTTP daemon (NCSA)
sviluppato da Rob McCool
al National Center for
Supercomputing Applications,
University of Illinois, Urbana-Champaign
Necessità di modifiche (patches)
Brian Behlendorf
Roy T. Fielding
Feb. 1995: un gruppo di
Rob Hartill
Webmaster David Robinson
si coordinano creando Cliff Skolnick
l’Apache Group Randy Terbush
Robert S. Thau
Andrew Wilson
with additional contributions
Eric Hagberg Frank Peters Nicolas Pioch
6
7. Software per server Web
<-WTH!!!
Fonte: GoDaddy.com
Netcraft Web Server Survey (http://www.netcraft.com/)
Server Web più diffusi: Apache, …, Microsoft Internet Information Server,
altri (GWS, SunONE, Zeus, iPlanet Web Server, …)
Sistemi e Servizi di Rete - LS 2004/2005 – Server Web 7
10. Apache 1.3
• Versione storica di enorme successo
• Ancora supportata
• Caratteristiche salienti:
– Approccio prefork per il servizio concorrente delle
richieste
– File di configurazione altamente configurabile
– Supporto per HTTP/1.1, Virtual host, ...
• Limiti principali
– Approccio prefork può limitare le prestazioni
– Scarsa portabilità fuori da contesti Unix (necessita
system call Unix)
10
11. Apache 2.0
• Major rewriting del codice
• Modifiche architetturali fondamentali
– Concetto di MPM (Multi Process Model)
• Benefici:
– Migliore portabilità su piattaforme non Unix
– Maggiori prestazioni e incremento della flessibilità
11
13. Apache 2.2
• Apache 2.2 è una minor version
– Le modifiche non sono a livello architetturale
• Riorganizzazione del file di configurazione
– Molte distribuzioni linux introducevano un layout alternativo
anche con apache 2.0 (es. Debian)
• Riorganizzazione dei moduli
– Alcuni moduli sono stati rinominati
– Alcuni moduli “sperimentali” ora sono standard
– Alcuni moduli sono stati riscritti e suddivisi
– Nuovi moduli/nuovi MPM
• Nuova API unificata per l'accesso ai DB
• Migliorie generali
– Supporto per file > 2GB 13
14. Nuovo file di configurazione
• Si passa da un file monolitico (httpd.conf) in una
gerarchia di file articolata
– I virtual hosts vengono configurati in un file separato
– Le configurazioni sui moduli sono separate dal file
centrale
• Obiettivi: Manutenzione più semplice
– Maggiore gestibilità delle configurazioni (es. se
abbiamo molti virtual hosts)
– Semplifica l'automazione della gestione del file di
configurazione
14
15. Riorganizzazione dei moduli
• Moduli rinominati:
– mod_imap → mod_imagemap
– mod_access → mod_authz_host
– mod_auth_ldap
• Moduli sperimentali divenuti stabili
– mod_cache e altri moduli simili (da usare con attenzione)
– mod_dumpio (dump all I/O)
• Moduli spezzati in sottoparti:
– mod_auth viene suddiviso in molti sottomoduli
– mod_proxy è esteso e spezzato in varie parti
• New entries:
– mod_dbd, mpm_event
15
16. Nuova API per accesso a DB
• Implementata mediante mod_dbd
• La nuova API offre un layer di connettività a DBMS
usabile da altri moduli
– Semplifica e toglie codice ridondante nei moduli
– Il modulo è sicuro, poiché tratta ogni untrusted input
come user data. Il problema è come viene utilizzato
da moduli terzi.
Per evitare SQL Injection meglio filtrare i dati in input
$untrusted =~ /([a-z]+)/; ← Teniamo i caratteri a-z
$trusted = $1;
16
18. Per gli impazienti
• download dei sorgenti da httpd.apache.org
– i sorgenti sono disponibili anche sul sito del corso
• Noi facciamo riferimento alla versione 2.2 di apache
$ tar -xzvf httpd-<versione>.tar.gz
$ cd httpd-<versione>
$ ./configure --prefix=</destination/path>
$ make
$ make install
18
19. Principali opzioni di configurazione
• Opzioni da passare allo script configure
– --prefix=<prefix>
– --with-mpm={beos|worker|prefork|mpm_os2}
– --enable-modules={...}
• Prefix è la directory dove verrà installato Apache
• MPM indica quale sistema MPM dovrà essere usato
per gestire le richieste concorrenti
• Enable modules indica quali moduli dovranno essere
abilitati (il default contiene I moduli più comunemente
utilizati)
19
20. Dopo aver installato apache
Albero di directory:
<prefix>
bin conf htdocs cgibin logs
20
22. Eseguibili di apache
• httpd: binario del server apache
• ab: apache benchmark, strumento per misurare le
prestazioni del Web server
– ab -c <parallelismo> -n <# richieste> <URL>
• apachectl: script per lanciare, fermare e controllare il
demone
– apachectl start
– apachectl stop
– apachectl restart
• htpasswd: serve per generare e modificare file di
autenticazione di apache
– htpasswd [-c] <file.passwd> <username>
22
25. File di configurazione
• File conf/httpd.conf
• 2 sezioni
– impostazioni globali
– impostazioni del server di default
• Presenza di file aggiuntivi nella directory extras
– Ogni aspetto specifico della configurazione non
richiede di modificare il file principale
– Configurazione alcune impostazioni di default
– Configurazioni specifiche per moduli (es. SSL)
– Configurazione MPM
– Configurazione del virtual hosting
25
26. Impostazioni globali
• ServerRoot
– top level directory per altri file di configurazione
• PidFile (facoltativo)
– usato da apachectl per riconoscere httpd
• Timeout (facoltativo)
• Parametri per connessioni persistenti (facoltativi)
– Keepalive (abilita o meno connessioni persistenti)
– MaxKeepAliveRequests (dopo un certo numero di
richieste forza la chiusura della connessione)
– KeepAliveTimeout (dopo un certo tempo forza la
chiusura della connessione)
26
27. Impostazioni globali
• Listen
– porta su cui ascolta il server
– valori tipici: 80 o 8080 per server “non di sistema”
• Nel nostro caso dovremo usare 8080... Perchè?
• LoadModule
– Carica moduli esterni che estendono le funzioni di
Apache (e.g., php)
• User, Group
– Utente non privilegiato usato da Apache
– Per motivi di sicurezza si abbandonano il prima
possibile i privilegi da superutente
27
28. Impostazioni del server di default
• ServerName (nome dell'host che ospita il server)
• DocumentRoot (directory htdocs)
• <Directory></Directory> (contenitore di settings)
• <Location><Location> (contenitore di settings)
– Options
Indexes (crea automaticamente indici)
Includes (Abilita ServerSide Includes)
FollowSymlinks, SymlinksIfOwnerMatch (Sicurezza symlink)
ExecCGI (abilita esecuzione di codice)
...
28
29. Configurazioni del Server di default
• Ancora dentro Directory o Location
– AllowOverride (uso di files .htaccess per cambiare
impostazioni)
– Allow, Deny (Access Control List su IP)
• Esempi
<Directory /> <Directory /[....]/htdocs>
Options FollowSymLinks Options FollowSymLinks
AllowOverride None AllowOverride None
Order deny,allow Order allow,deny
Deny from all Allow from all
</Directory> </Directory>
29
30. Configurazioni del Server di default
• Ancora dentro Directory o Location
– AllowOverride (uso di files .htaccess per cambiare
impostazioni)
– Allow, Deny (Access Control List su IP)
• Direttive per il logging
– ErrorLog (messaggi di errore)
– CustomLog (messaggi sulle richieste)
30
31. File con configurazioni extra
• Direttiva include
– Include conf/extra/httpd-mpm.conf
– Include conf/extra/httpd-vhosts.conf
– Include conf/extra/httpd-userdir.conf
• Il contenuto dei file inclusi è trattato esattamente
come se fosse nel file principale
• Esempio:
– Configurazione della user directory:
– UserDir (diectory http://www.sito.it/~nomeUtente/)
31
32. Impostazioni MPM
• Dipendono da modello prescelto
• prefork
– Identici parametri rispetto ad Apache 1.3
• Worker
– Usa thread multipli
32
33. MPM prefork
• Processo principale
• Processi aggiuntivi per servire le richieste
• Parametri
– StartServers (numero di processi da far partire)
– MinspareServers, MaxSpareServers (autoadatta il
numero di processi al carico, ciclo di isteresi)
– MaxClients (massimo parallelismo: evita il thrashing)
– MaxRequestPerChild (rejuvination: dopo un po' fa
ripartire il processo per evitare il rischio di memory
leak)
33
34. MPM worker
• Un processo principale
• Processi ausiliari con thread multipli
• Parametri
– ThreadsPerChild
– ServerLimit, ThreadLimit (massimo parallelismo: evita
il thrashing)
– StartServers, MinspareServers, MaxSpareServers,
(come modello prefork)
34
35. Piccoli accorgimenti utili
• La maggior parte delle volte si possono mantenere le
impostazioni di default
• Alcuni accorgimenti utili:
– Modificare la pagina 404 (in httpd.conf)
– Personalizzare l'autoindex (in httpd.conf e in
httpd-autoindex.conf)
– Impostare il livello del ServerTokens e il tipo di
ServerSignature (entrambi in httpd-default.conf)
35
36. Lanciare apache:
• Per lanciare apache dalla directory server root:
<ServerRoot>$ bin/apachectl start
• Verificare l'apertura della porta:
$ netstat -ntlp | grep 8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::8080 :::* LISTEN 28526/httpd
36
39. Ciclo di vita di una richiesta
REQUEST
• Gestione della
richiesta divisa in fasi Wait Post-Re ad-Re que st
successive URI Translation
• Ogni fase può essere Cle anup He ade r Parsing
ridefinita da un
module che estende
Acce ss Control
apache Authe ntication
Authorization
Logging
MIME Type Che cking
Fixup
RESPONSE
Docume nto 39
40. Ciclo delle richieste
• Post-Read-Request
– vengono estratti i valori dei campi principali presenti nella richiesta
HTTP e vengono inizializzate le strutture dati che verranno utilizzate
successivamente dai moduli che implementano le varie fasi di
gestione
• URI Translation
– L’URI richiesto può riferirsi ad un file fisico, ad una risorsa dinamica
prodotta da uno script esterno, oppure ad un documento generato
da un modulo interno. Il server deve sapere come individuare il
documento, prima di poter effettuare decisioni successive: è
necessaria la conversione da URL a risorsa presente sul server.
– Le direttive standard di Apache Alias, ScriptAlias e DocumentRoot
permettono ad esempio di tradurre l’URI nel nome di un file presente
nell’albero dei documenti. Moduli esterni come il mod_rewrite
possono assumere il controllo di questa fase ed effettuare traduzioni
più sofisticate.
40
41. Ciclo delle richieste
• Header Parsing
– Analisi dell’header della richiesta HTTP, al fine di estrarre
informazioni utili sul client
• Access control
– Identificazione della locazione di provenienza della richiesta
(indirizzo IP)
• Authentication
– Identificazione del cliente che ha effettuato la richiesta
• Authorization
– Si stabilisce se il cliente possiede i diritti di accesso per il
documento richiesto
• Mime type checking
– Individuazione del tipo MIME del documento richiesto. Il server deve
sapere il tipo della modalità di elaborazione richiesta (prelievo file da
disco, generazione dinamica di un documento) prima di poter
preparare la risposta. Noto il tipo del file, Apache individua il gestore
opportuno per la fase di risposta.
41
42. Ciclo delle richieste
• Fixup
– Fase introdotta per permettere l’esecuzione di un qualunque tipo di
operazione prima dell’invio della risposta.
• Response
– Le informazioni riguardanti il documento vengono passate al gestore
opportuno (content handler), che si occupa di costruire l’header
della risposta HTTP e di spedirlo al client. Successivamente,
creazione del contenuto del documento (ad es., letto dal disco) ed
invio al client. In caso di errore, il gestore invia un codice di errore
opportuno al server, che lo notifica al client.
• Logging
– L’esito delle operazioni effettuate viene scritto su file. Apache
fornisce un supporto per il logging degli accessi e degli errori, che
può essere modificato oppure esteso.
• Cleanup
– Operazioni di chiusura, con cui i moduli possono deallocare le
risorse utilizzate (ad es., liberare memoria principale, chiudere file).
42
44. Il logging
• I logfile permettono di monitorare gli accessi ad un server
Web
– Le informazioni che possono essere memorizzate nel logfile
sono quelle che viaggiano all’interno dei messaggi di
richiesta e risposta che il server scambia con il client usato
dagli utenti
– Generalmente i server Web permettono di definire quali
campi dei messaggi devono essere memorizzati generando
così dei logfile “custom” in modo da soddisfare al meglio le
necessità dell’amministratore del sito Web
44
45. Dati estraibili da un log file
• Orari di maggiore traffico
• Tipologia degli utenti (browser utilizzato,
provenienza geografica)
• Pagine più popolari
• Quali siti fanno riferimento al proprio
• Attenzione: la presenza di proxy intermedi tra client
e server Web può falsare i risultati
45
46. Utilità dei log file
• Monitorare lo stato del server
• Capacity planning
• Billing
• Attack detection
46
48. Configurazione di log
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog "logs/access_log" common
Significato dei campi:
• %h remote host
• %l remote log name (ottenuto mediante identd)
• %u remote user
• %t time of request
• "%r" prima linea della richiesta
• %>s stato della richiesta (response code)
• %b domensione della risposta in byte
• "%{Referer}i" header “referer” nella richiesta
• "%{User-Agent}i" header “user agent” nella richiesta
48