Blog Pro de Jean-Baptiste HEREN

Notes d'un consultant Freelance en Informatique

To content | To menu | To search

Organiser une plateforme de développement Web

Voici comment j'ai organisé ma plateforme de développement web, à partir de solutions mac pour le serveur et les clients. MacosX présente le double avantage de la convivialité et de l'ouverture d'un UNIX. Il est donc tout à fait possible de réaliser sur ce système, les tâches serveur que l'on réaliserait plus naturellement sous linux. Notez que sur le principe, ceci est réalisable sur n'importe quel OS actuel.

 Expression du besoin

Dans le cadre du développement d'un site e-commerce, j'ai ressenti le besoin de sécuriser le développement. Il est nécessaire, pour créer et faire évoluer un site Internet, d'avoir la possibilité de :

  • Développer indépendamment du serveur en production, seul ou en équipe.
  • Tester la migration des évolutions apportées, ainsi que les évolutions elles-mêmes, toujours sans perturber la prod.
  • Conserver un historique des modifications, de manière à Identifier les versions, et afin de pouvoir revenir en arrière en cas de problème.

1- Environnements requis

1.1 - Web server

L'installation du serveur web sur leopard est très simple : apache2 et php5 sont installés par défaut et nécessitent juste quelques modifications pour fonctionner. Il restera à installer manuellement mysql et PEAR.
Sur mac, on pourra aussi tout simplement utiliser le package MAMP, qui répond à l'ensemble des besoins en terme de serveur pour le développement web. Sur PC, easyphp fera très bien l'affaire.

DEV : Serveur sur lequel sont réalisés les développements, synchronisé manuellement avec le CVS par les développeurs.

TEST : Serveur de test synchronisé automatiquement avec le CVS toutes les 24H et à la demande. Ce serveur regroupe donc les modifications validées en DEV par l’ensemble des développeurs.

PROD : Ce serveur est mis à jour à la demande, avec la dernière version validée en test, à partir du CVS (milestone).

1.2 – Base de données

DEV : Cette base est utilisée par le serveur web de DEV. Les développeurs réalisent leurs modifications directement sur celle-ci. En revanche, les modifications faites doivent prendre la forme de scripts, afin de permettre leur migration. Après validation, ces scripts sont enregistrés sur le serveur CVS, et seront exécutés dans cet ordre, sur la base cible : 

  • 1 - /database/create.sql
  • 2 - /database/alter.sql
  • 3 - /database/insert.sql
  • 4 - /database/update.sql

TEST : Serveur mis à jour toutes les 24H et à la demande, à partir des scripts présents sur le CVS. Cette synchro est réalisée en même temps pour les éléments du serveur Web.

PROD : Cette base est mise à jour, suivant la même méthodologie que TEST, mais uniquement à la demande, pour l’application des versions validées.

1.3 - Source control

L’outil de source control peut être cvs ou svn. L’idéal étant d’utiliser un éditeur disposant d’un plugin cvs. Il est ainsi facile de réaliser les « checkout / checkin », sans utilisation de la ligne de commande.

L’éditeur Aptana ( Issu de Eclipse) dispose d’un tel plugin pour cvs.

L'outil cvs est inclus sur mac, dans les xcode tools. Ceux-ci sont livrés avec votre version de Macos ou peuvent être téléchargés depuis http://developer.apple.com.

Pour faire simple, un script de mise à jour automatique du cvs à partir de l'environnement de dev a été mis en place.

2- Développement (local et distant)

Les développeurs travaillent directement dans la base de DEV, utilisant un répertoire partagé. Il leur faut simplement prendre la précaution de « locker » les fichiers en cours de modification, au niveau du CVS, afin d’éviter que plusieurs développeurs ne modifient le même élément. Ceci peut être fait automatiquement en utilisant un IDE doté d’un module de gestion de sources.

Après test et validation dans l’environnement de développement, le développeur peut enregistrer sa modification dans le CVS.

3- Processus de Migration et Tests

Un moyen simple d'assurer la migration des nouveaux développements au sein du serveur web et de la base de données :

Le code est rechargé depuis le cvs, après validation. Ceci peut être fait directement par cvs, ou encore par ftp de puis l'environnement source.

Les scripts sql décrits plus haut sont exécutés sur l'environnement cible. L'environnement de Test doit garantir que le passage en production se fera sans risque, l'idéal étant out de même de disposer d'un environnement de pré-production identique à la prod pour tester la migration. 

4- Systèmes de Sauvegarde

Les possibilités de sauvegarde sont multiples, nous pourrons soit:

  • Lancer une sauvegarde automatique par script, déposant une archive dans une (ou plusieurs) zone de dépôt.
  • Utiliser le service Time Machine de leopard pour la sauvegarde du serveur et des clients.

4- Matériel nécessaire

Petite machine (virtuelle ?) ayant les fonctions suivantes : Serveur web, Serveur Mysql, NAT (iptables), CVS repository.

Sources :

http://stringfoo.com/2007/11/05/server_setup_on_leopard/
http://developer.apple.com/internet/opensource/cvsoverview.html

A approfondir : 

How to keep Test server in Sync with CVS Automatically ?
-> Simple cron to update cvs from dev tree.
diff tool capable of making paches for databases structure and data ?
-> SQLyog http://www.databasejournal.com/features/mysql/article.php/1584401

Jean-Baptiste Heren

Author: Jean-Baptiste Heren

Stay in touch with the latest news and subscribe to the RSS Feed about this category

Comments are closed


no attachment



You Might Also Like

Partage de connexion iphone free mobile

Activer le mode modem sur Iphone 3G avec free mobile sous OSX

Pour activer le partage de connexion avec free sur iOS inférieur à 5, il faut se débrouiller tout seul. 1 - Télécharger la configuration opérateur free mobile chez apple...

Continue reading

automatic ftp tranfers on windows OS client using the command line

Here is a little trick we used on a recent project. We needed to automatize : (local <-- remote) download files from an ftp server specified folder (remote --> remote/subfolder) move the...

Continue reading