-
Notifications
You must be signed in to change notification settings - Fork 5
HowTo VHosts
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.
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 :
- recherche du nom de domaine localement dans le fichier local
/etc/hosts - 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/hostspour y ajouter nos 2 noms de domaine locaux ;sudo pico /etc/hostsfait 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.
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-defaultOn va créer les 2 fichiers de configuration de nos virtual hosts :
sudo pico /etc/apache2/sites-available/simplonsandbox1.local.confCe fichier doit contenir a minima :
<VirtualHost *:80>
DocumentRoot /var/www/simplon1
ServerName simplonsandbox1.local
</VirtualHost>Idem pour le nom de domaine simplonsandbox2.local
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
simplonau grouewww-dataDe cette manière l'user simplon pourra se servir des fichiers comme il veut
sudo adduser simplon www-dataOn active les sites configurés comme vhosts ;
a2ensite simplonsandbox1.local
a2ensite simplonsandbox2.localOn redémarre apache, les sites devraient être accessibles après ça :
sudo service apache2 restartA ce stade, on a le stack complet LAMP avec vitual hosts :

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' ;
?>Depuis le système hôte on dirige son navigateur web sur les URLs :
- http://simplonsandbox1.local
- http://simplonsandbox2.local
- http://simplonsandbox1.local/phpmyadmin
- http://simplonsandbox2.local/phpmyadmin
Voir le How To dédié.