Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:virtualhosts_avec_apache2 [Le 05/06/2015, 17:39] – [Astuce: empêcher l'accès au serveur via son adresse IP] 89.3.95.54 | tutoriel:virtualhosts_avec_apache2 [Le 19/07/2018, 13:23] (Version actuelle) – Vétuste L'Africain | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | ||
| - | ---- | ||
| - | |||
| - | ====== 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' | ||
| - | |||
| - | 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", | ||
| - | |||
| - | Nous renseignons le fichier **/ | ||
| - | |||
| - | 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 **/ | ||
| - | |||
| - | < | ||
| - | |||
| - | ===== 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' | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | 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) : | ||
| - | < | ||
| - | gksudo gedit /etc/hosts | ||
| - | </ | ||
| - | et rajouter les deux lignes suivantes : | ||
| - | < | ||
| - | 127.0.0.1 monsite1.fr | ||
| - | 127.0.0.1 monsite2.fr | ||
| - | </ | ||
| - | |||
| - | Puis nous allons créer deux dossiers dans le dossier **/ | ||
| - | |||
| - | < | ||
| - | sudo mkdir / | ||
| - | sudo mkdir / | ||
| - | </ | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | < | ||
| - | sudo mkdir / | ||
| - | sudo mkdir / | ||
| - | |||
| - | sudo ln -s / | ||
| - | sudo ln -s / | ||
| - | |||
| - | sudo chown -hR $USER:users / | ||
| - | sudo chown -hR $USER:users / | ||
| - | |||
| - | sudo chmod -R 755 / | ||
| - | sudo chmod -R 755 / | ||
| - | </ | ||
| - | |||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | Ces dossiers faits, nous allons créer les fichiers de configurations pour apache. Dans **/ | ||
| - | < | ||
| - | < | ||
| - | ServerAdmin votre-mail@monsite1.fr | ||
| - | ServerName monsite1.fr | ||
| - | ServerAlias www.monsite1.fr | ||
| - | |||
| - | DocumentRoot / | ||
| - | < | ||
| - | Options FollowSymLinks | ||
| - | AllowOverride None | ||
| - | </ | ||
| - | < | ||
| - | Options Indexes FollowSymLinks MultiViews | ||
| - | AllowOverride None | ||
| - | Order allow,deny | ||
| - | allow from all | ||
| - | </ | ||
| - | |||
| - | ScriptAlias /cgi-bin/ / | ||
| - | < | ||
| - | AllowOverride None | ||
| - | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
| - | Order allow,deny | ||
| - | Allow from all | ||
| - | </ | ||
| - | |||
| - | ErrorLog / | ||
| - | |||
| - | # Possible values include: debug, info, notice, warn, error, crit, | ||
| - | # alert, emerg. | ||
| - | LogLevel warn | ||
| - | |||
| - | CustomLog / | ||
| - | |||
| - | Alias /doc/ "/ | ||
| - | < | ||
| - | Options Indexes MultiViews FollowSymLinks | ||
| - | AllowOverride None | ||
| - | Order deny,allow | ||
| - | Deny from all | ||
| - | Allow from 127.0.0.0/ | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Ceci fait, enregistrez le fichier sous le nom **monsite1.conf** puis modifiez-le en mettant cette fois **monsite2** à la place de **monsite1**, | ||
| - | |||
| - | <note important> | ||
| - | Si vous utilisez Drupal et le module apache mod_rewrite, | ||
| - | </ | ||
| - | |||
| - | Pour terminer, il vous suffit de créer des liens des deux fichiers nouvellement créés dans le dossier **/ | ||
| - | < | ||
| - | sudo a2ensite monsite2.conf</ | ||
| - | |||
| - | Puis, afin de recharger la configuration d' | ||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | Vous pouvez alors accéder aux deux sites ! http:// | ||
| - | |||
| - | <note warning> | ||
| - | Si l'url http:// | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Voici la commande pour désactiver le site " | ||
| - | < | ||
| - | sudo a2dissite monsite1 | ||
| - | sudo / | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ===== Astuce: empêcher l' | ||
| - | |||
| - | Pour des raisons diverses, on peut souhaiter empêcher les utilisateurs ne découvrant que l' | ||
| - | |||
| - | La syntaxe est la suivante: il suffit de modifier le fichier / | ||
| - | |||
| - | < | ||
| - | ServerName www.xxx.yyy.zzz | ||
| - | < | ||
| - | Deny from all | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Où " | ||
| - | |||
| - | Le //Deny from all// bloque l' | ||
| - | |||
| - | On garde ensuite, dans le même fichier, la configuration habituelle, avec une petite modification: | ||
| - | < | ||
| - | < | ||
| - | ServerAdmin webmaster@localhost | ||
| - | ServerName mon_joli_domaine | ||
| - | [...]blah blah | ||
| - | </ | ||
| - | Il faut ajouter la directive // | ||
| - | |||
| - | Attention: cette technique n'est pas, à proprement parlé, une " | ||
| - | |||
| - | ===== 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' | ||
| - | |||
| - | 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' | ||
| - | |||
| - | Dans un premier temps, nous allons éditer le fichier **/ | ||
| - | |||
| - | **Exemple de fichier hosts :** | ||
| - | < | ||
| - | 127.0.0.1 localhost | ||
| - | 192.168.0.2 virtual1.com | ||
| - | 192.168.0.2 virtual2.com | ||
| - | </ | ||
| - | Ensuite, nous créons 2 fichiers de configuration **virtual1.conf** et **virtual2.conf** de la même manière qu' | ||
| - | |||
| - | **virtual1.conf :** | ||
| - | < | ||
| - | < | ||
| - | DocumentRoot / | ||
| - | ServerName virtual1.com | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | **virtual2.conf :** | ||
| - | < | ||
| - | < | ||
| - | DocumentRoot / | ||
| - | ServerName virtual2.com | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | |||
| - | Activez alors les hôtes virtuels de la même manière qu' | ||
| - | |||
| - | Précisez au serveur Apache2 d' | ||
| - | |||
| - | < | ||
| - | # If you just change the port or add more ports here, you will likely also | ||
| - | # have to change the VirtualHost statement in | ||
| - | # / | ||
| - | # This is also true if you have upgraded from before 2.2.9-3 (i.e. from | ||
| - | # Debian etch). See / | ||
| - | # README.Debian.gz | ||
| - | |||
| - | NameVirtualHost *:80 | ||
| - | Listen 80 | ||
| - | Listen 8080 | ||
| - | < | ||
| - | # SSL name based virtual hosts are not yet supported, therefore no | ||
| - | # NameVirtualHost statement here | ||
| - | Listen 443 | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | Enfin, rechargez la configuration du serveur Apache2. | ||
| - | |||
| - | Le site **virtual1.com** sera accessible via l'url : http:// | ||
| - | |||
| - | ===== Hôtes virtuels basés sur l' | ||
| - | |||
| - | 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 adresse 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 : | ||
| - | ifconfig | ||
| - | Nous obtenons quelque chose comme | ||
| - | < | ||
| - | eth0 Lien encap: | ||
| - | inet adr: | ||
| - | adr inet6: fe80:: | ||
| - | UP BROADCAST RUNNING MULTICAST | ||
| - | Packets reçus:1257 erreurs:0 :0 overruns:0 frame:0 | ||
| - | TX packets: | ||
| - | collisions: | ||
| - | Octets reçus: | ||
| - | Interruption: | ||
| - | |||
| - | lo Lien encap: | ||
| - | inet adr: | ||
| - | adr inet6: ::1/128 Scope:Hôte | ||
| - | UP LOOPBACK RUNNING | ||
| - | Packets reçus:429 erreurs:0 :0 overruns:0 frame:0 | ||
| - | TX packets:429 errors:0 dropped:0 overruns:0 carrier:0 | ||
| - | collisions: | ||
| - | Octets reçus: | ||
| - | Ce qui nous intéresse ici est la première série d' | ||
| - | |||
| - | 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 : | ||
| - | 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 **/ | ||
| - | |||
| - | **Exemple de fichier hosts :** | ||
| - | < | ||
| - | 127.0.0.1 localhost | ||
| - | 192.168.0.2 virtual1.com | ||
| - | 192.168.0.100 virtual2.com | ||
| - | </ | ||
| - | |||
| - | Une fois notre fichier ''/ | ||
| - | |||
| - | **virtual1.conf :** | ||
| - | < | ||
| - | < | ||
| - | DocumentRoot / | ||
| - | ServerName virtual1.com | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | **virtual2.conf :** | ||
| - | < | ||
| - | < | ||
| - | DocumentRoot / | ||
| - | ServerName virtual2.com | ||
| - | </ | ||
| - | |||
| - | **Explication :** | ||
| - | |||
| - | Dans chacun des fichiers de configuration, | ||
| - | |||
| - | **DocumentRoot** permet de déclarer l' | ||
| - | |||
| - | **ServerName** permet de définir le **nom de domaine** du Serveur Virtuel. | ||
| - | |||
| - | < | ||
| - | Pour les tests vous pouvez utiliser le chmod 755 sur ces répertoires.</ | ||
| - | |||
| - | Nos deux hôtes virtuels étant configurés, | ||
| - | sudo a2ensite virtual1.conf | ||
| - | sudo a2ensite virtual2.conf | ||
| - | |||
| - | N' | ||
| - | sudo / | ||
| - | |||
| - | |||
| - | ===== Ressources externes ===== | ||
| - | |||
| - | * Exemples de la documentation officielle : [[http:// | ||
| - | |||
| - | ---- | ||
| - | |||
| - | // | ||
