Архитектура промежуточной среды для CMS - PullRequest
3 голосов
/ 21 июня 2011

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

Я сейчас говорю о контенте, а не о среде разработки / тестирования / подготовки / производства для разработки программного обеспечения

Я видел несколько вариантов решения проблемы, но ни один не может полностью решить эту проблему:

  1. Использовать управление версиями: версия x запущена в производстве, y находится в стадии подготовки;
  2. Использовать флаг черновика / публикации: весь черновой контент хранится на удаленном сайте;
  3. Используйте две базы данных: одну для промежуточной среды, другую для живого.

У всех них есть проблемы:

  1. Управление версиями проблематично для вновь создаваемых страниц (версия нулевая на производстве?) И изменений в карте сайта (для этого мы используем вложенный набор);
  2. Для черновиков невозможно создать вторую версию уже опубликованной страницы;
  3. Со второй базой данных вы должны копировать / синхронизировать все данные, которые вы не хотите различать между двумя местами: пользователи, группы пользователей, разрешения и т. Д.

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

PS. Это php, ZF-приложение с бэкэндом MySQL, но это не должно иметь значения для архитектуры.

Ответы [ 3 ]

2 голосов
/ 20 ноября 2011

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

Это архитектура, используемая SDL Tridion, и я знаю по собственному опыту, что она очень эффективна.Я уверен, что есть другие системы WCMS, которые работают таким образом, хотя единственная, которая сразу приходит на ум, - это Bricolage.

0 голосов
/ 31 октября 2012

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

Сам контент управляется версионированием, когда таблица версий содержит все версии, а таблица сущностей содержит рабочую версию.Управление версиями (для постановки), таким образом, на несколько шагов впереди производственной версии.Таким образом, мы также можем реализовать автосохранение для текстовых BLOB-объектов (это просто другая версия).

0 голосов
/ 22 июня 2011

Способ сделать это - использовать относительные ссылки или добавить префикс к ссылкам на основе значения в файле конфигурации сайта.

...