Vendredi, j'ai parlé de l'utilisation du fichier hosts pour des objectifs beaucoup moins professionnels que ceux dont que je m'apprête à vous parler. En fait, lorsque je développe des projets personnels, j'utilise souvent mon poste de travail comme laboratoire et j'accède à mes 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 pour configuration possible pour Apache (je baserai mon exemple en utilisant EasyPHP mais le fonctionnement reste identique si on utilise Apache seul) :
- 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:
- 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 (elle ne doit pas avoir de symbole # devant) :
Include conf/extra/httpd-vhosts.conf - Ouvrir 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
Où :<VirtualHost *:80>
<VirtualHost *:80>
DocumentRoot "C:\Program Files\EasyPHP 2.0b1\www\projet1"
ServerName projet1.localhost
</VirtualHost>
DocumentRoot D:\Programmation\Web\projet2
ServerName projet2.localhost
</VirtualHost>
DocumentRoot est le chemin où se trouve le projet
ServerName est le nom du serveur - Dans le fichier hosts (Sous XP : C:\WINDOWS\system32\drivers\etc\), ajouter une ligne pour chaque projet :
127.0.0.1 projet1.localhost
127.0.0.1 projet2.localhost - Redémarrer Apache (pour que la nouvelle configuration prenne effet. EasyPHP a un raccourci pour le redémarrer à partir du système tray)
- Ouvrir un invite de commande et exécuter la commande suivante (pour que les domaines soient associés aux adresses IP spécifiées - pour notre poste seulement!) :
ipconfig /flushdns - À partir de votre fureteur préféré, tester l'accès à http://projet1.localhost et à http://projet2.localhost. Le tout devrait maintenant fonctionner.
Salut,
Merci pour ton post, ça ma bien aidé.
Seulement si on veut accéder aux sites d'un poste B en réseau c'est mort non ?
J'ai mis en place une méthode sensiblement différente pour ça mais qui, je le crains est un peut limite au niveau sécurité.
Pour créer un nouveau site (édition du httpd.conf, l’exemple se fait avec le port 81) :
1-écoute d’un nouveau port :
Listen 127.0.0.1:81
Pour du multiposte il suffit d’ajouter :
Listen IP DU MAITRE:81
2- ajout d'un virtual host :
NameVirtualHost *:81
VirtualHost *:81
DocumentRoot "${path}/www/racinedunouveausite"
ServerName localhost
VirtualHost
3 - le site est accessible de http://localhost:81 sur le poste maitre et http://nomdumaitre:81 sur les sur les autres postes
Voilà ça fonctionne et ça à l’avantage de ne pas avoir à toucher au host du coup on peut facilement l’interfacer au niveau de l’admin d’easyphp :).
@++
Salut, dsl pour le détérage mais ton billet m'a bien aidé pour configurer correctement mes virtualhosts.
Seul probleme depuis, lorsque j'essaye d'acceder à phpmyadmin (http://127.0.0.1/mysql/), je tombe sur le premier vhost que j'ai déclaré. Idem pour l'accès au "web local".
As tu eu aussi ce conflit ? Merci d'avance
Non, je n'ai pas eu ce problème car je n'utilise pas phpMyAdmin. Est-ce possible qu'il s'attende à avoir une configuration particulière qui n'est pas compatible avec la façon que les vhosts sont configurés ?
Ok merci en tout cas.
En fait, si on a des vhosts, le premier déclaré prend en charge tous les cas qui ne rentre pas dans les suivants.
Du coup j'ai bidouillé un vhost sur localhost qui pointe sur phpmyadmin. Solution moche mais rapide pour un besoin immédiat, j'y regarderais de plus près plus tard.
DocumentRoot "${path}/phpmyadmin"
ServerName localhost
J’ai récemment installé la symfony et j’essaye de configure mon serveur apache en ajoutant un virtuel host pour accéder aux ressources symfony. Je ne suis pas douée en matière de réseau. Mais il me parait qu’ajouter un Listen pour servir mon projet sur un autre port est plus approprié. J’ai suivi le raisonnement de mytic mais je n’ai pas compris grand chose. Est-ce que vous pouvez m’expliquer comment m’y prendre ?
J'aurais aimé t'aider mais malheureusement je n'ai jamais utilisé le framework Symphony.
Les étapes de configuration d’un serveur pour symfony sont les mêmes décrites précédemment (On déclare un nouveau nom de domaine localement pour la framework). Sauf que moi, je préfère garder le nom de mon domaine (localhost). J’ai trouvé une remarque concernant cette config quelque part sur internet : ‘Si vous ne souhaitez pas ajouter un nouvel host, vous pouvez ajouter un Listen, ce qui vous permettra d'utiliser le domaine localhost par ailleurs.’ et c’est ça mon problème !! Je ne connais rien en réseau. C’est quoi la différence entre la création d’un virtual host et Listen ? et comment procéder pour l’ajout un Listen dans le fichier hosts du WINDOWS XP ?
Re-bonjour, j’ai trouvé une documentation pour l’ajout d’un virtual host à un projet symfony sous unix (serveur Apache).J’ai adapté le code pour windows puisque je travaille -malheuresement- sous windows. Et ça marche à merveille.
La méthode est d’ajouter un port pour l’ecoute Listen avant de déclarer notre host dans le fichier httpd.conf de Apache :
Listen 127.0.0.1:8080
DocumentRoot "C:\wamp\www\projet_sym_1\web"
DirectoryIndex index.php
AllowOverride All
Allow from All
Alias /sf "C:\wamp\php\PEAR\pear\data\symfony\web\sf"
AllowOverride All
Allow from All
Les chemins : “C:\wamp\php\PEAR\pear\data\symfony\web\sf” et “C:\wamp\www\projet_sym_1\web” sont relatifs à la configuration. Et voilà il suffit maintenant à d’excéder à notre projet symfony sous l’adresse : 127.0.0.1 :8080. Pour nos anciens projets rien à changer. C’est l’adresse localhost ou 127.0.0.1
C'est bon à savoir, merci d'avoir partagé la solution avec nous. Je suis certain que ça donnera un coup de pouce à plusieurs autres personnes qui ont rencontré le même problème avec Symphony.
Quand j exécute une page php avac easy php ou wamp server j obtient ce message
"ne peut pas selectionner la base indiquée"
Il semble que cette personne ait le même message d'erreur que vous. Si c'est le cas, ça semble venir d'une erreur de connexion à la base de données. Est-ce que c'est vous qui avez fait le script?
Sinon, je suggère de consulter la documentation pour trouver la source du problème et comment la corriger.