Apache Web Server
    Internals
   Structure et Configuration




                               Neil Armstrong
           ...
Intellicore Tech Talks
• Des conférences pour partager son savoir
• Le mardi au CICA Sophia Antipolis
• http://techtalks.i...
Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia
10 juin 2008 - CICA Sophia Antipolis




    APACHE WEB SERVER IN...
APACHE ?
          FTP, Gopher, POP/SMTP
          NNTP


                                        Tim Berners-Lee
        ...
APACHE ?

A PAtCHy Server

Proche de la prononciation de Apache en anglais

Sources basées sur un ensemble de PATCHs

Aujo...
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...
PARTS DE MARCHÉ
34000000
                                                                        33,5M

                  ...
APACHE
  WEB
 SERVER
Son fonctionnement ?
EVOLUTION INTERNE

Basé sur NCSA httpd            inetd




  Simple mais avec un processus unique

Sortie de Apache 1.0 e...
ORGANISATION
         INTERNE

Un coeur et des modules

 Requête
                          Module

           Apache      ...
MODULARITÉ

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

           ...
GESTION SIMPLE DE
      RESSOURCES
Une corbeille de ressource est gérée dynamiquement

  Gestion mémoire simplifiée

  Effic...
RÉPARTITION DU
         TRAVAIL
Répartition du travail entre plusieurs tâches

Gestion de la politique par des modules spé...
TRANSIT DES DONNÉES

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

Modules de filtres

Utilisés pour faire des actions sur les données

  Entrée : Décompresser, Décoder, ...
MODULES DE FILTRES

Modules de filtres

Utilisés pour faire des actions sur les données

  Entrée : Décompresser, Dé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 -> “c...
HÉBERGEMENT

Site internet dynamique avec sous-domaines

1 adresse IP = plusieurs nom de domaines et sites

Utilisation d’...
INFRASTRUCTURE WEB

Gros site d’entreprise dynamique

Plusieurs adresses IP, plusieurs sous-domaines

Utilisation de commu...
SOLUTIONS
Gestion d’hôtes virtuels

  Gestion de plusieurs sous-domaines sur le même
  serveur

Gestion de “proxy”

  Renv...
BALANCE DE CHARGE

Utilise le module mod_proxy_balancer

2 algorithmes

  Request Counting

    Chaque serveur => même qua...
APACHE
    WEB
   SERVER
Comment une requête est
      traitée ?
 Comment configurer ?
MODULES UTILES
Interpréteurs

  php, ruby, perl, python, ...

CGI : Common Gateway Interface
                          Tex...
EXEMPLE SIMPLE


1 site internet en virtual host

  monsite.mondomaine.com

La résolution du nom donne une adresse IP

L’a...
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 : m...
TRAITEMENT
Traitement du Host

  monsite.mondomaine.com

Transformation de /blog/index

  Ex: /var/www/phpblog/index.php?p...
RÉPONSE HTTP

Simple code d’erreur suivi d’en-têtes

  200 OK

  404, ...

Type de contenu : Content-Type

Taille du conte...
CONFIGURATION

Configuration très modulable

  Du simple fichier unique httpd.conf

  A la structure complexe de répertoire
...
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/...
EXEMPLE STRUCTURE

/etc/apache2/

  httpd.conf

  sites-available/ default

  sites-enabled/000-default
                  ...
EXEMPLE STRUCTURE

/etc/apache2/

  httpd.conf

  sites-available/ default

  sites-enabled/000-default
                  ...
EXEMPLE STRUCTURE

/etc/apache2/

  httpd.conf

  sites-available/ default

  sites-enabled/000-default
                  ...
HTTPD.CONF

Configurations classiques

  Nom du serveur

  Interface d’écoute

  E-Mail de l’administrateur

  Types MIME

...
000-DEFAULT

Définition du “catch-all”

  NameVirtualHost *:80

  Balise <VirtualHost *:80>

    DocumentRoot /var/www/mons...
MODULES
Séparation du chargement et de la configuration

Chargement avec LoadModule

  LoadModule php5_module /lib/apache2/...
CONFIGURATION
     CONDITIONNELLE

Permet d’exécuter des parties de configuration

  Si un module est chargé

  Si une vari...
Des questions ?

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

Intellicore Tech Talk 10 - Apache Web Server Internals

2 694 vues

Publié le

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

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 694
Sur SlideShare
0
Issues des intégrations
0
Intégrations
23
Actions
Partages
0
Téléchargements
97
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Intellicore Tech Talk 10 - Apache Web Server Internals

  1. 1. Apache Web Server Internals Structure et Configuration Neil Armstrong 10 juin 2008
  2. 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
  3. 3. Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia 10 juin 2008 - CICA Sophia Antipolis APACHE WEB SERVER INTERNALS Structure et Configuration
  4. 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 ?
  5. 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
  6. 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
  7. 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
  8. 8. APACHE WEB SERVER Son fonctionnement ?
  9. 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
  10. 10. ORGANISATION INTERNE Un coeur et des modules Requête Module Apache Module Core Réponse Module
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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, ...
  16. 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, ...
  17. 17. APACHE WEB SERVER Qui s’en sert ? Comment ?
  18. 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
  19. 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
  20. 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
  21. 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, ...
  22. 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
  23. 23. APACHE WEB SERVER Comment une requête est traitée ? Comment configurer ?
  24. 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...
  25. 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
  26. 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, ...)
  27. 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
  28. 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, ....
  29. 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
  30. 30. EXEMPLE STRUCTURE
  31. 31. EXEMPLE STRUCTURE /etc/apache2/
  32. 32. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf
  33. 33. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/
  34. 34. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/
  35. 35. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/ mods-available/
  36. 36. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/ mods-available/ mods-enabled/
  37. 37. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ default sites-enabled/000-default mods-available/ mods-enabled/
  38. 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
  39. 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
  40. 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
  41. 41. HTTPD.CONF Configurations classiques Nom du serveur Interface d’écoute E-Mail de l’administrateur Types MIME Comportements par défaut
  42. 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
  43. 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
  44. 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 !
  45. 45. Des questions ? MERCI DE VOTRE PARTICIPATION N’oubliez pas : http://techtalks.intellicore.net
  46. 46. WWW .INTELLICORE.NET Tous droits réservés Intellicore Services © 2008

×