Déclarer un hôte virtuel pour enovatic.be
Objectif : Créer un fichier de configuration dédié qui associe l’hôte principal du projet à sa racine de documents.
Quand Apache reçoit une requête, il doit déterminer quel site servir et où trouver ses fichiers. Sans association explicite entre un nom d’hôte et une racine de documents, vous risquez de servir le mauvais contenu ou de rendre le site inaccessible.
Vous allez créer un fichier réservé à l’hôte principal du projet, puis déclarer le nom auquel il répond et le répertoire dont Apache servira les fichiers. Le contrat du projet fixe les noms site.example.test et api.example.test ; ils sont utilisés ici à la place du nom évoqué dans le titre de la leçon afin de conserver une configuration cohérente avec les fichiers du fil rouge.
Associer un nom d’hôte à son contenu
Un hôte virtuel est une configuration qui permet à Apache de choisir un site en fonction des caractéristiques de la requête, notamment le nom d’hôte demandé. Le bloc <VirtualHost *:80> ci-dessous concerne les requêtes reçues sur le port HTTP 80, sur les interfaces réseau disponibles. Il ne crée pas encore une redirection vers HTTPS : cette étape appartient à une leçon ultérieure.
La directive ServerName indique le nom d’hôte que ce bloc doit reconnaître. Pour le site principal du projet, utilisez site.example.test. La directive DocumentRoot désigne le répertoire depuis lequel Apache fournit les fichiers ; la racine de ce site est déjà définie dans l’arborescence du projet à /var/www/application.
Créer le fichier de l’hôte principal
Dans le dépôt du projet, le fichier à préparer est apache/site-http.conf. Le chemin d’installation de ce fichier de site dépend de la distribution, comme indiqué dans la première leçon ; ne modifiez pas le fichier global d’Apache. Le contenu ci-dessous est complet pour cette première déclaration HTTP et conserve la séparation prévue entre les fichiers de configuration du projet.
<VirtualHost *:80>
ServerName site.example.test
DocumentRoot /var/www/application
<Directory /var/www/application>
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/application-error.log
CustomLog ${APACHE_LOG_DIR}/application-access.log combined
</VirtualHost>Le bloc <Directory> autorise Apache à servir le contenu du répertoire indiqué. Cette autorisation ne remplace pas les permissions du système de fichiers : les répertoires parents doivent rester traversables et les fichiers lisibles par l’utilisateur d’exécution d’Apache, conformément aux réglages de la leçon précédente. Les deux directives de journalisation donnent à cet hôte des chemins distincts pour les erreurs et les accès ; APACHE_LOG_DIR est une variable courante sur Debian et Ubuntu, à adapter si votre distribution utilise une autre convention.
Vérifier la cohérence du fichier
Avant toute étape d’activation, vérifiez que le bloc est correctement ouvert et fermé, que le nom est écrit sans protocole ni chemin, et que la racine correspond bien au site principal. Le fichier ne doit contenir que la déclaration de cet hôte ; le second hôte sera ajouté dans son fichier dédié lors de la prochaine leçon. Vous n’activez pas encore le site et ne rechargez pas Apache à cette étape : la procédure de test puis de rechargement sera traitée séparément.
À retenir
- Un bloc VirtualHost décrit le site auquel Apache peut répondre sur une adresse et un port.
- ServerName déclare le nom d’hôte principal associé au bloc.
- DocumentRoot indique le répertoire des fichiers servis par cet hôte.
- Le fichier apache/site-http.conf contient l’hôte principal ; le fichier global reste inchangé.
- Cette étape prépare la configuration : n’activez ni ne rechargez pas encore Apache.
Dans la prochaine leçon, vous ajouterez le second nom prévu par le contrat du projet et verrez comment le faire répondre sans mélanger les deux hôtes.