WordPress: синхронизация медиа библиотеки между разными серверами

ОК, так что это довольно необычный вариант использования. Надеюсь, это не будет закрыто из-за отсутствия исследований — я провел исследование, я просто не могу найти кого-то еще, кто требовал этой установки.

У нас есть три сервера с одним и тем же сайтом WordPress — версия Live, бета-версия и версия Kiosk (ограниченная версия сайта, используемая для киоска iPad). Бета-сайт развернут из beta на Github, а сайты Live и Kiosk развертываются из master ветка. Любые различия в функциональности между сайтами контролируются переменными среды, за исключением того, что они совместно используют один и тот же код.

wp-content/uploads папка используется всеми тремя версиями сайта с использованием смонтированной файловой системы Amazon EFS (не удалось использовать S3 из-за конфликтов плагинов). Вот где проблема приходит.

Серверы Live и Kiosk совместно используют одну и ту же базу данных RDS, поэтому их библиотеки мультимедиа всегда синхронизированы. Однако бета-сервер использует свою собственную отдельную базу данных для целей тестирования — и поскольку объекты медиабиблиотеки WP хранятся в БД, это приводит к следующим проблемам:

  • Когда файл загружается на сайт бета-версии, он автоматически не добавляется в библиотеку мультимедиа на сайтах Live / Kiosk (и наоборот)
  • Когда файл удаляется из общей папки загрузки, он не удаляется автоматически из библиотеки мультимедиа, что приводит к повреждению / пустым записям библиотеки мультимедиа.

В этом нет ничего плохого; это просто как работает WordPress. Я обошел проблему, используя плагин «Добавить с сервера», который позволяет мне синхронизировать медиатеки вручную, но было бы неплохо автоматизировать это.

Поэтому я думаю, что будет работать любое из следующих решений:

  1. Метод, позволяющий синхронизировать таблицу «media» двух баз данных, оставляя остальные таблицы раздельными
  2. Метод автоматического обновления библиотеки мультимедиа на всех 3 серверах в соответствии с содержимым wp-content/uploads папка, которая также достаточно умна, чтобы игнорировать миниатюрные версии (к сожалению, плагин «Добавить с сервера» этого не делает, поэтому, когда я попробовал, я получил бесчисленные «миниатюры миниатюр», если это имеет смысл)

Кто-нибудь работал с подобной средой раньше? Любые идеи относительно одного из моих предложенных решений, или, возможно, лучшего решения? Заранее спасибо.

2

Решение

Что касается сред разработки / постановки, я обычно использую rsync в комбинации с crontab или же Дженкинс и символическую ссылку скопированной папки мультимедиа на wp-content/uploads каждый раз я строю постановку с дампом из производственной базы.

Это также даст вам возможность автоматически создавать резервные копии вашей папки db и media на другом сервере.

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

Что касается синхронизации киоска и производства, плагин WPSiteSync выглядит многообещающе Я еще не пробовал его в производстве, но он должен соответствовать вашим требованиям.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]