Web サーバーに、別々の AEM Dispatcher キャッシュファームが設定されている仮想ホストが複数ある場合、AEM から適切なキャッシュをフラッシュするには、どうすればよいですか。

環境

Apache HTTP Server/AEM Dispatcher

手順

次のように、複数の解決策があります。

  1. Dispatcher ファームごとに Dispatcher フラッシュエージェントを 1 つずつ設定して、ホストヘッダーを設定し、「エージェントユーザー ID」を、関連するパスの読み取り権限を持つユーザーに設定します。
  2. Web サーバーの設定を変更し、フラッシュリクエストの CQ-Path ヘッダーで特定のパスを受信したときに適切なホストヘッダーが設定されるようにします。 

以下の解決策では、次の条件を前提としています。

  • Apache HTTP Server 2.2 以降のバージョンを使用している。
  • 複数の VirtualHost が設定されている。
  • 別々のキャッシュが設定された複数の Dispatcher ファームがある。

例:
Apache httpd VirtualHost の設定

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.geometrixx.com
    ServerAlias *.geometrixx.com
    DocumentRoot /var/www/html/cache-www-geometrixx-com
     ...  
</VirtualHost>

<VirtualHost *:80>
    ServerName www.geometrixx-outdoors.com
    ServerAlias *.geometrixx-outdoors.com
    DocumentRoot <Global Doc root>/site2
    Include <Configurations specific to site2>
</VirtualHost>
DocumentRoot /var/www/html/cache-www-geometrixx-outdoors-com

Dispatcher の設定で、ホスト名(virtualhosts)別に異なるサイトを処理する複数のファームが設定されています。

/virtualhosts
  {
      "*geometrixx.com*"
  }

  /renders
  {
        ...
  }

  /cache {
       /docroot "/var/www/html/cache-www-geometrixx-com"

解決策 1:複数のフラッシュエージェントを設定する

Dispatcher ファームの数が 5 個以下の場合は、複数のフラッシュエージェントを設定する方法が簡単です。

  1. 各 AEM パブリッシュインスタンスの http://aem-host:port/miscadmin を開きます。

  2. レプリケーション/公開のエージェントの順にクリックします。

  3. 編集」をクリックします。

  4. エージェントユーザー ID に、このエージェントに関連付けるために後で作成するユーザーの名前を入力します。サイトのホスト名を基にした命名規則を使用できます。例えば、「flush-agent-www-geometrixx-com」です。

  5. 「拡張」タブを選択します。

  6. HTTP ヘッダーで別のヘッダーを追加します。値には「Host: www.geometrixx.com」と入力します。「www.geometrixx.com」は、サイトのいずれかの DNS ホストに変更してください。

  7. OK」をクリックして保存します。

  8. http://aem-host:port/useradmin にアクセスし、手順 4 のユーザーを作成します。

  9. そのユーザーの「権限設定」タブにアクセスし、参照されているサイトで、エージェントによるフラッシュを許可するすべてのパスに対する読み取り権限を付与します。例えば、/content/geometrixx、/content/dam、/etc、/libs、/apps、/var などとなります。

  10. 保存します。

  11. 各パブリッシュインスタンスの他のすべてのサイトについても手順 1 ~ 10 を繰り返します。各パブリッシュインスタンスのサイトごとに、フラッシュエージェントを 1 つずつ作成します。

  12. Web サーバーで symlink を使用して共通パスを共有します。例えば、/content/dam、/etc、/libs、/apps、/var の symlink を、共通のキャッシュの場所に設定できます。その後、キャッシュのルートにある /content とすべての要素が、個別にキャッシュされます。/libs フォルダー用のコマンドの例は次のとおりです。

    ln -s /var/www/html/cache-www-geometrixx-com/libs /var/www/html/shared-cache

  13. 以上で特定のサイトのページを有効にすると、フラッシュリクエストが対応するフラッシュエージェントのみに送信されるようになります。

解決策 2:Web サーバーでホストヘッダーを修正する

特定のサイトのパスに対する Dispatcher のフラッシュリクエストを処理するため、それぞれのパスで次のようなルールを使用します。

SetEnvIfNoCase CQ-Path ^/content/geometrixx hostnameforfarm=www.geometrixx.com
SetEnvIfNoCase CQ-Path ^/content/geometrixx-outdoors hostnameforfarm=www.geometrixx-outdoors.com 
RequestHeader set Host %{hostnameforfarm}e env=hostnameforfarm

この解決策の場合は、/content/dam、/etc、/libs、/apps、/var などの共有のコンテンツパスに対応する symlink または共有 Dispatcher ファームも必要です。symlink の使用方法については、上記の解決策 1 の手順 12 を参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー