設定ファイルの説明 | AEM
Managed Servicesの Dispatcher サーバーでのAdobeファイルの詳細な分類を確認します。 その重要性、命名規則、および実用的なアプリケーションを明らかにします。
説明 description
環境
Adobe Experience Manager
問題/症状
このドキュメントでは、AdobeManaged Servicesでプロビジョニングされた標準のビルド Dispatcher サーバーにデプロイされた各設定ファイルについて、それぞれの内訳と説明を示します。 使用方法、命名規則など。
命名規則
Apache Webserver は、include ステートメントまたは includeoptional ステートメントでターゲティングする場合、ファイルの拡張子が何であるかは実際には気にしません。 競合や混乱を避ける名前を付けて適切に名前を付けると、大変便利です。 使用される名前は、ファイルが適用される範囲を示すので、作業が容易になります。 すべての名前が.conf である場合、これは非常に混乱を招きます。 アドビでは、不適切な名前のファイルと拡張子は避けたいと考えています。
一般的な AMS 設定済みの Dispatcher で使用される様々なカスタムファイル拡張子と命名規則のリストを以下に示します。
conf.d/に含まれるファイル
<
ファイル名>
.conf<
ファイル名>
.vhostStaged: /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.anyStaged
:
/etc/httpd/conf.dispatcher.d/available_farms/
アクティブ
:
/etc/httpd/conf.dispatcher.d/enabled_farms/
*注意:これらのファームファイルは enabled_farms フォルダーにコピーされませんが、available_farms/ _farm.any ファイルへの相対パスへのシンボリックリンクを使用します。
dispatcher.any ファイルから名前別に自動インクルードされます。
ベースラインファームファイルは 000 から始まります 最初に読み込まれるようにするために。
カスタムファームファイルは、適切なインクルード動作を保証するために、番号スキームを 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 フォルダーに入れられ、書き換えファイルが 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 サーバーで機能と設定を拡張する場合、いくつかの重要な点があります 注文を含める 分かりたいと思うでしょう
A. Apache ベースラインに含まれる
上の図で示すように、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
このファイル内には、モジュールの動作に必要な基本パラメータを設定する方法が表示されます。
<IfModule disp_apache2.c>
DispatcherConfig conf.dispatcher.d /dispatcher .any
...SNIP...
</IfModule>
上記のように、ディスパッチャーモジュールが設定ファイルを取り出すためのトップレベルの 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
前述のファイルでは、に存在する有効な各仮想ホストファイルを有効にする include ステートメントも実行します。 /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>
トップレベルのインクルードの解決後に、言及価値のある他のサブインクルードがあります。 ファームと vhosts ファイルに他のサブ要素が含まれる仕組みの概要図を次に示します
C. AMS 仮想ホストに含まれる
.vhost ファイルが /etc/httpd/conf.d/availabled_vhosts/
ディレクトリは次の場所に symlinked されます: /etc/httpd/conf.d/enabled_vhosts/
実行中の設定で使用されるディレクトリ。
.vhost ファイルには、見つかった共通部分に基づくサブインクルードが含まれています。変数、許可リスト、書き換えルールなどがあります。
.vhost ファイルには、.vhost ファイル内のインクルード先に基づいて、各ファイルに対する include ステートメントが含まれます。 次に、.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
また、様々なホワイトリスト条件に基づいてこのコンテンツを表示できるユーザーを制限する whitelist.rules ファイルのリストを含む行を確認することもできます。 ホワイトリストファイルの 1 つの内容を見てみましょう /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 ファームインクルード
/etc/httpd/conf.dispatcher.d/available_farms/
ディレクトリの <FILENAME>_farm.any
ファイルが /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....
}
}
WaRetail ファームの各セクションは、必要なすべての構文を持つ代わりに、インクルード文を使用して表示されます。
これらのインクルードのいくつかの構文を見て、各サブインクルードがどのように表示されるかを把握しましょう。 /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" }