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