演習 - CLI を使用して Azure Web サイトを作成する
次に、Azure CLI を使ってリソース グループを作成してから、そのリソース グループに Web アプリをデプロイしてみましょう。
無料のサンドボックスを使用すると、Azure グローバル リージョンのサブセットにリソースを作成できます。 リソースを作成するときは、次のリストからリージョンを選択します。
- westus2
- southcentralus
- centralus
- eastus
- westeurope
- southeastasia
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
リソース グループを使う
独自のマシンと Azure サブスクリプションを使用している場合は、az login
コマンドを使用して Azure にサインインする必要があります。 ただし、ブラウザーベースの Cloud Shell サンドボックス環境を使用している場合、サインインは不要です。
次に、通常は az group create
コマンドを使用して関連するすべての Azure リソース用にリソース グループを作成しますが、この演習の場合は、リソース グループ
Note
この演習では、リージョンとして米国東部を使用します。 App Service プランの作成時に問題が発生した場合は、前の一覧から別のリージョンを選びます。
この演習の最初の手順は、後のコマンドで使う変数をいくつか作成することです。
export RESOURCE_GROUP=<rgn>[sandbox resource group name]</rgn> export AZURE_REGION=eastus export AZURE_APP_PLAN=popupappplan-$RANDOM export AZURE_WEB_APP=popupwebapp-$RANDOM
テーブルにすべてのリソース グループを一覧表示するよう Azure CLI に指示できます。 無料の Azure サンドボックスを使っている場合、リソース グループは 1 つしかありません。
az group list --output table
ヒント
[コピー] ボタンを使用して、コマンドをクリップボードにコピーできます。 貼り付けるには、Cloud Shell ターミナル内で新しい行を右クリックして [貼り付け] を選択するか、Shift + Insert キーボード ショートカット (macOS では ⌘ + V) を使用します。
さらに Azure の開発を行うと、複数のリソース グループができることがあります。 グループ リスト内に複数のアイテムがある場合は、
--query
オプションを追加することで、返される値をフィルター処理できます。 次のコマンドをお試しください。az group list --query "[?name == '$RESOURCE_GROUP']"
クエリは、JSON 要求のための標準クエリ言語である JMESPath を使用して書式設定されます。 この強力なフィルター言語の詳細については、http://jmespath.org/ を参照してください。 Azure CLI を使用した VM の管理に関するモジュールでもクエリの詳細を説明しています。
サービス プランの作成手順
Azure App Service を使って Web アプリを実行すると、アプリで使われた Azure コンピューティング リソースに対して課金されます。リソースのコストは、お使いの Web アプリに関連する App Service プランによって異なります。 アプリのデータセンターで使用されるリージョン、使用される VM の数、価格レベルは、サービス プランによって決まります。
App Service プランを作成して、ご利用のアプリを実行します。 次のコマンドでは、無料の価格レベルが指定されますが、
az appservice plan create --help
を実行して他の価格レベルを確認することもできます。Note
アプリとプランの名前は Azure 全体で "一意" にする必要があります。 以前に作成した変数が、サフィックスとしてランダム値を割り当てることで、名前が一意になります。 ただし、リソースの作成時にエラーを受け取った場合、前に表示された一覧に含まれるコマンドを実行し、すべての変数を新しいランダム値でリセットしてください。
リソース グループに関するエラーが発生した場合は、前に示したコマンドを別のリソース グループの値で実行します。
az appservice plan create --name $AZURE_APP_PLAN --resource-group $RESOURCE_GROUP --location $AZURE_REGION --sku FREE
このコマンドは、完了までに数分かかる場合があります。
テーブルにご利用のすべてのプランを一覧表示して、サービス プランが正常に作成されたことを確認します。
az appservice plan list --output table
次の例のような応答を受け取ります。
Kind Location MaximumNumberOfWorkers Name NumberOfSites ResourceGroup Status ------ ---------- ------------------------ ------------------ --------------- ------------------------------------------ -------- app East US 3 popupappplan-54321 0 Learn-12345678-1234-1234-1234-123456789abc Ready
Web アプリを作成する
次に、サービス プランに Web アプリを作成します。 それと同時にコードをデプロイすることができますが、この例では、別の手順として Web アプリを作成し、コードをデプロイします。
Web アプリを作成するには、Web アプリの名前と先ほど作成したアプリ プランの名前を指定します。 アプリ プラン名と同様に、Web アプリ名は一意にする必要があります。 前に作成した変数により、この演習のために十分なランダム値が割り当てられます。 このコマンドが完了するまで少し時間がかかることがあります。
az webapp create --name $AZURE_WEB_APP --resource-group $RESOURCE_GROUP --plan $AZURE_APP_PLAN
すべてのお使いのアプリを表に一覧表示して、アプリが正常に作成されたことを確認します。
az webapp list --output table
次の例のような応答を受け取ります。
Name Location State ResourceGroup DefaultHostName AppServicePlan ----------------- ---------- ------- ------------------------------------------ ----------------------------------- ------------------ popupwebapp-12345 East US Running Learn-12345678-1234-1234-1234-123456789abc popupwebapp-12345.azurewebsites.net popupappplan-54321
テーブルに表示された DefaultHostName をメモしておいてください。このアドレスが、新しい Web サイトの URL です。 Azure によって、その Web サイトは
azurewebsites.net
ドメイン内で一意のアプリ名を通して使用できるようになります。 たとえば、アプリ名を "popupwebapp-12345" とした場合、Web サイトの URL はhttp://popupwebapp-12345.azurewebsites.net
となります。 また、次のスクリプトを使って HTTP アドレスを返すこともできます。site="http://$AZURE_WEB_APP.azurewebsites.net" echo $site
サンプル アプリの既定の HTML を取得するには、DefaultHostName で CURL を使用します。
curl $AZURE_WEB_APP.azurewebsites.net
次の例のような応答を受け取ります。
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Microsoft Azure App Service - Welcome</title><link rel="shortcut icon" href="https://appservice.azureedge.net/images/app-service/v4/favicon.ico" type="image/x-icon"/><link href="https://appservice.azureedge.net/css/app-service/v4/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"/><style>html, body{height: 100%; background-color: #ffffff; color: #000000; font-size: 13px;}*{border-radius: 0 !important;}</style> ... (continued)
GitHub からコードをデプロイする
最後の手順では、GitHub リポジトリから Web アプリにコードをデプロイします。 Azure Samples Github リポジトリ内で提供されている基本的な PHP ページを使用してみましょう。実行すると、"Hello World!" と表示されます。 自分で作成した Web アプリ名を必ず使用します。 このコマンドが完了するまで少し時間がかかることがあります。
az webapp deployment source config --name $AZURE_WEB_APP --resource-group $RESOURCE_GROUP --repo-url "https://github.com/Azure-Samples/php-docs-hello-world" --branch master --manual-integration
デプロイされたら、ブラウザーまたは CURL でサイトを再表示します。
curl $AZURE_WEB_APP.azurewebsites.net
ページに "Hello World!" と表示されます。
Hello World!
この演習では、対話型の Azure CLI セッションの典型的なパターンを示しました。 最初に、標準のコマンドを使用して、新しいリソース グループを作成しました。 次に、一連のコマンドを使用して、リソース (この例では Web アプリ) をこのリソース グループにデプロイしました。 この一連のコマンドは、簡単にシェル スクリプトに結合して、同じリソースを作成する必要があるたびに実行できます。