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édentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:virtualhosts_avec_apache2 [Le 03/10/2009, 19:25]
213.95.41.13
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​feisty serveur tutoriel brouillon}} 
  
----- 
- 
-====== Les Hôtes Virtuels (VirtualHosts) 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 troisième 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 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 :  
-<note important>​Il faut être en super utilisateur pour pouvoir créer ces dossiers</​note>​ 
-<​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 :  
-<note important>​Il faut être en super utilisateur pour pouvoir modifier ce fichier. 
-Les annotations en gras sont les modifications</​note>​ 
-<​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, enregistrer ("​Enregistrer Sous") le fichier sous le nom **monsite1** puis re-modifier le fichier en mettant cette fois **monsite2** à la place de **monsite1**,​ puis ré-enregistrer ("​Enregistrer Sous") sous le nom de **monsite2** cette fois. 
- 
-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>​ 
- 
-L'​avantage d'​utiliser cette commande est qu'​elle redémarre automatiquement le serveur apache. 
- 
-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 numéro de 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 seconde adresse IP à une même 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]]//​ 
  • tutoriel/virtualhosts_avec_apache2.1254590738.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)