M3102 - TP 3
Configurer un serveur web Apache
1 Introduction
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 passeroot
user
avec comme mot de passeuser
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» :
- réactivez la génération automatique des index uniquement dans le répertoire web de votre utilisateur ;
- 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 pagehtpasswd(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.