Постановка сайтов, как вы управляете синхронизацией обновлений в БД?

11

Широко признано, что разработчики должны тестировать обновления через промежуточный сайт, прежде чем выпускать их на действующий сервер, однако, как только обновления разработки потребуют изменений в БД Wordpress, все усложняется, так как пользователи на живом сайте тоже будут обновлять БД.

Единственный (запутанный) поток, который я могу себе представить, заключается в следующем:

  1. Тест на локальном сервере (WAMP, XAMP и т. Д.)
  2. Когда все будет готово к развертыванию, переведите работающий сайт в режим обслуживания.
  3. Резервное копирование живого сайта (Duplicator, sqldump и т. Д.)
  4. Создайте клон заблокированного живого сайта на промежуточный сайт
  5. Загрузка изменений из локальной среды на промежуточный сайт
  6. Проверьте место проведения
  7. Нажмите постановочный сайт, чтобы жить.
  8. Удалить режим обслуживания

Недостатки потока выше:

  • время простоя может быть больше ожидаемого для пользователей, пока разработчик тщательно тестирует обновления на промежуточном сайте;
  • может потребоваться ручное управление изменениями: например, макеты компоновщика страниц siteorigin хранятся в БД, поэтому после изменения макета его необходимо импортировать вручную на промежуточный сайт; в этом случае может быть достаточно просто перетащить и импортировать страницы на промежуточный сайт, а в случае работы импортировать их на действующий сайт.

Интересно, есть ли лучший и более автоматизированный способ добиться этого?

Как вы думаете?

РЕДАКТИРОВАТЬ, в соответствии с просьбой, некоторые решения были предложены в прошлом, но ни одно не предлагает окончательного решения:

Riccardo
источник
@ Dan9, я думал, что было бы безопаснее минимизировать доступ к живому сайту. Это обычная привычка редактировать макеты на живом сайте? Может быть, я слишком волнуюсь!
Риккардо
Ну, вы можете создавать, обновлять, удалять, восстанавливать их. О чем ты беспокоишься?
MinhTri
Таким образом, это обычная загрузка макетов без тестирования на промежуточном сайте? Каков ваш типичный рабочий процесс (локальный / постановочный / живой)?
Риккардо
Взгляните на плагин wp-sync-db .
MinhTri
Это надежно? Вы используете этот инструмент?
Риккардо

Ответы:

2

Новые хостинг-провайдеры, которые специально работают с WordPress, обычно имеют инструменты для облегчения этой боли. Я поместил своих клиентов в Pantheon, у которого есть этот аккуратный рабочий процесс с поддержкой Git , где код только перемещается вверх (от разработчика к этапу к производству), а содержимое БД только перемещается вниз (наоборот, из кода). Копирование базы данных из производства в промежуточное состояние осуществляется одним щелчком мыши с помощью их интерфейса. При условии соблюдения этого рабочего процесса это в значительной степени устраняет проблему путаницы в производственной базе данных, позволяя мне всегда тестировать свои изменения на свежем клоне данных производственной базы данных в любой стадии разработки.

Не нужно использовать Pantheon - вы можете использовать подобный подход в своем процессе, используя свои собственные инструменты (Git + плагин для клонирования БД, такой как WP Migrate DB). Я просто считаю, что этот способ хорошо работает для меня.

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

montrealist
источник
Мой провайдер позволяет создавать промежуточные сайты в один клик и выполнять push-to-live с детальным выбором перезаписываемых таблиц, тем не менее мне все еще нужно блокировать пользователей во время выполнения финального теста, поскольку часть развертывания вводит данные на стороне разработчика в БД (например, макеты страниц Sitebuilder хранятся в БД), что требует от пользователей прекращения обновления на этом этапе. Если у вас есть лучшая идея, как достичь этого шага, я был бы рад поделиться с вами!
Риккардо
Кстати, вы проходите через dev / staging / live flow каждый раз, когда вносятся небольшие изменения? Например, немного изменить макет страницы в редакторе или изменить меню
Riccardo
Да - файлы проходят через dev -> staging -> prod каждый раз (возможно, вы можете отключить staging или dev - не помню). Dev для команды разработчиков, постановка для одобрения QA или дизайнера / клиента перед тем, как подтолкнуть к Prod.
Монреалист
1

Взгляните на VersionPress, который обеспечивает управление версиями GIT для всего процесса (файлов и базы данных)

Как описано на их сайте:

VersionPress обеспечивает безболезненную постановку . Это означает, что вы можете легко создать безопасную среду тестирования для ваших изменений и объединять их только тогда, когда они будут готовы. Ключевое слово здесь - слияние - VersionPress легко обрабатывает ситуации, когда на вашем живом сайте было новое содержимое.

marekeiba
источник
1
Как я могу проверить надежность этого инструмента?
Риккардо