Как я могу развернуть изменения в моем drupal оборудовании, когда база данных mysql хранит данные клиентов?
У моего openshift drupal gear есть живые данные о клиентах, но на моем тестовом сайте есть только тестовые данные. Когда я разрабатываю новую функцию, исправляю ошибку, добавляю представление или изменяю поле в типе контента (на тестовом сайте), он вносит изменения в базу данных mysql. Как загрузить эти изменения в устройство без очистки таблиц, содержащих данные о клиентах? До сих пор мне не приходилось писать какой-либо собственный код, просто добавили модули и настроили их. Так что я бы предпочел избежать решения PHP. Благодарю.
3 ответа
Разработчик имеет это в значительной степени прибил.
Однако, если немного расширить, это имеет мало общего с Openshift и со всем, что связано с Drupal (вы обычно сталкиваетесь с этим в Drupal независимо от того, на каком сервисе вы его запускаете). Например, у вас могут возникнуть проблемы с переносом данных в реальном времени на ваш тестовый сайт.
Проблема в том, что Drupal плохо справляется с разделением конфигурации и контента в базе данных. CMI Drupal 8 должен решить эту проблему в большинстве случаев, но для сайта, на котором не запущен Drupal 8, на самом деле есть только два варианта:
- Отслеживание и повторное создание изменений базы данных dev вручную на удаленном сайте и использование git для управления добавлением новых модулей, библиотек, тем и т. Д.; это утомительно и подвержено ошибкам.
- Используйте модуль Features, чтобы сохранить все ваши важные настройки в коде. Этот способ достаточно надежен, хотя иногда функции могут быть привередливыми.
Особенности рабочего процесса
Предостережения
- Вы не должны быть в состоянии написать код, чтобы использовать функции, хотя это помогает
- Функции могут помочь вам только с теми кусочками Drupal, которые можно экспортировать - есть некоторые части, которые просто не
В любом случае, чтобы использовать функции для управления изменениями, вы следуете процедуре, аналогичной следующей. Для целей этого поста я собираюсь представить, что ваша функция содержит один вид и ничего больше. Принципы одинаковы для более сложных функций, но обсуждение действительно сложной функции сделало бы это слишком долгим. Я также не буду вдаваться в подробности, какую ссылку нажимать и какую кнопку нажимать в пользовательском интерфейсе - на странице проекта "Возможности", ссылка на которую приведена выше, есть документация такого рода. Я также предполагаю, что после первоначального создания функции вы будете использовать drush
а также git
в командной строке для управления.
Создание функции на сайте разработчика
- резервное копирование вашей базы данных:)
- в административной области Drupal создайте новую функцию, содержащую ровно одно представление
- экспортировать функцию / записать ее в файловую систему
- удалить вид из пользовательского интерфейса Views
- включить функцию с помощью
drush en
- добавить, зафиксировать и отправить новую функцию, используя
git
Развертывание функции на производстве
- резервное копирование вашей базы данных:)
- получить новую функцию, используя
git pull
- повторите шаги 4-5 сверху
Изменение функции на сайте разработчика
Скажите, что ваш взгляд сейчас нуждается в изменениях. Вы должны выполнить следующие шаги, чтобы внести эти изменения в код с помощью существующей функции:
- резервное копирование вашей базы данных:)
- внести изменения в представление в пользовательском интерфейсе Views
- в терминале перейдите в каталог вашей функции
- бежать
drush fu
- бежать
git status
(это должно показать вам, изменилось ли что-нибудь в вашей функции) - передайте и отправьте изменения кода, используя
git
Развертывание измененной функции на сайте разработчика
- резервное копирование вашей базы данных:)
- получить изменения в вашей функции, используя
git pull
- перейдите к вашей функции в пользовательском интерфейсе функций
- вернуться к функции (это изменит настройки функции в базе данных, чтобы соответствовать тому, что в коде)
Вот и все.
Поскольку вы не упомянули версию Drupal, но вы можете использовать замечательную функцию, предоставляемую в Drupal 8, т.е. синхронизировать
URL: admin/config/development/configuration
Используя эту функцию, вы сможете экспортировать представления, тип контента с его полем и импортировать его на другой сервер и код через GIT или любой другой контроль версий.
ПРИМЕЧАНИЕ. Убедитесь, что uuid будет одинаковым для обоих экземпляров (источник и место назначения)
Вам либо придется написать какие-то сценарии миграции, либо вам придется вручную вносить изменения в производственный экземпляр, который вы внесли в экземпляр разработки. Выполнение "git push" не должно изменять вашу производственную базу данных, оно должно только загружать ваши изменения кода.