Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Intellicore Tech Talk 10 - Apache Web Server Internals
Sujet : Apache Web Server Internals
Description : Le Serveur Web Apache est devenu le logiciel le plus utilisé au mondepour servir les pages internet et intranet. Son utilisation très variée, du petit site familial au site d’entreprise avec systèmes de balance de charge et architecture objet, fait que sa structure est peu connue ainsi que ses différentes configurations.
Conférenciers : Neil Armstrong, élève ingénieur chez Neotion et futur ingénieur Polytech’Nice-Sophia, spécialisé en Logiciels Embarqués et technologies Open-Source.
Date : 10 juin 2008
Lieu : Amphithéâtre Edison, CICA, Sophia Antipolis, FRANCE
621 views | comments | 0 favorites | 7 downloads | 0 embeds (Stats)
More Info
This slideshow is Public
Total Views: 621 on Slideshare: 621 from embeds: 0
Slideshow Transcript
- Slide 1: Apache Web Server
Internals
Structure et Configuration
Neil Armstrong
10 juin 2008
- Slide 2: Intellicore Tech Talks
• Des conférences pour partager son savoir
• Le mardi au CICA Sophia Antipolis
• http://techtalks.intellicore.net
• Aujourd’hui la 10ème conférence
• Vous voulez participer ?
• techtalks (at) intellicore.net
- Slide 3: Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia
10 juin 2008 - CICA Sophia Antipolis
APACHE WEB SERVER INTERNALS
Structure et Configuration
- Slide 4: APACHE ?
FTP, Gopher, POP/SMTP
NNTP
Tim Berners-Lee
Projet ATLAS
L’histoire commence en 1990 au CERN Détecteur de Particules
Invention de l’HTML et du protocole HTTP HyperText
Transfert
Protocol
Premiers Serveurs HTTP dont le : NCSA httpd
National Center for
Supercomputing
Formation du groupe de développeurs Apache Applications
Mais pourquoi ce nom ?
- Slide 5: APACHE ?
A PAtCHy Server
Proche de la prononciation de Apache en anglais
Sources basées sur un ensemble de PATCHs
Aujourd’hui la base du NCSA httpd a disparu des
sources
Sauf dans la configuration
- Slide 6: PART DE MARCHÉ
Dés la première version, un succès
Aujourd’hui, sert 49,41% des sites actifs
IIS de Microsoft : 34,37%
Google : 9,37% avec son serveur interne
les autres serveurs se partagent 6,75% des sites
- Slide 7: PARTS DE MARCHÉ
34000000
33,5M
Apache
23,3M
17000000
Microsoft IIS
Google 6,4M
Autres
0
0 00 0 01 0 02 0 03 0 04 0 05 0 06 0 07 0 08
2 2 2 2 2 2 2 2 2
- Slide 8: APACHE
WEB
SERVER
Son fonctionnement ?
- Slide 9: EVOLUTION INTERNE
Basé sur NCSA httpd inetd
Simple mais avec un processus unique
Sortie de Apache 1.0 en 1995 HTTP1.1
Suite a une profonde refonte depuis NCSA httpd
Sortie de Apache 2.0 en 2002
IPV6
Sortie de Apache 2.2 en 2005
- Slide 10: ORGANISATION
INTERNE
Un coeur et des modules
Requête
Module
Apache Module
Core
Réponse
Module
- Slide 11: MODULARITÉ
Le traitement d’une requête est découpé en une série
d’étapes traitées par les différents modules
URI Fichier
Authentification
Permissions
Type du fichier
Envoi vers un module si besoin
Réponse au client
Stockage des erreurs éventuelles
- Slide 12: GESTION SIMPLE DE
RESSOURCES
Une corbeille de ressource est gérée dynamiquement
Gestion mémoire simplifiée
Efficacité de gestion
Lors d’une requête
une ressource est allouée
suivra les étapes pendant la vie de la requête
- Slide 13: RÉPARTITION DU
TRAVAIL
Répartition du travail entre plusieurs tâches
Gestion de la politique par des modules spécifiques
MPM : Multi-processing Module
3 politiques possibles actuellement :
Prefork : Multi-Processus UNIX
Worker : Multi-Thread (Unix, Windows, ...)
Event : Pool de Processus et Threads, expérimental
- Slide 14: TRANSIT DES DONNÉES
Les données de la requête sont stockées dans des
seau “Bucket”, l’ensemble est une “Brigade” équipe
Transitent entre les modules
Ils peuvent ajouter des informations (En-têtes, ...)
Ils peuvent en modifier (redirection, erreur, ...)
Une API offre aux modules des méthodes flexibles et
puissantes pour travailler avec les données
- Slide 15: MODULES DE FILTRES
Modules de filtres
Utilisés pour faire des actions sur les données
Entrée : Décompresser, Décoder, ...
Sortie : Compresser, Coder, ...
- Slide 16: MODULES DE FILTRES
Modules de filtres
Utilisés pour faire des actions sur les données
Entrée : Décompresser, Décoder, ...
Sortie : Compresser, Coder, ...
- Slide 17: APACHE
WEB
SERVER
Qui s’en sert ?
Comment ?
- Slide 18: SITE PERSO
Site très simple
1 adresse = 1 site internet
Pas de scripts dynamiques (php, ...)
1 seul hôte virtuel -> “catch-all”
Typique des installations par défaut sous GNU/
Linux et Mac OS X
- Slide 19: HÉBERGEMENT
Site internet dynamique avec sous-domaines
1 adresse IP = plusieurs nom de domaines et sites
Utilisation d’un certain nombre d’hôtes virtuels
1 par sous-domaine (produits.mon-domaines.fr, ...)
1 “catch-all” généralement www.mon-domaine.fr
Typique d’un site d’entreprise ou d’hébergement web
- Slide 20: INFRASTRUCTURE WEB
Gros site d’entreprise dynamique
Plusieurs adresses IP, plusieurs sous-domaines
Utilisation de communications SSL
Beaucoup d’hôtes virtuels
Grosse infrastructure Java EE
Plusieurs serveurs pour redondance
- Slide 21: SOLUTIONS
Gestion d’hôtes virtuels
Gestion de plusieurs sous-domaines sur le même
serveur
Gestion de “proxy”
Renvoi de la requête vers un autre serveur
Utilisé pour de la balance de charge
Renvoi vers un micro-serveur web embarqué en
Rails, Python, ...
- Slide 22: BALANCE DE CHARGE
Utilise le module mod_proxy_balancer
2 algorithmes
Request Counting
Chaque serveur => même quantité de clients
Weighted Traffic Counting.
Chaque serveur => même quantité de données à
traiter
- Slide 23: APACHE
WEB
SERVER
Comment une requête est
traitée ?
Comment configurer ?
- Slide 24: MODULES UTILES
Interpréteurs
php, ruby, perl, python, ...
CGI : Common Gateway Interface
Texte
Server Sides Includes
URL Rewriting
Authentification (plain, ldap, mysql, ...)
Et beaucoup d’autres...
- Slide 25: EXEMPLE SIMPLE
1 site internet en virtual host
monsite.mondomaine.com
La résolution du nom donne une adresse IP
L’adresse rentrée sur le navigateur
http://monsite.mondomaine.com/blog/index
- Slide 26: REQUÊTE HTTP
Requête HTTP 1.1
1.0 obsolètes -> hôtes virtuels non pris en charge
GET /blog/index HTTP/1.1
Host : monsite.mondomaine.com
User-Agent : Mozilla/5.0 ...
Autres en-têtes facultatives (Accept, Cookies, ...)
- Slide 27: TRAITEMENT
Traitement du Host
monsite.mondomaine.com
Transformation de /blog/index
Ex: /var/www/phpblog/index.php?p=index
Type MIME : application/x-httpd-php
Lancement de PHP
Envoi de la réponse au client
- Slide 28: RÉPONSE HTTP
Simple code d’erreur suivi d’en-têtes
200 OK
404, ...
Type de contenu : Content-Type
Taille du contenu
Langage, Date de modification, Cookies, ....
- Slide 29: CONFIGURATION
Configuration très modulable
Du simple fichier unique httpd.conf
A la structure complexe de répertoire
Chargement dynamique de modules
Syntaxe simple et puissante
Documentation claire
- Slide 30: EXEMPLE STRUCTURE
- Slide 31: EXEMPLE STRUCTURE
/etc/apache2/
- Slide 32: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
- Slide 33: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/
- Slide 34: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/
sites-enabled/
- Slide 35: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/
sites-enabled/
mods-available/
- Slide 36: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/
sites-enabled/
mods-available/
mods-enabled/
- Slide 37: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/ default
sites-enabled/000-default
mods-available/
mods-enabled/
- Slide 38: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/ default
sites-enabled/000-default
mod_php5.load
mods-available/ mod_php5.conf
mod_php5.load
mods-enabled/ mod_php5.conf
- Slide 39: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/ default
sites-enabled/000-default
mod_php5.load
mods-available/ mod_php5.conf
mod_php5.load
mods-enabled/ mod_php5.conf
- Slide 40: EXEMPLE STRUCTURE
/etc/apache2/
httpd.conf
sites-available/ default
sites-enabled/000-default
mod_php5.load
mods-available/ mod_php5.conf
mod_php5.load
mods-enabled/ mod_php5.conf
- Slide 41: HTTPD.CONF
Configurations classiques
Nom du serveur
Interface d’écoute
E-Mail de l’administrateur
Types MIME
Comportements par défaut
- Slide 42: 000-DEFAULT
Définition du “catch-all”
NameVirtualHost *:80
Balise <VirtualHost *:80>
DocumentRoot /var/www/monsite
ServerName monsite.mondomaine.com
ServerAlias www.monsite.com monsite.com
- Slide 43: MODULES
Séparation du chargement et de la configuration
Chargement avec LoadModule
LoadModule php5_module /lib/apache2/libphp5.so
Configuration facultative
Exemple PHP
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
- Slide 44: CONFIGURATION
CONDITIONNELLE
Permet d’exécuter des parties de configuration
Si un module est chargé
Si une variable est définie
Associé a l’inclusion de fichiers
Configuration puissante !
- Slide 45: Des questions ?
MERCI DE VOTRE
PARTICIPATION
N’oubliez pas :
http://techtalks.intellicore.net
- Slide 46: WWW .INTELLICORE.NET
Tous droits réservés Intellicore Services © 2008