Comment mettre à jour un serveur Drupal Live sans écraser le contenu?

9

J'ai un site qui est en direct et les gens mettent activement du contenu. Cependant, j'ai dû faire quelques changements dans l'environnement de développement, ce qui m'a pris quelques semaines. Les modifications ont nécessité l'installation de nouveaux modules et la suppression des anciens, ce qui a bien sûr modifié le contenu et la structure de la base de données.

Ma question est de savoir comment télécharger ce site dans l'environnement en direct et mettre à jour la base de données sans écraser le nouveau contenu que les nouveaux utilisateurs ont ajouté au cours des deux dernières semaines?

blue928
la source
Je suppose que vous devrez verrouiller le site en direct, c'est-à-dire "aucun utilisateur ne peut appliquer les mises à jour", synchroniser le site en direct avec votre serveur de développement, appliquer vos modifications et synchroniser à nouveau. J'ai la configuration suivante: serveur de développement (uniquement pour ajouter du code de mise à jour, etc.), un serveur maître - le serveur de développement est déployé sur celui-ci (où les utilisateurs ajoutent du contenu) et un serveur en direct (le maître est déployé sur celui-ci).
Cyclonecode

Réponses:

3

Thomas Zahreddin a raison. Mais en fonction de ce qui a changé ("ça m'a pris quelques semaines ..."), il y a plus de choses à considérer.

  1. Avez-vous ajouté / modifié des types de contenu. Essayez de les exporter et de les importer. Assurez-vous que vous ne perdez pas de contenu.
  2. Avez-vous ajouté / modifié des vues? Vous pouvez les exporter et les importer en toute sécurité.
  3. Mises à jour du module. Testez-les sur les données actuelles. Il y a toujours une chance que les données utilisateur interrompent une mise à jour.
  4. Modifications de la configuration du module. Si ce n'est pas trop, prenez des notes et refaites-les. Sinon, essayez les fonctionnalités et les modules de bras solides . Une autre option consiste à déterminer les noms exacts des variables et à écrire les valeurs dans le settings.php.
  5. Vous avez du contenu supplémentaire dans le système de développement. Ici, les choses deviennent vraiment velues. Vous pouvez essayer le module de déploiement ou l' exportation de noeud . Mais ce ne sont pas des balles d'argent.

Si vous n'avez pas de cas trivial, je suggère de tester votre procédure à l'avance. Et bien sûr, effectuez des sauvegardes de fichiers et de données avant de commencer sur le système en direct. (La sauvegarde et la migration sont utiles ici.)

BetaRide
la source
1

Vous devez vérifier ce que vous voulez changer:

  • contenttype ou bundle -> insérer le nouveau contenttype | bundle, exporter et importer les nœuds, ou modifier le contenttype | bundle dans la base de données pour ces enregistrements
  • nom de champs uniques et présence dans les types de contenu | bundles -> par exemple avec l'interface d'administration ou
  • valeurs dans les champs -> tâche la plus difficile: vous pouvez le faire via SQL dans la base de données (probablement) ou avec un module comme migrer
Thomas Zahreddin
la source
1

J'ai la même procédure à gérer au travail lors de la mise à jour des sites Web Drupal. Le plus gros problème est que Drupal ne fait pas vraiment un excellent travail pour garder le contenu et les logiques à part dans sa base de données.

Les réponses données par Thomas Zagreddin et BetaRide suffiraient à vous donner une meilleure chance de terminer la migration avec succès. Il n'y a vraiment pas de Saint Graal à ce sujet.

Je voudrais cependant vous donner une astuce de développement qui m'évite beaucoup de mal à maintenir nos sites à jour: essayez de garder vos logiques autant que possible dans votre code (modules / thèmes). Par exemple, essayez d'éviter autant que possible de créer des vues. Parfois, vous devrez le faire, mais cela nécessitera une autre mise à jour de la base de données ...

Utilisez la gestion du contrôle de source!

Si vous pouvez tout garder dans le code (bien sûr, vous ne pourrez toujours pas le faire), vous pouvez simplement utiliser un SCM comme Git , SubVersion ou Mercury pour mettre à jour votre source, et dans le pire des cas, revenir à un version précédente de votre source si votre mise à jour ne fonctionne pas comme prévu.

Et, bien sûr, comme abordé dans les réponses précédentes: sauvegarde, sauvegarde, sauvegarde, sauvegarde ...

Ambidex
la source
0

Pour la plupart des modifications, vous pouvez utiliser le module Fonctionnalités Ce module ne peut modifier que les modifications, qu'avez-vous fait sur l'environnement local.

Sinon, vous pouvez utiliser ce beau module Sauvegarder et migrer Installez simplement ce module en ligne d'abord, puis effectuez la sauvegarde de tout le contenu ou de la base de données existants, puis déployez-le sur local. Ensuite, modifiez ce que vous voulez en local, prenez à nouveau une sauvegarde de votre local, puis déployez-le en ligne.

Rishi
la source
0

J'ai juste eu le même problème. Pour le résoudre, j'ai remarqué que le seul contenu que j'avais en direct qui n'était pas en développement était de nouveaux détails utilisateur. Je suis simplement allé dans l'onglet Personnes de l'administrateur et j'ai copié les détails des personnes dans le développement. En dev, je viens de les saisir sans aucune sorte d'automatisation. Ainsi, la prochaine fois que je téléchargerai depuis le développeur, les détails des personnes seront naturellement corrects et ne seront pas écrasés.

Michael O'Callaghan
la source
Bienvenue dans les réponses Drupal! Bien que je sois sûr que ce qui précède a fonctionné très bien pour vous, cela ne semble pas très robuste. Taper des trucs est sujet à des fautes de frappe, et s'il y a de nouveaux trucs en direct la prochaine fois, ils seront écrasés (sauf si vous vous souvenez de les taper à nouveau).
Radical gratuit du