Un serveur web apache2 est capable de gérer plusieurs sites soit plusieurs arborescence de dossiers, ceci grâce à la notion d’hôtes virtuels (virtualhost).
Il y à plusieurs façon pour mettre cette redirection en place:
- Hôtes virtuels basés sur le nom
- Hôtes virtuels basés sur le port
- Hôtes virtuels basés sur l’adresse IP
Une méthode tend à devenir le standard dans l’hébergement web il s’agit des hôtes virtuels basés sur le nom. Il s’agit simplement d’associer plusieurs noms DNS à une seule adresse IP.
Dans un premier temps nous allons définir des noms DNS pour nos sites, dans le fichier /etc/hosts on ajoute autant de fois que nécessaire la ligne: « 127.0.0.1 le nom de domaine du site«
127.0.0.1 lesite1.fr
127.0.0.1 lesite2.fr
Ensuite au lieu de créer les deux dossiers de nos sites directement dans le répertoire du serveur /var/www On préféra les créer dans un répertoire personnel comme /home/UTILISATEUR/www-dev/lesite1 et /home/UTILISATEUR/www-dev/lesite2.
Ensuite on créer deux liens symboliques depuis le répertoire principal du serveur vers nos dossiers personnels:
sudo ln -s /home/UTILISATEUR/www-dev/monsite1 /var/www/lesite1
sudo ln -s /home/UTILISATEUR/www-dev/monsite2 /var/www/lesite2
Ces liens faits, nous allons créer les fichiers de configurations pour apache. Dans « /etc/apache2/sites-available » se trouve un fichier nommé « default« , copier ce dossier il servira de modèle pour se faire:
cp default lesite1
cp default lesite2
On édite le fichier « lesite1 » par exemple comme suit:
<VirtualHost *:80>
ServerAdmin votre-mail@lesite1.fr
ServerName lesite1.fr
ServerAlias www.lesite1.fr
DocumentRoot /var/www/lesite1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/lesite1>
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 /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/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>
Enfin, une fois les deux fichiers modifiés on active nos deux sites grâce aux commandes:
sudo a2ensite lesite1
sudo a2ensite lesite2
on recharge la config d’apache grâce à la commande
sudo /etc/init.d/apache2 reload