begin process at 2012 02 15 23:50:53
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

 > SOUS-DOMAINE VIRTUEL SUR UN SERVEUR WEB EN LOCAL SANS INTERNET

SOUS-DOMAINE VIRTUEL SUR UN SERVEUR WEB EN LOCAL SANS INTERNET


 Information sur le tutoriel

Note :
Aucune note


 Description

Bonjour,

Voici un petit article suite à un problème auquel j'ai été confronté.

Je développe dans le RER sur mon portable, donc je ne dispose pas de connexion à internet.

J'utilise pour développer mon site Web (PHP/Mysql) en local "Wamp" avec comme nom de domaine "localhost"

Jusqu'à la pas de problème, mais lorsque j'ai voulu utiliser des sous-domaines virtuel je n'arrivais pas à les créer et les faire fonctionner avec localhost

J'ai fini par réussir à créer un sous domaine grâce au fichier Host de Windows, mais ma gestion d'identification (cookies) ne fonctionne pas, il considérait le sous domaine comme un domaine à part entière.

Après de longue recherche qui n'ont abouti à rien, je me suis dit pourquoi ne pas créer mon propre serveur DNS en local afin d'utiliser un nom de domaine.

Ce qui n'est pas si facile que ça, c'est donc pour cela que je fais ce petit article.

Tutorial

Concernant le serveur DNS, je n'ai trouvé que deux logiciels pour Windows XP :
 - Simple DNS Plus (Payant - 14 jours d'évaluation)
 - BIND (Gratuit)

Personnellement j'ai d'abord utilisé Simple DNS Plus mais il n'est gratuit que 14 jours donc je suis passé à BIND assez rapidement.

Pour cet article j'utiliserai comme exemple le nom de domaine "mydomaine.tld"

1) Installation de BIND
Premièrement télécharger la dernière version de BIND (fichier zip)
Décompresser le fichier zip
Dans le répertoire vous trouverez le fichier d'installation de BIND "BINDInstall.exe"
Lancer l'installation, voici les paramètres que j'utilise :
 - Target Directory : c:\named
 - Service Account Name : named
 - Service Account Password : celui que vous désirez mais il en faut un
 - Confirm Service Account Password : confirmer votre mot de passe
 - Cocher : Automatic Startup
 - Cocher : Keep Config Files After Uninstall
 - Décocher : Start BIND Service After Install

Voici ce que la donne :
img_01.jpg

Cliquez sur Install, il va vous demander si vous voulez créer le répertoire named car il n'existe pas cliquez sur oui
Plusieurs fenêtres vont s'ouvrir et se fermer, le message "BIND Installation completed successfully" vous indiquera que l'installation est terminée
Vous pouvez fermer l'installeur.

2) Configuration de BIND
Créer le répertoire "c:\named\zones"
Télécharger les fichiers "named.conf" et "mydomaine.tld.dns" et les sauvegarder aux emplacements suivant :
 - c:\named\etc\named.conf
 - c:\named\zones\mydomaine.tld.dns


Ouvrer une console (Windows + R --> cmd) et taper les commandes suivantes :
 - cd c:\named\bin
 - rndc-confgen -a
 - rndc-confgen > ..\etc\rndc.conf
 - exit


Ouvrer le fichier "c:\named\etc\rndc.conf" avec Notepad
Sélectionner et couper la section en dessous de la ligne suivante :
 - # Use with the following in named.conf, adjusting the allow list as needed:

Sauvegarder et fermer le fichier "rndc.conf"
Ouvrer le fichier "c:\named\etc\named.conf" avec Notepad
Coller le contenu du presse-papier à la fin du fichier
Retirer les # devant les nouvelles lignes
Supprimer la ligne "End of named.conf"
Sauvegarder et fermer le fichier "named.conf"


3) Configuration de votre zone
Ouvrer le fichier "c:\named\etc\named.conf" avec Notepad
Remplacer "mydomaine.tld" par votre domaine
Sauvegarder et fermer le fichier "named.conf"

Renommer le fichier "c:\named\zones\mydomaine.tld.dns" en remplacent "mydomaine.tld" par votre domaine
Ouvrer ce fichier avec Notepad

Remplacer "NomOrdinateur" par le nom de votre ordinateur, faite bien attention de laisser le . apres le nom de votre ordinateur

Sauvegarder et fermer le fichier


4) Lancement de BIND
Cliquer droit sur "Poste de travail" et cliquer sur "Gérer"
Sélectionner le noeud "Services et applications" puis "Services"
Trouver le service "ISC Bind" et cliquer droit dessus et sélectionner "Démarrer"
Si le démarrage ne réussi pas, la description des erreurs se trouvent dans "Observateur d'événements" puis "Application"


5) Créer un Batch afin de reloader BIND
A chaque modification ou ajout des zones, il faudra relancer le BIND afin qu'il prenne en compte celle ci
Pour économiser plusieurs manipulations voici un "bacth" permettant de réaliser le relaod
ou vous pouvez le créer :

Créer un fichier texte et nommé le "reload bind.bat" sur votre bureau avec les éléments ci-dessous :
  @echo off
  c:\named\bin\rndc reload
  pause


6) Installation d'une carte de bouclage Microsoft
Et oui, même si vous avez installé un serveur DNS, vous ne pouvez le joindre qu'à travers un réseau, donc nous allons simuler un réseau juste pour pouvoir contacter notre serveur DNS

Pour cela nous allons installer une carte de bouclage Microsoft
Aller dans le panneau de configuration, puis cliquer sur "Ajout de matériel"
Faites "Suivant >" et laisser le programme rechercher.
img_02.jpg

A la question "Avez-vous déjà connecté ce matériel à votre ordinateur" cliquez sur "Oui, ..." puis sur "Suivant >"
img_03.jpg

Sélectionner dans la liste "Matériel installé :"
 - Ajouter un nouveau périphérique matériel (tous en bas de la liste)
Et encore "Suivant >"
img_04.jpg

Sélectionner "Installer le matériel ..." et encore "Suivant >"
img_05.jpg

Sélectionner "Cartes réseau" et encore "Suivant >"
img_06.jpg
Choisir "Microsoft" dans la liste des fabricants et "carte de bouclage Microsoft" dans la liste Carte réseau et encore "Suivant >"
img_07.jpg

Et enfin le dernier "Suivant >" pour installer la carte
img_08.jpg

Une fois la carte installé, cliquer sur "Terminer"
img_09.jpg

Dans votre TaskBar, le petit icone de recherche de réseau a dut apparaitre : img_10.jpg, puis au bout d'un moment vous informer que la connexion est limité
img_11.jpg


7) Configuration de la carte de bouclage
Nous allons maintenant configurer la carte de bouclage afin qu'elle prenne en compte notre serveur DNS

Aller dans le "Panneau de configuration" puis "Connexions réseaux"
Vous retrouver votre Carte de bouclage Microsoft
img_12.jpg

Cliquer droit dessus et sélectionner "Propriétés"

Sélectionner dans la liste "Protocole Internet (TCP/IP)" et cliquer sur "Propriétés"
img_13.jpg

Personnellement j'utilise l'adresse IP 192.168.0.50 qui est une classe C mais vous pouvez en utiliser une autre

Voici les paramètres à remplir :

Cocher : Utiliser l'adresse IP suivante
 - Adresse IP : 192.168.0.50
 - Masque de sous-réseau : 255.255.255.0
 - Passerelle par défaut : Laisser vide
 - Cocher : Utiliser l'adresse de serveur DNS suivante
 - Serveur DNS préféré : 127.0.0.1

Voila ce que cela donne :
img_14.jpg
 

Puis cliquer sur "OK", puis "Fermer"

Et voila la carte est configurer pour s'adresser a notre serveur DNS local.


8) Configuration de Wamp
Je vais passer outre volontairement l'installation de Wamp (il existe plein de tuto pour ca sur internet Google est votre ami ;)

Ouvrer le fichier "\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf" avec Notepad

Vérifier bien que la valeur "NameVirtualHost" soit bien a *:80 ce qui donne :
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

Ensuite nous allons créer un VirtualHost pour notre domaine, pour cela il vous suffit de copier les lignes ci-dessous :
<VirtualHost *:80>
    ServerName www.mydomaine.tld
    ServerAlias mydomaine.tld *.mydomaine.tld
    DocumentRoot "D:\www\mydomaine"
</VirtualHost>

La valeur de "DocumentRoot" correspond au répertoire contenant votre site Web

Sauvegarder et fermer le fichier "httpd-vhosts.conf"


Ouvrer le fichier "\wamp\bin\apache\Apache2.2.11\conf\httpd.conf" avec Notepad
Rechercher la ligne "#Include conf/extra/httpd-vhosts.conf" et retirer le # de la ligne
Sauvegarder et fermer le fichier "httpd-vhosts.conf"


En passant par l'administration de Wamp redémarrer tous les services


9) Test
Et voila normalement votre configuration doit fonctionner

Vous pouvez tester avec votre navigateur préféré en tapant l'adresse http://www.mydomaine.tld/ et vous tomberez sur votre site web


10) Sous-domaine Virtuel en URL-Rewriting

Voila la partie qui est à l'origine de mon problème, je souhaitai donc faire des sous-domaines virtuel, c'est à dire :

Par exemple l'adresse machin.mydomaine.tld pointe vers une page de mon site web et m'affiche "machin", vous allez me dire c'est possible grâce à un sous domaine normale

Mais ce que je voulais aussi c'est que "truc", "bidule", etc en fasse de même.

Dans mon cas, c'est surtout pour créer des sous domaine correspondant à des utilisateurs donc une liste dynamique.

Donc premièrement nous devons retoucher la zone DNS de notre nom de domaine "mydomaine.tld" afin que lorsqu'un sous-domaine soit demandé la demande soit redirigée vers notre site web.
Afin de réaliser cette opération nous devons rajouter un * au A de la zone, attention certain hébergeur (notamment 1and1) n'accepte pas de faire ca sur votre nom de domaine)

Ouvrer le fichier de votre zone et rajouter la ligne suivante avant la ligne "www        CNAME    @" :

*        A    127.0.0.1

Sauvegarder et fermer le fichier

Reloader BIND soit avec le Bacth de reload (Partie 5) ou lancer la commande c:\named\bin\rndc reload dans une console

Vous pouvez désormais tester en tapant dans votre navigateur n'importe qu'elle sous domaine cela vous donnera la page d'accueil de votre site web.

C'est maintenant que nous allons passer a l'URL Rewriting

Editer ou créer le fichier .htaccess a la racine de votre site

Et ajouter les lignes suivantes :

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mydomaine\.tld
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomaine\.tld
RewriteRule ^$ /test/index.php?sous_domaine=%1
RewriteRule ^([^.]+)\.html$ /test/index.php?sous_domaine=%1&page=$1 [L]

Ces règles vont permettre de re-router tous les sous domaine sauf www vers la page index.php du répertoire "test"
Ainsi que de préciser la page demander si une page est demander après le domaine

Exemple :

http://profils.mydomaine.tld/ = http://www.mydomaine.tld/test/index.php?sous_domaine=profils
http://profils.mydomaine.tld/utilisateur.html = http://www.mydomaine.tld/test/index.php?sous_domaine=profils&page=utilisateur


    
Et voila vos sous domaine fonctionne maintenant, a vous de vous amuser !


j'espère que ce petit article a été assez clair et que je ne vous ai pas trop perdu !!!

PS : Désolé pour les faute d'orthographe, ce n'est pas mon fort !

 Historique

25 juin 2009 10:07:23 :
- Modification de la mise en page
25 juin 2009 15:42:43 :
Correction problème images
25 juin 2009 15:44:31 :
Correction problème images
26 juin 2009 10:32:06 :
Correction Mise en page (Final)

Commentaires

Commentaire de MadM@tt le 30/06/2009 11:29:49

Pourquoi ne pas utiliser simplement les alias apache ?
Par exemple localhost/domaine1/ et localhost/domaine2/

Commentaire de Vonscott le 05/07/2009 20:29:41

Salut,

Je confirme, confronté au meme probleme, il te suffit de creer des alias et de les ajouter à ton host

Commentaire de citt le 06/07/2009 09:19:41

Sauf que si je veux utiliser l'url rewriting pour les sous domaine cela ne fonctionne plus avec les alias apache.
Mon but était d'avoir la possibilité de développer mon site comme il serait en final sur internet.
Après aussi, toutes la gestion de mon authentification passe par le système de PHPBB3, et si tu créer les sous-domaine dans le host cela ne fonctionne plus car pour lui c'est un autre site et non un sous domaine de localhost.

Commentaire de TropNul le 16/07/2009 19:26:53

Bonjour,

ça m'a l'ai intéressant et semble bien fait. Merci donc, car me sera certainement utile. à mettre donc dans ma boite "ça peut servir". ;)

Cordialement

Commentaire de neigedhiver le 10/10/2009 11:04:25

Pourquoi ne pas simplement définir les sous-domaines dans le fichier hosts ?
127.0.0.1  sd.localhost
127.0.0.1  bidule.machin.com

Suffit de définir dans Apache un vhost pour bidule.machin.com (Directive ServerName ou ServerAlias). A partir de là, on peut tout à fait utiliser l'URL rewriting sans soucis, comme si on était dans un environnement de production (par ailleurs, je ne suis pas certain que l'URL rewriting ne fonctionne pas avec les Alias Apache, mais c'est une autre histoire)

Je n'ai jamais installé bind sur aucune de mes machines et j'ai toujours pu développer avec des noms de domaines plus ou moins fantaisistes mais réalistes (généralement avec .tld comme tld).
Je trouve juste qu'installer bind pour développer en local, franchement, c'est genre utiliser un char d'assaut pour éliminer un moustique.

Commentaire de citt le 12/10/2009 10:30:02

sauf que ton systeme ne fonctionnera pas avec phpbb lorsque tu l'utilise comme authentification sur l'ensemble de ton site

si tu met dans le fichier host :
127.0.0.1 mondomaine.tld
127.0.0.1 machin.mondomaine.tld

le cookie ne fonctionnera pas, pour lui c'est pas un sous-domaine "machin" juste un autre nom de domaine

Commentaire de neigedhiver le 12/10/2009 12:24:39

Euh si... Il fonctionnera, je l'ai déjà fait fonctionner...

Commentaire de labotemplates le 14/11/2009 20:39:46

L'idée est super ! Toutefois, je suis assez de l'avis de Citt... Je développe en local pour mes sites en n'utilisant que les vhost et le host windows. Pour www.labotemplates.com en prod, je fais les devs en local.labotemplates.com et tout marche pour le mieux avec cookies et autres barbarités. Est ce qu'il est possible d'expliquer dans le tutoriel les problèmes rencontrés ? Est ce que les soucis que tu as constatés (c'est Margot qui dit qu'il faut dire comme ça !) ne sont pas le résultat d'un configuration de ton apache ? Personnellement, je préfère de loin utiliser un apache installé à la main plutôt que des outils comme wamp.

Commentaire de citt le 16/11/2009 12:45:55

Mon but etait aussi de tester l'ensemble de mes sous domaines dynamique.
Mes sous domaines son lié à une liste d'utilisateur qui varie, donc je ne voulait pas me taper à la main cette liste dans mon fichier host.
Avec cette methode pas besoin de modifier le fichier host.
Apres cela vient peut etre de ma config apache que je n'arriver pas a recuperer le cokie du domaine dans un de mes sous-domaines.
Je ne sais pas si il est possible sous le fichier host de faire un *,si oui mon exemple est compliquer alors ;)

Commentaire de atchoumix le 23/01/2010 15:30:08

Salut,
Après recherches, il n'est pas possible de faire un hosts avec *.domaine.tld, tout du moins pas sur windows... Donc si l'on souhaite rendre les sous domaines dynamiques, ton tuto est parfait, merci !

Commentaire de tex73 le 24/03/2010 21:39:19

salut
je viens de suivre à la lettre les instructions doonées dans ce tuto mais la virtualisation ne fonctionne pas apres test.
alors pourriez vous m'en dire d'avantage.

ERREUR "Firefox ne peut trouver le serveur à l'adresse www.mydomaine.com."
je rappelle que bind et wamp sont en marche
merci

Commentaire de citt le 29/03/2010 10:29:26

Slt,

arrive tu a faire un ping sur ton domaine ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales