Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsCréer des noms de domaine sous Wamp/Lamp
      Imprimer le sujet FAQ  M'enregistrer 
  Comment apprendre le PHP facilement ?
Les variables, les sessions, la gestion ... Deviendra un jeu d'enfant !

Créer des noms de domaine sous Wamp/Lamp

Messagede boulledogue le 31 Aoû 2009, 09:49

Bonjour à toute la communauté de MonSiteGratuit,
J'ai une belle petite découverte à vous faire partager, pour ceux qui se demandaient s'il était possible de remplacer par exemple le:
Code: Tout sélectionner
http://localhost/client-a/

par
Code: Tout sélectionner
http://client-a.local/


Voici un tutoriel, un "How To", rédigé par Etienne Lurquin (http://www.hitud.net) nous montrant comment se faciliter la vie lorsque nous travaillons en local, car grâce à cette technique, il devient plus facile d'exporter un site sur notre serveur.

Sources

Sources: http://hitud.net/doc/howtos/virtual-wam ... .1.fr.html
Disponible en anglais: http://hitud.net/doc/howtos/virtual-wam ... .1.e,.html

WAMP virtuel mini howto

1. Audience ciblée



Ceci est un court Howto pour développeurs Web souhaitant gérer indépendemment de multiples sites web, la plupart du temps sur leur propre PC, en utilisant un environnement soit LAMP soit WAMP.

2. Introduction



En effet, de nombreux développeurs web commencent par développer un seul site et on leur demande rapidement d'en développer un ou plusieurs autres, et ce qu'ils font naturellement dans cette situation est créer un sous-répertoire sur leur PC de développement pour héberger le nouveau site, mais ceci entraîne quelques désavantages, le principal étant l'impossibilité d'utiliser des références absolues dans leur code car le site est destiné à être déplacé en production d'une racine étant un sous-répertoire vers une racine étant la racine du serveur. Alternativement, ce qu'ils font parfois est reproduire leur environnement de développement sur le site de production avec le désavantage de présenter aux internautes un niveau d'indentation inutile dans les URL's.

Un autre situation dans laquelle ce howto peut être utile est celle des développeurs web héritant d'un seul site d'entreprise présentant une arborescence extrêment boisée incluant de nombreuses fonctionalités hétérogènes telles que, entre autres, le site de l'entreprise, un extranet pour les clients, un extranet pour les employés, un webmail, un agenda partagé, etc... le tout sous la racine du site principal. Cette situation se présente la plupart du temps lorsque l'infrastructure a été développée depuis plusieurs années par de multiples développeurs, dont certains prestataires externes. Donc, lorsque le site s'étoffe tellement et rapidement avec trop peu de contrôle, vu du point de vue de l'administrateur système préposé à la gestion du serveur sous-jacent, cela se transforme souvent en cauchemar lorsque le besoin se fait sentir de déplacer l'infrastructure sur un autre serveur, car plus personne ne sait précisément ce qui se trouve sous la racine du site et l'on se retrouve obligé de déplacer l'environnement complet d'un seul coup, ce-inclu les bases de données sous-jacentes et possiblement d'autres extensions, avec le risque très réel de voir le système complet s'effondrer d'un seul spectaculaire coup également.

Donc, ce qui suit est une proposition très simple à destination de ces devéloppeurs web, qui consiste en ceci: au lieu d'utiliser un seul environnement de développement ressemblant à ceci:
Code: Tout sélectionner
http://localhost/client-a/
http://localhost/client-b/



de les aider à utiliser un environnement de développement ressemblant, en sus et non pas en remplacement du précédent, à ceci:

Code: Tout sélectionner
http://client-a.local/
http://client-b.local/



en utilisant les capacités de gestion des hôtes virtuels de leur installation locale de Apache sans nécessité particulière de déplacer leur code source vers d'autres emplacements et sans les empêcher de continuer à utiliser leur première forme d'environnement de développement (le tout sous localhost dans des sous-répertoires), les deux emplacements devenant dorénavant disponibles.


3. WAMP



A la date d'aujourd'hui (2007) le plateau (n.d.l.t. 'tray) de WAMP leur permet aisément d'enclancher les fonctionalités d'hôtes virtuels d'Apache, mais ne permet pas de diviser l'environnement de développement en sites web multiples.
Donc, vous aurez besoin d'utiliser votre éditeur favori, que ce soit le bloc notes ou n'importe quel autre, pour effectuer de très simples changements aux configurations d'Apache et de votre pile TCP/IP.


3.1. Le fichier hosts



Ce fichier est situé sous "%SystemRoot%\system32\drivers\etc", ce qui la plupart du temps signifie "C:\WINDOWS\system32\drivers\etc".

Par défaut, le contenu consiste en un bon nombre de lignes de commentaire commençant par un # (à ce propos, vous pouvez ajoutez les vôtres de la même façon si vous le souhaitez sur des lignes commençant par un #) et une seule ligne ressemblant à ceci:

Code: Tout sélectionner
127.0.0.1 localhost

Image


ce qui signifie que, lorsque votre navigateur web essaye d'atteindre le nom spécial d'hôte 'localhost', le système lui retournera l'adresse IP spéciale 127.0.0.1 que le navigateur va effectivement utiliser pour joindre votre server Apache tournant sur votre PC. Ne supprimez ou commentez PAS cette ligne, sans quoi de nombreuses fonctionalités de votre PC pourraient se briser et votre système pourrait s'en trouver fortement endommagé. Ce fichier fait partie de ce que l'on appelle la pile TCP/IP de votre PC et est par conséquent important car il est interrogé avant le DNS.

Par contre, ce que vous pouvez faire sans trop de craintes dans ce fichier est d'y ajouter des lignes ou des aliases sur le nom d'hôte spécial 'localhost'.
Pour cela, il est vivement conseillé d'utiliser une extension spéciale, à savoir '.local' aux noms que vous ajouterez de manière à éviter les conflits avec les véritables noms Internet.

Donc, vous devez éviter de mettre des noms d'hôtes tels que p. exple. http://www.masociete.com pointant vers une adresse de type 127.x.y.z sans quoi vous ne seriez plus à même d'atteindre le site de votre société car toutes les adresses IP commençant par 127 renvoyent à votre propre PC et parce que ce fichier est interrogé avant le DNS.
Donc, de grâce, utilisez seulement des extensions .local pour fonctionner en toute sécurité.


A présent nous avons en réalité 2 possibilités, soit ajouter sur la ligne:

Code: Tout sélectionner
127.0.0.1 localhost



les alias:

Code: Tout sélectionner
client-a.local client-b.local



separés par des espaces ou tabulations du début et entre les mots de manière à ce qu'elle ressemble à ceci:

Code: Tout sélectionner
127.0.0.1 localhost client-a.local client-b.local



ou, une autre possibilité (les différences sont très subtiles et vous ne devriez pas en avoir besoin à ce stade, donc choisissez la méthode que vous préférez) est d'ajouter des lignes telle que:
Code: Tout sélectionner
127.1.2.3 client-a.local
127.1.2.4 client-b.local


Image


Vous pouvez utiliser n'importe quel nombre plus petit que 256 après le premier 127. mais le dernier nombre ne peut être 0 ni 255. Notez que d'autres valeurs ont des significations particulières mais considérons que les valeurs entre 1 et 126 sont un excellent choix. De toutes façons, si vous gérez plus de 126 sites, je soupçonne que vous n'avez pas besoin de lire ce howto car vous connaissez déjà tout ceci ;-) Je ne vous conseillerais pas davantage de dupliquer la ligne 127.0.0.1: soit vous placez les alias sur la première ligne, soit vous créez de multiples lignes avec de multiples adresses IP sur ce que l'on appelle l'interface de la boucle locale (n.d.l.t. 'loopback') ( adresses commençant par 127 et pointant seulement vers votre PC).

C'est tout pour le fichier hosts et dorénavant votre navigateur peut joindre des URL's telles que:

Code: Tout sélectionner
http://client-a.local/



A présent assurons nous qu'Apache répond à ces requêtes de la manière qui vous convient.



3.2 Chargement du module d'hôtes virtuels de Apache



Par défaut (à la date d'aujourd'hui, 2007) WAMP ne l'a pas activé lors de l'installation, donc, de manière à l'activer, vous pouvez cliquer sur l'icône du serveur WAMP dans votre plateau système (n.d.l.t. 'systray') (côté droit de votre barre de tâches de Windows), aller dans le menu:

Apache > Apache Modules
Image

faire défiler un peu vers le bas si nécessaire à l'aide de la petite flèche noire en bas et cliquer sur la ligne:

Code: Tout sélectionner
vhost_alias_module



de manière à ce qu'un V apparaissent à sa gauche la prochaine fois que vous affichez ce menu.

C'est tout. Nous ne redémarrerons pas encore Apache maintenant car nous devons encore effectuer quelques autres modifications à sa configuration.


3.3 Création de confettis de fichiers de configuration Apache pour la gestion des hôtes virtuels et création du répertoire destiné à les héberger.



Historiquement, la plupart des serveurs originaires du monde Unix tels qu'Apache avaient un seul fichier de configuration mais à présent, la tendance s'affirme d'avoir un fichier de configuration principal et de nombreux petits morceaux de configurations répartis au travers de plusieurs fichiers qui sont chargés par le fichier principal. Ceci peut en effet s'avérer utile.

Sur une installation WAMP par défaut (à la date d'aujourd'hui, je répète), la dernière ligne de votre fichier de configuration d'Apache que vous pouvez ouvrir avec le bloc notes au départ de votre icône de plateau en sélectionnant le menu:

Code: Tout sélectionner
Apache > httpd.conf

Image

est une directive d'inclusion qui charge des confettis de fichiers de configuration contenant les alias (PHPMyadmin, etc...), ce qui constitue une autre technique assez pratique dont nous parlerons brièvement plus bas.

Donc, à présent que vous l'avez ouvert, je vous suggérerais d'y ajouter une ligne telle que:

Code: Tout sélectionner
Include "C:\wamp\virtual"

Image

ou, si vous craignez que ce sous-répertoire puisse être utilisé à l'avenir par l'équipe de développement de WAMP à d'autres fins, disons par exemple:

Code: Tout sélectionner
Include "C:\wamp-virtual"



A présent il vous est nécessaire de créer ce répertoire ou sous-répertoire qui n'existe pas encore. Utilisez l'explorateur de Windows à cette fin et veuillez le laisser ouvert à cet emplacement car nous allons à présent y créer quelques fichiers. Pour ce faire, utilisez votre éditeur de fichiers préféré, qu'il s'agisse du bloc-notes ou de n'importe quel autre et créez un fichier appellé:

Code: Tout sélectionner
000-default.conf


dans lequel vous écrivez au minimum ceci:

Code: Tout sélectionner
NameVirtualHost *


<VirtualHost *>

   ServerName localhost
   DocumentRoot "c:\wamp\www\"

   <Directory "c:\wamp\www\">
      AllowOverwrite all
      Order deny,allow
      Allow from 127.
   </Directory>

</VirtualHost>

Image

Sauvegardez le fichier et maintenant créez en un autre nommé:

Code: Tout sélectionner
001-client-a.conf



dans lequel vous écrivez au minimum ceci:

Code: Tout sélectionner
<VirtualHost *>

   ServerName client-a.local
   DocumentRoot "c:\wamp\www\client-a\"

   <Directory "c:\wamp\www\client-a\">
      AllowOverwrite all
      Order deny,allow
      Allow from 127.
   </Directory>

</VirtualHost>

Image


Sauvegardez le fichier et maintenant créez en un troisième nommé:

Code: Tout sélectionner
002-client-b.conf



dans lequel vous écrivez:

Code: Tout sélectionner
<VirtualHost *>

   ServerName client-b.local
   DocumentRoot "c:\wamp\www\client-b\"

   <Directory "c:\wamp\www\client-b\">
      AllowOverwrite all
      Order deny,allow
      Allow from 127.
   </Directory>

</VirtualHost>


Image

Ceci devrait suffire et vous pouvez à présent redémarrer Apache à partir de votre icône de plateau en sélectionnant:

Restart services.


Patientez quelques (dizaines de) secondes et ensuite ouvrez quelques onglets dans votre navigateur préféré (Firefox) et ouvrez les URL's suivantes:

Code: Tout sélectionner
http://localhost/client-a/
http://client-a.local/



Si vous avez seulement un site statique qui ne contient pas de références absolues, les deux pages doivent être identiques.



3.4 Le chemin d'inclusion de PHP (n.d.l.t. include path)



Si vous avez des pages utilisant des instructions include, include_once, require ou require_once qui incluent de nombreuses autres pages PHP qui peuvent ne pas se trouver dans le même répertoire ou un quelconque sous-répertoire, celles-ci pourraient ne pas être trouvées sur le site .local pour cause d'absence de ce sous-répertoire. Mais ne vous tracassez pas, il existe une pléthore de solutions possible pour contourner ceci, en fonction du type de problème.

3.4.1 Pages inclues utilisant des chemins absolus.



Votre site pourrait être constitué de pages PHP contenant des instructions include ou require utilisant des chemins codés en dur soit de la forme:

Code: Tout sélectionner
include '/client-a/page.php';



soit:

Code: Tout sélectionner
include $_SERVER['DOCUMENT_ROOT'] . '/client-a/page.php';



soit encore (mais moins répandu je suppose):

Code: Tout sélectionner
include 'c:\wamp\www\client-a\page.php';



Si vous utilisez la dernière forme, je vous conseillerais de vous promener parmi vos pages et de changer votre style de référencement car votre site web n'est pas portable du tout avec cette sorte de références. Mais si vous utilisez l'une des 2 premières, vous pouvez temporairement contourner l'absence du sous-répertoire client-a sur le site client-a.local en utilisant un alias dans le confetti de configuration d'Apache ( les alias sont aussi utilisés par WAMP pour permettre de stocker phpmyadmin ailleurs que sous c:\wamp\www\phpmyadmin tout en préservant la possibilités d'y accéder via l'URL http://localhost/phpmyadmin/)

Pour cela, insérez dans:

Code: Tout sélectionner
001-client-a.conf



à l'intérieur des balises ouvrante et fermantes <VirtualHost> mais hors des balises <Directory> (de préférence avant) la ligne suivante:
Code: Tout sélectionner
   Alias /client-a/ "c:\wamp\www\client-a\"



et redémarrez WAMP de la manière présentée plus haut. Ceci devrait vous dépanner pour l'instant. Nous discuterons plus bas de la manière d'optimiser vos techniques d'inclusions.

Code: Tout sélectionner
3.4.2 Inclusions portables



En fait, pour s'assurer que vos votre site et pages PHP soient bien portables, il existe différentes techniques.

Code: Tout sélectionner
3.4.2.1 PHP.INI



Vous pouvez l'ouvrir à partir du plateau du serveur WAMP dans le bloc notes et chercher la ligne:

Code: Tout sélectionner
;include_path=".:c:\php\includes"



Vous pouvez la décommenter en supprimant le point-virgule de début de ligne et inscrire entre les guillemets un répertoire de telles façons que cela à ressemble à disons ceci:

Code: Tout sélectionner
include_path=".:c:\wamp\library"



ou

Code: Tout sélectionner
include_path=".:c:\wamp-library"



Ensuite créez ce répertoire qui n'existe pas encore et, à l'intérieur, un sous-répertoire que nous appellerons par exemple 'mesincludes'.

Ensuite déplacez-y toutes vos pages de librairies et, maintenant, commencez dans toutes vos pages à remplacer votre style d'inclusion actuel par le suivant:

Code: Tout sélectionner
include 'mesincludes/pages.php';



Ceci vous permettra de minimiser les risques d'occurence de ce que l'on appelle les conflits dans l'espace de noms (n.d.l.t. 'namespace clashes') où il y a plusieurs répertoires contenant 'page.php', certaines d'entre elles écrites par vous, d'autres pas.
Comme le répertoire supérieur (PAS le répertoire lui-même, mais bien celui du niveau supérieur) à 'mesincludes' est défini globalement dans le fichier PHP.INI, il sera utilisable dorénavant par tous vos sites (client-a, client-b, ...) et vous pouvez à présent commencer comfortablement à développer votre charpente (n.d.l.t. 'framework') en conservant un code centralisé et non dupliqué.

Ne vous en faites pas à propos de l'éventualité de ne pas pouvoir l'utiliser sur un serveur web partagé (sur lequel vous il ne vous serait pas permis de modifier le PHP.INI du système). Dans une telle situation, envoyez simplement une copie de votre répertoire 'mesincludes' à la racine du serveur et c'est (presque) tout. En fait, vous devriez normalement avoir la possibilité de changer répertoire par répertoire le chemin d'inclusion de PHP dans les fichiers .htaccess en utilisant une syntaxe similaire à ceci:

Code: Tout sélectionner
php_value include_path    ".:c\php\includes"






4. Linux, MacOSX (?).



Je serai moins long car si vous utilisez Linux comme environnement de développement, il y a des chances que vous connaissiez déjà l'essentiel de ceci mais, si non, les principes sont exactement les mêmes mais les fichiers sont généralement localisés sous:

Code: Tout sélectionner
/etc



(p.exple le fichier hosts) et vous redémarrez Apache en utilsant (ne tapez pas le #):

Code: Tout sélectionner
# /etc/init.d/apache2 restart



Ceci pouvant être apache2, apache ou encore httpd en fonction de votre distribution.

Vous devez être root (n.d.l.t. ma plume ne se résoud pas à écrire Racine, trop théâtral) pour modifier les fichiers et redémarrer Apache et, bien sûr, vous n'utiliserez pas le bloc-notes ;-)

Sur les dérivatifs de Debian tels qu'Ubuntu vous pouvez trouver la configuration d'Apache sous

Code: Tout sélectionner
/etc/apache2


et vous ne devriez pas avoir besoin de modifier le httpd.conf ou apache2.conf car il existe déjà des sous-répertoires contenant des confettis relatifs aux alias ou hôtes virtuels appellés:

Code: Tout sélectionner
sites-available


et

Code: Tout sélectionner
sites-enabled


Vous pouvez sauvegarder vos confettis dans sites-enabled car sites-available est ignoré.
Mais d'abord, vous activez le module de gestion des hôtes virtuels en liant un fichier appellé:

Code: Tout sélectionner
vhost_alias.load


à partir de:

Code: Tout sélectionner
modules-available


vers:

Code: Tout sélectionner
../modules-enabled


de cette façon:

Code: Tout sélectionner
# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/vhost_alias.load


(j'ai vaguement aperçu qu'il existait un outil en ligne de commande qui faisait très précisément ceci, vous pourriez devoir gougler quelque peu...), après quoi vous redémarrez Apache.


Sur MAcOSX, je me suis laissé dire que quelques fichiers devaient se trouver sous /Library mais hosts reste sous /etc (je l'ai vu une fois, je vous l'assure).

5. Conclusion



En espérant que vous appréciez et en vous souhaitant de vous sentir rapidement gêné par la pseudo (Je pense que la théorique est au-dessus de 16.000.000 mais votre PC, Apache ou votre tête pourraient ne pas souffrir cela) limitation à 126 hôtes virtuels évoquée plus haut.

v. 0.1, E. LURQUIN, 2007

Reproduction interdite sans l'autorisation de l'auteur;
Avatar de l'utilisateur
boulledogue
Modo'z
Modo'z
 
Messages: 2252
Inscription: 16 Mar 2007, 18:26
Localisation: Liège, Belgique
Points: 4453


Re: Créer des noms de domaine sous Wamp/Lamp

Messagede jeromecold le 31 Aoû 2009, 10:17

Sympa comme court, perso j'utilise l'adresse réseau de mon pc pour que tous les pc de la maison puissent se connecter sur l'intranet qu'il gère ^^!
En tout cas sa manque pas de style comme truc!
Arobase plus
Avatar de l'utilisateur
jeromecold
Plug'zien Pro
Plug'zien Pro
 
Messages: 3156
Inscription: 05 Sep 2007, 13:18
Points: 2915


Re: Créer des noms de domaine sous Wamp/Lamp

Messagede boulledogue le 03 Sep 2009, 15:25

J'ai ajouté 8 images pour améliorer la compréhension du tutoriel. Chez moi ca fonctionne très bien et je trouve cela très utile.
A bientôt
Boulledogue
Avatar de l'utilisateur
boulledogue
Modo'z
Modo'z
 
Messages: 2252
Inscription: 16 Mar 2007, 18:26
Localisation: Liège, Belgique
Points: 4453



Retourner vers PHP

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités