設定ファイルの説明 | AEM
Managed Servicesの Dispatcher Adobeサーバーの設定ファイルの詳細な分類を説明します。 その重要性、命名規則および実用的なアプリケーションを明らかにします。
説明 description
環境
Adobe Experience Manager
問題/症状
このドキュメントでは、Adobe Managed Servicesでプロビジョニングされた標準ビルドの Dispatcher サーバーにデプロイされた設定ファイルをそれぞれ分類して説明します。 使用方法、命名規則など
命名規則
Apache web サーバーは、include または include オプション文を使用してターゲティングを行っている場合、ファイルの拡張子が何であるかは気にしません。 競合や混乱を排除するように適切に命名すると、非常に助けになります。 使用される名前は、ファイルが適用される範囲を説明するので、作業が容易になります。 すべてにという名前を付けると、非常に混乱します。 不適切な名前のファイルおよび拡張子は避けます。
一般的な AMS 設定済みの Dispatcher で使用される様々なカスタムファイル拡張子と命名規則のリストを以下に示します。
conf.d/に含まれるファイル
<
ファイル名>
.conf<
ファイル名>
.vhostステージング:/etc/httpd/conf.d/available_vhosts/
アクティブ:
/etc/httpd/conf.d/enabled_vhosts/
*メモ:.vhost ファイルは enabled_vhosts フォルダーにコピーされませんが、available_vhosts/ .vhost ファイルへの相対パスへの symlinks を使用します。
<
VirtualHosts >
エントリをホスト名に一致させ、Apache が各ドメイントラフィックを異なるルールで処理できるようにします。 .vhost ファイルから、書き換えや許可リストへの登録などの他のファイル。 が含まれます。<
ファイル名>
_rewrite.rules*_rewrite.rules
ファイルストア mod_rewrite
vhost ファイルによって明示的に含まれて使用されるルール<
ファイル名>
_whitelist.rulesconf.modules.d/に含まれるファイル
<
ファイル名>
.any<
ファイル名>
_farm.anyステージング
:
/etc/httpd/conf.dispatcher.d/available_farms/
アクティブ
:
/etc/httpd/conf.dispatcher.d/enabled_farms/
*メモ:これらの farm ファイルは enabled_farms フォルダーにコピーされませんが、available_farms/ _farm.any ファイルへの相対パスへの symlinks を使用します。
dispatcher.any ファイルから名前でそれらを自動的に含めます。
ベースラインファームファイルは 000 で始まります 最初に読み込まれていることを確認します。
カスタム farm ファイルは、適切なインクルード動作を保証するために 100_で番号スキームを開始してから必要があります。
<
ファイル名>
_filters.any<
ファイル名>
_vhosts.any<
ファイル名>
_cache.any<
ファイル名>
_invalidate_allowed.any<
ファイル名>
_clientheaders.any<
ファイル名>
_renders.any問題の回避
命名規則に従う場合は、最悪の結果を招く可能性のある犯しがちなミスを避けてください。 例をいくつか取り上げます。
問題の例
ExampleCo のサイト例として、Dispatcher 設定の開発者が 2 つの設定ファイルを作成します。
/etc/httpd/conf.d/exampleco.conf
<VirtualHost *:80>
ServerName "exampleco"
ServerAlias "www.exampleco.com"
.......... SNIP ...............
<IfModule mod_rewrite.c>
ReWriteEngine on
LogLevel warn rewrite:trace1
Include /etc/httpd/conf.d/rewrites/exampleco.conf
</IfModule>
</VirtualHost>
/etc/httpd/conf.d/rewrites/exampleco.conf
RewriteRule /$ /content/exampleco/en.html [ PT,L]
RewriteRule /robots.txt$ /content/dam/exampleco/robots.txt [ PT,L]
潜在的な危険
A. ファイル名は同じです。
vhost ファイルが誤って rewrites フォルダーに配置され、rewrites ファイルが vhosts フォルダーに配置された場合、 ファイル名で判断して適切にデプロイされるように思われますが、Apache はエラーをスローし、問題はすぐには明らかになりません。
どのようにすれば通常は問題になるのでしょうか。
2 つのファイルを同じ場所にダウンロードすると、自分自身を上書きしたり、区別できなくなったりするので、デプロイメントプロセスが悪夢のような状況になります。
B. ファイル拡張子が同じで自動インクルードが発生しやすい
ファイル拡張子が同じで、Apache が多くのデフォルトフォルダーに任意の.conf ファイルを自動で含める、自動インクルード拡張子を使用しています。
これは通常、どのように問題になりますか?
拡張子が.conf の vhost ファイルが/etc/httpd/conf.d/ フォルダーに格納されている場合、Apache はこれをメモリに読み込もうとします。通常はこれで問題ありませんが、拡張子が.conf の書き換えルールファイルがに格納される場合、 /etc/httpd/conf.d/
フォルダーが自動的に含まれてグローバルに適用されるので、混乱を招き、望ましくない結果が生じます。
解決策 resolution
実行する内容に応じて、自動インクルードルールの名前空間に属さない安全な名前をファイルに付けます。
- 仮想ホストファイルの場合は、次のように名前を付けます
.vhost
拡張機能として。 - 書き換えルールファイルの場合は、次のように名前を付けます。
<site>_rewrite.rules
接尾辞および拡張子として使用します。 この命名規則により、ファイルがどのサイトを対象にしているかや、一連の書き換えルールであることが明確になります。 - IP 許可リストルールファイルの場合は、という名前を付けます。
<description>_whitelist.rules
接尾辞および拡張子として使用します。 この命名規則により、その目的と、それが一連の IP マッチングルールであることがわかります。
これらの命名規則を使用すると、属していない自動インクルードディレクトリにファイルが移動された場合の問題を回避できます。
例えば、.rules、.any または.vhost という名前のファイルを以下の自動インクルードフォルダーに格納するとします。 /etc/httpd/conf.d/
何の効果もない。
デプロイメントの変更リクエストに次の内容が含まれる場合 please deploy exampleco_rewrite.rules to production dispatchers
変更をデプロイしているユーザーは、新しいサイトを追加しているのではなく、ファイル名で示されているように書き換えルールを更新しているだけであることが既にわかっています。
インクルード順序
Enterprise Linux にインストールされた Apache web サーバーで機能および設定を拡張する場合、いくつかの重要な点があります 注文を含める 分かってくれるはず。
回答: Apache ベースラインインクルード
Apache バイナリがで始まる httpd.conf
実行するアクション includeoptional
に conf.d/*.conf
および conf.modules.d/*.conf
ディレクトリ。
上の図で示すように、httpd バイナリはのみを参照します。 httpd.conf
設定ファイルとしてのファイル。 そのファイルには次のステートメントが含まれています。
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
B. AMS トップレベルインクルード
標準を適用する際に、追加のファイルタイプと独自のインクルードをいくつか追加しました。
AMS ベースラインディレクトリとトップレベルインクルードは次のとおりです。
Apache のベースラインに基づいて、追加フォルダーとトップレベルインクルードを AMS でどう作成したかを示します。 conf.d
フォルダーと、の下にネストされたモジュール固有のディレクトリ /etc/httpd/conf.dispatcher.d/
Apache が読み込まれると、を取り込みます。 /etc/httpd/conf.modules.d/02-dispatcher.conf
また、そのファイルにはバイナリファイルが含まれます /etc/httpd/modules/mod_dispatcher.so
を実行状態に変更します。
LoadModule dispatcher_module modules/mod_dispatcher.so
でモジュールを使用するには </VirtualHost>
設定ファイルをにドロップします。 /etc/httpd/conf.d/
名前付き dispatcher_vhost.conf
このファイルの中に、モジュールが機能するために必要な基本的なパラメーターを use セットアップすることがわかります。
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>
上記のように、これには Dispatcher モジュールがから設定ファイルを取得するための、トップレベルの dispatcher.any ファイルが含まれます。 /etc/httpd/conf.dispatcher.d/dispatcher.any
このファイルの内容に注意してください。
/farms {
$include "enabled_farms/*_farm.any"
}
最上位の dispatcher.any ファイルには、に存在するすべての有効なファームファイルが含まれています /etc/httpd/conf.dispatcher.d/enabled_farms/
ファイル名: <FILENAME>_farm.any
これは、標準的な命名規則に従います。
の後半 dispatcher_vhost.conf
前述のファイルには、に存在する有効な各仮想ホストファイルを有効にするためのインクルード文も含まれています。 /etc/httpd/conf.d/enabled_vhosts/
次のファイル名を持つ <FILENAME>.vhost
これは、標準的な命名規則に従います。
IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost
それぞれの.vhost ファイルでは、Dispatcher モジュールがディレクトリのデフォルトのファイルハンドラーとして初期化されることに注意してください。 構文を示す.vhost ファイルの例を次に示します。
<VirtualHost *:80>
ServerName "weretail"
ServerAlias www.weretail.com weretail.com
<Directory />
<IfModule disp_apache2.c>
....SNIP....
SetHandler dispatcher-handler
</IfModule>
....SNIP....
</Directory>
....SNIP....
</VirtualHost>
トップレベルのインクルードの解決後に、言及価値のある他のサブインクルードがあります。 ファームファイルおよび vhost ファイルに他のサブ要素が含まれる仕組みの概要図を次に示します。
C. AMS 仮想ホストのインクルード
から.vhost ファイルが /etc/httpd/conf.d/availabled_vhosts/
ディレクトリは、にシンボリックリンクされます。 /etc/httpd/conf.d/enabled_vhosts/
実行中の設定で使用されるディレクトリ。
.vhost ファイルには、見つかった共通部分に基づくサブインクルードが含まれています。 変数、許可リスト、書き換えルールなどがあります。
.vhost ファイルには、.vhost ファイルのどこにインクルードする必要があるかに基づいて、各ファイルのインクルード文を記述します。 参考として、.vhost ファイルの構文例を示します。
Include /etc/httpd/conf .d /variables/weretail .vars VirtualHost *:80
ServerName "${MAIN_DOMAIN}"
Directory / Include /etc/httpd/conf .d /whitelists/weretail *_whitelist.rules
IfModule disp_apache2.c
....SNIP....
SetHandler dispatcher-handler
/IfModule
....SNIP....
/Directory
....SNIP....
IfModule mod_rewrite.c
ReWriteEngine on
LogLevel warn rewrite:trace1
Include /etc/httpd/conf .d /rewrites/weretail_rewrite .rules
/IfModule /VirtualHost
上記の例に示すように、この設定ファイルで必要な変数には、後で使用するインクルードがあります。
ファイルの内部 /etc/httpd/conf.d/variables/weretail.vars
定義されている変数を確認できます。
Define MAIN_DOMAIN dev.weretail.com
また、様々な許可リストの基準に基づいて、このコンテンツを閲覧できる人を制限する許可リスト.rules ファイルのリストを含む行も表示されます。 許可リストファイルの中身を見てみましょう /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules
:
<RequireAny>
Require ip 192.150.16.0/23
</RequireAny>
一連の書き換えルールを含む行も確認できます。 の内容を見てみましょう。 weretail_rewrite.rules
ファイル:
RewriteRule /robots.txt$ /content/dam/weretail/robots.txt [ NC,PT]
RewriteCond %{SERVER_NAME} brand1.weretail.net [ NC]
RewriteRule /favicon.ico$ /content/dam/weretail/favicon.ico [ NC,PT]
RewriteCond %{SERVER_NAME} brand2.weretail.com [ NC]
RewriteRule /sitemap.xml$ /content/weretail/general/sitemap.xml [ NC,PT]
RewriteRule /logo.jpg$ /content/dam/weretail/general/logo.jpg [ NC,PT]
D. AMS ファームのインクルード
条件 <FILENAME>_farm.any
のファイル /etc/httpd/conf.dispatcher.d/available_farms/
ディレクトリは、にシンボリックリンクされます。 /etc/httpd/conf.dispatcher.d/enabled_farms/
実行中の設定で使用されるディレクトリ。
ファームファイルには、に基づくサブインクルードがあります ファームのトップレベルセクション キャッシュ、クライアント ヘッダー、フィルター、レンダー、vhost に似ています。
この <FILENAME>_farm.any
ファイルには、ファームファイル内のインクルード先に基づいて、各ファイルのインクルード文が含まれます。 構文の例を次に示します <FILENAME>_farm.any
ファイルを参考にしてください。
/weretailfarm {
/clientheaders {
$include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any"
$include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_common_clientheaders.any"
}
/virtualhosts {
$include "/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any"
}
/renders {
$include "/etc/httpd/conf.dispatcher.d/renders/ams_publish_renders.any"
}
/filter {
$include "/etc/httpd/conf.dispatcher.d/filters/ams_publish_filters.any"
$include "/etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any"
}
....SNIP....
/cache {
....SNIP....
/rules {
$include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_cache.any"
}
....SNIP....
/allowedClients {
/0000 {
/glob "*.*.*.*"
/type "deny"
}
$include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any"
}
....SNIP....
}
}
weretail ファームの各セクションが、必要な構文をすべて使用する代わりに、include ステートメントを使用することがわかります。
これらのインクルードのいくつかの構文を見て、各サブインクルードがどのように表示されるかを把握しましょう。 /etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any
:
"brand1.weretail.com"
"brand2.weretail.com"
"www.weretail.comf"
これは、改行で区切られたドメイン名のリストで、このファームから他のファームより上位にレンダリングする必要があります。
次に、 /etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any
:
/400 { /type "allow" /method "GET" /path "/bin/weretail/lists/*" /extension "json" }
/401 { /type "allow" /method "POST" /path "/bin/weretail/search/" /extension "html" }