Как я могу развернуть изменения в моем drupal оборудовании, когда база данных mysql хранит данные клиентов?

У моего openshift drupal gear есть живые данные о клиентах, но на моем тестовом сайте есть только тестовые данные. Когда я разрабатываю новую функцию, исправляю ошибку, добавляю представление или изменяю поле в типе контента (на тестовом сайте), он вносит изменения в базу данных mysql. Как загрузить эти изменения в устройство без очистки таблиц, содержащих данные о клиентах? До сих пор мне не приходилось писать какой-либо собственный код, просто добавили модули и настроили их. Так что я бы предпочел избежать решения PHP. Благодарю.

3 ответа

Разработчик имеет это в значительной степени прибил.

Однако, если немного расширить, это имеет мало общего с Openshift и со всем, что связано с Drupal (вы обычно сталкиваетесь с этим в Drupal независимо от того, на каком сервисе вы его запускаете). Например, у вас могут возникнуть проблемы с переносом данных в реальном времени на ваш тестовый сайт.

Проблема в том, что Drupal плохо справляется с разделением конфигурации и контента в базе данных. CMI Drupal 8 должен решить эту проблему в большинстве случаев, но для сайта, на котором не запущен Drupal 8, на самом деле есть только два варианта:

  1. Отслеживание и повторное создание изменений базы данных dev вручную на удаленном сайте и использование git для управления добавлением новых модулей, библиотек, тем и т. Д.; это утомительно и подвержено ошибкам.
  2. Используйте модуль Features, чтобы сохранить все ваши важные настройки в коде. Этот способ достаточно надежен, хотя иногда функции могут быть привередливыми.

Особенности рабочего процесса

Предостережения

  • Вы не должны быть в состоянии написать код, чтобы использовать функции, хотя это помогает
  • Функции могут помочь вам только с теми кусочками Drupal, которые можно экспортировать - есть некоторые части, которые просто не

В любом случае, чтобы использовать функции для управления изменениями, вы следуете процедуре, аналогичной следующей. Для целей этого поста я собираюсь представить, что ваша функция содержит один вид и ничего больше. Принципы одинаковы для более сложных функций, но обсуждение действительно сложной функции сделало бы это слишком долгим. Я также не буду вдаваться в подробности, какую ссылку нажимать и какую кнопку нажимать в пользовательском интерфейсе - на странице проекта "Возможности", ссылка на которую приведена выше, есть документация такого рода. Я также предполагаю, что после первоначального создания функции вы будете использовать drush а также git в командной строке для управления.

Создание функции на сайте разработчика

  1. резервное копирование вашей базы данных:)
  2. в административной области Drupal создайте новую функцию, содержащую ровно одно представление
  3. экспортировать функцию / записать ее в файловую систему
  4. удалить вид из пользовательского интерфейса Views
  5. включить функцию с помощью drush en
  6. добавить, зафиксировать и отправить новую функцию, используя git

Развертывание функции на производстве

  1. резервное копирование вашей базы данных:)
  2. получить новую функцию, используя git pull
  3. повторите шаги 4-5 сверху

Изменение функции на сайте разработчика

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

  1. резервное копирование вашей базы данных:)
  2. внести изменения в представление в пользовательском интерфейсе Views
  3. в терминале перейдите в каталог вашей функции
  4. бежать drush fu
  5. бежать git status (это должно показать вам, изменилось ли что-нибудь в вашей функции)
  6. передайте и отправьте изменения кода, используя git

Развертывание измененной функции на сайте разработчика

  1. резервное копирование вашей базы данных:)
  2. получить изменения в вашей функции, используя git pull
  3. перейдите к вашей функции в пользовательском интерфейсе функций
  4. вернуться к функции (это изменит настройки функции в базе данных, чтобы соответствовать тому, что в коде)

Вот и все.

Поскольку вы не упомянули версию Drupal, но вы можете использовать замечательную функцию, предоставляемую в Drupal 8, т.е. синхронизировать

URL: admin/config/development/configuration

Используя эту функцию, вы сможете экспортировать представления, тип контента с его полем и импортировать его на другой сервер и код через GIT или любой другой контроль версий.

ПРИМЕЧАНИЕ. Убедитесь, что uuid будет одинаковым для обоих экземпляров (источник и место назначения)

Вам либо придется написать какие-то сценарии миграции, либо вам придется вручную вносить изменения в производственный экземпляр, который вы внесли в экземпляр разработки. Выполнение "git push" не должно изменять вашу производственную базу данных, оно должно только загружать ваши изменения кода.

Другие вопросы по тегам