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
# Listen 80 # Listen 8080 # <VirtualHost *> <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/.
VirtualHost *:80 | Le service https accepte toutes les requêtes, sur le port 80, de toutes adresses IP de son serveur hôte . Exemple pour un serveur avec deux adresses IP: Listen 80 <VirtualHost 192.168.0.2> DocumentRoot « /www/exemple1 » ServerName www.exemple.com </VirtualHost> <VirtualHost 192.168.0.3> DocumentRoot « /www/exemple2 » ServerName www.exemple.org </VirtualHost> |
ServerName | Renseigne le nom de domaine (DNS) à utiliser pour afficher le site web. Note: Pour un test local, renseigner le fichier ‘hosts’ |
ServerAlias | Renseigne les sous domaines de ServerName. Par exemple, www.mondomaine.com |
DocumentRoot | Renseigne le dossier racine du site Web. |
<Directory>…</Directory> | Permet de renseigner des règles locales d’accès aux ressources du site web. Exemple: <Directory /var/www/site1.abc/public_html> Options -Indexes +FollowSymLinks AllowOverride All </Directory> |
Options | |
(-+)Indexes | Prévient ou permet l’affichage des fichiers du dossier. |
(-+)FollowsSymLinks | Prévient ou permet de suivre les liens symboliques. |
AllowOverride | Permet la modification de la configuration globale d’Apache2 via le fichier .htaccess |
Require | Précise l’accès aux ressources. Exemples: Require all granted Require not ip 10.252.46.165 Require not host gov <If « %{HTTP_USER_AGENT} == ‘BadBot' »> …..Require all denied </If> |
ErrorLog CustomLog | Renseigne le chemin d’accès des fichiers ‘log’ Exemple: ErrorLog ${APACHE_LOG_DIR}/site1.abc-error.log Note: La variable d’environnement APACHE_LOG_DIR est définie dans le fichier /etc/apache2/envvars |
Référence: Apache2
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.
Créer un site web de type ‘hôte virtuel‘
Voici une capture d’écran du résultat obtenu à partir de l’URL: http://siteweb.maison:88/
Note: l’URL de l’image est : http://ve2cuy.com/420-4d4b/wp-content/uploads/2021/02/tube-chat-png.png
Voici une capture d’écran du résultat obtenu à partir de l’URL: http://siteweb.maison:88/telechargement/
Il est possible de localiser le dossier d’un site web de type ‘hôte virtuel’ à l’extérieur de la structure par défaut du service Apache2.
Par contre, il sera nécessaire de renseigner les paramètres d’accès de ce site web dans le fichier de configuration générale d’Apache2, soit le fichier /etc/apache2/apache2.conf.
Par exemple,
# Sets the default security model of the Apache2 HTTPD server. It does # not allow access to the root filesystem outside of /usr/share and /var/www. # The former is used by web applications packaged in Debian, # the latter may be used for local directories served by the web server. If # your system is serving content from a sub-directory in /srv you must allow # access here, or in any related virtual host. <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # Exemple d'un dossier web à l'extérieur de la structure par défaut d'Apache2 <Directory /siteweb/> Options -Indexes FollowSymLinks AllowOverride all Require all granted </Directory>
Note: Le bloc précédent est un extrait du fichier de configuration du service Apache2, situé dans le dossier /etc/apache2.
Il faut proposer le site web de la cie-abc.tropcool sous wordpress version 5 latest via l’URL:
http://cie-abc.tropcool