2011-09-24 2 views
2

J'ai besoin de conseils pour pousser les mises à jour de Django, en particulier les mises à jour de la base de données, depuis mon serveur de développement vers mon serveur de production. Je crois que la mise à jour des scripts, des fichiers, et autres sera facile - il suffit de copier les nouveaux fichiers du serveur de dev au serveur de production. Cependant, les mises à jour de la base de données sont ce que je ne sais pas.Pousser les mises à jour de Django vers le serveur de production

Pour Django, j'ai utilisé South lors de la création de l'application Web initiale pour modifier le schéma de la base de données. Si je devais avoir un temps d'arrêt sur le serveur de production pour les mises à jour, je pourrais copier tous les fichiers sur le serveur de production. Ceux-ci incluraient et changeraient les fichiers models.py qui décrivent les tables de la base de données. Je pourrais alors effectuer un python manage.py schemamigration my_app --auto puis un python migrate my_app pour mettre à jour la base de données en fonction des nouveaux fichiers/models.py que j'ai copiés.

Est-ce une solution OK ou existe-t-il des moyens plus appropriés pour mettre à jour une base de données du développement aux serveurs de production?

Vos pensées?

Merci

Répondre

1

En fait, python manage.py schemamigration my_app --auto ne fera que créer la migration en fonction des changements dans models.py. Pour appliquer réellement la migration à la base de données, vous devez exécuter python manage.py migrate my_app. Une autre option consiste à créer des migrations (en exécutant schemamigration) sur le serveur de développement, puis à copier les fichiers de migration sur le serveur de production et à appliquer les migrations en exécutant migrate.

Bien sûr, avoir un référentiel de code source serait bien mieux que de copier les fichiers. Vous pouvez créer des migrations sur votre serveur de développement, les valider dans le référentiel, sur le serveur de production extraire les nouveaux fichiers du référentiel et enfin appliquer les migrations.

+0

Eh bien, à droite, j'ai omis la deuxième partie de l'opération de migration. J'ai édité ma question pour refléter cette deuxième commande. Ce que j'essaie de savoir, c'est si cette méthode est appropriée pour pousser les modifications de la base de données vers le serveur de production ou si je devrais examiner une autre méthode de mise à jour du schéma d'une base de données. – Garfonzo

Questions connexes