SlideShare une entreprise Scribd logo
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 (at) 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 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
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

Contenu connexe

Tendances

Etes vous-prets-pour-le-succes-2011
Etes vous-prets-pour-le-succes-2011Etes vous-prets-pour-le-succes-2011
Etes vous-prets-pour-le-succes-2011
Steven VAN POECK
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
Khalid ALLILI
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
Olivier Gutknecht
 
Cours JSP
Cours JSPCours JSP
Cours JSP
herynantenaina
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Aurelien Navarre
 
Installation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec servaInstallation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec serva
Pape Moussa SONKO
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
Rachid NID SAID
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
Aurelien Navarre
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
tarkaus
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Aurelien Navarre
 
Rapport Kernel Linux - Configuration – Compilation & installation
Rapport Kernel Linux - Configuration –  Compilation & installationRapport Kernel Linux - Configuration –  Compilation & installation
Rapport Kernel Linux - Configuration – Compilation & installation
Ayoub Rouzi
 
Installation Et Configuration De Nutch
Installation Et Configuration De NutchInstallation Et Configuration De Nutch
Installation Et Configuration De Nutch
Mohamed Ben Bouzid
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
hibnico
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
pinguin666
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busybox
Ayoub Rouzi
 
Scheduler & SLA
Scheduler & SLAScheduler & SLA
Scheduler & SLA
Ayoub Rouzi
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
Aurelien Navarre
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011
Sylvain Wallez
 
JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)
Fourat Zouari
 

Tendances (20)

Etes vous-prets-pour-le-succes-2011
Etes vous-prets-pour-le-succes-2011Etes vous-prets-pour-le-succes-2011
Etes vous-prets-pour-le-succes-2011
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Cours JSP
Cours JSPCours JSP
Cours JSP
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
Installation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec servaInstallation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec serva
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
 
Jsp
JspJsp
Jsp
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
Rapport Kernel Linux - Configuration – Compilation & installation
Rapport Kernel Linux - Configuration –  Compilation & installationRapport Kernel Linux - Configuration –  Compilation & installation
Rapport Kernel Linux - Configuration – Compilation & installation
 
Installation Et Configuration De Nutch
Installation Et Configuration De NutchInstallation Et Configuration De Nutch
Installation Et Configuration De Nutch
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busybox
 
Scheduler & SLA
Scheduler & SLAScheduler & SLA
Scheduler & SLA
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011
 
JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)
 

Similaire à Intellicore Tech Talk 10 - Apache Web Server Internals

Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
LeTesteur
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hindguendouz2000
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
Guillaume Sautereau
 
Php dans le cloud
Php dans le cloudPhp dans le cloud
Php dans le cloud
Christophe Villeneuve
 
PHP dans le cloud
PHP dans le cloudPHP dans le cloud
PHP dans le cloud
Microsoft
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
Microsoft
 
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéLe Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Noureddine BOUYAHIAOUI
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
Cellenza
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
Cellenza
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
Korteby Farouk
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
Quentin Adam
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
Xavier MARIN
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
Restlet
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
Cellenza
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper
 
Presentation
PresentationPresentation
Presentation
bois
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 

Similaire à Intellicore Tech Talk 10 - Apache Web Server Internals (20)

Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
 
Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010Présentation de CakePHP, 22/04/2010
Présentation de CakePHP, 22/04/2010
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Php dans le cloud
Php dans le cloudPhp dans le cloud
Php dans le cloud
 
PHP dans le cloud
PHP dans le cloudPHP dans le cloud
PHP dans le cloud
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéLe Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Presentation
PresentationPresentation
Presentation
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
vNext
vNextvNext
vNext
 

Plus de Neil Armstrong

Ostech war story using mainline linux for an android tv bsp
Ostech  war story  using mainline linux  for an android tv bspOstech  war story  using mainline linux  for an android tv bsp
Ostech war story using mainline linux for an android tv bsp
Neil Armstrong
 
Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !
Neil Armstrong
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
Neil Armstrong
 
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Neil Armstrong
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
Neil Armstrong
 
ELC-E 2019 Device tree, past, present, future
ELC-E 2019 Device tree, past, present, futureELC-E 2019 Device tree, past, present, future
ELC-E 2019 Device tree, past, present, future
Neil Armstrong
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
Neil Armstrong
 
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsLinux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Neil Armstrong
 
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsEmbedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Neil Armstrong
 
ELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCsELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCs
Neil Armstrong
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
Neil Armstrong
 
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur InternetFête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
Neil Armstrong
 
Fete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur InternetFete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur Internet
Neil Armstrong
 
IPv6, un second souffle pour l’internet
 IPv6, un second souffle pour l’internet IPv6, un second souffle pour l’internet
IPv6, un second souffle pour l’internet
Neil Armstrong
 

Plus de Neil Armstrong (14)

Ostech war story using mainline linux for an android tv bsp
Ostech  war story  using mainline linux  for an android tv bspOstech  war story  using mainline linux  for an android tv bsp
Ostech war story using mainline linux for an android tv bsp
 
Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
 
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
 
ELC-E 2019 Device tree, past, present, future
ELC-E 2019 Device tree, past, present, futureELC-E 2019 Device tree, past, present, future
ELC-E 2019 Device tree, past, present, future
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
 
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsLinux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCs
 
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsEmbedded Recipes 2017 - Mainline Linux on Amlogic SoCs
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCs
 
ELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCsELC North America 2017- Mainline Linux on Amlogic SoCs
ELC North America 2017- Mainline Linux on Amlogic SoCs
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
 
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur InternetFête de l'internet d'Antibes 2011 - Recherche sur Internet
Fête de l'internet d'Antibes 2011 - Recherche sur Internet
 
Fete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur InternetFete internet antibes 2011 - Recherche sur Internet
Fete internet antibes 2011 - Recherche sur Internet
 
IPv6, un second souffle pour l’internet
 IPv6, un second souffle pour l’internet IPv6, un second souffle pour l’internet
IPv6, un second souffle pour l’internet
 

Intellicore Tech Talk 10 - Apache Web Server Internals

  • 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
  • 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