ApacheVoici 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

Apache Test Page

À 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

Apache Virtual Hosts

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)

Apache Virtual Hosts

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.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *