3

私の会社ではCMSを開発しましたが、現在は問題を抱えています。すべての変更は実際の環境に直接関連しています。サイトの大幅な見直しを行う場合は、すべての作業を最初に行い、すべての変更をライブサイトに一度に公開したい場合があります。CMSのステージング環境のアーキテクチャ

ソフトウェア

を開発するため、私は今内容について話している、いない開発/テスト/ステージング/本番環境私はこの問題を解決するためにいくつかのオプションを見てきましたが、どれもこの問題を完全に解決することはできません。

  1. バージョン管理を使用します。バージョンxは本番環境で実行中です。yはステージング中です。
  2. ドラフト/パブリッシュフラグを使用:すべてのドラフトコンテンツはライブサイトから隔離されています。
  3. ステージング環境用とライブ用の2つのデータベースを使用します。

それらのすべてが問題を抱えて:(?生産のヌル版)

  1. バージョンが新しく作成されたページの問題があり、ページのサイトマップの変更を(私たちはそのためのネストされたセットを使用)。
  2. 下書きの場合、すでに公開されているページの2番目のバージョンを作成することはできません。あなたは二つの場所の間で異なるようにしたくないすべてのデータを同期する/コピーする必要が第二のデータベースと
  3. :ユーザー、ユーザーグループ、アクセス権など

があり、他のオプションはありますか?好ましくは、ユーザーレバーでこれを行いたいので、ユーザーAは大きなオーバーホールを開始でき、ユーザーBは引き続き新しいコンテンツを公開することができます。しかしおそらくこれは今のところ難しすぎるので、今は最初の問題を解決するだけです。

PS。それはMySQLのバックエンドを持つPHP、ZFアプリですが、それは私が思うアーキテクチャの問題ではありません。

答えて

0

これまでのことがありましたが、現在は次のように動作するマルチステージCMSがあります。生産とステージングのツリーは2倍です。ネストセット設定では、1つのデータベースに複数のツリーを格納できます。本番環境のページは、UUIDを使用したステージングにリンクされています。

コンテンツ自体はバージョン管理で管理されます。バージョン管理テーブルではすべてのバージョンが保持され、エンティティテーブルには本番バージョンが保持されます。バージョン管理は(ステージングのための)ため、プロダクションバージョンよりもいくつかのステップがあります。このようにして、テキストブロブの自動保存を実装することもできます(これは単なる別のバージョンです)。

0

これを行う方法は、相対リンクを使用するか、サイトの構成ファイルの値に基づいてリンクにプレフィックスを追加することです。

2

さらに別の戦略があります。これは、異なるコンテンツ配信環境にコンテンツが公開されるコンテンツ管理のための別個のリポジトリを持つことです。 (2つではなく3つのデータベースなので)

これはSDL Tridionで使用されるアーキテクチャであり、私自身の経験からは非常に有効であることがわかりました。すぐに気になるのはBricolageだけですが、このように機能する他のWCMSシステムがあると確信しています。

関連する問題