基本的なファイルレイアウト

このドキュメントでは、AMS の標準構成ファイルセットと、この構成標準の背後にある考え方について説明します。

デフォルトの Enterprise Linux フォルダー構造

AMS のベースインストールでは、ベースオペレーティングシステムとして Enterprise Linux を使用します。  Apache Webserver をインストールすると、デフォルトのインストールファイルが設定されます。  ベース RPM(yum リポジトリによって提供される)をインストールすると、デフォルトで以下のファイルもインストールされます。

/etc/httpd/ 
├── conf 
│   ├── httpd.conf 
│   └── magic 
├── conf.d 
│   ├── autoindex.conf 
│   ├── README 
│   ├── userdir.conf 
│   └── welcome.conf 
├── conf.modules.d 
│   ├── 00-base.conf 
│   ├── 00-dav.conf 
│   ├── 00-lua.conf 
│   ├── 00-mpm.conf 
│   ├── 00-proxy.conf 
│   ├── 00-systemd.conf 
│   └── 01-cgi.conf 
├── logs -> ../../var/log/httpd 
├── modules -> ../../usr/lib64/httpd/modules 
└── run -> /run/httpd

インストールの設計/構造を順守すれば、次のようなメリットが得られます。

  • 予測可能なレイアウトをサポートしやすい
  • 過去に Enterprise Linux HTTPD のインストールで作業したことがあるユーザーであれば既に使い慣れている
  • 競合や手動による調整を必要としない、オペレーティングシステムで完全にサポートされているパッチ適用サイクルを実現
  • ファイルコンテキストに誤ったラベルが付けられる SELinux 違反を回避
注意:

Adobe Managed Services サーバーのイメージには、通常、小さなオペレーティングシステムのルートドライブがあります。  AMS では、データは別のボリュームに格納されています(一般的には /mnt に配置されます)。

さらに、以下のデフォルトディレクトリには、デフォルトの代わりにそのボリュームを使用しています。

DocumentRoot

  • デフォルト: /var/www/html
  • AMS: /mnt/var/www/html

ログディレクトリ

  • デフォルト:/var/log/httpd
  • AMS:/mnt/var/log/httpd

混乱を避けるため、古いディレクトリと新しいディレクトリは元のマウントポイントにマッピングされます。

別のボリュームを使用することは必須ではありませんが、注目に値します。

AMS アドオン

AMS は、Apache Web サーバーのベースインストールに追加されます。

ドキュメントルート

AMS のデフォルトのドキュメントルート:

  • オーサー:
    • /mnt/var/www/author
  • パブリッシュ:
    • /mnt/var/www/html/
  • キャッチオールとヘルスチェックのメンテナンス
    • /mnt/var/www/default/

ステージングおよび有効化された VirtualHost ディレクトリ

次のディレクトリを使用すると、ファイルで作業できるステージング領域を持つ構成ファイルを作成し、準備が整ってから有効にすることができます。
  • /etc/httpd/conf.d/available_vhosts/
    • このフォルダーは、すべての <VirtualHost /> ファイル(「.vhost」と呼ばれる)をホストします。
  • /etc/httpd/conf.d/enabled_vhosts/
    • available_vhosts フォルダー内にある .vhost ファイルを使用する準備が整ったらら、enabled_vhosts ディレクトリへの相対パスを使用して、シンボリックリンクを作成します。

追加の conf.d ディレクトリ

Apache 構成には一般的な追加部分があります。サブディレクトリを作成することで、それらのファイルを分離し、すべてのファイルを 1 つのディレクトリに入れないクリーンな方法が可能になりました。

ディレクトリを書き換える

このディレクトリには、作成したすべての* _rewrite.rules ファイルを含めることができます。これには、Apache Web サーバー mod_rewrite モジュールを使用する一般的な RewriteRule 構文が含まれます。

  • /etc/httpd/conf.d/rewrites/

ホワイトリストディレクトリ

このディレクトリには作成したすべての *_whitelist.rules ファイルを含めることができます。これには、Apache Web サーバーアクセス制御を使用する一般的な IP を許可または IP を要求すrr構文が含まれます。

  • /etc/httpd/conf.d/whitelists/

変数ディレクトリ

このディレクトリには、作成したすべての *.vars ファイル(構成ファイルで使用可能な変数を含む)を含めることができます

  • /etc/httpd/conf.d/variables/

Dispatcher モジュール固有の構成ディレクトリ

Apache Web サーバーは非常に拡張性が高いので、モジュールに多数の構成ファイルがある場合、デフォルトのファイルを雑然と使用するのではなく、インストールベースディレクトリの下に独自の構成ディレクトリを作成することをお勧めします。

ベストプラクティスに従い、独自のディレクトリを作成しました。

モジュール構成ファイルのディレクトリ

  • /etc/httpd/conf.dispatcher.d/

ステージングおよび有効化されたファームディレクトリ

次のディレクトリを使用すると、ファイルで作業できるステージング領域を持つ構成ファイルを作成し、準備が整ってから有効にすることができます。
  • /etc/httpd/conf.dispatcher.d/available_farms/
    • このフォルダーは、すべての /myfarm { ファイル(「*_farm.any」と呼ばれる)をホストします
  • /etc/httpd/conf.dispatcher.d/enabled_farms/
    • available_farms フォルダー内にあるファームファイルを使用する準備が整ったらら、enabled_farms ディレクトリへの相対パスを使用して、シンボリックリンクを作成します。

追加の conf.dispatcher.d ディレクトリ

ディスパッチャーファームファイル構成のサブセクションには追加部分があります。サブディレクトリを作成することで、それらのファイルを分離し、すべてのファイルを 1 つのディレクトリに入れないクリーンな方法が可能になりました。

キャッシュディレクトリ

このディレクトリには、作成したすべての *_cache.any、*_invalidate.any ファイルが含まれます。これには、AEM からの要素のキャッシュと無効化ルール構文をモジュールで処理する方法に関するルールが含まれます。  このセクションの詳細は、こちらをご覧ください。

  • /etc/httpd/conf.dispatcher.d/cache/

クライアントヘッダーディレクトリ

このディレクトリには、作成したすべての* _clientheaders.any ファイルを含めることができます。これには、リクエストの受信時に AEM に渡すクライアントヘッダーのリストが含まれます。  このセクションの詳細は、こちらをご覧ください。

  • /etc/httpd/conf.dispatcher.d/clientheaders/

フィルターディレクトリ

このディレクトリには、すべての *_filters.any ファイルを含めることができます。これには、トラフィックがディスパッチャー経由で AEM に到達するのをブロックまたは許可するすべてのフィルタールールが含まれます。

  • /etc/httpd/conf.dispatcher.d/filters/

レンダーディレクトリ

このディレクトリには、作成したすべての *_renders.any ファイルを含めることができます。このファイルには、ディスパッチャーがコンテンツを使用する各バックエンドサーバーへの接続の詳細が含まれます。

  • /etc/httpd/conf.dispatcher.d/renders/

仮想ホストディレクトリ

このディレクトリには、さくせいしたすべての *_vhosts.any ファイルを含めることができます。これには、特定のバックエンドサーバーの特定のファームに一致するドメイン名とパスのリストが含まれます。

  • /etc/httpd/conf.dispatcher.d/vhosts/

フォルダー構造を完成させる

AMS は、名前空間の問題、競合および混乱を回避するため、カスタムファイル拡張子を付けて各ファイルを構造化します。

AMS のデフォルトデプロイメントからの標準ファイルセットの例を次に示します。

/etc/httpd/ 
├── conf 
│   ├── httpd.conf 
│   └── magic 
├── conf.d 
│   ├── autoindex.conf 
│   ├── available_vhosts 
│   │   ├── 000_unhealthy_author.vhost 
│   │   ├── 000_unhealthy_publish.vhost 
│   │   ├── aem_author.vhost 
│   │   ├── aem_flush.vhost 
│   │   ├── aem_health.vhost 
│   │   ├── aem_lc.vhost 
│   │   └── aem_publish.vhost 
│   ├── dispatcher_vhost.conf 
│   ├── enabled_vhosts 
│   │   ├── aem_author.vhost -> ../available_vhosts/aem_author.vhost 
│   │   ├── aem_flush.vhost -> ../available_vhosts/aem_flush.vhost 
│   │   ├── aem_health.vhost -> ../available_vhosts/aem_health.vhost 
│   │   └── aem_publish.vhost -> ../available_vhosts/aem_publish.vhost 
│   ├── README 
│   ├── rewrites 
│   │   ├── base_rewrite.rules 
│   │   └── xforwarded_forcessl_rewrite.rules 
│   ├── userdir.conf 
│   ├── variables 
│   │   └── ams_default.vars 
│   ├── welcome.conf 
│   └── whitelists 
│       └── 000_base_whitelist.rules 
├── conf.dispatcher.d 
│   ├── available_farms 
│   │   ├── 000_ams_author_farm.any 
│   │   ├── 001_ams_lc_farm.any 
│   │   └── 999_ams_publish_farm.any 
│   ├── cache 
│   │   ├── ams_author_cache.any 
│   │   ├── ams_author_invalidate_allowed.any 
│   │   ├── ams_publish_cache.any 
│   │   └── ams_publish_invalidate_allowed.any 
│   ├── clientheaders 
│   │   ├── ams_author_clientheaders.any 
│   │   ├── ams_common_clientheaders.any 
│   │   ├── ams_lc_clientheaders.any 
│   │   └── ams_publish_clientheaders.any 
│   ├── dispatcher.any 
│   ├── enabled_farms 
│   │   ├── 000_ams_author_farm.any -> ../available_farms/000_ams_author_farm.any 
│   │   └── 999_ams_publish_farm.any -> ../available_farms/999_ams_publish_farm.any 
│   ├── filters 
│   │   ├── ams_author_filters.any 
│   │   ├── ams_lc_filters.any 
│   │   └── ams_publish_filters.any 
│   ├── renders 
│   │   ├── ams_author_renders.any 
│   │   ├── ams_lc_renders.any 
│   │   └── ams_publish_renders.any 
│   └── vhosts 
│       ├── ams_author_vhosts.any 
│       ├── ams_lc_vhosts.any 
│       └── ams_publish_vhosts.any 
├── conf.modules.d 
│   ├── 00-base.conf 
│   ├── 00-dav.conf 
│   ├── 00-lua.conf 
│   ├── 00-mpm.conf 
│   ├── 00-proxy.conf 
│   ├── 00-systemd.conf 
│   ├── 01-cgi.conf 
│   └── 02-dispatcher.conf 
├── logs -> ../../var/log/httpd 
├── modules -> ../../usr/lib64/httpd/modules 
└── run -> /run/httpd 

理想的な状態を維持する

Enterprise Linux には、Apache Webserver パッケージ(httpd)のパッチ適用サイクルがあります。

パッチが適用されたセキュリティ修正または構成の改善が RPM/Yum コマンド経由で適用された場合、変更されたファイルに修正が適用されないという理由により、インストールするデフォルトファイルの数は少なくなります。

代わりに、元のファイルの隣に .rpmnew ファイルを作成します。  これにより、望んでいた一部の変更がおこなわれず、構成フォルダーにガベージが増えることになります。

このユースケースをより良い方法で処理するために、Enterprise Linux が適切にセットアップされました。  これにより、設定されたデフォルトを拡張またはオーバーライドできる領域が提供されます。  httpd のベースインストール内には、ファイル /etc/httpd/conf/httpd.conf があり、次のような構文が含まれています。

 

Include conf.modules.d/*.conf 
IncludeOptional conf.d/*.conf

Apache では、/etc/httpd/conf.d/ および /etc/httpd/conf.modules.d/ ディレクトリに新しいファイルを追加する際には、拡張子 .conf を使用してモジュールと構成を拡張することをおすすめします。

ディスパッチャーモジュールを Apache に追加する際の完璧な例として、/etc/httpd/modules/ で .so ファイルを作成し、/etc/httpd/conf.modules.d/02-dispatcher.conf にコンテンツとともにファイルを追加して含め、モジュールの .so ファイルを読み込みます。

LoadModule dispatcher_module modules/mod_dispatcher.so

通知 Apache から提供された既存のファイルに変更を加えず、  代わりに、目的のディレクトリに新しくファイルを追加しました。

モジュールを初期化し、初期モジュール固有の設定ファイルを読み込む、ファイル /etc/httpd/conf.d/dispatcher_vhost.conf でモジュールを使用できるようになりました。

<IfModule disp_apache2.c> 
    DispatcherConfig conf.dispatcher.d/dispatcher.any 
    ...SNIP... 
</IfModule>

繰り返しますが、ファイルとモジュールは追加されていますが、元のファイルは変更されていません。  これにより、必要な機能を提供して、必要なパッチ修正が欠落しないように保護し、パッケージのアップグレードごとに最高レベルの互換性を維持します。

アドビのロゴ

アカウントにログイン