développer un site en local
Du coté PHP
|
|
développer un site en local
Comment développer un site en local et le transférer en ligne sans rien changer avant le transfert
Dans cet article, nous allons voir comment configurer le host pour développer un site en local. Notre but est de transférer un site d’un serveur local sur un serveur distant (votre hébergeur par exemple) sans avoir à modifier la configuration du site avant le transfert.
Installer un serveur sur votre ordinateur
Le système décrit ci dessous fonctionne aussi bien avec WAMP ou EasyPHP (voir avec un serveur Apache que vous avez vous même installé).
Reprenons, l’avantage d’avoir son serveur web en local est d’avoir la main sur la configuration. Ainsi nous pouvons facilement tester le site avec une configuration restrictive, et surtout configurer le localhost pour avoir plusieurs sites sous la main. C’est ce que nous allons voir maintenant ! Commençons par régler le problème de connexion SQL :
Connexion SQL
Les paramètres d’accès au serveur de base de données sont différents entre la version locale et la version en production. Dans ce cas, pour éviter de modifier nos fichiers de configuration php avant le transfert du site par FTP, nous regardons sur quel IP nous sommes localisé.
C’est en comparant l’adresse IP du serveur avec l’adresse IP local 127.0.0.1 que nous définirons les bons paramètres de connections SQL au serveur. De cette manière :
Dans cet article, nous allons voir comment configurer le host pour développer un site en local. Notre but est de transférer un site d’un serveur local sur un serveur distant (votre hébergeur par exemple) sans avoir à modifier la configuration du site avant le transfert.
Installer un serveur sur votre ordinateur
Le système décrit ci dessous fonctionne aussi bien avec WAMP ou EasyPHP (voir avec un serveur Apache que vous avez vous même installé).
Reprenons, l’avantage d’avoir son serveur web en local est d’avoir la main sur la configuration. Ainsi nous pouvons facilement tester le site avec une configuration restrictive, et surtout configurer le localhost pour avoir plusieurs sites sous la main. C’est ce que nous allons voir maintenant ! Commençons par régler le problème de connexion SQL :
Connexion SQL
Les paramètres d’accès au serveur de base de données sont différents entre la version locale et la version en production. Dans ce cas, pour éviter de modifier nos fichiers de configuration php avant le transfert du site par FTP, nous regardons sur quel IP nous sommes localisé.
C’est en comparant l’adresse IP du serveur avec l’adresse IP local 127.0.0.1 que nous définirons les bons paramètres de connections SQL au serveur. De cette manière :
|
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14 .15 .16 .17 .18 .19 .20 .21 .22 |
<?php if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') { //données pour la connexion à la base de données local $db_server = 'localhost'; //adresse du serveur MySQL $db_name = 'mabaselocal'; //nom de la base de données $db_user_login = 'root'; //nom d'utilisateur MySQL $db_user_pass = ''; //mot de passe MySQL //affiche toutes les erreurs et warnings PHP en local error_reporting(E_ALL); } else { //données pour la connexion à la base de données en prod $db_server = 'serveurprod'; //adresse du serveur MySQL $db_name = 'mabaseprod'; //nom de la base de données $db_user_login = 'userprod'; //nom d'utilisateur MySQL $db_user_pass = 'passprod'; //mot de passe MySQL //affiche aucune erreur ou warning PHP en production error_reporting(0); } ?> |
Et voilà !! Nous allons économiser du temps avec cette manière de coder ! Comme vous avez pu le remarquer, les error_reporting sont à off pour la version de production. Cela évite bien des surprises pour ceux et celles qui travaillent sur des serveurs mutualisés et ca évite à vos visiteurs de voir des avertissements ou des erreurs incompréhensibles.
Simuler un multi domaine en local – niveau initié
Que diriez-vous d’avoir des urls en local du type http://www.example.local/ au lieu de l’eternel http://localhost/example/ ?? Pas grand chose si ce n’est pour le fun. Alors pourquoi c’est faire ?
Utiliser un sous répertoire comme racine du site local peut avoir un impact sur les règles de réécriture ainsi que sur le codage du site.
Nous allons voir comment définir un nom de domaine et un virtual host pour pouvoir y accéder avec une url proche de la réalité. Ca va nous permettre de tester notre site avec une url du type http://www.example.local/ quand le nom de domaine réel est http://www.example.com/. Nous pourrons même tester les règles de redirection interdisant l’accès au site sans www. => http://www.urlrewriting.fr/scripts1-Apache.htm
Première étape : Configuration du fichier hosts
- Editer le fichier hosts (souvent localisé à cet emplacement : C:\WINDOWS\system32\drivers\etc\hosts). Notre but est d’indiquer à Windows l’adresse IP de deux domaines en local (avec et sans le www).
- Ajouter en fin de fichier hosts les 2 lignes suivantes :
|
.01 .02 .03 |
127.0.0.1 example.local 127.0.0.1 www.example.local |
Deuxième étape - Configuration d’un virtual host
Ce paramétrage se fait au niveau du serveur Apache dans le fichier httpd.conf. Il fait le lien entre un domaine et l’emplacement des scripts PHP ou des pages html sur le PC.
- Le premier virtual host permet d’accéder à http://localhost/ avec un contenu se trouvant dans le répertoire www de WAMP. Ceci permet de garder le fonctionnement par défaut du serveur.
- Le deuxième virtual host permet d’accéder à http://example.local/ ou à http://www.example.local/ avec un contenu se trouvant dans le répertoire www/example de WAMP :
|
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 |
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/Program Files/wamp/www/" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/Program Files/wamp/www/example/" ServerName example.local ServerAlias www.example.local </VirtualHost> |
Commentaires
Merci pour le VirtualHost !! :)
Super tuto un peut inutile le virtual hoste mai c'est vachement sympa. Par contre, la première astuce est bien pensée ^^ merci
Mais il manque des precision sur l'endroit ou doit être placer le code dans l'étape 2 de l'astuce 2.
Mais aussi avec quel fichier travailler, default/httpd.conf ou bien httpd.conf ?
Merci d'éclaircir ces point pouvant prêter à confusion.
Merci.
Le code pour le virtual host doit être placé dans le fichier httpd.conf utilisé par le serveur. Le default/httpd.conf comme son nom l'indique doit être celui par défaut.
Sous Wamp il faut faire un clic gauche sur l'icône de la barre des tâches puis "Apache" -> "httpd.conf" et ajouter les lignes à la fin du fichier.
Bonjour, pour simuler le multidomaine il est possible de ne pas modifier le fichier host mais seulement le fichier httpd.conf en jouant avec les ports. Par exemple si on ajoute :
Listen 8000
NameVirtualHost *:8000
DocumentRoot "C:/Program Files/wamp/www2/"
ServerName localhost
Cela permettra d'accéder au site local sur l'URL 127.0.0.1:8000
Les deux systèmes peuvent être bon. Personnellement je n'aime pas toucher le fichier host.
Désolé, mais c'est plus propre comme cela.
[code]Listen 8000
NameVirtualHost *:8000
DocumentRoot "C:/Program Files/wamp/www2/"
ServerName localhost
[/code]
Même pas.... Désolé mais les balises virtualHost disparaissent avant documentroot et après ServerName.
Bonjour,
Merci pour ce tutoriel.
Je remarque que j'ai 2 httpd.conf, lequel utiliser ?
Merci
Merci pour ce tutoriel.
Je remarque que j'ai 2 httpd.conf, lequel utiliser ?
Merci
Bonjour,
Moi je ne comprends pas où il faut mettre la première astuce. Il faut dire que je n'y connais rien, et que j'essaye d'apprendre.
Merci par avance
Moi je ne comprends pas où il faut mettre la première astuce. Il faut dire que je n'y connais rien, et que j'essaye d'apprendre.
Merci par avance
Bonjour,
j'ai bien suivi la création host. C'est nickel. Mais mon problème est qu'une fois que je coupe la connexion internet, il n'affiche plus et demande de connexion internet. SOS comment configurer sans connexion internet?
Merci par avance
j'ai bien suivi la création host. C'est nickel. Mais mon problème est qu'une fois que je coupe la connexion internet, il n'affiche plus et demande de connexion internet. SOS comment configurer sans connexion internet?
Merci par avance
Bonjour,
Je crains que mon premier commentaire n'a pas été validé; alors je reprends:
Comme je suis aussi assez nouveau en la matière, je ne vois pas bien où il faut insérer le tout premier code php concernant la comparaison des adresses et qui commence comme ceci:
<?php
if (§_SERVER['SERVER_ADDR'] =='127.0.0.1') {
etc
Merci d'avance
Je crains que mon premier commentaire n'a pas été validé; alors je reprends:
Comme je suis aussi assez nouveau en la matière, je ne vois pas bien où il faut insérer le tout premier code php concernant la comparaison des adresses et qui commence comme ceci:
<?php
if (§_SERVER['SERVER_ADDR'] =='127.0.0.1') {
etc
Merci d'avance
Bonjour,
Merci de preciser où insérer le code relatrif à la définition de comparaison pour les adresses et qui commence comme ceci:
<?php
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
...
Abdel
Merci de preciser où insérer le code relatrif à la définition de comparaison pour les adresses et qui commence comme ceci:
<?php
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
...
Abdel
Abdel, la ligne que tu indiques permet de donner des valeurs différentes entre un serveur local de test et la version de production chez ton hébergeur.
Dans l'exemple ci-dessus elle sert à différencier les paramètres de base de données qui sont différents.
Ce n'est peut-être pas applicable dans ton cas si tu utilises un CMS.
Dans l'exemple ci-dessus elle sert à différencier les paramètres de base de données qui sont différents.
Ce n'est peut-être pas applicable dans ton cas si tu utilises un CMS.
Bonjour,
J'avais compris le but du code, mais je ne sais toujours pas où il faut l'écrire; est-ce dans config. php ou httpd.conf ou bien...
je peux poser la question autrement:
j'édite le code en question dans Notepad++ et je l'enregistre sous quel nom de fichier?
Merci d'excuser l'ignorance et l'hésitation des débutants
Abdel
J'avais compris le but du code, mais je ne sais toujours pas où il faut l'écrire; est-ce dans config. php ou httpd.conf ou bien...
je peux poser la question autrement:
j'édite le code en question dans Notepad++ et je l'enregistre sous quel nom de fichier?
Merci d'excuser l'ignorance et l'hésitation des débutants
Abdel
Ca dépend de comment est codé ton site. Si tu as un fichier config.php c'est surement là (les lignes pour la base de données ne sont pas forcément utiles si tu n'en n'as pas bien sûr).
Pour savoir quoi d'autre modifier tu peux installer ton site en local et le tester. Si tu as des erreurs à cause d'une configuration différente entre local et prod, tu peux utiliser le test proposé pour différencier le code selon l'environnement (pour que tout marche sans avoir besoin de bricoler avant de transférer une nouvelle modification).
Pour savoir quoi d'autre modifier tu peux installer ton site en local et le tester. Si tu as des erreurs à cause d'une configuration différente entre local et prod, tu peux utiliser le test proposé pour différencier le code selon l'environnement (pour que tout marche sans avoir besoin de bricoler avant de transférer une nouvelle modification).
Ajouter un commentaire
Quelques articles qui devraient vous intéresser










Connexion
Les derniers!

