Virtual Host avec Apache / MAMP

A des fins d’organisation, il est parfois très intéressant avec un Mamp (ou wamp, xampp…) de créer des adresses virtuelles, une par projet par exemple.

Ce qui permet d’accéder plus rapidement à ce projet, ou de le placer dans un dossier spécifique.

Les virtualhost sont là pour ça!

Le contexte

Par défaut, l’installation d’un Mamp vous permet d’accéder à vos oeuvres php via l’adresse

http://localhost

Parfois suivi d’un numéro de port, mais je préfère de loin rester dans les standards (voir plus bas).

Et si vous avez un dossier pour un projet (dans mon cas, mes tutos), vous y accédez via

http://localhost/tutos

Ce qui suppose que ce dossier se trouve dans la même arborescence… Ce qui n’est pas toujours le cas.

Nous allons donc configurer la machine et Mamp pour y accéder via

http://tutos.rc

En virtualisant ce nom de domaine (c’est le terme) pour qu’il pointe vers n’importe quel dossier de la machine, y compris un disque dur externe par exemple…

Notez que j’ai choisi l’extension .rc de façon arbitraire (en fait, car ce sont mes initiales, si, si). Habituellement, nous utilisons l’extension .devmais il semblerait que celle-ci pose problème avec les nouvelles moutures des navigateurs.

ATTENTION: la manipulation est assez technique, soyez vigilants…

Prérequis

  • Un Mac (cela marche aussi sur Windows, mais je ne sais plus la méthode exacte, qui doit être cependant très proche)
  • Mamp (version 5.3 dans mon cas)
  • Atom (éditeur de texte https://atom.io)
  • Terminal (pour accéder aux lignes de commande…)

Pour Mamp, j’ai l’habitude donc de le caler sur le port 80, norme standard. Pour ce faire, allez dans le menu MAMP, puis Préférences, puis Ports, et précisez les valeurs ci dessous:

Si vous utilisez autre chose que Mamp (xampp, wamp, …) la méthode sera comparable mais je ne pourrais guère vous l’indiquer…

Créer le « nom de domaine »

Il s’agit ici de faire une correspondance entre le nom de domaine (virtuel, accessible uniquement de votre machine) tutos.rc et l’adresse IP locale.

Depuis le terminal, lancez l’instruction:

atom /etc/hosts

Ne modifiez rien, rajoutez à la fin

127.0.0.1 tutos.rc
::1 tutos.rc
fe80::1%lo0 tutos.rc

Ce qui va nous faire cette fameuse correspondance IP -> nom. A la sauvegarde, votre mot de passe vous sera demandé.

Modifier le fichier vhost d’apache

Nous avons créé le nom virtuel, il faut maintenant préciser à apache de pointer vers un dossier précis, dans mon cas:

/Users/richnou/TUTOS/

Pour ce faire, toujours depuis le terminal, saisissez:

atom /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Si on exclu les commentaires (ligne avec # au début), votre fichier va ressembler à ceci:

NameVirtualHost *:80
<VirtualHost *:80>
     DocumentRoot /Applications/MAMP/htdocs
     ServerName localhost
</VirtualHost>
<VirtualHost *:80>
     DocumentRoot /Users/richnou/TUTOS/
     ServerName tutos.rc
</VirtualHost>

J’ai mis en gras ce que j’ai ajouté, c’est à dire la correspondance entre le ServerName (tutos.rc donc) et le DocumentRoot (le dossier correspondant).

Modifier le fichier de configuration Apache

Il s’agit maintenant de configurer Apache au niveau global, et donc accepter qu’il prenne en compte nos modifications.

Pour ce faire, toujours depuis le terminal, faire:

atom /Applications/MAMP/conf/apache/httpd.conf

Vers la ligne 206 environ, associé au <Directory /> on modifie le AllowOverride qui était à None pour le mettre à All…

<Directory />
     Options Indexes FollowSymLinks
     AllowOverride All
</Directory>

Vers la ligne 575 du même fichier, retirer le # devant:

Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Ce qui permet de demander à Apache d’inclure le fichier vhost que nous avons modifier préalablement.

Ne reste plus qu’à sauvegarder tous les fichiers, et à relancer MAMP… Ne fermez pas Atom! Si jamais cela se passe mal, vous pourrez faire des cmd-Z pour revenir en arrière…

http://tutos.rc

Est désormais accessible.

Un autre hôte virtuel ?

J’ai ici ajouté un seul virtual host, mais il est tout à fait possible d’en créer autant que nécessaire.

Dans ce cas, répétez les phases nom de domaine et vhost, pas utile pour la configuration apache.

Laisser une réponse