変数の使用と理解

説明 description

環境

Adobe Experience Manager

問題/症状

このドキュメントでは、Apache Web サーバーおよび Dispatcher モジュール設定ファイルで変数の機能を活用する方法について説明します。

変数

Apache は、Dispatcher モジュールの変数とバージョン 4.1.9 以降をサポートしています。 これらを活用して、次の操作を実行できます。

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

解決策 resolution

  1. ベースライン変数の使用
    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

  2. 変数の配置場所

    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
      
  3. 変数の使用
    これで変数を変数ファイル内で定義したので、他の設定ファイル内での変数の適切な使用方法を知りたいと思います。

    上記の.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}"
    

    これらの変数は、環境ごとに異なるデプロイ済みファイルを使用する必要なく、実行中の設定を個別化するために非常に多くの再利用をおこないます。 基本的に、変数を使用して設定ファイルをテンプレート化し、変数に基づいてファイルをインクルードします。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f