Azure App Service へのローカル Git デプロイLocal Git deployment to Azure App Service

このハウツー ガイドでは、ローカル コンピューター上の Git リポジトリから Azure App Service にアプリをデプロイする方法を説明します。This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

前提条件Prerequisites

このハウツー ガイドの手順に従うには:To follow the steps in this how-to guide:

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

  • Git をインストールしますInstall Git.

  • デプロイするコードを含むローカル Git リポジトリを用意します。Have a local Git repository with code you want to deploy. サンプル リポジトリをダウンロードするには、ご利用のローカル ターミナル ウィンドウで次のコマンドを実行します。To download a sample repository, run the following command in your local terminal window:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

リポジトリを準備するPrepare your repository

Azure App Service Kudu ビルド サーバーから自動ビルドを取得するには、リポジトリのルートに、プロジェクトの適切なファイルがあることを確認してください。To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

ランタイムRuntime ルート ディレクトリのファイルRoot directory files
ASP.NET (Windows のみ)ASP.NET (Windows only) *.sln*.csproj、または default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln または *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (Linux のみ)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.jsapp.js、またはスタート スクリプトを含む package.jsonserver.js, app.js, or package.json with a start script
PythonPython *.pyrequirements.txt、または runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htmdefault.htmldefault.aspindex.htmindex.html、または iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
WebJobsWebJobs App_Data/jobs/continuous (継続的 WebJobs の場合) または App_Data/jobs/triggered (トリガーされた WebJobs の場合) 配下の <job_name>/run.<extension><job_name>/run.<extension> under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. 詳細については、Kudu WebJobs のドキュメントをご覧ください。For more information, see Kudu WebJobs documentation.
FunctionsFunctions Azure Functions の継続的なデプロイに関するページをご覧ください。See Continuous deployment for Azure Functions.

デプロイをカスタマイズするには、 .deployment ファイルをリポジトリのルートに含めます。To customize your deployment, include a .deployment file in the repository root. 詳細については、デプロイのカスタマイズに関するページおよび「Custom deployment script (カスタム デプロイ スクリプト)」を参照してください。For more information, see Customize deployments and Custom deployment script.

注意

Visual Studio で開発する場合は、Visual Studio にリポジトリを自動作成させてください。If you develop in Visual Studio, let Visual Studio create a repository for you. プロジェクトは Git を使用してすぐにデプロイできます。The project is immediately ready to be deployed by using Git.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell では、bashPowerShell のいずれかを使用して Azure サービスを操作できます。Cloud Shell lets you use either bash or PowerShell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を起動するには:To launch Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を起動します。Launch Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl + Shift + V キー、macOS では Cmd + Shift + V キーを使用して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Enter キーを押して、コードを実行します。Press Enter to run the code.

Kudu ビルド サーバーを使用してデプロイするDeploy with Kudu build server

Kudu App Service ビルド サーバーを使用してアプリのローカル Git デプロイを有効にするには、Azure Cloud Shell を使用するのが最も簡単な方法です。The easiest way to enable local Git deployment for your app with the Kudu App Service build server is to use Azure Cloud Shell.

デプロイ ユーザーを構成するConfigure a deployment user

FTP およびローカルの Git では、"デプロイ ユーザー" を使用して Azure Web アプリにデプロイできます。FTP and local Git can deploy to an Azure web app by using a deployment user. デプロイ ユーザーを構成すると、すべての Azure デプロイでこのユーザーを使用できます。Once you configure your deployment user, you can use it for all your Azure deployments. アカウントレベルのデプロイのユーザー名とパスワードは、Azure サブスクリプションの資格情報とは異なります。Your account-level deployment username and password are different from your Azure subscription credentials.

デプロイ ユーザーを構成するには、Azure Cloud Shell で az webapp deployment user set コマンドを実行します。To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. <username> と <password> を、デプロイ ユーザーのユーザー名とパスワードで置き換えます。Replace <username> and <password> with a deployment user username and password.

  • ユーザー名は、Azure 内で一意である必要があり、ローカル Git プッシュの場合は "@" シンボルを含めることはできません。The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

JSON 出力には、パスワードが null として表示されます。The JSON output shows the password as null. 'Conflict'. Details: 409 エラーが発生した場合は、ユーザー名を変更します。If you get a 'Conflict'. Details: 409 error, change the username. 'Bad Request'. Details: 400 エラーが発生した場合は、より強力なパスワードを使用します。If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Web アプリのデプロイに使用するユーザー名とパスワードを記録します。Record your username and password to use to deploy your web apps.

デプロイ URL を取得するGet the deployment URL

既存のアプリのローカル Git デプロイを有効にするための URL を取得するには、Cloud Shell で az webapp deployment source config-local-git を実行します。To get the URL to enable local Git deployment for an existing app, run az webapp deployment source config-local-git in the Cloud Shell. <app-name> と < group-name> を、ご自分のアプリの名前とその Azure リソース グループの名前に置き換えます。Replace <app-name> and <group-name> with the names of your app and its Azure resource group.

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

Git 対応アプリを新規に作成するには、Cloud Shell で --deployment-local-git パラメーターを指定して az webapp create を実行します。Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. <app-name>、<group-name>、<plan-name> を、ご利用になる新しい Git アプリの名前、その Azure リソース グループの名前、およびその Azure App Service プランの名前に置き換えます。Replace <app-name>, <group-name>, and <plan-name> with the names for your new Git app, its Azure resource group, and its Azure App Service plan.

az webapp create --name <app-name> --resource-group <group-name> --plan <plan-name> --deployment-local-git

どちらのコマンドからも次のような URL が返されます: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.gitEither command returns a URL like: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. 次の手順で、この URL を使用して、ご利用になるアプリをデプロイします。Use this URL to deploy your app in the next step.

このアカウント レベルの URL を使用するのでなく、アプリ レベルの資格情報を使用してローカル Git を有効にすることもできます。Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Azure App Service では、すべてのアプリに対してこれらの資格情報が自動的に作成されます。Azure App Service automatically generates these credentials for every app.

Cloud Shell で次のコマンドを実行して、アプリの資格情報を取得します。Get the app credentials by running the following command in the Cloud Shell. <app-name> と <group-name> をご利用のアプリの名前と Azure リソース グループの名前に置き換えます。Replace <app-name> and <group-name> with your app's name and Azure resource group name.

az webapp deployment list-publishing-credentials --name <app-name> --resource-group <group-name> --query scmUri --output tsv

次の手順では、返された URL を使用してアプリをデプロイします。Use the URL that returns to deploy your app in the next step.

Web アプリのデプロイDeploy the web app

  1. ローカル ターミナル ウィンドウを開き、ご利用のローカル Git リポジトリに Azure リモートを追加します。Open a local terminal window to your local Git repository, and add an Azure remote. 次のコマンドでは、<url>を、前の手順で取得したユーザー固有のデプロイ URL またはアプリ固有のデプロイ URL に置き換えます。In the following command, replace <url> with the deployment user-specific URL or app-specific URL you got from the previous step.

    git remote add azure <url>
    
  2. git push azure master を使用して Azure リモートにプッシュします。Push to the Azure remote with git push azure master.

  3. [Git Credential Manager] ウィンドウで、ご利用の Azure サインインパスワードではなく、ご利用のデプロイ ユーザー パスワードを入力します。In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. 出力結果を確認します。Review the output. MSBuild (ASP.NET 向け)、npm install (Node.js 向け)、pip install (Python 向け) など、ランタイム固有のオートメーションが表示される場合があります。You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. Azure portal でご利用のアプリに移動して、コンテンツがデプロイされていることを確認します。Browse to your app in the Azure portal to verify that the content is deployed.

Azure Pipelines ビルドを使用してデプロイするDeploy with Azure Pipelines builds

必要なアクセス許可がご利用のアカウントにある場合は、ご利用になるアプリのローカル Git デプロイを有効にするように Azure Pipelines (プレビュー) を設定することができます。If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • ご利用の Azure アカウントには、Azure Active Directory への書き込みを行うためのアクセス許可とサービスを作成するためのアクセス許可が必要です。Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • ご利用の Azure アカウントには、Azure サブスクリプションの所有者ロールが必要です。Your Azure account must have the Owner role in your Azure subscription.

  • ご自身が、使用する Azure DevOps プロジェクトの管理者である必要があります。You must be an administrator in the Azure DevOps project you want to use.

Azure Pipelines (プレビュー) を使用してアプリのローカル Git デプロイを有効にするには:To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Azure portal でご利用の Azure App Service アプリのページに移動し、左側のメニューで [デプロイ センター] を選択します。Navigate to your Azure App Service app page in the Azure portal, and select Deployment Center in the left menu.

  2. [デプロイ センター] ページで、 [ローカル Git] を選択して、 [続行] を選択します。On the Deployment Center page, select Local Git, and then select Continue.

    [ローカル Git] を選択してから、[続行] を選択します

  3. [ビルド プロバイダー] ページで [Azure Pipelines] (プレビュー) を選択して、 [続行] を選択します。On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    [Azure Pipelines] (プレビュー) を選択してから、[続行] を選択します。

  4. [構成] ページで、新しい Azure DevOps 組織を構成するか、または既存の組織を指定します。次に、 [続行] を選択します。On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    注意

    既存の Azure DevOps 組織が一覧に表示されていない場合は、それをお使いの Azure サブスクリプションにリンクしなければならない場合があります。If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. 詳細については、「Define your CD release pipeline」(CD リリース パイプラインを定義する) を参照してください。For more information, see Define your CD release pipeline.

  5. App Service プランの価格レベルによっては、 [ステージングへのデプロイ] ページが表示される場合があります。Depending on your App Service plan pricing tier, you may see a Deploy to staging page. デプロイ スロットを有効にするかどうかを選択して、 [続行] を選択します。Choose whether to enable deployment slots, and then select Continue.

  6. [概要] ページで設定を確認して、 [完了] を選択します。On the Summary page, review the settings, and then select Finish.

  7. Azure Pipeline の準備ができたら、 [デプロイ センター] ページから、次の手順で使用する Git リポジトリの URL をコピーします。When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Git リポジトリの URL をコピーする

  8. ローカル ターミナル ウィンドウで、ご利用のローカル Git リポジトリに Azure リモートを追加します。In your local terminal window, add an Azure remote to your local Git repository. コマンドで、前の手順で取得した Git リポジトリの URL に <url> を置き換えます。In the command, replace <url> with the URL of the Git repository that you got from the previous step.

    git remote add azure <url>
    
  9. git push azure master を使用して Azure リモートにプッシュします。Push to the Azure remote with git push azure master.

  10. [Git Credential Manager] ページで、ご自分の visualstudio.com ユーザーを使用してサインインします。On the Git Credential Manager page, sign in with your visualstudio.com username. 他の認証方法については、Azure DevOps Services 認証の概要に関する記事を参照してください。For other authentication methods, see Azure DevOps Services authentication overview.

  11. デプロイが完了したら、https://<azure_devops_account>.visualstudio.com/<project_name>/_build でビルドの進行状況を、https://<azure_devops_account>.visualstudio.com/<project_name>/_release でデプロイの進行状況を確認します。Once deployment is finished, view the build progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_build, and the deployment progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_release.

  12. Azure portal でご利用のアプリに移動して、コンテンツがデプロイされていることを確認します。Browse to your app in the Azure portal to verify that the content is deployed.

使用しているアプリはデプロイ中にどうなりますか?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 the same ones that are run in production. したがって、ファイルがロックされているため、デプロイに失敗する可能性があります。Therefore, the deployment can fail because of locked files. すべてのファイルが同時に更新されるわけではないため、運用環境のアプリはデプロイ中に予期しない動作をすることもあります。The app in production may also behave unpredictably during deployment, because not all the files updated at the same time. これらの問題を回避するにはいくつかの方法があります。There are a few different ways to avoid these issues:

デプロイのトラブルシューティングTroubleshoot deployment

Git を使用して Azure の App Service アプリに発行すると、次の一般的なエラーが表示される場合があります。You may see the following common error messages when you use Git to publish to an App Service app in Azure:

MessageMessage 原因Cause 解決策Resolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] アプリが稼働していません。The app isn't up and running. Azure portal でアプリを起動します。Start the app in the Azure portal. Web アプリが停止しているとき、Git デプロイは利用できません。Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' 'azure' リモートのアドレス情報が正しくありません。The address information for the 'azure' remote is incorrect. git remote -v コマンドを使用して、すべてのリモートおよび関連付けられている URL を一覧表示します。Use the git remote -v command to list all remotes, along with the associated URL. "azure" リモートの URL が正しいことを確認します。Verify that the URL for the 'azure' remote is correct. 必要に応じて、このリモートを削除し、正しい URL を使用して再作成します。If needed, remove and recreate this remote using the correct URL.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. git push の間にブランチを指定しなかったか、または .gitconfigpush.default 値を設定していません。You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. master ブランチを指定して、もう一度 git push を実行します: git push azure masterRun git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. "azure" リモートの master 以外のブランチにプッシュしようとしました。You tried to push to a branch other than master on the 'azure' remote. master ブランチを指定して、もう一度 git push を実行します: git push azure masterRun git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. このエラーは、HTTPS 経由で大規模な Git リポジトリをプッシュしようとした場合に発生する可能性があります。This error can happen if you try to push a large git repository over HTTPS. ローカル コンピューター上の Git 構成を変更して postBuffer を増やします。Change the git configuration on the local machine to make the postBuffer bigger. (例: git config --global http.postBuffer 524288000)。For example: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. 追加の必須モジュールを指定する package.json ファイルを使用して Node.js アプリをデプロイしました。You deployed a Node.js app with a package.json file that specifies additional required modules. 失敗に関する詳細なコンテキストについては、このエラーの前の npm ERR! エラー メッセージを確認してください。Review the npm ERR! error messages before this error for more context on the failure. このエラーの既知の原因と、対応する npm ERR! メッセージを以下に示します。The following are the known causes of this error, and the corresponding npm ERR! messages:

形式が正しくない package.json ファイル: npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

Windows 用のバイナリ配布がないネイティブ モジュール:Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
oror
npm ERR! [modulename@version] preinstall: \make || gmake\

その他のリソースAdditional resources