Comment créer et configurer un hôte virtuel sur Apache ?
Pré-requis
Ce tutoriel décrit la création et la configuration d'un hôte virtuel (virtual host) sur un serveur Apache. Cela va permettre de créer plusieurs sites web associés chacun à un nom de domaine en local sur un même serveur web.
Nous supposons que votre système dispose déjà de :
- un environnement LAMP (Linux/Apache/MySQL/PHP) ou équivalent (WAMP, XAMPP, MAMP...) ;
- un accès root.
Qu'est-ce qu'un hôte virtuel ou virtual host ?
Un hôte virtuel est un point d'entrée sur un serveur web (ici Apache) qui se concrétise par l'association entre un nom de domaine et son site web. Un serveur web peut donc héberger et gérer plusieurs sites web grâce à ce système de virtualisation. C'est le principe d'un serveur mutualisé.
Création d'un hôte virtuel sur Linux
Dans le cadre de ce tutoriel, nous allons créer un hôte virtuel avec le nom de domaine aftutorial.loc
, qui sera utilisé pour pointer sur le site web du tutoriel en local. Les sources de ce site web sont disponibles en téléchargement.
Procédons pas à pas :
- éditer le fichier
/etc/hosts
:sudo nano /etc/hosts
- définir le DNS, qui va permettre d'associer le nom de domaine
aftutorial.loc
en local avec une adresse IP (ici127.0.0.1
). Pour cela, ajouter sur une nouvelle ligne, la déclaration suivante :127.0.0.1 aftutorial.loc
- enregistrer puis quitter le fichier
/etc/hosts
. Il faut savoir que chaque ligne significative (hors commentaire) définit l'association entre une adresse IP et un nom de domaine, et que plusieurs noms de domaine peuvent avoir la même adresse IP. Par exemple :# This line is a comment # Each comment line must start with hash character # Here our AF tutorial local web site 127.0.0.1 aftutorial.loc # Others local web sites 127.0.0.1 my-personal-project.loc 127.0.0.1 another-local-web-site.loc 127.0.0.1 test.loc
- créer le dossier du site web
aftutorial.org
dans le dossier/var/www/
(ou dans un autre dossier de votre choix) en saisissant la ligne de commande suivante :mkdir -p /var/www/aftutorial.org
- noter que le dossier du projet ne se nomme pas
aftutorial.loc
. En effet, ce dernier désigne le nom de domaine pour l'accès en local, alors queaftutorial.org
correspond à celui de la production. Nous avons ainsi un nom de domaine par environnement. Pour faciliter le nommage du dossier projet et des fichiers de configuration, c'est le nom de domaine de production qui est utilisé. Cette pratique de nommage n'est pas une obligation, mais reste toutefois une bonne pratique. - attribuer les droits au dossier projet
aftutorial.org
:chown -R www-data:www-data /var/www/aftutorial.org chmod -R 755 /var/www
- copier le fichier de configuration par défaut :
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/aftutorial.org.conf
- noter que le nom de domaine de production
aftutorial.org
est repris aussi bien pour le nom du dossier du projet que pour le nom de fichier de configuration, et que l'extension du fichier de configuration est.conf
; - éditer le fichier de configuration :
nano /etc/apache2/sites-available/aftutorial.org.conf
- adapter le contenu à notre projet :
Ici, nous nous limiterons au protocole http et non https.<VirtualHost *:80> # Associate domain name with project folder ServerAdmin webmaster@aftutorial.org DocumentRoot /var/www/aftutorial.org/ ServerName aftutorial.loc ServerAlias aftutorial.loc # (optional) Define log files ErrorLog ${APACHE_LOG_DIR}/aftutorial.org-error.log CustomLog ${APACHE_LOG_DIR}/aftutorial.org-access.log combined # (optional) Define log level (possible values include: debug, info, notice, warn, error, crit, alert, emerg) LogLevel warn <directory /var/www/aftutorial.org> AllowOverride All # New directive needed in Apache 2.4.3: Require all granted </Directory> </VirtualHost>
- enregistrer, puis quitter le fichier de configuration ;
- activer l'hôte virtuel
aftutorial.loc
configuré dans le fichier de configuration/etc/apache2/sites-available/aftutorial.org.conf
:
et si vous avez besoin de le désactiver, c'est :a2ensite /etc/apache2/sites-available/aftutorial.org.conf
a2dissite /etc/apache2/sites-available/aftutorial.org.conf
- afficher le contenu du dossier
/etc/apache2/sites-enabled
:ll /etc/apache2/sites-enabled
- vérifier la présence du lien symbolique
aftutorial.org.conf
. Par exemple :lrwxrwxrwx 1 root root 35 apr. 18 2019 aftutorial.org.conf -> ../sites-available/aftutorial.org.conf
- relancer le serveur Apache pour prendre en compte notre hôte virtuel :
service apache2 restart
- créer rapidement un fichier
index.html
ouindex.php
en y mettant un contenu (ex : "Hello world!"), puis le placer dans le dossier du projet/var/www/aftutorial.org/
; - lancer le site en local avec votre navigateur préféré en utilisant l'URL suivant :
http://aftutorial.loc
- vérifier l'affichage du contenu saisi précédemment dans le fichier index. Si "Hello world!" est affiché, alors l'hôte virtuel fonctionne. Il ne reste plus qu'à y installer le site du tutoriel, ou un nouveau projet Adventy.