Apache2 – hôtes virtuels (virtual hosts)


Mise en contexte

Imaginez un seul serveur Web (apache2) qui loge (host) une multitude de sites web avec des noms de domaine différents.

Par exemple, le même serveur publiant les sites abc.def, def.org, 420-3c3.info et tropcool.infini.

Ces sites répondants à la même adresse IP.

Nous parlons ici d’hôtes Web virtuels.

Apache2 propose des fichiers de configuration pour implémenter ce type de scénario.

Ces fichiers sont situés dans le dossier ‘/etc/apache2/sites-available/‘.


Voici la marche à suivre

Action 1.0 – Créer un répertoire pour les documents du nouveau site Web virtuel:

sudo mkdir -p /var/www/site1.abc/public_html

Action 1.1 – Créer une page d’accueil pour le nouveau site:

sudo nano /var/www/site1.abc/public_html/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Bienvenue à site1.abc</title>
  </head>
  <body>
    <h1><center>Bienvenue sur le site 'site1.abc'</center></h1>
  </body>
</html>

Action 1.2 – Changer le propriétaire du dossier et de son contenu pour l’utilisateur d’apache2:

sudo chown -R www-data: /var/www/site1.abc

NOTE: L’utilisateur et le groupe associés à l’application apache2 est défini dans le fichier /etc/apache2/envvars

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Action 1.3 – Créer le fichier suivant:

sudo nano /etc/apache2/sites-available/site1.abc.conf

<VirtualHost *:80>
    ServerName site1.abc
    ServerAlias www.site1.abc
    ServerAdmin webmaster@site1.abc
    DocumentRoot /var/www/site1.abc/public_html

    <Directory /var/www/site1.abc/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site1.abc-error.log
    CustomLog ${APACHE_LOG_DIR}/site1.abc-access.log combined
</VirtualHost>

NOTE: Les fichiers du dossier /etc/apache2/sites-available/ renseignent sur les sites disponibles sur le serveur apache local. Par contre, il faudra les activer grâce à des liens dans le dossier /etc/apache2/sites-enabled/.

Explication des directives du fichier précédent:

VirtualHost *:80Le serveur Web accepte toutes les requêtes de toutes adresses IP via le port 80
ServerNameLe nom de domaine (DNS) à utiliser pour afficher le site web
Note: Pour un test local, renseigner le fichier ‘hosts’
ServerAliasLes sous domaines de ServerName. Par exemple, www.mondomaine.com
DocumentRootLe dossier racine du site Web
<Directory>Permet de renseigner des règles locales d’accès aux ressources du site web
Options
-Indexes
+FollowsSymLinks
AllowOverride

Prévient l’affichage des fichiers du dossier web
Permet de suivre les liens symboliques
Permet la modification de la configuration globale d’Apache2 via le fichier .htaccess
ErrorLog
CustomLog

Chemin d’accès des fichiers ‘log’

Note: La variable d’environnement APACHE_LOG_DIR
est définie dans le fichier /etc/apache2/envvars

Action 1.4 – Créer un lien symbolique pour activer le site:

sudo a2ensite site1.abc

# Ou bien, manuellement avec:

sudo ln -s /etc/apache2/sites-available/site1.abc.conf /etc/apache2/sites-enabled/

NOTE: La commande a2ensite permet de créer le lien symbolique dans le répertoire /etc/apache2/sites-enabled/ directement à partir du nom de domaine du site.

Action 1.5 – Vérifier la syntaxe des fichiers de configuration d’apache2

sudo apachectl configtest

Action 1.6 – Redémarrer le service pour activer les modifications:

sudo systemctl restart apache2

Action 1.7 – Il ne reste plus qu’à tester le nouveau site virtuel:

NOTE: Vous devez avoir renseigner un nom de domaine dans votre fichier ‘hosts’ local pour pouvoir utiliser ‘site1.abc’ dans l’adresse du fureteur.


2 – Laboratoire

Il faut proposer le site web de la cie-abc.tropcool sous wordpress version 5 latest via l’URL:

http://cie-abc.tropcool


Document rédigé par Alain Boudreault – aka ve2cuy – version 2021.09.21.01