Accueil > Boîtes à outils > Tutoriels > Mon ordinateur de développement

Mon ordinateur de développement

Comme le faisaient remarquer Denis -esp2008- et Nel, développer ses scripts sur un serveur mutualisé n’est pas une bonne pratique [1]. Voici donc quelques idées pour bien configurer sa machine "locale" de façon à en faire un serveur de développement permettant de tester les sites avant de les déployer sur les serveurs d’Ouvaton.

Précisons tout d’abord qu’il s’agit de développement de sites dynamiques, c’est à dire impliquant un traitement côté serveur. Pour le cas d’Ouvaton, c’est le cas des pages PHP ou CGI. En effet, si votre site est fait exclusivement de pages HTML statiques, et que son éventuel contenu dynamique est géré côté client (avec du JavaScript, par exemple), les conseils prodigués dans cet article fonctionnent aussi, mais ne sont absolument pas indispensables : vous pouvez vous contenter de consulter vos fichiers de développement dans un fureteur.

Ce qu’on veut donc, c’est disposer, sur son ordinateur "local", d’un environnement de développement similaire à celui d’Ouvaton. Je me contenterai ici de couvrir PHP et MySQL, mais il est possible d’arriver au même résultat avec les CGI. (Page et lien à faire : Si ça vous intéresse, voici une courte description de la façon dont fonctionne un site web dynamique hébergé chez Ouvaton.)

Il va donc nous falloir disposer, sur notre ordinateur de bureau, d’un serveur web, de PHP et d’un serveur MySQL. Tous les ordinateurs disposent déjà d’un système de fichiers, et pour le travail en local, il n’est évidemment pas nécessaire d’utiliser un serveur FTP. Si vous utilisez MacOS X, vous devez déjà avoir un serveur web (Apache), et si vous utilisez Windows NT aussi (Microsoft Internet Information Server — IIS pour les intimes). MacOS X doit aussi avoir PHP, pas Windows. Renseignez-vous sur votre machine pour choisir, parmi les éléments décrits dans ’Installations’, ceux que vous allez installer.

Pour plus de détails sur les installations sur Windows, essayez ce tutoriel (installation d’Apache) ou celui-ci (installation d’Apache, php et mysql).

Pour les installations sur Mac, la ’bible’ se trouve chez Marc Liyanage qui a porté pour Mac Os tout ce dont vous avez besoin pour compléter votre serveur Apache inclus dans le système, et vous fournit des tutoriels (en anglais).

Installations simplifiées

Si vous voulez une solution ’toute prête’, vous pouvez considérer les options suivantes :
- EasyPHP pour Windows (Apache, MySQL, PHP)
- MAMP pour MacOs (Apache, MySQL, PHP)
- Mov’Amp pour Windows (Apache, MySQL, PHP, phpMyAdmin)
- xampp pour Windows, MacOS, Linux, Solaris (Apache, MySQL, PHP, Perl)

Installations

Choisir, télécharger et installer une version d’Apache depuis httpd.apache.org. [2]

Pour le moment, Ouvaton utilise Apache version 1.3. La version 2 est réputée plus stable (notamment sur des machines Windows), mais la compatibilité avec PHP n’est encore pas optimale. L’installation de PHP pour Apache 1.3 est aussi plus simple.

Configurez Apache pour qu’il se comporte comme sur Ouvaton (fichier httpd.conf) :

Dans le bloc Directory qui correspond à votre DocumentRoot, modifier la directive AllowOverride pour qu’elle ait la valeur All, ce qui vous permettra d’utiliser les .htaccess.

Télécharger la dernière version stable de MySQL depuis mysql.com. [3]

Pour chaque base de données utilisée sur Ouvaton par votre site, il sera nécessaire de maintenir deux copies semblables de la base, et d’avoir un utilisateur ayant le même nom et le même mot de passe. Pour effectuer le transfert de votre base, utilisez phpMyAdmin (à télécharger ici et à installer quelque part sur votre serveur web local).

Télécharger la dernière version stable de PHP depuis php.net. [4]

Configurez PHP pour qu’il se comporte autant que possible comme sur Ouvaton (fichier php.ini) [5] :

auto_prepend_file = prepend.php3

N’oubliez pas de lancer Apache et MySQL.

Maintenant que tout doit être configuré correctement, on passe au développement. Les instructions ci-dessous ont pour but de vous simplifier la vie, et notamment de rendre la mise en production d’un site en développement aussi rapide que possible. Tout est optionnel, et il existe des manières de faire différentes à chaque étape, mais l’ensemble tel qu’il est ainsi décrit fait sens.

Domaine et emplacement des fichiers

Pour que tout fonctionne exactement de la même façon, il faudrait que votre ordinateur réponde au même nom de domaine que votre site de production. C’est possible, mais c’est fastidieux (vous aurez besoin de modifier une ligne du fichier HOSTS (voir plus bas) à chaque fois que vous voudrez voir votre site de développement ou bien votre site de production. Une meilleure stratégie est donc de se définir un domaine particulier. Par exemple, si vous travaillez sur le site www.monsite.net, vous pourriez décider d’utiliser dev.monsite.net comme nom de domaine de développement. C’est purement arbitraire, ne fonctionnera que sur votre propre ordinateur, et n’implique pas réellement d’histoires de DNS. Pour que les requêtes envoyées à dev.monsite.net soient traitées par votre ordinateur, il faut configurer votre fichier HOSTS pour faire correspondre à dev.monsite.net l’adresse 127.0.0.1 (qui est celle de votre ordinateur, par convention). Il existera en tous cas une différence entre votre site de développement et le site en ligne : le nom de domaine (auquel vous accédez par $_SERVER[’HTTP_HOST’] ou $_SERVER[’SERVER_NAME’]). N’oubliez pas d’en tenir compte dans votre développement.

Vous travaillerez donc "en local" dans le dossier que la configuration d’Apache appelle DocumentRoot (sur Windows, le défaut sera "c :\Program Files\Apache Group\Apache\htdocs" mais vous pouvez le configurer pour pointer vers un endroit plus confortable, comme par exemple l’endroit où vous stockez déjà les fichiers de votre site, comme par exemple "c :\mes documents\sites\monsite\html\"). Pour assurer une bonne compatibilité avec Ouvaton, créez, dans le même répertoire que votre DocumentRoot (par exemple dans c :\Program Files\Apache Group\Apache ou dans c :\mes documents\sites\monsite\) un répertoire php-include. Créez-y un fichier prepend.php3 qui peut être vide pour le moment.

Configurez plus finement Apache et PHP, en modifiant httpd.conf. Dans le bloc qui correspond à votre DocumentRoot, ajoutez la ligne suivante :

php_value include_path "XXX\php-include;."

en remplaçant XXX par l’endroit où vous avez mis votre répertoire php-include. Par exemple, si votre DocumentRoot a comme valeur "c :\mes documents\sites\monsite\html\", vous pouvez mettre ici "c :\mes documents\sites\monsite\php-include".

Chemins

Toutes les opérations de fichiers faites en PHP (telles que fopen(), include(), etc.) peuvent être faites de manière relative (c’est à dire en indiquant des chemins relativement à l’emplacement du script en cours d’exécution). Dans ce cas, la mise en production d’un site développé en local pourra se faire sans ajustements, puisque l’arborescence de votre site sera la même dans ces deux états. Toutefois, l’utilisation de chemins relatifs n’est pas toujours pratique. Par exemple, si vous utilisez plusieurs niveaux de sous-répertoires, vous préférez peut-être utiliser des chemins absolus pour ne pas avoir à vous préoccuper de savoir où vous vous trouvez actuellement dans l’arborescence. Les chemins absolus vont forcément vous poser problème, puisque si l’arborescence de votre site local est la même qu’en production, en revanche son emplacement dans le système de fichier de votre ordinateur n’est pas la même que sur les serveurs d’Ouvaton.

Une bonne solution est de faire usage de prepend.php3. La configuration des serveurs d’Ouvaton fait que ce fichier est inclus dans chaque script qui s’exécute. Initialement, il est vide (il n’a donc pas d’effet), mais vous pouvez y mettre ce que vous voulez. Il est situé dans le répertoire /php-include (voir ci-dessus). Vous pouvez utiliser la constante magique __FILE__ avec la ligne suivante :

$racine = realpath(dirname(__FILE__).'/../html/').'/';

Dans votre développement, quand vous voulez utiliser un chemin absolu, utilisez $racine (que vous pouvez renommer à votre convenance, bien sûr). Par exemple, si je souhaite inclure bibli/bib.php depuis test/test2/test.php, je peux utiliser la ligne suivante :

include($racine.'bibli.bib.php');

Bien sûr, pour cet exemple précis, il est plus pratique de mettre bib.php directement dans le répertoire php-include, ce qui le rend accessible depuis n’importe où dans l’arborescence, mais ce n’est pas toujours possible. Vous pouvez aussi utiliser $racine pour vos uploads de fichiers par le web, par exemple.

Plusieurs domaines

Si vous travaillez sur plusieurs sites (avec des domaines différents), il faut configurer Apache en mode "virtual hosting". Par exemple, disons que vous travaillez sur www.monsite.net et www.monasso.fr. Vous insérerez deux lignes dans le fichier HOSTS pour faire pointer dev.monsite.net et dev.monasso.fr sur 127.0.0.1, et vous ajouterez les trois blocs suivants dans le fichier de configuration d’Apache :

NameVirtualHost *

tout d’abord pour faire fonctionner le truc, puis

<VirtualHost *>
  DocumentRoot "c:/mes documents/sites/Mon Site/html/"
  ServerName dev.monsite.net
  php_value include_path "c:/mes documents/sites/Mon Site/php-include/"
</VirtualHost>

et

<VirtualHost *>
  DocumentRoot "c:/mes documents/sites/Association/html/"
  ServerName dev.monasso.fr
  php_value include_path "c:/mes documents/sites/Association/php-include/"
</VirtualHost>

N’oubliez pas de créer chaque nouveau dossier php-include (un par nouveau domaine), et d’y créer le fichier prepend.php3 puis de redémarrer Apache après cette manipulation.

Le fichier HOSTS

Pour configurer votre ordinateur de façon à ce qu’il réponde à un certain nom de domaine, il faut insérer des lignes dans le fichier HOSTS. Pour plus d’informations, voir cet article. Dans notre cas, l’idée sera de faire correspondre l’IP 127.0.0.1 à votre domaine de développement. Pour que votre ordinateur réponde au domaine dev.monsite.net, par exemple, ajoutez donc à votre fichier HOSTS la ligne

127.0.0.1  dev.monsite.net

Tant que vous y êtes, ajoutez-y aussi

127.0.0.1  sql01.ouvaton.coop

qui vous permettra par ailleurs de ne pas avoir à reconfigurer le serveur de base de données.

Les URL

Du point de vue de l’html, utiliser les ’trucs’ ci-dessus permet d’accéder à vos fichiers de développement dans des conditions assez proches de leur état en production. Une différence qui subsiste est celle du nom de domaine. Ne l’oubliez pas quand vous créez des URLs. Une URL peut en effet être relative (par exemple, un lien depuis la page http://www.monsite.net/testdir/hello.php vers http://www.monsite.net/testdir/bonjour.php peut être codé lien. Mais un lien peut aussi être absolu : il peut ainsi comporter un chemin complet (lien absolu), ce qui permet au lien de continuer de fonctionner si hello.php change de répertoire et que bonjour.php n’en change pas ; il peut aussi comporter une URL complète (lien absolu 2), ce qui lui permet de fonctionner même si hello.php change de serveur. Selon toute probabilité, vous chercherez donc à éviter les URL complètes, pour vous permettre justement de travailler sur votre serveur de développement sans que les liens internes continuent de pointer sur le serveur de production. Ensuite, l’usage (ou non) du chemin dépend du contexte.


Raphaël, le 30 mai 2003


[1Voir ce message

[2On peut utiliser d’autres serveurs web, mais c’est un très bon serveur, y’a peu de raisons de choisir autre chose — et si vous avez déjà un serveur web installé, comme IIS, il vous sera peut-être plus facile de supprimer IIS et d’installer Apache quand même. Et ce d’autant plus qu’on cherche à disposer d’un environnement de développement aussi proche que possible de l’environnement de production. Or il existe quelques spécificités à la façon dont chaque serveur web fonctionne, et certaines fonctions de PHP disponibles pour Apache (donc sur Ouvaton) ne le sont pas sur IIS, et vice-versa

[3Chercher dans la série 3.5, pas 4 (qui n’est à l’heure actuelle pas disponible sur Ouvaton)

[4Suivre patiemment les instructions d’installation. Pour notre objectif, c’est l’installation sous forme de module Apache que vous chercherez à mettre en place, et en tous cas pas la version CGI. Prenez votre temps pour lire la documentation de l’installation. C’est touffu mais pas compliqué.

[5Vous pouvez vous servir de la fonction phpinfo() pour calquer exactement la configuration de votre machine sur celle d’Ouvaton, notamment du point de vue des modules disponibles.