BLOGUE – La fondation Apache est une organisation à but non lucratif qui développe des logiciels à code source libre, sous la licence Apache. Le serveur HTTP d’Apache est sans aucun doute l’application la plus connue et la plus répandue qui ait créé par ce groupe. L’application a été portée sur toutes les plateformes majeures, dont tout ce qui est UNIX et ses dérivés (Linux, Mac OS X, Solaris, BSD, etc.) ainsi que sur Windows.
Le serveur HTTP Apache est un serveur web. La définition de serveur peut parfois sembler ambiguë car, selon le contexte, elle fait référence à la machine en son entier, physique ou virtuelle, ou bien à une application spécifique qui tourne sur cette machine et qui sert du contenu – d’où le mot serveur. Lorsqu’on parle de serveur web, on fait référence au service (au programme) qui tourne en permanence sur une machine et qui est en attente de requêtes pour servir son contenu.
Typiquement, une interaction client-serveur se déroule en 2 étapes :
- Un client entre une adresse web dans la barre de son navigateur. Le navigateur prend cette adresse, recherche l’adresse IP du serveur vers laquelle cette adresse pointe (par une requête DNS), génère une requête HTTP et l’envoie à l’adresse trouvée;
- Le serveur web écoute le port standard pour les communications HTTP. Lorsque celui-ci reçoit la requête du client, il décortique toutes les variables contenues dans la requête, comme l’adresse IP source, le type de navigateur, le type de système d’exploitation, la ressource demandée, et ainsi de suite. Le serveur web génère ensuite la réponse et la renvoie au client, qui l’affiche à son utilisateur.
Lorsqu’un client requiert une page web, cette interaction est répétée des dizaines, voire des centaines de fois, généralement en moins d’une seconde. Ceci est dû au fait que lorsqu’on demande la page d’accueil d’un site, on nous retourne simplement le code HTML qui, toutefois, contient des liens vers d’autres ressources qui peuvent se trouver sur le même serveur ou sur un autre.
Les ressources qui peuvent être demandées et envoyées comprennent, mais ne sont pas limitées à des feuilles de style .css, des scripts .js, des images de divers formats, des fichiers vidéo ou audio et ainsi de suite. En d’autre termes, lorsqu’on affiche une page web, chaque ressource nécessite une requête dédiée vers le serveur web.
Bien que cette interaction soit le fondement du serveur web Apache, celui-ci offre beaucoup plus de possibilités et de fonctionnalités. Un aspect important pour un serveur web est sa capacité à servir des pages dynamiques. Les pages dynamiques sont généralement codées dans un langage de script web comme php, perl, python, ruby, etc.
Lorsqu’un client requiert une page en php, par exemple, le serveur web Apache exécute le code php qui est contenu dans la page, ce qui génère du contenu en HTML afin que le navigateur puisse l’afficher.
Dans la deuxième partie de ce billet, je traite des possibilités et des fonctionnalités qu’offre un serveur à code source libre à l’organisation qui l’utilise.