3

我的公司已經開發了一個cms,但現在我們使用它一段時間後,我們偶然發現了一個問題:所有更改都與實況環境直接相關。如果您想對網站進行大修改,您有時需要先完成所有工作,然後立即將所有更改發佈到實時網站。CMS的分段環境架構

我講的內容現在,而不是開發/測試/分期/生產環境中開發軟件

我見過幾個選項來解決這個問題,但沒有人能夠完全解決這個問題:

  1. 使用版本控制:版本x在生產中運行,y在分期;
  2. 使用草稿/發佈標誌:所有草稿內容都遠離現場;
  3. 使用兩個數據庫:一個用於臨時環境,另一個用於現場。

他們都有問題:

  1. 版本是新創建的頁面(版本空在生產?)和改變頁面的站點地圖(我們使用爲一組嵌套的)問題;
  2. 對於草稿,無法創建已發佈頁面的第二個版本;
  3. 隨着你必須複製第二個數據庫/同步你不想成爲兩個地不同的所有數據:用戶,用戶組,權限等

是否還有其他選擇?最好你想在用戶槓桿上這樣做,所以用戶A可以開始大修,用戶B仍然能夠發佈新內容。但是,現在這可能太困難了,我們現在只需要解決第一個問題。

PS。這是一個帶有MySQL後端的PHP,ZF應用程序,但這對我認爲的架構應該不重要。

回答

0

已經很長時間了,但我們現在有一個多階段CMS,其工作如下。生產樹和分期樹是雙重的。在嵌套集設置中,我們可以將多個樹存儲在一個數據庫中。生產中的頁面通過UUID鏈接到分段。

內容本身是通過版本管理進行管理的,版本控制表包含所有版本,實體表包含生產版本。版本控制(用於分期)因此比生產版本提前一些。這樣我們也可以爲文本blob實現自動保存(這只是另一個版本)。

0

執行此操作的方法是使用相對鏈接或根據網站配置文件中的值向鏈接添加前綴。

2

還有一種策略是爲內容管理設置一個單獨的存儲庫,從該存儲庫將內容發佈到不同的內容交付環境。 (所以3個數據庫而不是兩個)

這是SDL Tridion使用的架構,我從我自己的經驗中知道它非常有效。我確信還有其他的WCMS系統可以像這樣工作,但是立即想到的只有Bricolage。