Intellicore Tech Talk 10 - Apache Web Server Internals

46
Apache Web Server Internals Structure et Configuration Neil Armstrong 10 juin 2008

description

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

Transcript of Intellicore Tech Talk 10 - Apache Web Server Internals

Page 1: Intellicore Tech Talk 10 - Apache Web Server Internals

Apache Web Server Internals

Structure et Configuration

Neil Armstrong10 juin 2008

Page 2: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 3: Intellicore Tech Talk 10 - Apache Web Server Internals

APACHE WEB SERVER INTERNALSStructure et Configuration

Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia

10 juin 2008 - CICA Sophia Antipolis

Page 4: Intellicore Tech Talk 10 - Apache Web Server Internals

APACHE ?

L’histoire commence en 1990 au CERN

Invention de l’HTML et du protocole HTTP

Premiers Serveurs HTTP dont le : NCSA httpd

Formation du groupe de développeurs Apache

Mais pourquoi ce nom ?

Tim Berners-LeeProjet ATLASDétecteur de Particules

FTP, Gopher, POP/SMTPNNTP

HyperText Transfert Protocol

National Center for Supercomputing Applications

Page 5: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 6: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 7: Intellicore Tech Talk 10 - Apache Web Server Internals

PARTS DE MARCHÉ

Apache

Microsoft IIS

GoogleAutres

34000000

17000000

0

2000

2001

2002

2003

2004

2005

2006

2007

2008

33,5M

23,3M

6,4M

Page 8: Intellicore Tech Talk 10 - Apache Web Server Internals

APACHE WEB

SERVERSon fonctionnement ?

Page 9: Intellicore Tech Talk 10 - Apache Web Server Internals

EVOLUTION INTERNE

Basé sur NCSA httpd

Simple mais avec un processus unique

Sortie de Apache 1.0 en 1995

Suite a une profonde refonte depuis NCSA httpd

Sortie de Apache 2.0 en 2002

Sortie de Apache 2.2 en 2005IPV6

HTTP1.1

inetd

Page 10: Intellicore Tech Talk 10 - Apache Web Server Internals

ORGANISATION INTERNE

Un coeur et des modules

ApacheCore

Module

Module

Module

Requête

Réponse

Page 11: Intellicore Tech Talk 10 - Apache Web Server Internals

MODULARITÉ

Le traitement d’une requête est découpé en une série d’étapes traitées par les différents modules

URI FichierAuthentification

Permissions Type du fichier

Envoi vers un module si besoin Réponse au client

Stockage des erreurs éventuelles

Page 12: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 13: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 14: Intellicore Tech Talk 10 - Apache Web Server Internals

TRANSIT DES DONNÉES

Les données de la requête sont stockées dans des “Bucket”, l’ensemble est une “Brigade”

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

seau équipe

Page 15: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 16: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 17: Intellicore Tech Talk 10 - Apache Web Server Internals

APACHE WEB

SERVERQui s’en sert ?

Comment ?

Page 18: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 19: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 20: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 21: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 22: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 23: Intellicore Tech Talk 10 - Apache Web Server Internals

APACHE WEB

SERVERComment une requête est

traitée ?Comment configurer ?

Page 24: Intellicore Tech Talk 10 - Apache Web Server Internals

MODULES UTILESInterpréteurs

php, ruby, perl, python, ...

CGI : Common Gateway Interface

Server Sides Includes

URL Rewriting

Authentification (plain, ldap, mysql, ...)

Et beaucoup d’autres...

Texte

Page 25: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 26: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 27: Intellicore Tech Talk 10 - Apache Web Server Internals

TRAITEMENTTraitement 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

Page 28: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 29: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 30: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

Page 31: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

Page 32: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

Page 33: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

Page 34: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

Page 35: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

Page 36: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/

Page 37: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/

000-default

default

Page 38: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/

000-default

default

mod_php5.loadmod_php5.confmod_php5.loadmod_php5.conf

Page 39: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/

000-default

default

mod_php5.loadmod_php5.confmod_php5.loadmod_php5.conf

Page 40: Intellicore Tech Talk 10 - Apache Web Server Internals

EXEMPLE STRUCTURE

/etc/apache2/

httpd.conf

sites-available/

sites-enabled/

mods-available/

mods-enabled/

000-default

default

mod_php5.loadmod_php5.confmod_php5.loadmod_php5.conf

Page 41: Intellicore Tech Talk 10 - Apache Web Server Internals

HTTPD.CONF

Configurations classiques

Nom du serveur

Interface d’écoute

E-Mail de l’administrateur

Types MIME

Comportements par défaut

Page 42: Intellicore Tech Talk 10 - Apache Web Server Internals

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

Page 43: Intellicore Tech Talk 10 - Apache Web Server Internals

MODULESSé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

Page 44: Intellicore Tech Talk 10 - Apache Web Server Internals

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 !

Page 45: Intellicore Tech Talk 10 - Apache Web Server Internals

MERCI DE VOTRE PARTICIPATION

N’oubliez pas :http://techtalks.intellicore.net

Des questions ?

Page 46: Intellicore Tech Talk 10 - Apache Web Server Internals

WWW .INTELLICORE.NET

Tous droits réservés Intellicore Services © 2008