Skip to content

HowTo VHosts

Ben edited this page Jan 22, 2017 · 9 revisions

Les virtual hosts dans apache

Le principe général des virtual hosts dans apache est expliqué dans ce paragraphe.

On va s'attacher dans ce HowTo à créer 2 nouveaux virtual hosts dans apache, accessibles aux URLs :

Toutes les commandes ci-dessous sont à éxécuter dans la VM, connecté via ssh , sauf avis contraire.

La résolution de nom : le DNS, le fichier /etc/hosts

On va déclarer localement les noms de domaine dont on a besoin. En effet, la résolution de nom de domaine se fait en plusieurs étapes, lorsque vous demandez google.com, par exemple.
L'idée est de trouver une correspondance nom de domaine <-> adresse IP du serveur qui l'héberge. La résolution du nom se fait dans cet ordre, en très gros :

  1. recherche du nom de domaine localement dans le fichier local /etc/hosts
  2. si pas trouvé, interrogation du serveur DNS dont l'adresse est configurée dans le fichier local /etc/resolv.conf
    Plus d'informations ici : https://debian-handbook.info/browse/stable/sect.hostname-name-service.html

On va déclarer nos noms de domaine dans le fichier /etc/hosts donc, pour bypasser la résolution "officielle" du nom de domaine. Notre système local saura où pointer pour accéder au service derrière simplon1.local , mais il sera le seul.

  • on édite le fichier /etc/hosts pour y ajouter nos 2 noms de domaine locaux ; sudo pico /etc/hosts fait le job. On ajoute les 2 lignes suivantes au fichier :
192.168.56.101 simplonsandbox1.local
192.168.56.101 simplonsandbox2.local
  • on vérifie que le nom est bien résolu, par exemple en lançant un ping :
$ ping simplonsandbox1.local
PING simplonsandbox1.local (192.168.56.101) 56(84) bytes of data.

Les 2 noms de domaine pointent sur la même adresse IP : c'est apache qui va router la requête vers le bon vhost en examinant la valeur du header Host. Voir ce paragraphe.

Désactiver le site 000-default

Le vhost 000-default activé par défaut lors de l'installation via apt doit être désactivé. En effet, il est configuré SANS valeur de ServerName, et joue donc le rôle de catchall
On le désactive simplement avec un

sudo a2dissite 000-default

Création des vhosts

On va créer les 2 fichiers de configuration de nos virtual hosts :

sudo pico /etc/apache2/sites-available/simplonsandbox1.local.conf

Ce fichier doit contenir a minima :

<VirtualHost *:80>
    DocumentRoot /var/www/simplon1
    ServerName simplonsandbox1.local
</VirtualHost>

Idem pour le nom de domaine simplonsandbox2.local

Création des dossiers configurés comme DocumentRoot

On crée les dossiers qui vont accueillir les sources des sites hébergés dans les vhosts. Ce sont les chemins définis comme DocumentRoot dans les configurations des vhosts.

  • on crée les dossiers
sudo mkdir /var/www/simplon1
sudo mkdir /var/www/simplon2
  • puis on les attribue à l'user unix www-data
sudo chown -R www-data.www-data /var/www/simplon1
sudo chown -R www-data.www-data /var/www/simplon1
  • puis on ouvre les droits en 775
sudo chmod -R 775 /var/www/simplon1
sudo chmod -R 775 /var/www/simplon1
  • puis on ajoute l'user simplon au groue www-data De cette manière l'user simplon pourra se servir des fichiers comme il veut
sudo adduser simplon www-data

Activation des vhosts

On active les sites configurés comme vhosts ;

a2ensite simplonsandbox1.local
a2ensite simplonsandbox2.local

Redémarrage apache

On redémarre apache, les sites devraient être accessibles après ça :

sudo service apache2 restart

A ce stade, on a le stack complet LAMP avec vitual hosts : stack complet

Les sites sont accessibles

On place un fichier /var/www/simplon1/index.php qui contient :

<?php
phpinfo() ;
?>

Et un autre fichier /var/www/simplon2/index.php qui contient :

<?php
echo 'sur le vhost simplon2' ;
?>

On accède aux sites

Depuis le système hôte on dirige son navigateur web sur les URLs :

La réécriture d'URL

Voir le How To dédié.

Clone this wiki locally