Hébergement de plusieurs sites Web avec Apache2 – Bien choisir son serveur d impression
Hébergement de plusieurs sites Web avec Apache2
Publié par Steve le Jeu 6 juil 2006 à 22:03
L'une des questions les plus courantes sur Apache2 que j'ai rencontrées sur les listes de diffusion Debian provient des utilisateurs qui se demandent comment héberger plusieurs sites Web avec un seul serveur. C’est très simple, en particulier avec les outils supplémentaires fournis par le paquet Debian.
Nous avons déjà parlé de certains outils inclus dans le package Apache2, mais nous ne l’avions pas fait, c’était de montrer qu’ils étaient utilisés de bout en bout.
Il existe de nombreuses façons de configurer Apache pour héberger plusieurs sites, du plus simple au plus complexe. Ici, nous allons seulement couvrir les bases avec l'utilisation de la directive NameVirtualHost. L’avantage de cette approche est qu’il n’est pas nécessaire de câbler d’adresses IP, et cela fonctionneratm. La seule chose dont vous avez besoin est que vos noms de domaine se résolvent en adresse IP de votre serveur Web.
Par exemple, si vous utilisez un serveur Apache sur l'adresse IP 192.168.1.1 et vous souhaitez héberger les trois sites exemple.com, example.net, et example.org vous devez vous assurer que ces noms sont résolus en adresse IP de votre serveur.
(Cela peut signifier que vous avez besoin exemple.com et www.example.com pour résoudre à la même adresse. Cependant, c'est un choix que vous devrez faire vous-même).
Étant donné que nous hébergerons plusieurs sites Web sur le même hôte, il est logique de définir très clairement l'emplacement des fichiers de chaque site sur le système de fichiers. Je vous suggère de gérer cela pour créer un répertoire racine de document, un répertoire cgi-bin et un répertoire de fichier journal complètement distincts pour chaque hôte. Vous pouvez les placer sous le préfixe Debian standard de / var / www ou vous pouvez utiliser une racine complètement différente – j'utilise / home / www.
Si vous ne l'avez pas déjà fait, créez les répertoires contenant votre contenu, etc., comme suit:
root @ irony: ~ # mkdir / home / www root @ irony: ~ # mkdir /home/www/www.example.com root @ irony: ~ # mkdir /home/www/www.example.com/htdocs root @ irony: ~ # mkdir /home/www/www.example.com/cgi-bin root @ irony: ~ # mkdir /home/www/www.example.com/logs root @ irony: ~ # mkdir /home/www/www.example.net root @ irony: ~ # mkdir /home/www/www.example.net/htdocs root @ irony: ~ # mkdir /home/www/www.example.net/logs root @ irony: ~ # mkdir /home/www/www.example.net/cgi-bin root @ irony: ~ # mkdir /home/www/www.example.org root @ irony: ~ # mkdir /home/www/www.example.org/htdocs root @ irony: ~ # mkdir /home/www/www.example.org/logs root @ irony: ~ # mkdir /home/www/www.example.org/cgi-bin
Ici, nous avons configuré trois arborescences de répertoires différentes, une pour chaque site. Si vous souhaitez avoir un contenu identique, il peut être judicieux de n'en créer qu'un, puis d'utiliser des liens symboliques.
La prochaine étape consiste à activer les hôtes virtuels dans votre configuration Apache. Pour ce faire, le plus simple est de créer un fichier appelé /etc/apache2/conf.d/virtual.conf et y inclure le contenu suivant:
# # Nous utilisons plusieurs hôtes virtuels. # NameVirtualHost *
(Quand Apache démarre, il lit le contenu de tous les fichiers inclus dans /etc/apache2/conf.det les fichiers que vous créez ici ne seront pas mis à la corbeille lors de la mise à jour du paquet.)
Une fois cela fait, nous pouvons créer les fichiers de configuration de l'hôte individuels. La configuration d’Apache2 que vous trouverez sur Debian GNU / Linux comprend deux répertoires pour la localisation des fichiers de configuration de votre site:
- / etc / apache2 / sites-available
-
Cela contient les fichiers de configuration des sites disponibles mais pas nécessairement activés.
- / etc / apache2 / sites-enabled
-
Ce répertoire contient les fichiers de site activés.
Comme avec le conf.d répertoire chaque fichier de configuration dans le activé pour les sites Le répertoire est chargé au démarrage du serveur – pendant que les fichiers sites disponibles sont complètement ignorés.
Vous devez créer vos fichiers de configuration d’hôte dans / etc / apache2 / sites-available, puis créez un lien symbolique vers ces fichiers dans le activé pour les sites répertoire – cela entraînera leur chargement / lecture.
Plutôt que de jouer avec les liens symboliques, le paquet Debian inclut deux commandes utilitaires a2ensite et a2dissite qui fera le travail nécessaire pour vous, comme nous le montrerons bientôt.
Commençons par un exemple réel. Créer /etc/apache2/sites-available/www.example.com avec le contenu suivant:
# # Example.com (/etc/apache2/sites-available/www.example.com) #ServerAdmin webmaster@example.com NomServeur www.exemple.com ServerAlias example.com # Index + racine du répertoire. DirectoryIndex index.html DocumentRoot /home/www/www.example.com/htdocs/ # Répertoire CGI ScriptAlias / cgi-bin / /home/www/www.example.com/cgi-bin/ Options + ExecCGI # Fichiers journaux ErrorLog /home/www/www.example.com/logs/error.log CustomLog /home/www/www.example.com/logs/access.log combinés
Ensuite, créez le fichier www.example.net:
# # Example.net (/etc/apache2/sites-available/www.example.net) #ServerAdmin webmaster@example.net NomServeur www.example.net ServerAlias example.net # Index + racine du répertoire. DirectoryIndex index.html DocumentRoot /home/www/www.example.net/htdocs/ # Répertoire CGI ScriptAlias / cgi-bin / /home/www/www.example.net/cgi-bin/ Options + ExecCGI # Fichiers journaux ErrorLog /home/www/www.example.net/logs/error.log CustomLog /home/www/www.example.net/logs/access.log combinés
Enfin créer le fichier www.example.org:
# # Example.org (/etc/apache2/sites-available/www.example.org) #ServerAdmin webmaster@example.org Nom du serveur www.example.org ServerAlias example.org # Index + racine du répertoire. DirectoryIndex index.html DocumentRoot /home/www/www.example.org/htdocs/ # Répertoire CGI ScriptAlias / cgi-bin / /home/www/www.example.org/cgi-bin/ Options + ExecCGI # Fichiers journaux ErrorLog /home/www/www.example.org/logs/error.log CustomLog /home/www/www.example.org/logs/access.log combinés
Maintenant nous avons:
- Trois répertoires qui peuvent être utilisés pour contenir notre contenu.
- Trois répertoires pouvant être utilisés pour contenir nos fichiers de log.
- Trois répertoires pouvant contenir nos scripts CGI dynamiques.
- Trois fichiers de configuration ignorés par Apache.
Pour activer les sites, exécutez simplement:
root @ irony: ~ # a2ensite www.example.com Site www.example.com installé; lancez /etc/init.d/apache2 reload pour l'activer. root @ irony: ~ # a2ensite www.example.net Site www.example.net installé; lancez /etc/init.d/apache2 reload pour l'activer. root @ irony: ~ # a2ensite www.example.org Site www.example.org installé; lancez /etc/init.d/apache2 reload pour l'activer.
Cela va maintenant créer les liens symboliques afin que /etc/apache2/sites-enabled/www.example.org, etc, existe maintenant et sera lu.
Une fois notre configuration terminée, nous pouvons redémarrer ou recharger le serveur Web comme indiqué ci-dessus:
root @ irony: ~ # /etc/init.d/apache2 reload Rechargement de la configuration du serveur Web ... terminé. racine @ ironie: ~ #
Commentaires
Laisser un commentaire