Sitecore エクスペリエンスマネジメント環境をAzure App Serviceにデプロイする

samatsu 8/7/2017 2730 N/A Sitecore AppService

Sitecore 8.2 update1から、Azure App ServiceへのSitecoreのデプロイがサポートされています。Sitecore環境の構築を簡単にするために、Sitecoreのサーバーロール別のWeb Deploy用パッケージとARMテンプレートが提供されるようになりました。

Sitecore XM1(エクスペリエンスマネジメント)環境を標準で提供されるARMテンプレートとWeb Deployパッケージを使用してAzure App Serviceにデプロイする方法を記載します。

標準のパッケージとARMテンプレートをカスタマイズしてApp ServiceにSitecore環境を展開することもできます。カスタムWeb Deployパッケージを作成する方法に関しては下記URLを参照してください。

Package a Sitecore solution for the Microsoft Azure App Service https://doc.sitecore.net/cloud/working_with_sitecore_azure_toolkit/deployment/package_a_sitecore_solution_for_the_azure_app_service

デプロイに利用したクライアントPCの環境は次の通りです

  •  Windows Server 2016 Standard
  • SQL Server 2016 Developer
  • Visual Studio 2017 Enterprise
  • PowerShell 5 (5.1.14393.206)

上記がインストールされた環境で作業したメモを記載します。

1.Sitecore Azure Toolkit の準備

Sitecore Azure Toolkitを使用して、PaaS環境(Azure AppService)にSitecore XM環境をデプロイします。Sitecore Azure Toolkit を使ってSitecoreをデプロイするために必要なモジュールなどは、Sitecore Azure Toolkitのドキュメントのページからリンクされている Getting started with the Sitecore Azure Toolkit のPrerequisitesセクションを参照します。

記事作成時点で最新の Azure Toolkit 1.1.0 では、簡単に記載すると次の通りです。

  • .NET 4.6
  • PowerShell 4.0
  • Microsoft Azure PowerShell 2.0.1 以降
    次のPowerShellコマンドでインストールされているか確認できます。
    Get-Module -ListAvailable -Name Azure -Refresh
    何も表示されなければ、 Web Platform Installer か何かで Azure PowerShellをインストールしてください。PowerShell 5以降の場合は、次のコマンドでもインストールできると思います。
    Install-Module AzureRM
    検証用の環境では、Visual Studio 2017インストール時に Azure SDKもインストールしたためインストール済みでした。
  • Microsoft SQL Server Data-Tier Application Framework (DacFX) for SQL server 2012 以降
    Visual Studio 2017インストール済みの環境のため、インストール済みでした。
  • Azureのサブスクリプション
  • Web Deployパッケージをアップロードする Azureストレージアカウント
  • XP環境を使用する場合は、 MongoDBの動作している環境も事前に用意しておきます。 AzureのサービスとしてMongoLabの無料版を利用することができます。今回はXM(CMS Only環境)なので不要です。

事前条件が満たされていることを確認したら、Getting started with the Sitecore Azure Toolkit の手順に従って必要なSitecore Azure Toolkit を準備します。

下記URLからSitecore Azure Toolkitのダウンロードページにアクセスします。今回は、記事作成時点で最新バージョンであるSitecore Azure Toolkit 1.1 rev. 170509 をダウンロードしました。https://dev.sitecore.net/Downloads/Sitecore_Azure_Toolkit.aspx

Sitecore Azure Toolkitをダウンロードしたら、忘れずにファイルを右クリック -> プロパティをクリックしてブロックを解除します。

ダウンロードした zip ファイルを展開して適当な場所に配置します。

2. Azure App Service 用の Web Deploy パッケージのダウンロード

Sitecore 8.4 update-4 のページにアクセスして、Azure App Service用のWeb Deployパッケージファイルをダウンロードします。今回は、URLの Packages for XM/XM1 configuration をダウンロードしました。

ダウンロードした zip ファイルを右クリック -> プロパティ をクリックしてん、ブロックを解除します。zipファイルを展開し、適当な場所に配置します。

デプロイパッケージのアップロードを行います。Azure ポータルにアクセスし、事前に準備しておいたストレージアカウント上に適当な名前でBLOBコンテナを作成します。Access TypeはBlob にしておきます。

コンテナのブレード上で、Uploadをクリックします。

Upload blobブレードで、展開した 2つのzipファイルをアップロードします。 Blob type は Block blob としておきます。ファイルのアップロードする方法は、 Storage ExplorerやAzCopy等何を使っても問題ありません。

アップロードしたら、アップロードしたファイルを選択して、プロパティ用のブレードを表示します。

CM,CD用のWeb DeployパッケージのURLをメモ帳などにコピーしておきます。BLOBデータのURLは後の手順で利用します。

3. azuredeploy.parameters.json ファイルの準備

Azure App ServiceにSitecore XM環境をセットアップする際のARMテンプレート用のパラメーターを設定するファイルを用意します。Sitecoreを展開する標準のARMテンプレートが公開されいているページにアクセスします。GitHub上のページの Sitecore 8.2.4 > xm > azuredeploy.parameters.json のページに移動し、ローカルファイルにjsonファイルを保存します。8.2.4のXM用のファイルの場合はURLは次のようになります。

https://raw.githubusercontent.com/Sitecore/Sitecore-Azure-Quickstart-Templates/master/Sitecore%208.2.4/xm/azuredeploy.parameters.json

Visual Studioや VS Codeなどで jsonファイルを開いてパラメーターを設定します。パラメーターの意味はDeploy a new Sitecore environment to the Azure App Service の Download and configure an environment template を参考にしてください。上記ページの表の Configuration 列の All,XMが設定されている項目がパラメーターの設定箇所です。

今回はパラメーター用のjsonファイルの次の場所にパラメーターを設定しました。パスワードの長さの要件(8文字以上)などは上記で紹介したページの表を参照してください。

パラメーター名 設定する値
cmMsDeployPackageUrl 手順2で準備したCM用のWebDeployパケージのURL
cdMsDeployPackageUrl 手順2で準備したCD用のWebDeployパケージのURL
sqlServerLogin SQL Database 用のアカウント
sqlServerPassword SQL Database 用のアカウントのパスワード
sitecoreAdminPassword admin ユーザーの初期パスワード

deploymentIdと、licesenseXml はStart-SitecoreAzureDeploymentコマンドレット実行時に指定するのでパラメーター用のファイルでは指定せずブランクのままにしました。

4. Sitecore エクスペリエンスマネジメント環境のデプロイ

必要な準備が終わったのでデプロイ作業を実施します。今回は、クリーンな環境を展開するだけですので、実際には、Deploy a new Sitecore environment to the Azure App Serviceの Invoke the deployment command セクションの手順に従います。

まずはPowerShellを起動して、Sitecore Azure Toolkitを配置したフォルダーに移動します。次のコマンドレットを実行して、モジュールを読み込みます。

Import-Module .\tools\Sitecore.Cloud.Cmdlets.psm1 -Verbose

モジュールを読み込んだら、次のサンプルスクリプトを例にしてSitecoreのXM環境をAzure AppService上にデプロイします。サブスクリプションのIDやDeploymentId,ライセンスファイルのパス,リソースグループ名など編集に設定している値は環境に合わせて適宜変更してください。

## 西日本DCにSitecore環境を展開するサンプルスクリプト
#ログイン
Add-AzureRMAccount
# サブスクリプションの選択
$subscriptionId = "【AzureのサブスクリプションIDを設定】"
Select-AzureRmSubscription -SubscriptionId $subscriptionId
		
## 作成開始
$dcName = "Japan West"
# リソースグループ名。存在しない場合は作成される
$rgName = "【リソースグループ名】"
# ARMテンプレート
$armTemplateUrl = "https://raw.githubusercontent.com/Sitecore/Sitecore-Azure-Quickstart-Templates/master/Sitecore 8.2.4/xm/azuredeploy.json"				
# パラメーターファイルのパス。適宜変更
$armParametersPath = "C:\SitecoreAzureModules\azuredeploy.parameters.json"
# ライセンスファイルのパス。適宜変更
$licensePath = "C:\SitecoreAzureModules\license.xml" 
# DeploymentId
$deploymentId = "【DeploymentId】"
				
Start-SitecoreAzureDeployment -location $dcName  -Name $rgName -ArmTemplateUrl $armTemplateUrl -ArmParametersPath  $armParametersPath -LicenseXmlPath $licensePath -SetKeyValue @{ "deploymentId" = $deploymentId }

Start-SitecoreAzureDeploymentコマンドレットの実行に成功すると、下図のように、リソースグループに様々なサービスがサービスが展開されます。もし実行に失敗した場合は、エラーの内容を確認して必要な修正をした後に、スクリプトを再度実行してください。

CMやCDの画面にアクセスしたい場合は、リソースグループ配下の一覧からCM(おしくはCD)のApp Serviceを選択して、下図のようなBrowseボタンをクリックしてください。

ブラウザー上のSitecoreのデフォルトのトップページが表示されます。

CMサーバーにアクセスしている場合は、 /sitecore というパスを入力するとログインフォームが表示されます。パラメーターのファイルで指定したadminのパスワードを指定してログインすることができます。

このような感じで簡単にセットアップすることができます。サーバー台数も必要に応じて簡単に増減させることができますし、コンテンツの編集やパブリッシュ、CDサーバー上でコンテンツの配信などを行えます。

ちなみに、CDサーバーには /sitecore とパスを指定してもログインすることはデフォルトではできません。Web.configを見るとわかるのですが、次のように sitecore 配下は anonymous ユーザーがアクセスできないように設定されているためです。

  <location path="sitecore">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

今回は、 XMを例にして Azure App Service 上に Sitecoreを展開する方法をご紹介しました。デフォルトの状態で問題なければ実際には Marketplace からも同じように XM 環境をデプロイすることができます。

また、XP環境も MongoDBの動作する環境を準備しておけば同じように簡単に環境をデプロイできます。

こちらの方も時間のあるときに方法をご紹介したいと思います。