Wie aktualisiere ich einen Live-Drupal-Server, ohne den Inhalt zu überschreiben?

9

Ich habe eine Website, die live ist und die Leute aktiv Inhalte einfügen. Ich musste jedoch einige Änderungen in der Entwicklungsumgebung vornehmen, was mich einige Wochen gekostet hat. Die Änderungen erforderten die Installation neuer Module und die Entfernung alter Module, was natürlich den Inhalt und die Struktur der Datenbank veränderte.

Meine Frage ist, wie ich diese Site wieder in die Live-Umgebung hochlade und die Datenbank aktualisiere, ohne die neuen Inhalte zu überschreiben, die neue Benutzer in den letzten zwei Wochen hinzugefügt haben.

blue928
quelle
Ich denke, Sie müssen die Live-Site sperren, dh "Kein Benutzer darf Updates anwenden", die Live-Site mit Ihrem Entwicklungsserver synchronisieren, Ihre Änderungen anwenden und erneut synchronisieren. Ich habe das folgende Setup: Entwicklungsserver (nur um Update-Code usw. hinzuzufügen), ein Master-Server - der Entwicklungsserver wird auf diesem bereitgestellt (wo Benutzer Inhalte hinzufügen) und ein Live-Server (der Master wird auf diesem bereitgestellt).
Cyclonecode

Antworten:

3

Thomas Zahreddin hat recht. Aber je nachdem, was sich geändert hat ("hat mich ein paar Wochen gekostet ..."), gibt es noch mehr Dinge zu beachten.

  1. Haben Sie Inhaltstypen hinzugefügt / geändert? Versuchen Sie, sie zu exportieren und zu importieren. Stellen Sie sicher, dass Sie keine Inhalte verlieren.
  2. Haben Sie Ansichten hinzugefügt / geändert? Sie können sie sicher exportieren und importieren.
  3. Modul-Updates. Testen Sie sie an aktuellen Daten. Es besteht immer die Möglichkeit, dass Benutzerdaten ein Update beschädigen.
  4. Änderungen an der Modulkonfiguration. Wenn es nicht zu viel ist, machen Sie sich Notizen und wiederholen Sie sie. Andernfalls probieren Sie die Funktionen und starken Armmodule aus. Eine andere Möglichkeit besteht darin, die genauen Variablennamen herauszufinden und die Werte in das zu schreiben settings.php.
  5. Sie haben zusätzlichen Inhalt im Entwicklungssystem. Hier wird es richtig haarig. Sie können das Bereitstellungsmodul oder den Knotenexport ausprobieren . Aber sie sind keine Silberkugeln.

Wenn Sie keinen trivialen Fall haben, empfehle ich Ihnen, Ihr Verfahren im Voraus zu testen. Und natürlich sichern Sie Dateien und Daten, bevor Sie mit dem Live-System beginnen. ( Backup and Migrate ist hier nützlich.)

BetaRide
quelle
1

Sie müssen überprüfen, was Sie ändern möchten:

  • Inhaltstyp oder Bundle -> Fügen Sie den neuen Inhaltstyp | Bundle ein, exportieren und importieren Sie die Knoten oder ändern Sie das Contenttype | Bundle in der Datenbank für diese Datensätze
  • Name einzelner Felder und deren Vorkommen in Inhaltstypen | Bundles -> zB mit Admin-Oberfläche oder
  • Werte in Feldern -> schwierigste Aufgabe: Sie können dies über SQL in der Datenbank (wahrscheinlich) oder mit einem Modul wie migrate tun
Thomas Zahreddin
quelle
1

Ich habe das gleiche Verfahren bei der Arbeit, wenn ich Drupal-Websites aktualisiere. Das größte Problem ist, dass Drupal nicht wirklich gute Arbeit darin leistet, Inhalte und Logik in seiner Datenbank auseinander zu halten.

Die Antworten von Thomas Zagreddin und BetaRide reichen aus, um Ihnen die beste Chance zu geben, die Migration erfolgreich abzuschließen. Es gibt wirklich keinen heiligen Gral zu diesem Thema.

Ich möchte Ihnen jedoch einen Entwicklungstipp geben, der mir viel Mühe erspart, unsere Websites auf dem neuesten Stand zu halten: Versuchen Sie, Ihre Logik so weit wie möglich in Ihrem Code (Module / Themen) zu halten. Versuchen Sie beispielsweise, das Erstellen von Ansichten so weit wie möglich zu vermeiden. Manchmal müssen Sie, aber das erfordert ein weiteres Datenbank-Update ...

Verwenden Sie das Quellcodeverwaltungsmanagement!

Wenn Sie in der Lage sind, alles auf den Code zu beschränken (dies ist natürlich nicht immer möglich), können Sie einfach einen SCM wie Git , SubVersion oder Mercury verwenden , um Ihre Quelle zu aktualisieren, und im schlimmsten Fall auf a zurückkehren vorherige Version Ihrer Quelle, wenn Ihr Update nicht wie geplant funktioniert.

Und natürlich, wie in den vorherigen Antworten angesprochen: Backup, Backup, Backup, Backup ...

Ambidex
quelle
0

Für die meisten Änderungen können Sie das Funktionsmodul verwenden. Dieses Modul kann nur die Änderungen ändern, die Sie in der lokalen Umgebung vorgenommen haben.

Andernfalls können Sie dieses schöne Modul verwenden. Sichern und migrieren. Installieren Sie dieses Modul zuerst online, erstellen Sie dann die Sicherung des gesamten vorhandenen Inhalts oder der Datenbank und stellen Sie es dann lokal bereit . Nehmen Sie dann die gewünschten Änderungen vor Ort vor, erstellen Sie erneut eine Sicherungskopie Ihrer lokalen Daten und stellen Sie sie dann online bereit.

Rishi
quelle
0

Ich hatte gerade das gleiche Problem. Um es zu lösen, bemerkte ich, dass der einzige Inhalt, den ich im Leben hatte, der nicht in dev war, neue Benutzerdetails waren. Ich ging einfach zur Registerkarte "Personen" des Administrators und kopierte die Personendetails in "dev". In dev habe ich sie einfach ohne Automatisierung eingegeben. Wenn ich das nächste Mal von dev hochlade, stimmen die Personendetails natürlich und werden nicht überschrieben.

Michael O'Callaghan
quelle
Willkommen bei Drupal Antworten! Ich bin mir sicher, dass das oben Genannte für Sie einfach großartig funktioniert hat, aber es klingt nicht sehr robust. Das Eingeben von Inhalten ist anfällig für Tippfehler. Wenn beim nächsten Mal neue Inhalte live geschaltet werden, werden diese überschrieben (es sei denn, Sie denken daran, sie erneut einzugeben).
Free Radical