Skip to content

Serveur Web apache2

Ben edited this page Jan 19, 2017 · 13 revisions

Le service web

On a besoin de fournir du contenu html aux visiteurs de nos sites, qui viendront se connecter à nos services avec leur navigateur web.
Pour ça, on doit installer la brique logicielle qui va prendre en charge les requêtes / réponses. Plusieurs logiciels très différents permettent cette prise en charge. On peut citer, notamment :

On a porté notre choix sur le serveur apache2 httpd , qui présente les avantages suivants :

  • très grande facilité d'installation
  • on y ajoute facilement un module mod_php , qui est chargé dans apache au démarrage, et qui fournit un interpréteur PHP

La documentation est très abondante sur le sujet, je vous conseille la lecture de la procédure détaillée (manuelle, on ne fera pas comme ça, nous on va utiliser une méthode automatique). Vous pourrez connaitre en détails les tenants et aboutissants de la liaison apache <-> PHP <-> MySQL . La page est ici : http://php.net/manual/fr/install.unix.apache2.php

Par la suite, la configuration de PHP est très facile puisqu'il est "inclus" dans apache.
Et puis on ajoute / supprime / active / désactive très facilement des hôtes virtuels.

Les vhosts

Le serveur web DOIT permettre d'héberger plusieurs sites sur le même serveur physique. Ces différents sites (on appelle ça des vhosts dans apache) seront accédés par des adresses / URL différentes.
Un peu comme dans le monde réel, quoi :)

On configure des vhosts dans des fichiers de configuration qui se trouvent dans /etc/apache2/sites-available/. Ce sont des fichiers texte, dans lesquels on inscrit les détails de chaque site/virtual host. Un exemple de fichier /etc/apache2/sites-available/simplonsandbox1.local :

<VirtualHost *:80>
    ServerName simplonsandbox1.local
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/simplon1

    ErrorLog ${APACHE_LOG_DIR}/simplonsandbox1.local.error.log
    CustomLog ${APACHE_LOG_DIR}/simplonsandbox1.local.access.log combined
</VirtualHost>

Il s'agit ici de la configuration minimale d'un virtual host dans apache, la documentation est abondante sur le sujet; vous pouvez commencer par la lecture de quelques exemples ici pour vous rendre compte des possibilités de configuration.

Notez ici la valeur de ServerName. C'est cette valeur qui va permettre à apache de router les requêtes entrantes vers le bon vhost.

Lors de son démarrage, apache lit chaque fichier de configuration des vhosts présents dans /etc/apache2/sites-enable/ (les vhosts qui ont été préalablement activés avec sudo a2ensite vhostname)
Puis apache attend les requêtes http entrantes, en écoutant sur le port 80 notamment (par défaut, modifiable dans /etc/apache2/ports.conf)

A chaque requête entrante

A chaque fois qu'un utilisateur accède au serveur web (via son IP, après résolution DNS) avec son navigateur, le serveur apache "examine" les valeurs des headers htttp.
Ci-dessous la capture d'écran du developer tools de chrome, qui affiche le détail des request headers. Ce sont des valeurs qui sont envoyées à chaque requête qui part du navigateur du client, et qui permettent de transiter des informations d'état, notamment. La documentation est abondante sur le sujet, notamment https://openclassrooms.com/courses/les-requetes-http

Screenshot developer tools describing request headers

Le hader utile ici est le header Host . Cette valeur est examinée par apache avant toute chose, et :

  • si le domaine fait partie des ServerName configurés dans les virtual hosts, la requête est routée vers ce virtual host
  • sinon, c'est le site default qui joue éventuellement le rôle de catchall (si ce vhost default est activé)

Clone this wiki locally