Apache

Fiche logiciel validé
  • Création ou MAJ importante : 24/12/09
  • Correction mineure : 13/02/12
Mots-clés

Apache : serveur http

Description
Fonctionnalités générales

Apache est un serveur http.

Aux temps de la préhistoire du web (première moitié des années 1990), il existait deux logiciels serveurs http concurrents: celui du CERN (www.cern.ch) d'une part, le logiciel créé par le N.C.S.A. (National Center for Super Computing Applications http://www.ncsa.uiuc.edu) d'autre part. Un groupe d'informaticiens a alors modifié ("patché") le code du NCSA pour l'améliorer. Cela a donné "a patchy server", d'où un jeu de mots plus tard le nom Apache.

Apache est un logiciel très performant et très robuste. Il est configurable grâce à un fichier de configuration bien documenté. On peut par exemple, en insérant des directives dans ce fichier, spécifier quels répertoires seront publiquement accessibles, ou au contraire fermés à certaines adresses, accessibles après authentification, etc. La directive Include permet d'inclure un nombre arbitraire de fichiers, ce qui permet de structurer la configuration: un fichier par application web, ou encore un fichier par hôte virtuel, ... Il est possible de recharger le fichier de configuration sans arrêter apache, ce qui est intéressant pour un serveur de production. Signalons enfin qu'il est possible de déposer un fichier de configuration (.htaccess: généralement quelques directives seulement) dans chaque répertoire du site web exporté: cela permet à l'administrateur système de laisser les utilisateurs (concepteurs de sites) reconfigurer le serveur selon leurs besoins... sachant que l'administrateur peut interdire certaines directives. Une très grande souplesse, donc.

Autres fonctionnalités

Apache reconnaît la notion d' "hôte virtuel": une machine peut avoir plusieurs noms, voire même plusieurs adresses IP (à condition bien sûr que cela soit enregistré proprement dans le DNS). Configurer plusieurs "hôtes virtuels" permet d'associer à chaque nom de machine une configuration complète (par exemple le répertoire dans lequel se trouveront les sites webs, le nom du fichier de log, etc.). De la sorte, une seule machine n'exécutant qu'une seule instance d'Apache peut publier un nombre arbitraire de serveurs web; du point-de-vue des logiciels clients mais aussi dans une certaine mesure du point-de-vue de l'administrateur tout se passe comme s'il y avait plusieurs machines.

Apache est conçu comme un "cœur" entouré de modules, qui peuvent être liés statiquement avec le programme, mais seront de préférence utilisés en tant que bibliothèque partagée. Les modules les plus importants sont livrés avec apache, cependant si la fonctionnalité correspondante n'est pas utilisée on peut (et il est conseillé de) ne pas les installer tous. De nombreux modules "tierces parties" sont par ailleurs disponibles. Parmi les principaux modules, on peut citer:

  • mod_rewrite: Fourni avec apache, ce module permet de "réécrire" une url en utilisant des règles qui peuvent être très complexes, de sorte qu'il n'y ait plus aucun rapport entre l'url proprement dite et l'emplacement du fichier correspondant. Sans compter que ce fichier peut être inexistant (base de données). Tout ce fonctionnement restera inconnu du client.
  • mod_ssl: fourni lui aussi avec apache, permet d'utiliser la bibliothèque openSSL ( cf fiche PLUME http://www.projet-plume.org/fr/fiche/openssl ) afin de crypter toutes les transactions (https).
  • mod_php: le célèbre langage de script est livré sous forme d'un module apache distinct.
  • mod_perl, mod_python, etc. Ces modules permettent d'embarquer du code perl ou python dans la page web, ils constituent donc une alternative à php.
  • mod_security: Permet de filtrer les requêtes http, et ainsi d'améliorer la sécurité
  • mod_proxy: Relai Apache pour des fonctions de sécurité
  • modXLDAPAuth Filtre d'accès à un serveur Apache basé sur les certificats

Un module livré sous forme de bibliothèque partagée peut être recompilé séparément d'Apache (et réciproquement, tant qu'on reste dans une même branche d'Apache. cf. plus loin). Cela est extrêmement intéressant, car on peut mettre à jour un module sans toucher à l'installation d'Apache elle-même (on doit cependant redémarrer le serveur). De la même manière, on peut changer la version d'Apache tout en gardant les modules déjà installés, si ceux-ci n'ont pas évolué.

Il existe actuellement trois branches d'Apache: les versions 1.3.x, 2.0.x, et 2.2.x sont en effet toujours maintenues, et de nouvelles révisions sont régulièrement publiées (correction de bogues pour l'essentiel). La version 2 a constitué un saut technologique important, qui se caractérise par:

  • Une meilleure portabilité, grâce à une "couche de compatibilité" appelée Apr (Apache portable runtime). Apr est aujourd'hui un projet de la fondation Apache. On retrouve cette bibliothèque dans dans d'autres applications (par exemple subversion), car elle permet de concevoir assez facilement des applications portables.
  • Une meilleure gestion des modules. Le revers de la médaille est la réécriture de l'API, de sorte que les modules ont dû être réécrits lors du passage à la version 2.
  • Un meilleur support du multitâche, avec l'implémentation de différents algorithmes, permettant de "coller" au plus près avec le système d'exploitation.

La version 2.2 est simplement une optimisation de la version 2.0. Il est conseillé d'utiliser la version 2.2, qui est la plus aboutie, en particulier sous Windows.

 

Contexte d'utilisation dans mon laboratoire/service

Au LIPM, nous développons essentiellement des applications avec interface web, tous nos serveurs, qu'ils soient destinés à l'intranet comme à l'internet, sont tous équipés d'Apache.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Toutes les distributions gnu/linux

Plates-formes

Toutes les plateformes unix, ainsi que Windows, VMS, OS/2...

Logiciels connexes

Les projets xampp (linux, windows, macOS/X, solaris 8) et easyphp, wamp (windows) sont une installation ultrasimplifiée d'Apache, phph, mysql - autrement dit les principaux logiciels utiles pour faire tourner un site web, au moins en phase de développement et test.

Autres logiciels aux fonctionnalités équivalentes

IIS de Microsoft (windows uniquement), lighttpd et nginx (libres)

Environnement de développement
Type de structure associée au développement

Fondation Apache

Eléments de pérennité

Actuellement, une majorité de sites webs utilisent Apache. La Fondation Apache est un des grands acteurs du logiciel libre. Elle a à son actif une cinquantaine de projets, dont certains jouent un rôle majeur dans l'informatique aujourd'hui (tomcat, Lucene, ...). D'autre part, Apache est aujourd'hui un composant essentiel du système d'exploitation gnu/linux.

Références d'utilisateurs institutionnels

Tous.

Environnement utilisateur
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Bien qu'Apache soit livré en standard avec tous les systèmes d'exploitation (windows excepté bien sûr), certains administrateurs préfèrent le recompiler eux-mêmes: cela permet d'une part de garder la maîtrise de la version utilisée, de ne compiler que les modules qui seront utilisés d'autre part. Recompiler apache n'est pas très difficile, lorsqu'on a trouvé le jeu d'options qui nous convient, la recompilation lorsque de nouvelles versions apparaissent prend quelques minutes.

Mettre la directive ServerTokens à la valeur Prod pour ne pas fournir le nom du serveur et la version pour les sites en production

Commentaires

Responsable thématique précédent

Cette fiche a d'abord été suivie par le responsable thématique Jacquelin Charbonnel. Thierry Dostes l'a reprise en février 2012.

Protection contre les robots

Lorsque certains robots saturent un site par des accès sur certaines parties inutiles d'indexer et qui peuvent engendrer des fortes charges d'accès à une base de données... :
La possibilité d'avoir un fichier interprété par les robots (les très connus en tienne compte) qui indique de ne pas indexer une partie du site ou un temps minimum entre chaque accès : cf http://www.robotstxt.org/faq.html
Utilisé sur la plateforme PLUME entre autres.