DEV Community

tackme
tackme

Posted on

Sitecore PaaSでデプロイスロットだけにconfigを適用する方法

Sitecore 9.0以降ではルールベースのconfigに対応しており、検索プロバイダやサーバーロールに応じて異なるconfigを適用できるようになりました。これらの情報はWeb.configで*:defineという名前のApp Settingsを用いて定義されています。

<!-- 他にもたくさんあります。 -->
<add key="role:define" value="ContentDelivery" />
<add key="search:define" value="Solr" />
<add key="exmEnabled:define" value="yes" />
Enter fullscreen mode Exit fullscreen mode

これらの他にenv:defineという独自の環境名を定義することができる設定が用意されており、これを用いることでデプロイスロットにだけconfigを設定することができます。

手順

  1. Azureポータルでデプロイスロットを開き、Configurationを選択します。 image01
  2. New application settingを選択します。 image02
  3. Nameにenv:defineを、ValueにStagingを入力して、Deployment slot settingにチェックを入れます。 image03
  4. Stagingだけに適用したいconfigの属性に env:require="Staging" を追加します。
<!-- 名前空間 env を宣言 -->
<configuration xmlns:env="http://www.sitecore.net/xmlconfig/env/" xmlns:patch="http://www.sitecore.net/xmlconfig/">
    <sitecore>
        <settings>
            <!-- envがStagingのサーバーは異なるURLを使用する -->
            <setting name="Media.MediaLinkServerUrl" env:require="Staging">
                <patch:attribute name="value">http://staging.example.com</patch:attribute>
            </setting>
        </settings>
    </sitecore>
</configuration>
Enter fullscreen mode Exit fullscreen mode

これでデプロイスロットだけにconfigが適用されます。Deployment slot settingにチェックを入れた設定はスワップしてもスワップ前のサーバーに適用されるので、このような挙動を実現できます。

また以下のように!を使って指定した環境名以外に適用することも可能です。

<configuration xmlns:env="http://www.sitecore.net/xmlconfig/env/">
  <sitecore>
    <settings>
      <!-- envがStagingの場合はFooを使用 -->
      <setting name="MySetting" value="Foo" env:require="Staging" />
      <!-- それ以外ではBarを使用 -->
      <setting name="MySetting" value="Bar" env:require="!Staging" />
    </settings>
  </sitecore>
</configuration>
Enter fullscreen mode Exit fullscreen mode

参考

Top comments (0)