Dans mon dernier article, j'expliquais comment configurer un serveur Web Apache pour un seul site Web. Cela s'est avéré très facile. Dans cet article, je vais vous montrer comment servir plusieurs sites Web à l'aide d'une seule instance d'Apache.
Remarque :J'ai écrit cet article sur une machine virtuelle utilisant Fedora 27 avec Apache 2.4.29. Si vous avez une autre distribution ou version de Fedora, les commandes que vous utiliserez ainsi que les emplacements et le contenu des fichiers de configuration peuvent être différents.
Comme mon article précédent l'a mentionné, tous les fichiers de configuration pour Apache sont situés dans /etc/httpd/conf
et /etc/httpd/conf.d
. Les données des sites Web se trouvent dans /var/www
par défaut. Avec plusieurs sites Web, vous devrez fournir plusieurs emplacements, un pour chaque site que vous hébergez.
Hébergement virtuel basé sur le nom
Avec l'hébergement virtuel basé sur le nom, vous pouvez utiliser une seule adresse IP pour plusieurs sites Web. Les serveurs Web modernes, y compris Apache, utilisent le hostname
partie de l'URL spécifiée pour déterminer quel hôte Web virtuel répond à la demande de page. Cela ne nécessite qu'un peu plus de configuration que pour un seul site.
Même si vous commencez avec un seul site Web, je vous recommande de le configurer en tant qu'hôte virtuel, ce qui facilitera l'ajout d'autres sites ultérieurement. Dans cet article, je vais reprendre là où nous nous sommes arrêtés dans l'article précédent. Vous devrez donc configurer le site Web d'origine, un site Web virtuel basé sur le nom.
Préparer le site Web d'origine
Avant de configurer un deuxième site Web, vous devez obtenir un hébergement virtuel basé sur le nom fonctionnant pour le site existant. Si vous n'avez pas de site Web existant, revenez en arrière et créez-en un maintenant.
Une fois que vous avez votre site, ajoutez la strophe suivante au bas de son /etc/httpd/conf/httpd.conf
fichier de configuration (l'ajout de cette strophe est la seule modification que vous devez apporter au httpd.conf
fichier):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
Ce sera la première strophe d'hôte virtuel, et elle devrait rester en premier, pour en faire la définition par défaut. Cela signifie que l'accès HTTP au serveur par adresse IP, ou par un autre nom qui résout cette adresse IP mais qui n'a pas de strophe de configuration d'hôte nommé spécifique, sera dirigé vers cet hôte virtuel. Toutes les autres strophes de configuration de l'hôte virtuel doivent suivre celle-ci.
Vous devez également configurer vos sites Web avec des entrées dans /etc/hosts
pour fournir une résolution de nom. La dernière fois, nous avons juste utilisé l'adresse IP pour localhost
. Normalement, cela se ferait en utilisant le service de noms que vous utilisez; par exemple, Google ou Godaddy. Pour votre site Web de test, faites-le en ajoutant un nouveau nom au localhost
ligne dans /etc/hosts
. Ajoutez les entrées pour les deux sites Web afin de ne pas avoir à modifier à nouveau ce fichier ultérieurement. Le résultat ressemble à ceci :
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
Modifions également le /var/www/html/index.html
fichier pour être un peu plus explicite. Il devrait ressembler à ceci (avec du texte supplémentaire pour l'identifier en tant que site Web numéro 1) :
<h1>Hello World</h1>
Web site 1.
Redémarrez le serveur HTTPD pour activer les modifications apportées au httpd
configuration. Vous pouvez ensuite consulter le site Web à l'aide du navigateur en mode texte Lynx à partir de la ligne de commande.
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Vous pouvez voir que le contenu révisé du site Web d'origine est affiché et qu'il n'y a pas d'erreurs évidentes. Appuyez sur la touche "Q", suivie de "Y" pour quitter le navigateur Web Lynx.
Configuration du deuxième site Web
Vous êtes maintenant prêt à configurer le deuxième site Web. Créez une nouvelle structure de répertoires de sites Web avec la commande suivante :
[root@testvm1 html]# mkdir -p /var/www/html2
Notez que le deuxième site Web est simplement un deuxième html
répertoire dans le même /var/www
répertoire comme premier site.
Créez maintenant un nouveau fichier d'index, /var/www/html2/index.html
, avec le contenu suivant (ce fichier d'index est un peu différent, pour le distinguer de celui du site d'origine) :
<h1>Hello World -- Again</h1>
Web site 2.
Créez une nouvelle strophe de configuration dans httpd.conf
pour le deuxième site Web et placez-le sous la strophe précédente de l'hôte virtuel (les deux doivent être très similaires). Cette strophe indique au serveur Web où trouver les fichiers HTML du second site.
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
Redémarrez HTTPD et utilisez Lynx pour afficher les résultats.
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Ici, j'ai compressé la sortie résultante pour l'adapter à cet espace. La différence dans la page indique qu'il s'agit du deuxième site Web. Pour afficher les deux sites Web en même temps, ouvrez une autre session de terminal et utilisez le navigateur Web Lynx pour afficher l'autre site.
Autres considérations
Cet exemple simple montre comment servir deux sites Web avec une seule instance du serveur Apache HTTPD. La configuration des hôtes virtuels devient un peu plus complexe lorsque d'autres facteurs sont pris en compte.
Par exemple, vous souhaiterez peut-être utiliser des scripts CGI pour l'un de ces sites Web ou les deux. Pour ce faire, vous devez créer des répertoires pour les programmes CGI dans /var/www
:/var/www/cgi-bin
et /var/www/cgi-bin2
, pour être cohérent avec le nommage du répertoire HTML. Vous devrez ensuite ajouter des directives de configuration aux strophes de l'hôte virtuel pour spécifier l'emplacement du répertoire pour les scripts CGI. Chaque site Web pourrait également avoir des répertoires à partir desquels des fichiers pourraient être téléchargés; cela nécessiterait également des entrées dans la strophe appropriée de l'hôte virtuel.
Le site Web Apache décrit d'autres méthodes de gestion de plusieurs sites Web, ainsi que des options de configuration allant du réglage des performances à la sécurité.
Apache est un serveur Web puissant qui peut être utilisé pour gérer des sites Web allant du plus simple au plus complexe. Bien que sa part globale diminue, Apache reste le serveur HTTPD le plus utilisé sur Internet.