-
Notifications
You must be signed in to change notification settings - Fork 5
Serveur Web apache2
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 :
- nginx
- lighttpd
- Microchiotte IIS
- tomcat (java)
- ... la liste est TRES longue, ce ne sont ici que les plus répandus
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.
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 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

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
ServerNameconfiguré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é)