変数の使用と理解
説明 description
環境
Adobe Experience Manager
問題/症状
このドキュメントでは、Apache Web サーバーおよび Dispatcher モジュール設定ファイルで変数の機能を活用する方法について説明します。
変数
Apache は、Dispatcher モジュールの変数とバージョン 4.1.9 以降をサポートしています。 これらを活用して、次の操作を実行できます。
- 環境固有の設定はすべて設定内でインライン化されず、開発環境の設定ファイルが実稼動環境で同じ機能出力で動作するように抽出されていることを確認します。
- AMS で提供される不変ファイルの機能を切り替えてログレベルを変更します。変更することはできません。
RUNMODE
およびENV_TYPE
などの変数に基づいて、どのインクルードを使用するかを変更する。- Apache 設定とモジュール設定の間で DocumentRoot と VirtualHost の DNS 名を一致させます。
解決策 resolution
-
ベースライン変数の使用
AMS ベースラインファイルは読み取り専用で不変なので、使用する変数を編集することで、オフ/オンを切り替えたり、設定したりできる機能があります。ベースライン変数
ファイルの内容のサンプルを次に示します
/etc/httpd/conf.d/variables/ams_default.vars
code language-none Define DISP_LOG_LEVEL info Define AUTHOR_WHITELIST_ENABLED 0 Define PUBLISH_WHITELIST_ENABLED 0 Define AUTHOR_FORCE_SSL 1 Define PUBLISH_FORCE_SSL 0
例 1 - SSL を強制
上記の変数
AUTHOR_FORCE_SSL
またはPUBLISH_FORCE_SSL
を 1 に設定すると、http リクエストでエンドユーザーが入ってきて https にリダイレクトされるように強制する書き換えルールを使用できます。この切り替えを機能させる設定ファイル構文を次に示します。
code language-none VirtualHost *:80 IfModule mod_rewrite.c ReWriteEngine on If "${PUBLISH_FORCE_SSL} == 1" Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules /If /IfModule /VirtualHost
書き換えルールに含まれる内容は、エンドユーザーのブラウザーをリダイレクトするコードですが、変数が 1 に設定されている場合、ファイルを使用できるかどうかがわかります。
例 2 — ログレベル
変数
DISP_LOG_LEVEL
を使用して、実行中の構成で実際に使用されるログレベルに対して持つものを設定できます。ams ベースライン設定ファイルに存在する構文の例を次に示します。
code language-none IfModule disp_apache2.c DispatcherLog logs/dispatcher.log DispatcherLogLevel ${DISP_LOG_LEVEL} /IfModule
Dispatcher のログレベルを上げる必要がある場合は、
ams_default.vars
変数DISP_LOG_LEVEL
希望のレベルに。値の例は、整数または単語です。
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 ログレベル 整数値 単語の値 TRACE 4 TRACE デバッグ 3 debug 情報 2 info 警告 1 警告 エラー 0 error 例 3 — ホワイトリスト
変数
AUTHOR_WHITELIST_ENABLED
およびPUBLISH_WHITELIST_ENABLED
を 1 に設定すると、IP アドレスに基づくエンドユーザートラフィックを許可または禁止するルールを含む書き換えルールをエンゲージできます。 この機能をオンに切り替えるには、ホワイトリストルールファイルの作成と組み合わせて、ファイルを含める必要があります。変数がホワイトリストファイルのインクルードを有効にする方法の構文例と、ホワイトリストファイルの例をいくつか示します。
sample.vhost:
code language-none VirtualHost *:80 Directory / If "${AUTHOR_WHITELIST_ENABLED} == 1" Include /etc/httpd/conf.d/whitelists/*_whitelist.rules /If /Directory /VirtualHost
sample_whitelist.rules:
code language-none RequireAny Require ip 10.43.0.10/24 /RequireAny
見ての通り
sample_whitelist.rules
では IP 制限が適用されますが、変数を切り替えると、sample.vhost
-
変数の配置場所
Web サーバーの起動引数
AMS は、ファイル内の Apache プロセスの起動引数にグローバル変数を配置します
/etc/sysconfig/httpd
このファイルには、次に示すように事前に定義された変数があります。
code language-none AUTHOR_IP="10.43.0.59" AUTHOR_PORT="4502" AUTHOR_DOCROOT='/mnt/var/www/author' PUBLISH_IP="10.43.0.20" PUBLISH_PORT="4503" PUBLISH_DOCROOT='/mnt/var/www/html' ENV_TYPE='dev' RUNMODE='dev'
これらは変更できるものではありませんが、設定ファイルで活用するのに適しています。
注意 — このファイルは、サービスの起動時にのみ含まれるためです。 変更を受け取るには、サービスを再起動する必要があります。 つまり、再読み込みは十分ではなく、代わりに再起動が必要です。
変数ファイル (.vars)
コードで提供されるカスタム変数は、ディレクトリ内の.vars ファイルに格納する必要があります。
/etc/httpd/conf.d/variables/
これらのファイルには、任意のカスタム変数を含めることができます。 以下に、以下のサンプルファイルの構文例を示します。
独自の変数ファイルを作成する場合は、そのファイルの内容に応じて名前を付け、マニュアルに記載されている命名規格に従ってください。 ここ. 上記の例では、変数ファイルが、設定ファイルで使用する変数として、様々な DNS エントリをホストしています。
-
/etc/httpd/conf.d/variables/weretail_domains_dev.vars:
code language-none Define WERETAIL_DOMAIN dev.weretail.com Define WERETAIL_ALT_DOMAIN dev.weretail.net
-
/etc/httpd/conf.d/variables/weretail_domains_stage.vars:
code language-none Define WERETAIL_DOMAIN stage.weretail.com Define WERETAIL_ALT_DOMAIN stage.weretail.net
-
/etc/httpd/conf.d/variables/weretail_domains_prod.vars:
code language-none Define WERETAIL_DOMAIN www.weretail.com Define WERETAIL_ALT_DOMAIN www.weretail.net
-
-
変数の使用
これで変数を変数ファイル内で定義したので、他の設定ファイル内での変数の適切な使用方法を知りたいと思います。上記の.vars ファイルの例を使用して、適切な使用例を示します。
すべての環境ベースの変数をグローバルに含めたい場合は、ファイルを作成します
/etc/httpd/conf.d/000_load_env_vars.conf
code language-none Include /etc/httpd/conf.d/variables/*_${ENV_TYPE}.vars Include /etc/httpd/conf.d/variables/*_${RUNMODE}.vars
httpd サービスが起動すると、AMS によって設定された変数が
/etc/sysconfig/httpd
とは、次の変数セットを持ちます。ENV_TYPE
およびRUNMODE
このグローバル.conf ファイルが取り込まれると、conf.d 内のファイルのインクルード順序が英数字の読み込み順序平均 000 であるため、ディレクトリ内の他のファイルよりも先に読み込まれるようになるので、早期に取り込まれます。
include 文では、ファイル名に変数も使用します。 これにより、の値に基づいて、実際に読み込まれるファイルを変更できます。
ENV_TYPE
およびRUNMODE
変数。次の場合、
ENV_TYPE
値は dev 次に、使用されるファイルを示します。/etc/httpd/conf.d/variables/weretail_domains_dev.vars
次の場合、
ENV_TYPE
値は ステージ 次に、使用されるファイルを示します。/etc/httpd/conf.d/variables/weretail_domains_stage.vars
次の場合、
RUNMODE
値は プレビュー 次に、使用されるファイルを示します。/etc/httpd/conf.d/variables/weretail_domains_preview.vars
そのファイルがインクルードされると、その中に保存された変数名を使用できます。
アドビの
/etc/httpd/conf.d/available_vhosts/weretail.vhost
file dev でのみ機能する通常の構文を置き換えることができます。code language-none VirtualHost *:80 ServerName dev.weretail.com ServerAlias dev.weretail.net
変数の機能を利用した新しい構文で、開発、ステージ、実稼動環境に対応します。
code language-none VirtualHost *:80 ServerName ${WERETAIL_DOMAIN} ServerAlias ${WERETAIL_ALT_DOMAIN}
アドビの
/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any
file dev でのみ機能する通常の構文を置き換えることができます。code language-none "dev.weretail.com" "dev.weretail.net"
変数の機能を利用した新しい構文で、開発、ステージ、実稼動環境に対応します。
code language-none "${WERETAIL_DOMAIN}" "${WERETAIL_ALT_DOMAIN}"
これらの変数は、環境ごとに異なるデプロイ済みファイルを使用する必要なく、実行中の設定を個別化するために非常に多くの再利用をおこないます。 基本的に、変数を使用して設定ファイルをテンプレート化し、変数に基づいてファイルをインクルードします。