Table of Contents
Il est préférable d'avoir réalisé les TP sur les serveurs de noms avant de réaliser celui-ci.
Pour réaliser ce TP, vous devrez avoir un serveur de noms qui fonctionne.
La mise en place de serveurs webs virtuels, permet de faire cohabiter plusieurs serveurs sur un même hôte. Nous verrons qu'il y a plusieurs techniques pour faire cela.
On ajoutera, dans un premier temps le paramétrage des sites virtuels dans le fichier de configuration spécifique situé dans /etc/apache2/sites-available/default mais il est tout à fait possible de créer dans ce même répertoire un fichier pour chaque serveur virtuel.
Les serveurs virtuels basés sur le nom, dans ce cas, vous devrez désigner pour une adresse IP sur la machine (et si possible le port), quel est le nom utilisé (directive ServerName), et quelle est la racine du site (directive DocumentRoot).
Le nom de serveur (ServerName) et la racine web (DocumentRoot) doivent exactement correspondre respectivement au nom sous lequel le serveur virtuel sera nommé dans les URL clientes et au chemin du répertoire d'accueil des documents du site.
# Ici toutes les adresses ip sont utilisées, on peut mettre *
NameVirtualHost *
# Toutes les requêtes sur http://www.domain.tld/
# pointeront sur /www/domain
<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain
</VirtualHost>
# Toutes les requêtes sur http://www.otherdomain.tld/
# pointeront sur /www/otherdomain
<VirtualHost *>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
# Ici on utilise une adresse en particulier
# Toutes les requêtes sur http://www.domain.tld/domain
# pointeront sur /web/domain
NameVirtualHost 111.22.33.44
<VirtualHost 111.22.33.44>
ServerName www.domain.tld
ServerPath /domain
DocumentRoot /web/domain
</VirtualHost>
Dès lors que l'on a des serveurs virtuels qui "tournent" sur des ports différents, il est obligatoire de préciser pour chaque serveur virtuel son port :
NameVirtualHost * devient NameVirtualHost *:80 <VirtualHost *> devient <VirtualHost *:80>
Nous le verrons avec le TP sur SSL.
Les serveurs virtuels basés sur des adresses IP. Dans ce cas, chaque serveur aura sa propre adresse IP. Vous devrez également avoir un serveur de noms sur lequel toutes les zones et serveurs sont déclarés, car c'est ce dernier qui assurera la correspondance "adresse ip <-> nom du serveur" :
# Chaque serveur peut avoir son propre administrateur, ses
# propres fichiers de logs.
# Tous fonctionnent avec la même instance d'Apache.
# Il est possible de lancer plusieurs instances d'apache
# mais sur des ports différents
<VirtualHost www.smallco.com>
ServerAdmin webmaster@mail.smallco.com
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>
<VirtualHost www.baygroup.org>
ServerAdmin webmaster@mail.baygroup.org
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>
La redirection est un service un peu particulier, qui diffère de celui des services web virtuels. Il permet de rediriger une partie du site web à un autre endroit du disque physique. La encore on utilisera une des fonctions d'Apache qui permet de définir des alias.
Prenons par exemple un site installé physiquement sur "/var/www" et accessible par l'url "http://FQDN". L'url "http://FQDN/unREP" devrait correspondre normalement à l'emplacement physique "/var/www/unREP". La redirection va permettre de rediriger physiquement vers un autre répertoire.
Cette technique est largement utilisée par des applications ou pour la création d'espaces documentaires.
L'URL "http://FQDN/compta", pourra pointer physiquement dans "/usr/lib/compta" au lieu de "/var/www/compta".
Dans cet atelier, vous allez réaliser les opérations suivantes:
Installer un service de serveurs web virtuels par adresse et par nom,
Mettre en place un service de redirection par alias.
Configurez votre serveur de noms si ce n'est pas fait. Vous pouvez vous aider de l'annexe sur le "web-hosting" ci-dessous.
Pour créer des alias dynamiquement à votre interface réseau, utilisez la commande suivante:
ifconfig eth0:0 192.168.0.1
ifconfig eth0:1 192.168.1.1
ifconfig
eth0 Lien encap:Ethernet HWaddr 00:D0:59:82:2B:86
inet adr:192.168.90.2 Bcast:192.168.90.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:95041 errors:0 dropped:0 overruns:0 frame:0
TX packets:106227 errors:0 dropped:0 overruns:26 carrier:0
collisions:0 lg file transmission:100
RX bytes:57490902 (54.8 MiB) TX bytes:11496187 (10.9 MiB)
Interruption:11 Adresse de base:0x3000
eth0:0 Lien encap:Ethernet HWaddr 00:D0:59:82:2B:86
inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:11 Adresse de base:0x3000
eth0:1 Lien encap:Ethernet HWaddr 00:D0:59:82:2B:86
inet adr:192.168.1.1 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:11 Adresse de base:0x3000
lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:70 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:4564 (4.4 KiB) TX bytes:4564 (4.4 KiB)
Créez votre serveur de noms pour deux domaines par exemple (domain1.org et domain2.org), adaptez la configuration du fichier "/etc/resolv.conf", vérifiez le bon fonctionnement de la résolution de noms sur les CNAME (www.domain1.org et www.domain2.org).