Jak zaktualizować serwer Live Drupal bez nadpisywania zawartości?

9

Mam witrynę, która jest na żywo, a ludzie aktywnie zamieszczają treść. Musiałem jednak wprowadzić pewne zmiany w środowisku programistycznym, co zajęło mi kilka tygodni. Zmiany wymagały zainstalowania nowych modułów i usunięcia starych, co oczywiście zmieniło zawartość i strukturę bazy danych.

Moje pytanie brzmi: w jaki sposób mogę przesłać tę stronę z powrotem do środowiska na żywo i zaktualizować bazę danych bez zastępowania nowej zawartości nowymi użytkownikami dodanymi w ciągu ostatnich dwóch tygodni?

blue928
źródło
Myślę, że będziesz musiał zablokować działającą witrynę, tzn. „Żaden użytkownik nie może zastosować aktualizacji”, zsynchronizować działającą witrynę z serwerem programistycznym, zastosować zmiany i ponownie zsynchronizować. Mam następującą konfigurację: serwer programistyczny (tylko w celu dodania kodu aktualizacji itp.), Serwer główny - serwer programistyczny jest na nim wdrożony, (gdzie użytkownicy dodają treść) i serwer na żywo (serwer główny jest wdrażany na tym).
Cyclonecode

Odpowiedzi:

3

Thomas Zahreddin ma rację. Ale w zależności od tego, co się zmieniło („zajęło mi kilka tygodni ...”), jest więcej rzeczy do rozważenia.

  1. Czy dodałeś / zmieniłeś typy zawartości? Spróbuj je wyeksportować i zaimportować. Upewnij się, że nie tracisz zawartości.
  2. Czy dodałeś / zmieniłeś widoki? Możesz je bezpiecznie eksportować i importować.
  3. Aktualizacje modułu. Przetestuj je na aktualnych danych. Zawsze istnieje szansa, że ​​dane użytkownika spowodują uszkodzenie aktualizacji.
  4. Zmiany konfiguracji modułu. Jeśli to nie za dużo, rób notatki i ponów je. W innym przypadku wypróbuj funkcje i silne moduły ramion . Inną opcją jest ustalenie dokładnych nazw zmiennych i zapisanie wartości w settings.php.
  5. Masz dodatkową zawartość w systemie deweloperskim. Tutaj rzeczy stają się naprawdę owłosione. Możesz spróbować wyeksportować moduł wdrażania lub eksport węzła . Ale to nie są srebrne kule.

Jeśli nie masz trywialnego przypadku, proponuję wcześniej przetestować procedurę. I oczywiście rób kopie zapasowe plików i danych przed uruchomieniem systemu na żywo. ( Przydaje się tutaj kopia zapasowa i migracja ).

BetaRide
źródło
1

Musisz sprawdzić, co chcesz zmienić:

  • typ zawartości lub pakiet -> wstaw nowy typ zawartości | pakiet, wyeksportuj i zaimportuj węzły lub zmień typ zawartości | pakiet w bazie danych dla tych rekordów
  • nazwy pojedynczych pól i występowanie w typach zawartości | pakiety -> np. z interfejsem administratora lub
  • wartości w polach -> najtrudniejsze zadanie: możesz to zrobić przez SQL w bazie danych (prawdopodobnie) lub za pomocą modułu takiego jak migracja
Thomas Zahreddin
źródło
1

Mam tę samą procedurę do obsługi w pracy podczas aktualizacji stron internetowych Drupal. Największym problemem jest to, że Drupal tak naprawdę nie wykonuje świetnej pracy, utrzymując zawartość i logikę oddzielnie w swojej bazie danych.

Odpowiedzi udzielone przez Thomasa Zagreddina i BetaRide wystarczyłyby, aby dać Ci najlepszą szansę na pomyślne zakończenie migracji. Naprawdę nie ma świętego Graala na ten temat.

Chciałbym jednak dać ci wskazówkę programistyczną, która oszczędza mi wielu problemów z aktualizowaniem naszych stron internetowych: Staraj się zachować logikę w swoim kodzie (moduły / motywy). Staraj się unikać tworzenia widoków w jak największym stopniu. Czasami będziesz musiał, ale będzie to wymagać kolejnej aktualizacji bazy danych ...

Użyj zarządzania kontrolą źródła!

Jeśli jesteś w stanie sprowadzić wszystko do kodu (oczywiście nie zawsze będziesz w stanie to zrobić), możesz po prostu użyć SCM, takiego jak Git , SubVersion lub Mercury, aby zaktualizować swoje źródło, aw najgorszym przypadku scenariusz powróci do poprzednia wersja źródła, jeśli aktualizacja nie działa zgodnie z planem.

I, oczywiście, jak wskazano w poprzednich odpowiedziach: tworzenie kopii zapasowych, tworzenie kopii zapasowych, tworzenie kopii zapasowych, tworzenie kopii zapasowych ...

Ambidex
źródło
0

W przypadku większości zmian można użyć modułu funkcji Ten moduł może zmieniać tylko zmiany, co zrobiłeś w środowisku lokalnym.

W przeciwnym razie możesz użyć tego pięknego modułu Kopia zapasowa i migracja Najpierw zainstaluj ten moduł online, a następnie zrób kopię zapasową całej istniejącej zawartości lub bazy danych, a następnie zainstaluj ją lokalnie. Następnie wprowadź zmiany w lokalnym, co chcesz, ponownie zrób kopię zapasową swojego lokalnego, a następnie wdróż go w trybie online.

Rishi
źródło
0

Właśnie miałem ten sam problem. Aby to rozwiązać, zauważyłem, że jedyną zawartością, którą miałem na żywo, a której nie było w dev, były dane nowego użytkownika. Po prostu wszedłem do karty Ludzie administratora i skopiowałem dane osób do dev. W dev właśnie wpisałem je bez żadnej automatyzacji. Więc następnym razem, gdy prześlę z dev, dane osób będą naturalnie prawidłowe i nie zostaną nadpisane.

Michael O'Callaghan
źródło
Witamy w odpowiedziach Drupala! Chociaż jestem pewien, że powyższe zadziałało doskonale, nie brzmi to zbyt solidnie. Wpisywanie rzeczy jest podatne na literówki, a jeśli następnym razem pojawią się nowe rzeczy, zostaną one nadpisane (chyba że pamiętasz o ponownym wpisaniu).
Wolne radykalne