Как обновить сервер Live drupal без перезаписи содержимого?

9

У меня есть живой сайт, и люди активно размещают контент. Однако мне пришлось внести некоторые изменения в среду разработки, что заняло у меня пару недель. Изменения требовали установки новых модулей и удаления старых, что, конечно, изменило содержание и структуру базы данных.

Мой вопрос: как мне загрузить этот сайт обратно в живую среду и обновить базу данных, не перезаписывая новый контент новыми пользователями, которые были добавлены за последние две недели?

blue928
источник
Я предполагаю, что вам придется заблокировать работающий сайт, то есть «никто не может применять обновления», синхронизировать работающий сайт с вашим сервером разработки, применить ваши изменения и снова синхронизировать. У меня есть следующие настройки: Сервер разработки (только для добавления кода обновлений и т. Д.), Главный сервер - сервер развертывания, на котором развернут (где пользователи добавляют контент), и живой сервер (мастер развернут на этом).
Cyclonecode

Ответы:

3

Томас Захреддин прав. Но в зависимости от того, что изменилось («это заняло у меня пару недель ...»), есть и другие вещи, которые следует учитывать.

  1. Вы добавили / изменили типы контента. Попробуйте экспортировать и импортировать их. Убедитесь, что вы не теряете содержимое.
  2. Вы добавили / изменили представления? Вы можете безопасно экспортировать и импортировать их.
  3. Обновления модуля. Проверьте их на текущих данных. Всегда есть вероятность, что пользовательские данные нарушат обновление.
  4. Изменения конфигурации модуля. Если это не слишком много, делайте заметки и переделывайте их. Еще попробуйте особенности и сильные модули руки . Другой вариант - выяснить точные имена переменных и записать значения в settings.php.
  5. У вас есть дополнительный контент в системе разработки. Здесь все становится действительно волосатым. Вы можете попробовать модуль развертывания или экспорт узла . Но они не серебряные пули.

Если у вас нет тривиального случая, я рекомендую проверить вашу процедуру заранее. И, конечно же, делайте резервные копии файлов и данных, прежде чем начинать работу с работающей системой. ( Резервное копирование и миграция здесь пригодятся.)

BetaRide
источник
1

Вы должны проверить, что вы хотите изменить:

  • contenttype или bundle -> вставьте новый contenttype | bundle, экспортируйте и импортируйте узлы или измените contenttype | bundle в базе данных для этих записей
  • имя отдельных полей и их наличие в contenttypes | bundles -> например, с интерфейсом администратора или
  • значения в полях -> самая сложная задача: вы можете сделать это с помощью SQL в базе данных (вероятно) или с помощью модуля, например, migrate
Томас Захреддин
источник
1

У меня есть такая же процедура для работы при обновлении сайтов Drupal. Самая большая проблема в том, что Drupal не очень хорошо справляется с разделением контента и логики в своей базе данных.

Ответов Томаса Загреддина и BetaRide будет достаточно, чтобы дать вам лучший шанс для успешного завершения миграции. Там действительно нет святого Грааля на эту тему.

Однако я хотел бы дать вам совет по разработке, который избавит меня от многих проблем при обновлении наших веб-сайтов: постарайтесь максимально сохранить логику в своем коде (модули / темы). Мол, старайтесь избегать создания просмотров как можно больше. Иногда вам придется, но это потребует другого обновления базы данных ...

Используйте управление исходным кодом!

Если вы можете сохранить все до кода (конечно, вы не всегда сможете это сделать), вы можете просто использовать SCM, такой как Git , SubVersion или Mercury, чтобы обновить ваш источник, и в худшем случае вернуться к предыдущая версия вашего источника, если ваше обновление не работает, как планировалось.

И, конечно же, как указано в предыдущих ответах: резервное копирование, резервное копирование, резервное копирование, резервное копирование ...

Ambidex
источник
0

Для большинства изменений вы можете использовать модуль возможностей. Этот модуль может изменять только те изменения, которые вы сделали в локальной среде.

В противном случае вы можете использовать этот красивый модуль « Резервное копирование и миграция ». Сначала установите этот модуль онлайн, затем сделайте резервную копию всего существующего контента или базы данных, а затем разверните его на локальном компьютере. Затем внесите изменения в локальный файл, который вы хотите, снова сделайте резервную копию локального файла и затем разверните его в Интернете.

Риши
источник
0

У меня просто была такая же проблема. Чтобы решить эту проблему, я заметил, что единственный контент, который у меня был в прямом эфире, но не в dev, это новые данные пользователя. Я просто зашел на вкладку «Люди» администратора и скопировал данные о людях в dev. В dev я просто набрал их без какой-либо автоматизации. Поэтому в следующий раз, когда я загружу из dev, данные о людях, естественно, будут правильными и не будут перезаписаны.

Майкл О'Каллаган
источник
Добро пожаловать в ответы Drupal! Хотя я уверен, что вышесказанное отлично сработало для вас, оно звучит не очень надежно. Печатание вещи в in подвержено опечаткам, и если в следующий раз появятся новые вещи в прямом эфире, они будут перезаписаны (если вы не забудете набрать их снова).
Свободное Радикальное