Sie sind auf Seite 1von 46

Apache Web Server

Internals
Structure et Configuration

Neil Armstrong
10 juin 2008
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@intellicore.net
Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia
10 juin 2008 - CICA Sophia Antipolis

APACHE WEB SERVER INTERNALS


Structure et Configuration
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 ?


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


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


PARTS DE MARCHÉ
34000000
33,5M

Apache

23,3M
17000000

Microsoft IIS

Google 6,4M
Autres
0
0 0 0 1 02 03 0 4 0 5 0 6 0 7 0 8
20 20 20 20 20 20 20 20 20
APACHE
WEB
SERVER
Son fonctionnement ?
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


ORGANISATION
INTERNE

Un coeur et des modules

Requête
Module

Apache Module
Core
Réponse
Module
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
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


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


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
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, ...


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, ...


APACHE
WEB
SERVER
Qui s’en sert ?
Comment ?
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
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


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


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, ...
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
APACHE
WEB
SERVER
Comment une requête est
traitée ?
Comment configurer ?
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...
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
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, ...)


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


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, ....


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
EXEMPLE STRUCTURE
EXEMPLE STRUCTURE

/etc/apache2/
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/
EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/ default

sites-enabled/000-default

mods-available/

mods-enabled/
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
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
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
HTTPD.CONF

Configurations classiques

Nom du serveur

Interface d’écoute

E-Mail de l’administrateur

Types MIME

Comportements par défaut


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


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


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 !
Des questions ?

MERCI DE VOTRE
PARTICIPATION
N’oubliez pas :
http://techtalks.intellicore.net
WWW .INTELLICORE.NET
Tous droits réservés Intellicore Services © 2008

Das könnte Ihnen auch gefallen