Serveur Web mutualisé: Virtualhost d'Apache2

Virtualhosts (serveurs virtuels) est une fonctionnalité d’Apache qui permet d’héberger plusieurs sites Web sur une seule machine. Exemple: les sites www.koto.fr, www.mon-site-test.fr, www.blabla-site.eu sont hébergés sur le même serveur. Les 3 alias DNS ont pour résolution l’IP du serveur xxx.xxx.xxx.xxx.

Virtualhosts
Schéma virtualhosts Apache

Cette technique permet aux hébergeurs de mutualiser ses ressources (serveurs).

Apache permet deux techniques:

  • Serveurs Virtuels par-Nom (Un ou plusieurs sites Web par adresse IP)
  • Serveurs Virtuels par-IP (Une adresse IP pour chaque site Web)

Je vais détailler la première technique, sous systèmes debian, ubuntu et linux similaires. Prenons l’exemple suivant: nous voulons héberger deux sites web (www.koto.fr et www.mon-site-test.fr) sur le même serveur.

Tout d’abord, étape obligatoire, il faut que vos noms de domaines www.koto.fr et www.mon-site-test.fr contiennent un enregistrement IN A vers l’IP de votre serveur. Pour cela, si vous avez un domaine chez OVH il faut aller dans votre manager puis dans la configuration DNS et ajouter l’enregistrement pour chaque domaine. Exemple:

www.koto.fr
A
xxx.xxx.xxx.xxx
www.mon-site-test.fr
A xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx est l’ip est de votre serveur. Pour vérifier simplement que cela fonctionne, utilisez la commande et regardez que l’IP est celle de votre serveur:

nslookup www.koto.fr

 

La configuration des virtualhosts (sites virtuels) est stockée dans des fichiers dans le dossier /etc/apache2/sites-available/ . Il y a un fichier par site virtuel, ces fichiers portent le nom de votre site.

De base vous avez un fichier « défault » dans ce répertoire. Ce fichier comprend la configuration de votre site par défaut.

Pour ajouter votre site www.koto.fr:

cd /etc/apache2/sites-available

cp default www.koto.fr

Ensuite vous devez éditer le fichier www.koto.fr et le configurer comme suit:

<VirtualHost *:80>
ServerAdmin votreemail@domaine.fr
ServerName www.koto.fr
ServerAlias www.koto.fr

DocumentRoot /var/www/www.koto.fr
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/www.koto.fr>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory « /usr/lib/cgi-bin »>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ « /usr/share/doc/ »
<Directory « /usr/share/doc/ »>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Dans ce fichier il y a plusieurs clauses importantes:

  • ServerName www.koto.fr
  • ServerAlias www.koto.fr
  • DocumentRoot /var/www/www.koto.fr
  • <Directory /var/www/www.koto.fr>

Ces clauses permettent d’identifier votre site virtuel ainsi que son répertoire de travail. Vous pouvez éditer les lignes de logs, pour séparer les fichiers de logs de vos différents sites.

Maintenant vous devez créer le dossier dans lequel sera stocké vos fichiers html, php, …

mkdir /var/www/www.koto.fr

La configuration de votre site www.koto.fr est terminée, vous pouevz activer votre site avec la commande:

a2ensite www.koto.fr

Vous devez recharger le service apache2 pour prendre en compte le nouveau site:

/etc/init.d/apache2 reload

Vous pouvez reproduire les étapes pour le site www.mon-site-test.fr.

Si vous souhaitez désactiver un site vous pouvez utiliser la commande:

a2dissite www.koto.fr

/etc/init.d/apache2 reload

La fonctionnalités des virtualhosts est très pratique pour héberger plusieurs sites simplement.

Pour plus d’information sur les virtualhosts: http://httpd.apache.org/docs/2.2/fr/vhosts/