Voici le deuxième volet dans notre petite série d’articles sur le serveur web Apache. Dans le précédent article, j’ai décrit en détail l’installation et la configuration initiale d’Apache sous Rocky Linux. Aujourd’hui nous allons nous intéresser de plus près aux hôtes virtuels d’Apache. Le principe des hôtes virtuels (Virtual Hosts) consiste à faire fonctionner un ou plusieurs sites Web sur une même machine. L’utilisateur final ne perçoit pas qu’en fait il s’agit d’un même serveur physique.
Héberger plusieurs sites sur un serveur local
En guise d’atelier pratique, je vais héberger trois sites sur une machine locale :
http://slackware.sandbox.microlinux.lan
hébergera la documentation de Slackware.http://netbsd.sandbox.microlinux.lan
affichera la documentation de NetBSD.http://sandbox.microlinux.lan
pointera vers la page par défaut du serveur.
Les pages des trois sites seront rangées dans trois arborescences correspondantes :
/var/www/slackware/html
pour la documentation de Slackware/var/www/netbsd/html
pour la documentation de NetBSD/var/www/default/html
pour la page par défaut du serveur
Pour commencer, je vais déplacer le site existant (c’est-à-dire celui que j’ai récupéré dans le précédent atelier pratique) vers un nouveau répertoire /var/www/slackware/html
sans oublier de définir le propriétaire et le groupe pour tous ces fichiers :
# cd /var/www # mkdir -v slackware mkdir: created directory 'slackware' # ls cgi-bin html slackware # mv -v html/ slackware/ renamed 'html/' -> 'slackware/html' # chown -R microlinux:microlinux slackware/
Puis, je vais créer une arborescence /var/www/netbsd/html
dans lequel je vais télécharger un autre site, en l’occurrence la documentation de NetBSD :
# mkdir -pv netbsd/html mkdir: created directory 'netbsd' mkdir: created directory 'netbsd/html' # cd netbsd/html/ # wget -r -np -nH --cut-dirs=3 http://www.netbsd.org/docs/guide/en/ # wget http://www.netbsd.org/global.css # chown -R microlinux:microlinux /var/www/netbsd/
Enfin, je vais mettre en place une page par défaut dans le répertoire /var/www/default/html
. Pour ce faire, je vais utiliser la page qui s’affiche lorsqu’il n’y a pas de contenu :
# cd /var/www # mkdir -pv default/html mkdir: created directory 'default' mkdir: created directory 'default/html' # cp -v /usr/share/testpage/index.html default/html/ '/usr/share/testpage/index.html' -> 'default/html/index.html' # chown -R microlinux:microlinux default/
Pour bien différencier cette page de celle qui s’affiche par défaut en l’absence de contenu, je vais éditer default/html/index.html
et remplacer le titre par le nom d’hôte de mon serveur (aux alentours de la ligne 226) :
</style> </head> <body> <h1>HTTP Server <strong>sandbox.microlinux.lan</strong></h1> <div class='row'> ...
En passant je supprime le répertoire cgi-bin
qui ne me sert à rien :
# cd /var/www # rmdir cgi-bin/
Au total j’ai donc ceci :
# ls -l total 12 drwxr-xr-x. 3 microlinux microlinux 4096 Apr 30 09:07 default drwxr-xr-x. 3 microlinux microlinux 4096 Apr 30 08:57 netbsd drwxr-xr-x. 3 microlinux microlinux 4096 Apr 30 08:51 slackware
Je crée un premier fichier /etc/httpd/conf.d/00-sandbox.conf
. Ce fichier définira le site affiché par défaut, c’est-à-dire lorsqu’on invoque l’adresse IP ou le nom d’hôte de la machine :
# /etc/httpd/conf.d/00-sandbox.conf
#
# http://sandbox.microlinux.lan
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/default/html"
ServerName sandbox.microlinux.lan
ServerAlias sandbox
ErrorLog logs/sandbox-error_log
CustomLog logs/sandbox-access_log common
</VirtualHost>
Dans le fichier /etc/httpd/conf/httpd.conf
, je supprime toutes les références à l’ancien site par défaut :
DocumentRoot "/var/www/html"
...
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Je teste la configuration :
# apachectl configtest Syntax OK
Je prends en compte les modifications :
# systemctl reload httpd
Je vérifie si la page par défaut du serveur s’affiche comme prévu :
http://192.168.2.3
http://sandbox.microlinux.lan
http://sandbox
À présent, je peux configurer les deux autres sites. Le site http://slackware.sandbox
sera configuré comme ceci :
# /etc/httpd/conf.d/10-slackware.sandbox.conf
#
# http://slackware.sandbox.microlinux.lan
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/slackware/html"
ServerName slackware.sandbox.microlinux.lan
ServerAlias slackware.sandbox
ErrorLog logs/slackware.sandbox-error_log
CustomLog logs/slackware.sandbox-access_log common
</VirtualHost>
La configuration de http://netbsd.sandbox
suivra la même logique :
# /etc/httpd/conf.d/10-netbsd.sandbox.conf # # http://netbsd.sandbox.microlinux.lan <VirtualHost *:80> ServerAdmin info@microlinux.fr DocumentRoot "/var/www/netbsd/html" ServerName netbsd.sandbox.microlinux.lan ServerAlias netbsd.sandbox ErrorLog logs/netbsd.sandbox-error_log CustomLog logs/netbsd.sandbox-access_log common </VirtualHost>
Pour l’instant, les noms d’hôtes slackware.sandbox
et netbsd.sandbox
ne correspondent à rien dans mon réseau local. Je vais donc ajouter une entrée DNS générique (DNS wildcard) à la configuration de Dnsmasq sur mon proxy local :
address=/sandbox/192.168.2.3 address=/sandbox.microlinux.lan/192.168.2.3
Je redémarre Dnsmasq pour propager l’info DNS :
# systemctl restart dnsmasq
Je prends en compte la nouvelle configuration d’Apache :
# systemctl reload httpd
Je teste les deux sites sur une machine du réseau local :
http://slackware.sandbox.microlinux.lan
http://netbsd.sandbox.microlinux.lan
http://slackware.sandbox
http://netbsd.sandbox
Héberger plusieurs sites sur un serveur dédié
Sur une machine publique avec une ouverture frontale sur Internet et plusieurs domaines publiquement accessibles, la configuration de la page par défaut pourra ressembler à ceci :
# /etc/httpd/conf.d/00-sd-155842.dedibox.fr.conf
#
# http://sd-155842.dedibox.fr
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/default/html"
ServerName sd-155842.dedibox.fr
ErrorLog logs/sd-155842.dedibox.fr-error_log
CustomLog logs/sd-155842.dedibox.fr-access_log common
</VirtualHost>
La documentation de Slackware sera hébergée sur l’hôte www.slackbox.fr
:
# /etc/httpd/conf.d/10-www.slackbox.fr.conf
#
# http://www.slackbox.fr
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/slackware/html"
ServerName www.slackbox.fr
ServerAlias slackbox.fr
ErrorLog logs/www.slackbox.fr-error_log
CustomLog logs/www.slackbox.fr-access_log common
</VirtualHost>
Et pour l’hébergement de la documentation de NetBSD, on suivra la même logique :
# /etc/httpd/conf.d/10-www.unixbox.fr.conf
#
# http://www.unixbox.fr
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/netbsd/html"
ServerName www.unixbox.fr
ServerAlias unixbox.fr
ErrorLog logs/www.unixbox.fr-error_log
CustomLog logs/www.unixbox.fr-access_log common
</VirtualHost>
Je teste l’affichage des différents sites :
http://www.slackbox.fr
(documentation de Slackware)http://slackbox.fr
http://www.unixbox.fr
(documentation de NetBSD)http://unixbox.fr
http://sd-155842.dedibox.fr
(page par défaut)
Lire la suite : Apache et PHP sous Rocky Linux 8
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire