Cet article se trouvait quelque part dans mes brouillons il y a pas mal de temps mais je ne trouvais pas le temps de l’adapter pour le blog.. Voilà je me retrouve de nouveau avec un projet symfony alors je me suis dit que c’est le moment de le mettre.
Je commence par expliquer le résonnement pour configurer un virtual host sur un serveur local. Et ensuite je passe à la configuration du serveur pour un projet symfony.
- Ajout d’un virtual host sur un serveur local
Lorsqu’on développe des projets personnels, on utilise souvent le poste de travail comme laboratoire et on accède à nos différents projets à partir de http://localhost (127.0.0.1).
Cependant, plutôt que de créer chaque projet dans un répertoire à la racine du répertoire www d'Apache, je préfère utiliser ce qu'on appele un hôte virtuel (VirtualHost ou vhost). Je peux donc placer mes projets à différents endroits sur mon poste. Pour chaque projet, je crée ensuite un sous-domaine à localhost. Par exemple si mon premier projet est placé dans www : http://localhost/projet1/ deviendra http://projet1.localhost/. Ainsi, je peux continuer à programmer en utilisant la racine du répertoire comme référence, comme si le projet était en ligne sur son propre nom de domaine.
Voici la configuration possible pour Apache:
1. D'abord, je crée deux projets, le premier dans le répertoire www d'Apache, le deuxième à un autre endroit, par exemple sur la partition D:
2. On doit accéder au fichier httpd.conf d'Apache (
C:\Program Files\EasyPHP 2.0b1\conf_files\) et s'assurer que la ligne suivante n'est pas commentée :
Include conf/extra/httpd-vhosts.conf
3. Ouvrez le fichier
httpd-vhosts.conf (
C:\Program Files\EasyPHP 2.0b1\apache\conf\extra\) et ajouter un hôte virtuel pour chaque projet :
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "C:\Program Files\EasyPHP 2.0b1\www\projet1"
ServerName projet1.localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot D:\Programmation\Web\projet2
ServerName projet2.localhost
</VirtualHost>
4. Dans le fichier hosts (Sous XP :
C:\WINDOWS\system32\drivers\etc\), ajoutez une ligne pour chaque projet :
127.0.0.1 projet1.localhost
127.0.0.1 projet2.localhost
5. Redémarrez Apache (pour que la nouvelle configuration prenne effet. EasyPHP a un raccourci pour le redémarrer à partir du système tray)
6. Ouvrez un invite de commande et exécutez la commande suivante :
ipconfig /flushdns
7. À partir de votre fureteur préféré, tester l'accès à http://projet1.localhost et à http://projet2.localhost. Le tout devrait maintenant fonctionner.
Bien entendu, il s'agit d'une configuration de base alors j'ai volontairement omis certains détails qui auraient pu être inclus.
2. Configuration d’un serveur web pour un projet symfony
Pour un projet symfony, il est préférable de configurer des serveurs virtuels plutôt que d'ajouter un nouveau port à chaque fois qu’on démarre un nouveau projet. Au lieu de choisir un port et d'ajouter une déclaration Listen, on choisit un nom de domaine (par exemple le nom du domaine réel avec .localhost ajouté à la fin) et ajouter une déclaration ServerName :
# C'est la configuration pour votre projet
<VirtualHost 127.0.0.1:80>
ServerName www.monprojet.com.localhost
<!-- same configuration as before -->
</VirtualHost>
Le nom du domaine
www.monprojet.com.localhost utilisé dans la configuration d'Apache doit être déclaré localement. Ce fichier se trouve dans le répertoire :
C:\WINDOWS\system32\drivers\etc\.
On ajoute la ligne suivante :
127.0.0.1 www.monprojet.com.localhost
Autre méthode peu commode est d’ajouter un port d’écoute Listen avant de déclarer notre host dans dans le fichier httpd.conf de Apache :
Listen 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
DocumentRoot "d:\wamp\www\monprojet\web"
DirectoryIndex index.php
<Directory "d:\wamp\www\monprojet\web">
AllowOverride All
Allow from All
</Directory>
Alias /sf "C:\wamp\php\PEAR\pear\data\symfony\web\sf"
<Directory "C:\wamp\php\PEAR\pear\data\symfony\web\sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
L'alias /sf donne accès à des images et des fichiers JavaScript nécessaire pour afficher correctement les pages symfony par défaut et la barre d'outils web de débogage. Cette configuration permet à Apache d'écouter le port 8080 sur la machine, de sorte que le site web sera accessible à l'adresse suivante :
http://~localhost~:8080/
On peut changer
8080 par un autre nombre, mais on doit favoriser des nombres plus grand que
1024 car ils ne nécessitent pas de droits administrateurs.