Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:virtualhosts_avec_apache2 [Le 23/10/2009, 09:55] 213.95.41.13tutoriel:virtualhosts_avec_apache2 [Le 19/07/2018, 13:23] (Version actuelle) – Vétuste L'Africain
Ligne 1: Ligne 1:
-{{tag>feisty serveur tutoriel brouillon}} 
  
----- 
- 
-====== Les hôtes virtuels (virtual hosts) avec Apache2 ====== 
- 
- 
-===== Introduction ===== 
- 
-**Le Serveur Web Apache2 est capable de gérer simultanément plusieurs arborescences Web grâce à la notion d'hôtes Virtuels (Virtual Hosts). Nous allons voir les différentes méthodes pour les mettre en place.** 
- 
-Il est important de savoir que si vous avez déjà un serveur en activité, ce serveur doit lui aussi être configuré dans les hôtes virtuels ! Dans ce cas, vous voudrez sûrement le mettre en serveur "par défaut", répondant à toutes les requêtes, SAUF celles qui correspondront à vos autres serveurs virtuels. 
- 
-Nous renseignons le fichier **/etc/hosts** afin d'assurer la résolution de nom (Nom --> Adresse Ip) des **hôtes Virtuels** que nous allons créer. Ceci n'est nécessaire que si votre serveur DNS (Serveur Bind) n'est pas installé et/ou configuré pour vos domaines ou encore, que les noms DNS attribués aux **hôtes Virtuels** sont purement fictifs ou ne vous appartiennent pas. 
- 
-Si vous désirez tester toutes les méthodes proposées, pensez à effacer la configuration précédente pour ne pas créer des conflits entre les hôtes Virtuels. Il en va de même pour le fichier **/etc/hosts**. 
- 
-<note>Dans les 3 méthodes présentées sur ce tutoriel, on souhaite créer 2 hôtes virtuels : **virtual1.com** et **virtual2.com** ayant pour fichiers de configuration les fichiers **virtual1.conf** et **virtual2.conf**</note> 
- 
-===== Hôtes virtuels basés sur le nom ===== 
- 
-Cette méthode est la plus utilisée et la plus conseillée. Elle tend même à devenir un standard. Il s'agit simplement d'associer plusieurs **noms DNS** à une seule adresse IP. 
- 
-<note important>Attention, il faut également déclarer ces 2 sites dans le fichier **/etc/hosts**</note> 
- 
-Dans un premier temps nous allons définir des **noms DNS** pour nos sites : monsite1.fr et monsite2.fr 
-Il faut ajouter ces informations au fichier /etc/hosts pour que la résolution DNS pointe sur la machine locale (127.0.0.1) : 
-<file> 
-sudo gedit /etc/hosts 
-</file> 
-et rajouter les deux lignes suivantes : 
-<file> 
-127.0.0.1 monsite1.fr 
-127.0.0.1 monsite2.fr 
-</file> 
- 
-Puis nous allons faire deux dossiers dans le dossier **/var/www** qui est par défaut la racine d'apache. Vous pouvez les créer en interface graphique ou en ligne de commande via ces deux commandes :  
- 
-<file> 
-sudo mkdir /var/www/monsite1 
-sudo mkdir /var/www/monsite2 
-</file> 
- 
-Ces dossiers faits, nous allons créer les fichiers de configurations pour apache. Dans **etc/apache2/sites-available** se trouve un fichier nommé //default//, ouvrer le avec vote éditeur de texte favoris (ne pas utiliser OpenOffice.org) puis modifier de cette façon le fichier :  
-<file> 
-<VirtualHost *:80> 
- ServerAdmin votre-mail@monsite1.fr 
- ServerName monsite1.fr 
- ServerAlias www.monsite1.fr 
-  
- DocumentRoot /var/www/monsite1 
- <Directory /> 
- Options FollowSymLinks 
- AllowOverride None 
- </Directory> 
- <Directory /var/www/monsite1> 
- Options Indexes FollowSymLinks MultiViews 
- AllowOverride None 
- Order allow,deny 
- allow from all 
- </Directory> 
- 
- ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
- <Directory "/usr/lib/cgi-bin"> 
- AllowOverride None 
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
- Order allow,deny 
- Allow from all 
- </Directory> 
- 
- ErrorLog /var/log/apache2/error.log 
- 
- # Possible values include: debug, info, notice, warn, error, crit, 
- # alert, emerg. 
- LogLevel warn 
- 
- CustomLog /var/log/apache2/access.log combined 
- 
-    Alias /doc/ "/usr/share/doc/" 
-    <Directory "/usr/share/doc/"> 
-        Options Indexes MultiViews FollowSymLinks 
-        AllowOverride None 
-        Order deny,allow 
-        Deny from all 
-        Allow from 127.0.0.0/255.0.0.0 ::1/128 
-    </Directory> 
- 
-</VirtualHost> 
-</file> 
- 
-Ceci fait, enregistrez le fichier sous le nom **monsite1** puis modifiez-le en mettant cette fois **monsite2** à la place de **monsite1**, puis ré-enregistrez sous le nom de **monsite2**. 
- 
-Pour terminer, il vous suffit de créer des liens des deux fichiers nouvellement créés dans le dossier **/etc/apache2/sites-enabled**. Pour ce faire, une commande a été faite spécialement :  
-<file>sudo a2ensite monsite1 
-sudo a2ensite monsite2</file> 
- 
-Puis, afin de recharger la configuration d'Apache : 
-<file> 
-/etc/init.d/apache2 reload 
-</file> 
- 
-Vous pouvez alors accéder aux deux sites ! http://monsite1.fr affichera le contenu du dossier site1 et http://monsite2.fr affichera le contenu du dossier site2. 
- 
-===== Hôtes virtuels basés sur le port ===== 
- 
-Par défaut, le Serveur Web Apache2 est configuré pour écouter sur le **port 80**. Il est possible d'utiliser des ports différents pour chaque hôte virtuel. 
- 
-Dans cet exemple, les deux Sites Virtuels **virtual1.com** et **virtual2.com** se partagent la même adresse IP : **192.168.0.2**. Seul le port d'écoute est différent. 
- 
-Dans un premier temps, nous allons éditer le fichier **/etc/hosts** afin de déclarer les 2 noms de domaine associés à la seule et unique adresse IP de notre interface réseau. Ceci permettra la résolution de nom (Nom => Adresse Ip). 
- 
-**Exemple de fichier hosts :** 
-<file> 
-127.0.0.1 localhost 
-192.168.0.2 virtual1.com 
-192.168.0.2 virtual2.com 
-</file> 
-Ensuite, nous créons 2 fichiers de configuration **virtual1.conf** et **virtual2.conf** de la même manière qu'avec la méthode précédente, mais contenant : 
- 
-**virtual1.conf :** 
-<file> 
-<VirtualHost 192.168.0.2:80> 
- DocumentRoot /var/www/virtual1.com 
- ServerName virtual1.com 
-</VirtualHost> 
- 
-</file> 
-**virtual2.conf :** 
-<file> 
-<VirtualHost 192.168.0.2:8080> 
- DocumentRoot /var/www/virtual2.com 
- ServerName virtual2.com 
-</VirtualHost> 
- 
-</file> 
- 
-Activez alors les hôtes virtuels de la même manière qu'avec la première méthode et rechargez la configuration du serveur Apache2.. 
- 
-Le site **virtual1.com** sera accessible via l'url : http://virtual1.com et le site **virtual2.com** via l'url : http://virtual2.com:8080 
- 
-===== Hôtes virtuels basés sur l'IP ===== 
- 
-Dans le cadre de cette méthode, le Serveur est soit doté de plusieurs interfaces réseau , soit de plusieurs adresses IP associées à une seule interface réseau. 
-Dans ce dernier cas, on parlera d'**IP aliasing**. Les systèmes GNU/Linux, notamment les distributions Ubuntu et Debian, permettent de mettre facilement en oeuvre cette fonctionnalité. 
- 
-==== Association d'une 2nd IP à une interface réseau (IP aliasing) ==== 
- 
-Dans cet exemple, nous partirons du principe que nous possédons une seule interface réseau à laquelle nous voulons associer une seconde adresses IP. 
- 
-Consultons la configuration réseau de la machine : 
-  sudo ifconfig 
-Nous obtenons quelque chose comme 
-<file> 
-eth0      Lien encap:Ethernet  HWaddr 00:13:D3:3C:58:84 
-          inet adr:192.168.0.2  Bcast:192.168.0.255  Masque:255.255.255.0 
-          adr inet6: fe80::213:d3ff:fe3c:5884/64 Scope:Lien 
-          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
-          Packets reçus:1257 erreurs:0 :0 overruns:0 frame:0 
-          TX packets:1247 errors:0 dropped:0 overruns:0 carrier:0 
-          collisions:0 lg file transmission:1000 
-          Octets reçus:1037747 (1013.4 KiB) Octets transmis:423117 (413.2 KiB) 
-          Interruption:209 Adresse de base:0x8000 
- 
-lo        Lien encap:Boucle locale 
-          inet adr:127.0.0.1  Masque:255.0.0.0 
-          adr inet6: ::1/128 Scope:Hôte 
-          UP LOOPBACK RUNNING  MTU:16436  Metric:1 
-          Packets reçus:429 erreurs:0 :0 overruns:0 frame:0 
-          TX packets:429 errors:0 dropped:0 overruns:0 carrier:0 
-          collisions:0 lg file transmission:0 
-          Octets reçus:117583 (114.8 KiB) Octets transmis:117583 (114.8 KiB)</file> 
-Ce qui nous intéresse ici est la première série d'informations. Elle nous indique que nous disposons d'une interface réseau (**eth0**) de type **Ethernet** à laquelle est associée l'adresse IP **192.168.0.2**. 
- 
-Nous devons donc associer une seconde adresse IP à notre interface réseau avec la commande : 
-  sudo ifconfig eth0:0 192.168.0.100 
- 
-Notre interface réseau dispose maintenant de 2 adresses IP bien distinctes : **192.168.0.2** (Adresse IP) et **192.168.0.100** (Alias IP) 
- 
-Ceci est vérifiable avec la commande : 
-  sudo ifconfig -a 
- 
-==== Configuration des hôtes virtuels ==== 
- 
-Ayant associé une nouvelle adresse IP à notre unique carte réseau, nous pouvons désormais créer nos deux **Hôtes Virtuels** utilisant chacun une adresse IP. 
- 
-Dans un premier temps, nous renseignons le fichier **/etc/hosts** avec deux noms de sites (ceux de nos hôtes Virtuels) associés respectivement aux deux adresses IP disponibles afin de permettre la résolution de nom (Nom => Adresse Ip).  
- 
-**Exemple de fichier hosts :** 
-<file> 
-127.0.0.1 localhost 
-192.168.0.2 virtual1.com 
-192.168.0.100 virtual2.com 
-</file> 
- 
-Une fois notre fichier ''/etc/hosts'' correctement renseigné, il ne nous reste plus qu'à configurer nos hôtes virtuels en créant deux nouveaux fichiers dans le répertoire **/etc/apache2/sites-available** : 
- 
-**virtual1.conf :** 
-<file> 
-<VirtualHost 192.168.0.2:80> 
- DocumentRoot /var/www/virtual1.com 
- ServerName virtual1.com 
-</VirtualHost> 
-</file> 
- 
-**virtual2.conf :** 
-<file> 
-<VirtualHost 192.168.0.100:80> 
- DocumentRoot /var/www/virtual2.com 
- ServerName virtual2.com 
-</VirtualHost></file> 
- 
-**Explication :** 
- 
-Dans chacun des fichiers de configuration, on retrouve pour l'hôte virtuel, l'adresse IP choisie, ainsi que le port (80). Les 2 directives minimales sont **DocumentRoot** et **ServerName**. 
- 
-**DocumentRoot** permet de déclarer l'emplacement de l'arborescence Web de l'hôte virtuel (l'emplacement des fichiers sur votre système). Le nom du répertoire ne doit pas comporter le caractère **/** final. 
- 
-**ServerName** permet de définir le **nom de domaine** du Serveur Virtuel. 
- 
-<note>Les répertoires ''/var/www/virtual1.com'' et ''/var/www/virtual2.com'' doivent exister et bénéficier des bonnes permissions.\\ 
-Pour les tests vous pouvez utiliser le chmod 755 sur ces répertoires.</note> 
- 
-Nos deux hôtes virtuels étant configurés, nous allons les activer avec les commandes : 
-  sudo a2ensite virtual1.conf 
-  sudo a2ensite virtual2.conf 
- 
-N'oubliez pas de recharger la configuration du serveur : 
-  sudo /etc/init.d/apache2 reload 
- 
----- 
- 
- //Contributeurs : [[utilisateurs:M. DECLERCQ]], [[utilisateurs:_Enchained]], [[utilisateurs:dolmen]], [[utilisateurs:stephaneguedon]], [[utilisateurs:monsar01]]//