M3102 - TP 3
Configurer un serveur web Apache

1 Introduction

Le but de ce troisième TP est de manipuler un serveur web Apache dont le travail est de rendre un service de réponse à des requêtes adressées en HTTP sur la machine sur laquelle il est exécuté.

2 Création du serveur virtuel de TP

Activez l'environnement de travail via les commandes suivantes exécutées dans le shell de votre machine à l'IUT

source /home/public/m3102/tp3.env
demarrer_tp3

Vous devriez obtenir une sortie de ce genre là :

$ demarrer_tp3
Virtual machine 'bruno.beaufils-tp3' is created and registered.
UUID: 912c1dbb-3d36-49fd-8455-c79634bc45cc
Settings file: '/usr/local/virtual_machine/infoetu/bruno.beaufils/bruno.beaufils-tp3/bruno.beaufils-tp3.vbox'
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: b4759f53-6956-4c30-bb2a-4a5379c36553
$

Cela vous crée une machine virtuelle ayant 1 Mo de mémoire, un disque dur virtuel de 5 Go sur lequel une version de Debian Bullseye (11.1) est préinstallée avec 2 utilisateurs :

  • root avec comme mot de passe root
  • user avec comme mot de passe user

Par ailleurs la configuration réseau de cette machine est obtenue par un appel à DHCP.

Cette machine, qui est votre serveur virtuel de TP, est par ailleurs connectée à un réseau virtuel sur lequel se trouve également votre machine physique de TP (via son interface vmnet8).

3 Préparation du serveur virtuel de TP

Configurez votre serveur virtuel de TP de façon à ce que :

  • vous puissiez vous y connecter en ssh en tant que root depuis votre machine physique de TP ;
  • le système APT puisse être opérationnel via le proxy HTTP de l'Université http://cache.univ-lille.fr:3128 ;
  • les outils suivants soient installés : less, w3m.

Familiarisez-vous avec le navigateur web en mode texte w3m, en lisant la page w3m(1).

Après avoir lu la page hosts(5), configurez votre serveur virtuel de TP de façon à ce que vous soyez capable d'y faire référence (i.e. accéder via ping par exemple) par les noms

  • serveur,
  • serveur.tp,
  • serveur.iut.fr,
  • www.iut.fr,
  • www.pere.noel.

Faites valider vos modifications à votre enseignant.

Sur le serveur créez autant d'utilisateurs que d'étudiants dans votre groupe (la liste des logins de vos camarades est, par exemple, accessible via la commande getent group info-fi2-X en remplaçant X par la lettre de votre groupe).

4 Prise en main d'Apache

Commencez par lire les sections 11.2.1, 11.2.3 et 11.2.4 du chapitre 11.2 du «Cahier de l'administrateur Debian, Buster».

Installez les paquets apache2 et apache2-doc sur votre serveur virtuel.

Créez les répertoires /var/www/html/www.pere.noel, /var/www/html/iut et /var/www/html/default puis créez dans chacun de ces répertoires un fichier, au format HTML, nommé index.html et au contenu de votre choix mais différent. Par exemple :

  • votre liste de demande de cadeaux au père Noël dans /var/www/html/www.pere.noel/index.html,
  • une définition du mot IUT dans /var/www/html/iut/index.html,
  • un salut au monde dans /var/www/html/default/index.html.

En utilisant w3m visitez les pages suivantes pour comprendre le fonctionnement d'Apache :

  • http://serveur
  • http://serveur/manual
  • http://serveur.tp
  • http://serveur.iut.fr
  • http://www.iut.fr
  • http://www.pere.noel
  • http://www.pere.noel/www.pere.noel
  • http://www.pere.noel/iut

Renommez le fichier /var/www/html/index.html en /var/www/html/index.html.old puis visitez les mêmes adresses qu'à la question précédente.

5 Configuration d'Apache

L'intégralité de la configuration du serveur Apache est stockée dans le répertoire /etc/apache2.

Sa documentation est accessible localement dans le répertoire /usr/share/doc/apache2-doc/manual. Sur le serveur vous pouvez donc par exemple la consulter avec la commande

w3m /usr/share/doc/apache2-doc/manual/index.html

Elle est également servie par défaut par le serveur Apache installé, via, par exemple, l'URL http://serveur/manual. Vous pouvez donc la consulter avec w3m via

w3m http://serveur/manual

Parcourez les sections «Écoute sélective», «Fichiers de configuration», «Sections de configuration» et «Mise en correspondance des URLs avec le système de fichiers» du Guide de l'utilisateur.

Lisez le fichier /usr/share/doc/apache2/README.Debian.gz.

Avant d'effectuer une modification écrivez une procédure la décrivant puis faites la valider par votre enseignant avant de l'appliquer

Après avoir lu la page a2enconf(8) et étudié en détail le fichier /etc/apache2/conf-available/apache2-doc.conf, ajoutez et activez un fichier /etc/apache2/conf-available/local-tp3.conf permettant d'accéder à la documentation d'apache via http://serveur/doc en plus de http://serveur/manual.

Après avoir étudié le fichier /etc/apache2/sites-enabled/000-default.conf, modifiez une directive de la configuration du serveur de façon à ce que les pages servies par défaut soient celles contenues dans le répertoire /var/www/html/default.

Sous Debian, toutes les fonctionnalités offertes par Apache ne sont pas activées, ni même installées par défaut. Beaucoup sont offertes par des modules, dont certains sont installés par défaut et d'autres non. La liste des modules disponibles est disponible dans la section Modules du Manuel de référence.

Étudiez la documentation du module mod_userdir.

Activez et configurez le module mod_user_dir de façon à ce que le répertoire $HOME/web de chaque utilisateur soit utilisé comme contenu des pages web spécifiques aux utilisateurs puis vérifiez votre configuration. La lecture de a2enmod(8) et du tutoriel «Répertoires Web des utilisateurs (public_html est évidemment utile.

Après avoir étudié la documentation du module mod_autoindex, désactivez la génération automatique d'index dans le serveur par défaut configuré par /etc/apache2/sites-enabled/000-default.conf.

Après avoir lu le tutoriel sur les «fichiers .htaccess» :

  1. réactivez la génération automatique des index uniquement dans le répertoire web de votre utilisateur ;
  2. protégez l'accès aux pages web de votre utilisateur par une authentification basique (avec comme login et mot de passe toto). Lire la page htpasswd(1) est sans doute une bonne idée.

Hôtes virtuels

Le protocole HTTP permet de préciser le nom du serveur interrogé dans chacune des requêtes grâce aux entêtes et notamment le champ Host:, obligatoire depuis la version 1.1 du protocole.

Une machine peut-être atteinte via plusieurs noms. C'est le cas dans ce TP du serveur qui est accessible depuis le client par au moins les noms www.pere.noel et www.iut.fr.

En combinant ces deux aspects la plupart des serveurs web, comme Apache, permettent de gérer des serveurs (ou hôtes) virtuels (virtual host en anglais) : un même logiciel répondant aux requêtes adressées à plusieurs noms différents.

La section «Hôtes virtuels» de la documentation d'Apache décrit le fonctionnement et la configuration nécessaire. Une relecture rapide du fichier /usr/share/doc/apache2/README.Debian.gz n'est sans doute pas superflue.

Après avoir lu la documentation idoine, créez les fichiers de configuration suivants dans /etc/apache2/sites-available qui permettent de définir deux hôtes virtuels :

  • pour les appels à www.pere.noel qui renvoie les pages stockées dans /var/www/html/noel
  • pour les appels à www.iut.fr qui renvoie les pages stockées dans /var/www/html/iut.

Activez vos deux hôtes virtuels et vérifiez le fonctionnement de votre serveur.

Modifiez la configuration de l'hôte virtuel www.iut.fr de façon à ce que toutes les requêtes sur cet hôte retourne le résultat d'une requête identique sur le site www.iut-info.univ-lille1.fr. Il s'agit de transformer cet hôte en simple Reverse Proxy.

Date: 14 décembre 2020

Author: Bruno BEAUFILS

Created: 2021-11-18 jeu. 13:16

Validate