01- Apache (Serveur web)
Les Virtual Hosts (vhosts) sous Apache
C’est quoi un Virtual Host ?
Un Virtual Host (ou vhost) permet à un même serveur Apache de gérer plusieurs sites web différents. Chaque vhost peut avoir :
- son propre nom de domaine (ex. www.site1.local),
- son dossier racine (où sont les fichiers du site),
- ses logs séparés, etc.
C’est grâce aux vhosts qu’un seul serveur peut héberger plusieurs sites.
Où ça se trouve ?
Sous Linux la configuration des Vhosts se fait :
/etc/apache2/sites-available/ → contient tous les fichiers de configuration des sites
/etc/apache2/sites-enabled/ → contient les sites actuellement activés (liens symboliques pointant vers sites-available )
Attention
NE TOUCHEZ PAS AUX SITES PAR DÉFAUT (000-default.conf, default-ssl.conf) Ces fichiers servent de base et assurent que ton Apache démarre correctement. Crée tes propres fichiers .conf à côté, c’est plus propre.
Exemple de configuration
Fichier : /etc/apache2/sites-available/mon_site.conf
<VirtualHost *:80>
ServerName monsite.domaine.tld # Nom FQDN correspondant à l'url
ServerAlias autrenom.domaine.tld # Nom alternatif (nom obligatoire)
DocumentRoot /var/www/monsite #Dossier ou sont situé les fichiers html
<Directory /var/www/monsite> #Autorisation d'accès
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#Gestion des logs (indispensable)
ErrorLog ${APACHE_LOG_DIR}/monsite_error.log
CustomLog ${APACHE_LOG_DIR}/monsite_access.log combined
</VirtualHost>
Explications :
- ServerName → le nom de domaine principal du site.
- ServerAlias → d’autres noms qui pointent vers le même site.
- DocumentRoot → dossier contenant ton site.
- ErrorLog / CustomLog → fichiers de log spécifiques à ce site.
Activer un vhost (et la magie du a2ensite)
Une fois le fichier créé :
Information
a2ensite veut dire “Apache2 Enable Site”
Mais en réalité, c’est juste un raccourci pour créer un lien symbolique :
Donc a2ensite = ln -s (avec un peu d’intelligence en plus pour vérifier la conf).
L’inverse,
Donc a2dissite, fait un rm du lien symbolique
Important
Vérifier le status du service:
sudo systemctl status apache2,
Pour les logs:
${APACHE_LOG_DIR} --> /var/log/apache2/ (sous debian),
Les erreurs classiques
- Modifier
000-default.confau lieu de créer un vrai fichier : NON. - Oublier le
ServerName: Apache ne sait pas quel site servir. - Ne pas recharger Apache : les modifs ne sont pas prises en compte.
- Oublier d’ajouter l'enregistrement DNS correspondant sur le serveur d'autorité (ou à minima configurer le fichier host pour faire pointer le FQDN vers la bonne adresse IP).