8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'aimerais savoir comment faites-vous pour déployer vos sites en php sur un serveur de production? Et surtout après comment faites-vous pour mettre à jour le site de production quand la version de dev a été mis à jour/modifié?

Actuellement je développe mes sites en php en local, et je test avec wamp ou mamp sous Mac.

Une fois le site finit, je doit le transférer avec Filezilla sur le serveur ftp d'un hébergeur.

Cela me pose beaucoup de problème, car je dois tout gérer à la main, le risque d'erreur est énorme, et aussi une perte de temps...

- Lors de la modification des fichiers en dev, je dois transférer fichiers par fichiers en prod
- Lors du déploiement, certains fichiers ne doivent pas être mise à jour, notamment les fichiers de config, les accès à mysql...

Existe-il des programmes qui permettent d'obtenir un dossier "pack" qui contient tout les fichiers modifiées depuis la dernière mise à jour, en gardant l' arborescence du site et qui permet d'exclure des dossiers/fichiers? Ce qui me permettera de juste glisser le résultat à la racine du ftp, sans me soucier d'en avoir oublier ou de les placer à la mauvaise place...

Merci d'avance
J'utilise (encore) TortoiseSVN qui est une interface simple pour Subversion. Mais Git est très populaire ces derniers temps (mais j'ai pas encore testé).
Modifié par jb_gfx (13 May 2012 - 17:46)
J'ai un dépôt git/mercurial privé par projet sur github ou bitbucket.
A chaque commit, je pushe sur le dépot distant, et je fais un pull sur le serveur en production.
Des outils comme fabric (python) ou capistrano (ruby) permettent de faciliter et d'automatiser le processus en écrivant des scripts très simplement et en lançant une simple commande dans un shell.
Un .hgignore/.gitignore permet d'ignorer les fichiers que tu ne veux pas commiter (les fichiers de config par ex)
Adopte immédiatement un DVCS comme git (c'est devenu un standard) ou mercurial. Ça fait un peu peur au début, mais tu y trouveras tout plein d'avantage.
Modifié par paolo (13 May 2012 - 17:57)
C'est possible d'utiliser des patterns pour ignorer certains fichiers sur Git ? Si je veux exclure tous les dossiers commençants par un underscore.
Modifié par jb_gfx (13 May 2012 - 18:05)
Merci, je testerai dés que j'aurais le temps de tester correctement Git. Ça fait un moment que je veux l'essayer.
Bonsoir,

Comme Paolo, je t’invite à utiliser un DVCS… c’est essentiel pour suivre la vie du projet et en gérer les fichiers et Git est vraiment bien fait et relativement simple et performant.
Tu pourras même épater tes collègues en leur montrant une vidéo récapitulant la vie du projet http://code.google.com/p/gource/ … ça fait un meilleur effet dans une présentation qu'une liste des fichiers (c’est de l’amusement bien entendu). Smiley cligne

Sinon, si tu as encore un peu plus de temps, regarde du coté des outils comme ANT ou PHING qui permettent de créer des scripts assez évolués facilement (en incluant / excluant des fichiers) afin d’automatiser un certain nombre d’opérations avant une mise en production par exemple.
Bonjour,

Tout d'abord merci pour vos réponses.

Si je comprend bien un DCVS est un serveur de gestion des versions comme Git ou SVN?

paolo a écrit :
J'ai un dépôt git/mercurial privé par projet sur github ou bitbucket.
A chaque commit, je pushe sur le dépot distant, et je fais un pull sur le serveur en production.


Pour faire un pull sur le serveur de production, il faut obligatoirement que Git ou SVN soit installé sur ce serveur de production?

Si oui, impossible dans mon cas, les sites que je mets en prod, sont la pluspart du temps sur des hébergements mutualisés, avec juste un accès par ftp...


Jules-F a écrit :

Sinon, si tu as encore un peu plus de temps, regarde du coté des outils comme ANT ou PHING qui permettent de créer des scripts assez évolués facilement (en incluant / excluant des fichiers) afin d’automatiser un certain nombre d’opérations avant une mise en production par exemple.


J'ai un peu regardé en vitesse ces outils, intéressant certe, mais ça me parait un peu compliquer à mettre en place, et je suppose qu'il faut aussi quelques choses d'installé sur le serveur de production afin que ça fonctionne? hors je ne peux rien installé sur ces serveurs de prod...

En cherchant j'ai pensé à trouvé un programme qui fait des sauvegardes sur ftp, un genre de sauvegarde incrémentale comme j'ai pu lire, mais je n'ai pas encore trouvé mon bonheur...

Peut-être faire un outils en php qui me ferait tout ça? à voir...
a écrit :
J'ai un peu regardé en vitesse ces outils, intéressant certe, mais ça me parait un peu compliquer à mettre en place, et je suppose qu'il faut aussi quelques choses d'installé sur le serveur de production afin que ça fonctionne? hors je ne peux rien installé sur ces serveurs de prod...


Oui, c’est un peu compliqué au début mais c’est loin d’être insurmontable. On trouve pas mal d’exemple et de documentation un peu partout.

Non, tu n’as pas forcement besoin d’avoir quelque chose d’installé sur le serveur de production.
Tu peux utiliser la chose à partir d’un serveur de développement, ou de pré-production ou ton espace de travail.

ANT nécessite java mais PHING est son équivalent PHP et ne nécessite que PHP (et si tu connais PHP tu peux étendre les fonctionnalités assez facilement).

Je ne l’ai pas utilisé depuis longtemps, mais avec PHING j’avais un script qui compressait les images, initialiser les fichiers de configuration de mon projet avec les données de production et automatisait le téléchargement des fichiers sur le serveur de production via FTP pour enfin créer un gros fichiers tar.gz du projet pour archivage.

J’en avais un autre qui parcourais tous les fichiers PHP et XML de mon projet la nuit afin de faire une analyse et une détection d’erreurs de syntaxe et me mailer le résultat à la fin.
Au petit matin je pouvais voir si tout était OK … c’est accessoire quand tu es seul sur ton projet mais quand tu travailles en équipe ça permet de vérifier que tout évolue dans le bon sens.

Voila, il y a beaucoup beaucoup d’utilisations possible pour ce genre de chose. Le projet BoilerPlate utilise ANT pour automatiser la compression des images, fusionner les fichiers CSS, minifier et fusionner les fichiers javascript d’un projet par exemple.
Ce sont des outils souvent utilisé pour l’intégration continue.

Alors oui, c’est pas forcement facile et ça ajoute une étape supplémentaire avant la mise en production mais ça fait en général gagner du temps et l’automatisation te permet de t’assurer que tu n’oublies rien lors des tâches répétitives.

Il y a des bons slides de présentation en bas de cette page : http://www.phing.info/trac/wiki/Users/Documentation

Certains articles en français te convaincront peut-être de l’intérer de la chose :
- http://www.pheelit.fr/HighTech/Developpement/Phing-Premiere-approche
- http://farcellier.developpez.com/tutoriels/php/phing-gerer-cycle-vie-projet/


a écrit :
En cherchant j'ai pensé à trouvé un programme qui fait des sauvegardes sur ftp, un genre de sauvegarde incrémentale comme j'ai pu lire, mais je n'ai pas encore trouvé mon bonheur...

FTP est quand même bien limité… j’en ai horreur.
Peut-être peux-tu avoir accès à des choses plus évoluées comme rsync / ssh ?

Bon courage.
Je connais à peine ant et phing, mais ce sont des outils différents. Fabric et capistrano sont vraiment des outils légers orientés vers le déploiement et les tâches consécutives.
Nul besoin que ton hébergement supporte les langages concernés (ruby et python), ça tourne en local.

Par contre, tu ne feras rien avec un hébergement qui n'a même pas un accès ssh. On peut trouver des mutualisés qui offrent un accès ssh et tout ce qu'il faut pour travailler (presque) comme sur un dédié/vps, sans le souci de l'infogérance.