Apache : ajouter un nouveau serveur virtuel par nom

La création de serveurs virtuels par nom dans Apache permet de faire cohabiter plusieurs sites sur une même adresse IP, chaque site étant accédé par son propre nom.

On aura ainsi, par exemple, deux sites Web http://monsite1.com et http://monsite2.fr qui pourront être hébergés dans le même serveur Apache tout en ne possédant qu'une seule adresse IP.

C'est la méthode la plus couramment utilisée pour créer des serveurs virtuels. L'autre méthode, la création de serveurs virtuels par IP, n'est à utiliser que dans des cas particuliers.

Logiciel utilisé : Apache 2.2.17

Distribution Linux : Ubuntu Server 11.04, Linux 2.6.38

Note : l'emplacement des fichiers de configuration est donné par rapport à l'installation du serveur Apache via Ubuntu Server. Pour une installation à partir des sources, toutes les directives seront à mettre dans le fichier httpd.conf. et la création du lien symbolique pour l'activation du site n'est pas nécessaire.

Pré-requis : il faut que le nom choisi pour le serveur virtuel soit inscrit dans un serveur DNS accessible des utilisateurs.

La création du serveur virtuel par nom nécessite trois directives obligatoires :

  • VirtualHost : section dont le nom doit être identique à NameVirtualHost (voir le fichier /etc/apache2/ports.conf)
  • ServerName : définit le nom du serveur virtuel (doit être enregistré dans un serveur DNS pour résolution par les utilisateurs)
  • DocumentRoot : définit l'emplacement du contenu du serveur virtuel (où seront déposés les fichiers HTML, PHP, etc.)

On crée donc un fichier contenant ces trois directives :

# vim /etc/apache2/sites-available/monsite

<VirtualHost *:80>
        ServerName monsite.mondomaine.com
        DocumentRoot /var/www/monsite
</VirtualHost>

On crée ensuite un lien symbolique pour activer le nouveau site (nom du lien au choix !) :

# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/monsite 099-monsite

On crée le répertoire contenant le serveur virtuel :

# mkdir /var/www/monsite

Et on recharge la configuration Apache :

# service apache2 reload
 * Reloading web server config apache2          [ OK ]

C'est bon, ça démarre sans message particulier …

On peut maintenant tester le nouveau site ainsi créé avec cURL (ou via un navigateur Web) :

# curl "http://monsite.mondomaine.com"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /</title>
 </head>
 <body>
<h1>Index of /</h1>
<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
<tr><th colspan="5"><hr></th></tr>
</table>
<address>Apache/2.2.17 (Ubuntu) Server at monsite.mondomaine.com Port 80</address>
</body></html>

Le site répond correctement : la configuration de base est bonne, le serveur virtuel par nom est créé 🙂

Pour aller plus loin …

Il ne s'agit évidemment que d'une configuration minimale d'un serveur virtuel par nom. Celle-ci doit être complétée par d'autres directives afin de répondre au besoin de l'application hébergée et aux contraintes d'exploitation.

Par exemple, une section de serveur virtuel plus complète :

<VirtualHost *:80>
        ServerName monsite.mondomaine.com
        ServerAdmin admin@mondomaine.com

        DocumentRoot /var/www/monsite
        <Directory /var/www/monsite>
                Options +FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/monsite.error.log
        CustomLog ${APACHE_LOG_DIR}/monsite.access.log combined
</virtualHost>

Laisser un commentaire