Les Virtuals Host ou vHosts permettent l’hébergement de plusieurs domaines sur un même système souvent doté d’une seule IP publique.
Pré-requis
Pour commencer, votre système doit être disposé à minima Apache voire d’une structure LAMP (Linx/Apache/MySQL/PHP). Le cas échéant, on procède à son installation via la commande suivante :
sudo apt-get install apache2
Ce tutoriel va détailler comment héberger les domaine_un.com et domaine_deux.com sur le même système.
Arborescence
Nous allons ensuite mettre en place l’arborescence nécessaire à la mise en place de notre vhost pour gérer les 2 domaines :
mkdir -p /var/www/domaine_un.com/public_html mkdir -p /var/www/domaine_deux.com/public_html
On attribue les droits correspondants aux dossiers www, domaine_un.com et domaine_deux.com
chown -R www-data:www-data /var/www/html/domaine_un.com chown -R www-data:www-data /var/www/html/domaine_deux.com chmod -R 755 /var/www
On créé 2 pages HTML par défaut pour chacun des sites :
echo "Domaine Un" > /var/www/html/domaine_un.com/index.html echo "Domaine Deux" > /var/www/html/domaine_deux.com/index.html
Création vHost
Désormais, on peut passer à la création de notre vhost en copiant le fichier de configuration par défaut :
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domaine_un.com.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domaine_deux.com.conf
Par défaut, les deux fichiers domaine_un.com.conf et domaine_deux.com.conf ressembleront au résultat suivant :
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
On va donc modifier et ajouter les éléments suivants que l’on adaptera aux 2 domaines :
ServerAdmin webmaster@domaine_deux.com DocumentRoot /var/www/html/domaine_deux.com ServerName domaine_deux.com ServerAlias www.domaine_deux.com ServerAdmin webmaster@domaine_un.com DocumentRoot /var/www/html/domaine_un.com ServerName domaine_un.com ServerAlias www.domaine_un.com
L’adresse électronique que le serveur inclut dans les messages d’erreur envoyés au client.
Racine de l’arborescence des documents, la fonction php realpath pourra vous aider à obtenir l’information si besoin.
Nom d’hôte et port que le serveur utilise pour s’authentifier lui-même.
Autres noms d’un serveur utilisables pour atteindre des serveurs virtuels à base de nom.
Il faut maintenant activer les 2 vhosts via a2ensite qui est inclus à Apache puis relancer Apache :
a2ensite domaine_un.com.conf a2ensite domaine_deux.com.conf ll /etc/apache2/sites-enabled 25178469 lrwxrwxrwx 1 root root 29 2017-05-18 17:56 domaine_un.com.conf -> ../sites-available/domaine_un.com.conf 25204968 lrwxrwxrwx 1 root root 33 2017-05-18 17:56 domaine_deux.com.conf -> ../sites-available/domaine_deux.com.conf service apache2 restart
Configuration locale
Il est possible que vos domaines ne soit pas encore accessible pour diverses raisons.
Dans ce cas, nous allons modifier la configuration locale de votre système pour tester vos vhosts:
127.0.0.1 localhost 111.111.111.111 domaine_un.com 111.111.111.111 domaine_deux.com
IP de votre machine à modifier.
Vos deux sites seront désormais fonctionnels à condition que les zones DNS soit correctement configurées.