Your SlideShare is downloading. ×
  • Like
Intellicore Tech Talk 10 - Apache Web Server Internals
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Intellicore Tech Talk 10 - Apache Web Server Internals

  • 2,188 views
Published

Sujet : 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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,188
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
77
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Apache Web Server Internals Structure et Configuration Neil Armstrong 10 juin 2008
  • 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. Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia 10 juin 2008 - CICA Sophia Antipolis APACHE WEB SERVER INTERNALS Structure et Configuration
  • 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. 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. 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. 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. APACHE WEB SERVER Son fonctionnement ?
  • 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. ORGANISATION INTERNE Un coeur et des modules Requête Module Apache Module Core Réponse Module
  • 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. 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. 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. 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. 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. 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. APACHE WEB SERVER Qui s’en sert ? Comment ?
  • 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. 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. 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. 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. 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. APACHE WEB SERVER Comment une requête est traitée ? Comment configurer ?
  • 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. 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. 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. 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. 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. 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. EXEMPLE STRUCTURE
  • 31. EXEMPLE STRUCTURE /etc/apache2/
  • 32. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf
  • 33. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/
  • 34. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/
  • 35. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/ mods-available/
  • 36. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ sites-enabled/ mods-available/ mods-enabled/
  • 37. EXEMPLE STRUCTURE /etc/apache2/ httpd.conf sites-available/ default sites-enabled/000-default mods-available/ mods-enabled/
  • 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. 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. 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. HTTPD.CONF Configurations classiques Nom du serveur Interface d’écoute E-Mail de l’administrateur Types MIME Comportements par défaut
  • 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. 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. 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. Des questions ? MERCI DE VOTRE PARTICIPATION N’oubliez pas : http://techtalks.intellicore.net
  • 46. WWW .INTELLICORE.NET Tous droits réservés Intellicore Services © 2008