演習 - 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 プランの作成時に問題が発生した場合は、前の一覧から別のリージョンを選びます。

  1. この演習の最初の手順は、後のコマンドで使う変数をいくつか作成することです。

    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
    
  2. テーブルにすべてのリソース グループを一覧表示するよう Azure CLI に指示できます。 無料の Azure サンドボックスを使っている場合、リソース グループは 1 つしかありません。

    az group list --output table
    

    ヒント

    [コピー] ボタンを使用して、コマンドをクリップボードにコピーできます。 貼り付けるには、Cloud Shell ターミナル内で新しい行を右クリックして [貼り付け] を選択するか、Shift + Insert キーボード ショートカット (macOS では ⌘ + V) を使用します。

  3. さらに 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 の数、価格レベルは、サービス プランによって決まります。

  1. 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
    

    このコマンドは、完了までに数分かかる場合があります。

  2. テーブルにご利用のすべてのプランを一覧表示して、サービス プランが正常に作成されたことを確認します。

    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 アプリを作成し、コードをデプロイします。

  1. Web アプリを作成するには、Web アプリの名前と先ほど作成したアプリ プランの名前を指定します。 アプリ プラン名と同様に、Web アプリ名は一意にする必要があります。 前に作成した変数により、この演習のために十分なランダム値が割り当てられます。 このコマンドが完了するまで少し時間がかかることがあります。

    az webapp create --name $AZURE_WEB_APP --resource-group $RESOURCE_GROUP --plan $AZURE_APP_PLAN
    
  2. すべてのお使いのアプリを表に一覧表示して、アプリが正常に作成されたことを確認します。

    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
    
  3. サンプル アプリの既定の 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 からコードをデプロイする

  1. 最後の手順では、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
    
  2. デプロイされたら、ブラウザーまたは CURL でサイトを再表示します。

    curl $AZURE_WEB_APP.azurewebsites.net
    

    ページに "Hello World!" と表示されます。

    Hello World!
    

この演習では、対話型の Azure CLI セッションの典型的なパターンを示しました。 最初に、標準のコマンドを使用して、新しいリソース グループを作成しました。 次に、一連のコマンドを使用して、リソース (この例では Web アプリ) をこのリソース グループにデプロイしました。 この一連のコマンドは、簡単にシェル スクリプトに結合して、同じリソースを作成する必要があるたびに実行できます。