2008-09-01 28 views
7

Je suis au courant de Capistrano mais c'est un peu trop lourd pour moi. Personnellement, j'ai mis en place deux référentiels Mercurial, un sur le serveur de production et un autre sur mon ordinateur de développement local. Régulièrement, lorsqu'une nouvelle fonctionnalité est prête, j'applique les changements du dépôt sur mon ordinateur local au référentiel sur le serveur, puis je mets à jour le serveur. C'est un moyen assez simple et rapide pour garder les fichiers en synchronisation sur plusieurs ordinateurs, mais cela n'aide pas à mettre à jour la base de données.Comment mettez-vous à jour votre application Web sur le serveur?

Quelle est votre solution au problème?

Répondre

1

J'avais l'habitude d'utiliser git push pour publier sur mon serveur web mais dernièrement j'ai juste utilisé rsync. J'essaie de rendre mon site aussi indépendant que possible (en utilisant des chemins relatifs, etc.) et jusqu'à présent cela fonctionne plutôt bien. Le seul défi consiste à maintenir la synchronisation des bases de données, et pour cela, j'utilise généralement la base de données de production en tant que maître et effectue régulièrement des sauvegardes et des importations dans ma base de données de test.

+0

Je fais la même chose mais dernièrement, j'ai pensé que ce n'était vraiment pas atomique. Pas optimal pour un site web utilisé en permanence (les gens peuvent y accéder à un moment où tous les fichiers n'ont pas encore été synchronisés). – Gilles

+0

J'ajouterai qu'une manière plus optimale de le faire est de rsync vers un dossier A tandis que le dossier B contient votre site web en direct et ensuite de passer du format A à B en écrasant un lien symbolique qui pointe vers la version en cours. Et puis la prochaine fois, rsync à B. – Gilles

0

@ Andrew

Pour utiliser git push pour déployer votre site, vous devez faire d'abord configurer un serveur distant dans votre fichier .git/config pour pousser à. Ensuite, vous devez configurer un hook qui effectuera une réinitialisation git --hard pour copier le code que vous venez de copier dans le référentiel vers le répertoire de travail. Je sais que c'est un peu vague, mais j'ai effectivement supprimé le dossier .git côté serveur une fois que je suis passé à rsync, donc je n'ai pas les scripts exacts que j'ai utilisés pour faire la magie. Cela pourrait être un bon candidat pour une question complète, alors vous pourriez obtenir plus de réponses de cette façon.

modifier: Je sais que ça fait un certain temps, mais j'ai finalement trouvé ce que j'utilisais encore:

Deploy a project using Git push

1

Ou Fabric, si vous préférez Python.

+0

Plus de détails sur le tissu: http://stackoverflow.com/questions/1233655/what-is-the-simplest-way-to-ssh-using-python – hughdbrown

1

qu'est-ce qui pèse sur le capistrano? Si vous voulez synchroniser les fichiers, alors rsync est génial. mais si vous allez avoir besoin de faire des mises à jour DB peut-être cap n'est pas si mal?