Plusieurs projets symfony sous Wamp

Mardi, 14 Septembre 2010 14:13 Michel Rotta
Imprimer

Vous avez certainement déjà souhaiter gérer plusieurs projets symfony sur votre machine après avoir installé Wamp Server. Ce n'est pas simple en apparence, un seul dossier www et des sous répertoire en alias... Alors qu'en réalité, tous les outils pour une gestion, en local, de vos projets sont présent. Cette méthode n'est pas la seul, ni la meilleur, c'est la mienne et elle me convient. Pourquoi pas à vous ?

 

Faire fonctionner symfony sous wamp et windows avec des vHost.

Installation de wamp

Rien a dire de particulier, je vous laisse le soins de télécharger et d'installer où vous le souhaitez votre wamp favori. Utilisez de préférence la dernière version avec un PHP 5.3.x ou plus.

Configuration DNS (quoique)

Pour utiliser plusieurs sites sur votre machine, il vous faudra plusieurs nom de domaine, mais comment avoir plusieurs nom de domaine là où l'on vous à toujours certifié que windows, en local, ne connaissait que le localhost ?

Tous ce joue dans un petit fichier de configuration que vous aller trouver sous :
c:/windows/system32/drivers/etc/ le fichier s'appelle host (sans extention, c'est important et indispensable de le noter et de le conserver ainsi).

Pour l'éditer un notepad suffi presque, presque parce qu'il est dans un sous dossier de windows et que, s'il peut être facilement ouvert en modification, il est impossible de le sauvegarder pour n'importe quel utilisateur. Sauf à ouvrir votre notepad en tant qu'administrateur, dans le menu de windows, sélectionnez la bête puis, avant de l'ouvrir, faîtes un menu contextuel "Exécuter en tant qu'Administrateur" et confirmez. Il ne reste plus qu'à y ouvrir le fichier host (sans extension).

Ajouter lui, pour chaque site de test que vous souhaitez utiliser une entrée du style :

127.0.0.1     www.test.loc

C'est une de mes habitudes, pour les sites en local, j'utilise l'extension loc qui n'existe pas sur le net, ceci évite tous risque de confusion.

Dans les trucs, et pendant que vous y êtes, créez vous plusieurs sites de test (test1, test2,...) cela peut toujours servir, avant de tenter un truc vraiment dangereux sur votre site en développement (qui vous n'aurez probablement pas sauvegardé en plusieurs version...)(je présages, mais je pratique les développeurs depuis quelques dizaines d'années maintenant !).

Nous avons donc un pseudo DNS en local sur notre poste windows, près à rediriger nos appels à www.test.loc vers lui même (127.0.0.1).

La structure de dossier pour nos applications

Bien sur vous pouvez mettre toutes vos applications derrière le www de wamp, mais j'y vois au moins trois inconvénients majeurs.

  1. Il seront alors accessible en sous site de localhost ce qui risque de créer des perturbations et de fausses erreurs que vous aller chercher, en vains, durant des heures.
  2. Le dossier wamp est souvent rangé dans un dossier de programmes, avec des droits en lectures écritures limités.
  3. Qui sauvegarde régulièrement son dossier programmes, pas vous, pas lui, pas moi... bon, pour les sauvegarde, cela va aussi être un casse tête.

Donc, créer vous un dossier "sites" dans un dossier que vous sauvegardez régulièrement et créer un sous dossier pour chacun des noms de sites que vous avez décidez de gérer.

c:/
  |- mesfichiers
  |         |- test
  |         |- test1
  |         |- monappli
  |         -- Symfony
  |                 |- lib
  |                 |- data
  |                 ...
  |- Program Files
  |        |- wamp

J'ai placé wamp aussi. Ceci n'est qu'un exemple de structure et ne constitue en aucun cas une structure obligatoire.

Paramétrer apache pour qu'il répondent aux sites.

Il faut modifier plusieurs fichiers. En premier, nous allons modifier le fichier de configuration d'apache pour lui faire prendre en compte l'existence des vhost, (vhost = serveur virtuel apache, permettent de faire plusieurs serveurs web sur un seul serveur apache). Il y a trois manières de le faire, celle que j'ai choisie n'est pas nécessairement la plus simple, mais c'est la plus facile à faire évoluer pour rajouter des sites par après.

Créer un répertoire pour stocker les définitions des vhost.

Dans c:\Program Files\wamp\bin\apache\apache2.x.x\conf\extra\vhost 

Le répertoire à créer est le dernier, vhost. Les x dépendent de votre version d'apache, vous arriverez bien à les remplacer.

Modifions le fichier de configuration de apache sous wamp :

 c:\Program Files\wamp\bin\apache\apache2.x.x\conf\httpd.conf

Cherchez vers la fin du fichier les lignes suivantes

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

Vous allez les remplacer (ou mettre en dessous, tant que le# reste, ce ne sont que des commentaires) par

# Fichiers Virtual hosts.
NameVirtualHost *:80
Include conf/extra/vhost/*.conf

Il ne nous reste plus qu'a créer un fichier par site dans le dossier précédemment créé vhost. Nous allons le faire pour notre premier site, "test". Créer un fichier test.conf.

<VirtualHost *:80>
ServerName www.test.loc
DocumentRoot "d:\mesfichiers\test\web"
DirectoryIndex index.php
Alias /sf "c:\mesfichiers\symfony\data\web\sf"

<Directory "c:\mesfichiers\test\web">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

<Directory "c:\MesFichiers\symfony\data\web\sf">
Allow from all
</Directory>
</VirtualHost>

Oups, le plus gros morceau.

Créer un fichier par site.

Dernier truc, votre wamp ne va plus marcher correctement, si vous vous connecter sur localhost, il va pointer sur un de vos sites symfony. Gênant. La raison est simple, si le nom du site mentionné dans l'url n'existe pas ou si il n'y a pas de nom, il va pointer vers le premier fichier vhost qu'il trouve (par ordre alphabétique).

Nous avons une solution simple, proposons lui un fichier qui sera le premier et pointe vers notre ancien www.

Vous aller, dans le dossier vhost créer le fichier _base.conf

<VirtualHost *:80>
DocumentRoot "c:\Program Files\wamp\www"
ServerName LocalHost
</VirtualHost>

Simpliste comme fichier. Évitez de créer un site qui s'appellerait "_atomique.conf" !!!

Redémarrer les services de wamp à l'aide du menu contextuel.

Et si ça plante ?

Si votre icône wamp ne passe pas blanche (elle reste rouge, ou jaune). Le plus simple pour essayer de localiser l'erreur est d'aller faire un tours dans le journal des événements de windows, vous y trouverez (enfin, j'ai toujours trouvé, mais, dans certains cas...) la raison du plantage, qui sera aussi souvent la méthode de corriger le problème.

 

Bonne chance,
Michel Rotta

Mise à jour le Lundi, 16 Mai 2011 12:49