変数の使用と概要

このドキュメントでは、Apache web サーバー内や、Dispatcher モジュール構成のファイルで変数を活用する方法について説明します。

変数

Apache は変数をサポートしており、ディスパッチャーモジュールのバージョン 4.1.9 以降も変数をサポートしています。

これらの変数は、次のように様々な用途に活用できます。

  • 環境固有のすべての設定が構成内でインライン化されずに抽出されており、開発の構成ファイルを、同じ機能出力のまま実稼働で動作できることを確認します。
  • 機能を切り替えて、AMS が提供する変更できないファイルのログレベルを変更します。変更はできません。
  • RUNMODE や ENV_TYPE などの変数に基づいて使用するインクルードを変更する
  • Apache 構成とモジュール構成で DocumentRoot および VirtualHost の DNS 名を一致させます。

ベースライン変数の使用

AMS ベースラインファイルは読み取り専用で変更できません。そのため、それらを使用する変数を編集することでオンとオフを切り替えたり、設定したりできる機能が備わっています。

標準設定および設定可能なベースライン変数

すべての標準変数は、/etc/httpd/conf.d/variables/ootb.vars で定義されており、すべてのベースライン変数にデフォルト値が設定されていることを確認します。デフォルト値が読み込まれると、その他の .vars ファイルが ootb.vars ファイルで定義された値をオーバーライドします。

編集可能なファイル /etc/httpd/conf.d/variables/ams_default.vars で変更および調整する ootb.vars の変数

次に、変数の例を示します。

Define DISP_LOG_LEVEL info 
Define AUTHOR_WHITELIST_ENABLED 0 
Define PUBLISH_WHITELIST_ENABLED 0 
Define AUTHOR_FORCE_SSL 1 
Define PUBLISH_FORCE_SSL 1

例 1 - SSL を強制する

上記の変数 AUTHOR_FORCE_SSL または PUBLISH_FORCE_SSL を 1 に設定すると、http 要求で送られてきたエンドユーザーを https にリダイレクトする際に、書き換えルールを強制できます。

このトグルを機能させる構成ファイルの構文は次のとおりです。

</VirtualHost *:80> 
 <IfModule mod_rewrite.c> 
  ReWriteEngine on 
  <If &quot;${PUBLISH_FORCE_SSL} == 1&quot;> 
   Include /etc/httpd/conf.d/rewrites/forcessl_rewrite.rules 
  </If> 
 </IfModule> 
</VirtualHost>

ご覧のように、書き換えルールのインクルードは、エンドユーザーのブラウザーをリダイレクトするコードですが、1 に設定されている変数は、ファイルを使用できるかどうかを許可します。

例 2 - ログレベル

変数 DISP_LOG_LEVEL は、実行中の構成で実際に使用されるログレベルに何が必要かを設定できます。

以下に、ams ベースライン構成ファイルに存在する構文例を示します。

<IfModule disp_apache2.c> 
 DispatcherLog    logs/dispatcher.log  
 DispatcherLogLevel ${DISP_LOG_LEVEL} 
</IfModule>

ディスパッチャーのログレベルを上げる必要がある場合は、ams_default.vars 変数 DISP_LOG_LEVEL を目的のレベルに更新します。

値の例は、整数または単語です。

ログレベル

整数値

単語の値

トレース

4

trace

デバッグ

3

デバッグ

Info

2

info

警告

1

warn

エラー

0

error

例 3 - ホワイトリスト

変数 AUTHOR_WHITELIST_ENABLED および PUBLISH_WHITELIST_ENABLED を 1 に設定すると、IP アドレスに基づいてエンドユーザートラフィックを許可または禁止するルールを含む書き換えルールを使用できます。  この機能をオンに切り替える際には、そこに含めるホワイトリストルールファイルの作成も併せておこなう必要があります。

変数でホワイトリストファイルのインクルードを有効にする方法のいくつかの構文例とホワイトリストファイルの例を次に示します。

sample.vhost:

<VirtualHost *:80> 
 <Directory /> 
  <If &quot;${AUTHOR_WHITELIST_ENABLED} == 1&quot;> 
   Include /etc/httpd/conf.d/whitelists/*_whitelist.rules 
  </If> 
 </Directory> 
</VirtualHost>

sample_whitelist.rules:

<RequireAny> 
  Require ip 10.43.0.10/24 
</RequireAny>

ご覧のように、sample_whitelist.rules は IPの制限を実施していますが、変数を切り替えることで、sample.vhost に含めることができます

例 4 - 統計ファイルのレベル

変数 DEFAULT_STAT_LEVEL は、この変数を使用する各ファームが作成するディレクトリの深さを把握できるようになる数値に設定できます。キャッシュのフラッシュ時の stat ファイル

ams_defaults.vars:

Define DEFAULT_STAT_LEVEL 7

この変数を使用する各ファームの stat ファイルレベルが 7 に設定されます。このグローバル設定を多数のファームに簡単に適用できるのは、実に素晴らしいことです。ファームファイルのセクションで変数を使用している例を次に示します

002_ams_publish_farm.any:

/publishfarm { 
	/cache {
		/statfileslevel &quot;${DEFAULT_STAT_LEVEL}&quot;
	}
}

変数の配置場所

Web サーバーの起動引数

AMS は、/etc/sysconfig/httpd ファイル内の Apache プロセスの起動引数にグローバル変数を配置します。

このファイルには、次のように事前定義された変数があります。

AUTHOR_IP=&quot;10.43.0.59&quot; 
AUTHOR_PORT=&quot;4502&quot; 
AUTHOR_DOCROOT='/mnt/var/www/author' 
PUBLISH_IP=&quot;10.43.0.20&quot; 
PUBLISH_PORT=&quot;4503&quot; 
PUBLISH_DOCROOT='/mnt/var/www/html' 
ENV_TYPE='dev' 
RUNMODE='dev'

これらは変更できませんが、構成ファイルで活用するのに適しています

注意:

このファイルは、サービスの起動時にのみ含まれます。  変更を有効にするには、サービスを再起動する必要があります。  つまり、リロードだけでは不十分で、再起動が必要になります

変数ファイル(.vars)

コードで提供されるカスタム変数は、/etc/httpd/conf.d/variables/ 内の .vars ファイルに格納する必要があります。

これらのファイルには任意のカスタム変数を含めることができ、いくつかの構文例は次のサンプルファイルで確認できます

/etc/httpd/conf.d/variables/weretail_domains_dev.vars:

Define WERETAIL_DOMAIN dev.weretail.com 
Define WERETAIL_ALT_DOMAIN dev.weretail.net

/etc/httpd/conf.d/variables/weretail_domains_stage.vars:

Define WERETAIL_DOMAIN stage.weretail.com 
Define WERETAIL_ALT_DOMAIN stage.weretail.net

/etc/httpd/conf.d/variables/weretail_domains_prod.vars:

Define WERETAIL_DOMAIN www.weretail.com 
Define WERETAIL_ALT_DOMAIN www..weretail.net

独自の変数ファイルを作成するときは、内容に応じて名前を付け、こちらのマニュアルに記載されている命名基準に従ってください。  上記の例では、変数ファイルが、構成ファイルで使用する変数として、様々な DNS エントリをホストしていることがわかります。

変数の使用

これで、変数ファイル内で変数を定義しました。他の構成ファイル内で変数を適切に使用する方法を知りたいと思われる方向けに、

上記の .vars ファイルの例で、適切な使用例を示します。

すべての環境ベースの変数をグローバルに含めるよう、ファイル /etc/httpd/conf.d/000_load_env_vars.conf を作成します。

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 の値が stage の場合、次のファイルが使用されます。

/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 ファイルは、開発でのみ機能する通常の構文を置き換えることができます。

<VirtualHost *:80> 
 ServerName dev.weretail.com 
 ServerAlias dev.weretail.net

開発、ステージ、実稼働で機能する変数を活用した新しい構文を使用した場合:

<VirtualHost *:80> 
 ServerName ${WERETAIL_DOMAIN} 
 ServerAlias ${WERETAIL_ALT_DOMAIN}

/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any ファイルでは、開発でのみ機能する通常の構文を置き換えることができます。

&quot;dev.weretail.com&quot; 
&quot;dev.weretail.net&quot;

開発、ステージ、実稼働で機能する変数を活用した新しい構文を使用した場合:

&quot;${WERETAIL_DOMAIN}&quot; 
&quot;${WERETAIL_ALT_DOMAIN}&quot;

これらの変数では、環境ごとにデプロイされた別のファイルがなくても、多数の設定を再使用して、実行中の設定に個性を与えます。  基本的に、変数を使用して構成ファイルをテンプレート化し、変数に基づいてファイルを含めます。

次へ➡ フラッシング

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合