ZIP または WAR ファイルを使用した Azure App Service へのアプリのデプロイDeploy your app to Azure App Service with a ZIP or WAR file

この記事では、ZIP または WAR ファイルを使用して Web アプリを Azure App Service にデプロイする方法について説明します。This article shows you how to use a ZIP file or WAR file to deploy your web app to Azure App Service.

この ZIP ファイル デプロイでは、Kudu サービスを使用することで、継続的な統合ベース デプロイを効率化できます。This ZIP file deployment uses the same Kudu service that powers continuous integration-based deployments. Kudu では、ZIP ファイルでのデプロイについて次の機能がサポートされています。Kudu supports the following functionality for ZIP file deployment:

  • 以前のデプロイから残っているファイルの削除。Deletion of files left over from a previous deployment.
  • 既定のビルド プロセスを有効にするオプション (パッケージの復元を含む)。Option to turn on the default build process, which includes package restore.
  • デプロイのカスタマイズ (デプロイ スクリプトの実行など)。Deployment customization, including running deployment scripts.
  • デプロイ ログ。Deployment logs.
  • ファイル サイズの上限は 2048 MB です。A file size limit of 2048 MB.

詳しくは、Kudu ドキュメントをご覧ください。For more information, see Kudu documentation.

WAR ファイルの展開では、Java Web アプリを実行するために WAR ファイルを App Service に展開します。The WAR file deployment deploys your WAR file to App Service to run your Java web app. WAR ファイルの展開」を参照してください。See Deploy WAR file.

前提条件Prerequisites

この記事の手順を完了するには、App Service アプリを作成するか、別のチュートリアルで作成したアプリを使用します。To complete the steps in this article, create an App Service app, or use an app that you created for another tutorial.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

プロジェクトの ZIP ファイルを作成するCreate a project ZIP file

注意

ファイルを ZIP ファイルでダウンロードした場合は、まずファイルを抽出します。If you downloaded the files in a ZIP file, extract the files first. たとえば、GitHub から ZIP ファイルをダウンロードした場合、そのファイルをそのままデプロイすることはできません。For example, if you downloaded a ZIP file from GitHub, you cannot deploy that file as-is. GitHub では、入れ子になったディレクトリが追加されますが、これらは App Service と連携しません。GitHub adds additional nested directories, which do not work with App Service.

ローカル ターミナル ウィンドウで、アプリ プロジェクトのルート ディレクトリに移動します。In a local terminal window, navigate to the root directory of your app project.

このディレクトリには、Web アプリへの入力ファイルを含める必要があります (index.htmlindex.phpapp.js など)。This directory should contain the entry file to your web app, such as index.html, index.php, and app.js. パッケージ管理ファイルを含めることもできます (project.jsoncomposer.jsonpackage.jsonbower.jsonrequirements.txt など)。It can also contain package management files like project.json, composer.json, package.json, bower.json, and requirements.txt.

デプロイの自動化を App Service で自動的に実行したい場合を除き、すべてのビルド タスク (npmbowergulpcomposerpip など) を実行し、アプリの実行に必要なファイルがすべて揃っていることを確認してください。Unless you want App Service to run deployment automation for you, run all the build tasks (for example, npm, bower, gulp, composer, and pip) and make sure that you have all the files you need to run the app. パッケージを直接実行したい場合、この手順は必須です。This step is required if you want to run your package directly.

プロジェクト内のすべての ZIP アーカイブを作成します。Create a ZIP archive of everything in your project. 次のコマンドには、お使いの端末の既定のツールを使用します。The following command uses the default tool in your terminal:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

ZIP ファイルのデプロイDeploy ZIP file

ブラウザーで https://<app_name>.scm.azurewebsites.net/ZipDeployUI にアクセスします。In the browser, navigate to https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

プロジェクトの ZIP ファイルを作成する」で作成した ZIP ファイルを、Web ページ上のエクスプローラー領域にドラッグしてアップロードします。Upload the ZIP file you created in Create a project ZIP file by dragging it to the file explorer area on the web page.

デプロイの進行中、右上隅のアイコンにその進行状況がパーセンテージで表示されます。When deployment is in progress, an icon in the top right corner shows you the progress in percentage. また、ページのエクスプローラー領域の下に、操作に関する詳細なメッセージも表示されます。The page also shows verbose messages for the operation below the explorer area. 完了すると、最後のデプロイ メッセージに "Deployment successful" と表示されます。When it is finished, the last deployment message should say Deployment successful.

現在、上記のエンドポイントは Linux App Services では機能しません。The above endpoint does not work for Linux App Services at this time. 代わりに、FTP または ZIP デプロイ API の使用を検討してください。Consider using FTP or the ZIP deploy API instead.

Azure CLI を使って ZIP ファイルを展開するDeploy ZIP file with Azure CLI

az webapp deployment source config-zip コマンドを使用して、アップロードされた ZIP ファイルを Web アプリにデプロイします。Deploy the uploaded ZIP file to your web app by using the az webapp deployment source config-zip command.

次に示すのは、アップロードした ZIP ファイルをデプロイするコマンドの例です。The following example deploys the ZIP file you uploaded. Azure CLI のローカル インストールを使用する場合は、--src にローカル ZIP ファイルのパスを指定します。When using a local installation of Azure CLI, specify the path to your local ZIP file for --src.

az webapp deployment source config-zip --resource-group <group-name> --name <app-name> --src clouddrive/<filename>.zip

このコマンドは、ファイルとディレクトリを ZIP ファイルから既定の App Service アプリケーション フォルダー (\home\site\wwwroot) にデプロイし、アプリを再起動します。This command deploys the files and directories from the ZIP file to your default App Service application folder (\home\site\wwwroot) and restarts the app.

既定で、展開エンジンでは ZIP ファイルがそのまま実行できる状態で、ビルド自動化は実行されないことが想定されています。By default, the deployment engine assumes that a ZIP file is ready to run as-is and doesn't run any build automation. Git デプロイの場合と同じビルド自動化を有効にするには、Cloud Shell で次のコマンドを実行することで、SCM_DO_BUILD_DURING_DEPLOYMENT アプリ設定を設定します。To enable the same build automation as in a Git deployment, set the SCM_DO_BUILD_DURING_DEPLOYMENT app setting by running the following command in the Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

詳しくは、Kudu ドキュメントをご覧ください。For more information, see Kudu documentation.

REST API を使って ZIP ファイルを展開するDeploy ZIP file with REST APIs

展開サービス REST API を使って、.zip ファイルを Azure 内のアプリに展開できます。You can use the deployment service REST APIs to deploy the .zip file to your app in Azure. 展開するには、POST 要求を https://<アプリ名>.scm.azurewebsites.net/api/zipdeploy に送信します。To deploy, send a POST request to https://<app_name>.scm.azurewebsites.net/api/zipdeploy. POST 要求のメッセージの本文に .zip ファイルを含める必要があります。The POST request must contain the .zip file in the message body. アプリの展開資格情報は、HTTP 基本認証を使って要求で提供します。The deployment credentials for your app are provided in the request by using HTTP BASIC authentication. 詳しくは、.zip のプッシュ展開に関するページをご覧ください。For more information, see the .zip push deployment reference.

HTTP BASIC 認証では、App Service 展開資格情報が必要です。For the HTTP BASIC authentication, you need your App Service deployment credentials. 自分の展開資格情報を設定する方法については、「ユーザー レベルの資格情報の設定とリセット」を参照してください。To see how to set your deployment credentials, see Set and reset user-level credentials.

cURL を使用するWith cURL

次の例は cURL ツールを使用して .zip ファイルを展開します。The following example uses the cURL tool to deploy a .zip file. プレースホルダー <deployment_user><zip_file_path><app_name> を置き換えます。Replace the placeholders <deployment_user>, <zip_file_path>, and <app_name>. cURL によって要求されたら、パスワードを入力します。When prompted by cURL, type in the password.

curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

この要求により、アップロードされた .zip ファイルからのプッシュ展開がトリガーされます。This request triggers push deployment from the uploaded .zip file. 次の cURL の例で示すように、https://<app_name>.scm.azurewebsites.net/api/deployments エンドポイントを使うことにより、現在および過去の展開を確認できます。You can review the current and past deployments by using the https://<app_name>.scm.azurewebsites.net/api/deployments endpoint, as shown in the following cURL example. やはり、<app_name> はアプリの名前に置き換え、<deployment_user> は展開資格情報のユーザー名に置き換えます。Again, replace <app_name> with the name of your app and <deployment_user> with the username of your deployment credentials.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

PowerShell の場合With PowerShell

次の例では、Publish-AzWebapp を使用して .zip ファイルをアップロードします。The following example uses Publish-AzWebapp upload the .zip file. プレースホルダー <group-name><app-name><zip-file-path> を置き換えます。Replace the placeholders <group-name>, <app-name>, and <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

この要求により、アップロードされた .zip ファイルからのプッシュ展開がトリガーされます。This request triggers push deployment from the uploaded .zip file.

現在と過去の展開を確認するには、次のコマンドを実行します。To review the current and past deployments, run the following commands. ここでも、<deployment-user><deployment-password>、および <app-name> の各プレースホルダーを置き換えます。Again, replace the <deployment-user>, <deployment-password>, and <app-name> placeholders.

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

WAR ファイルの展開Deploy WAR file

WAR ファイルを App Service にデプロイするには、 POST 要求を https://<app-name>.scm.azurewebsites.net/api/wardeploy に送信します。To deploy a WAR file to App Service, send a POST request to https://<app-name>.scm.azurewebsites.net/api/wardeploy. POST 要求のメッセージの本文に .war ファイルを含める必要があります。The POST request must contain the .war file in the message body. アプリの展開資格情報は、HTTP 基本認証を使って要求で提供します。The deployment credentials for your app are provided in the request by using HTTP BASIC authentication.

WAR ファイルを展開するときは常に /api/wardeploy を使用します。Always use /api/wardeploy when deploying WAR files. この API により、WAR ファイルが拡張され、共有ファイル ドライブに配置されます。This API will expand your WAR file and place it on the shared file drive. 他の展開 API を使用すると、動作の一貫性が損なわれる可能性があります。using other deployment APIs may result in inconsistent behavior.

HTTP BASIC 認証では、App Service 展開資格情報が必要です。For the HTTP BASIC authentication, you need your App Service deployment credentials. 自分の展開資格情報を設定する方法については、「ユーザー レベルの資格情報の設定とリセット」を参照してください。To see how to set your deployment credentials, see Set and reset user-level credentials.

cURL を使用するWith cURL

次の例は cURL ツールを使用して .war ファイルを展開します。The following example uses the cURL tool to deploy a .war file. プレースホルダー <username><war-file-path><app-name> を置き換えます。Replace the placeholders <username>, <war-file-path>, and <app-name>. cURL によって要求されたら、パスワードを入力します。When prompted by cURL, type in the password.

curl -X POST -u <username> --data-binary @"<war-file-path>" https://<app-name>.scm.azurewebsites.net/api/wardeploy

PowerShell の場合With PowerShell

次の例では、Publish-AzWebapp を使用して .war ファイルをアップロードします。The following example uses Publish-AzWebapp upload the .war file. プレースホルダー <group-name><app-name><war-file-path> を置き換えます。Replace the placeholders <group-name>, <app-name>, and <war-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <war-file-path>

使用しているアプリはデプロイ中にどうなりますか?What happens to my app during deployment?

正式にサポートされているすべてのデプロイ方法は、アプリの /home/site/wwwroot フォルダー内のファイルに変更を加えます。All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. アプリの実行には、それらのファイルが使用されます。These files are used to run your app. したがって、ファイルがロックされているため、デプロイに失敗する可能性があります。Therefore, the deployment can fail because of locked files. すべてのファイルが同時に更新されるわけではないため、アプリはデプロイ中に予期しない動作をすることもあります。The app may also behave unpredictably during deployment, because not all the files updated at the same time. これは、顧客向けのアプリでは好ましくありません。This is undesirable for a customer-facing app. これらの問題を回避するにはいくつかの方法があります。There are a few different ways to avoid these issues:

次のステップNext steps

高度なデプロイ シナリオの詳細については、Git を使用した Azure へのデプロイに関するページをご覧ください。For more advanced deployment scenarios, try deploying to Azure with Git. Azure への Git ベース デプロイでは、バージョン管理、パッケージの復元、MSBuild などが可能です。Git-based deployment to Azure enables version control, package restore, MSBuild, and more.

その他のリソースMore resources