次の方法で共有


App Service にファイルをデプロイする

Note

2024 年 6 月 1 日以降に新しく作成される App Service アプリでは、名前付け規則 <app-name>-<random-hash>.<region>.azurewebsites.net を使用する一意の既定のホスト名を生成できます。 既存のアプリ名は変更されません。 次に例を示します。

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

詳しくは、App Service リソースの一意の既定のホスト名に関するページをご覧ください。

この記事では、コードを ZIP、WAR、JAR、EAR のいずれかのパッケージとして Azure App Service にデプロイする方法について説明します。 また、アプリケーション パッケージとは別に、個々のファイルを App Service にデプロイする方法についても説明します。

前提条件

この記事の手順を完了するには、App Service アプリを作成するか、別のチュートリアルで作成したアプリを使用します。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

プロジェクトの ZIP パッケージを作成する

重要

デプロイ用の ZIP パッケージを作成するときは、ルート ディレクトリを含めないでください。 ルート ディレクトリ内のファイルとディレクトリのみを含めます。 GitHub リポジトリを ZIP ファイルとしてダウンロードした場合、そのファイルをそのまま App Service にデプロイすることはできません。 GitHub では、入れ子になったディレクトリが最上位レベルに追加されます。これは App Service では機能しません。

ローカル ターミナル ウィンドウで、アプリ プロジェクトのルート ディレクトリに移動します。

このディレクトリには、Web アプリへの入力ファイルを含める必要があります (index.htmlindex.phpapp.js など)。 パッケージ管理ファイルを含めることもできます (project.jsoncomposer.jsonpackage.jsonbower.jsonrequirements.txt など)。

デプロイの自動化を App Service で自動的に実行したい場合を除き、npmbowergulpcomposerpip など、すべてのビルド タスクを実行します。 アプリを実行するために必要なすべてのファイルがあることを確認してください。 パッケージを直接実行したい場合、この手順は必須です。

プロジェクト内のすべての ZIP アーカイブを作成します。 dotnet プロジェクトの場合は、出力ディレクトリ自体を除き、dotnet publish コマンドの出力ディレクトリ内のすべてを追加します。 たとえば、現在のディレクトリに含まれる内容から ZIP パッケージを作成するには、ターミナルで以下のコマンドを実行します。

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

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

ZIP パッケージをデプロイする

ZIP パッケージをデプロイすると、そのコンテンツが、App Service によってアプリの既定のパス (Windows の場合は D:\home\site\wwwroot、Linux の場合は /home/site/wwwroot) にアンパックされます。

この ZIP パッケージ デプロイでは、Kudu サービスを使用することで、継続的インテグレーションベースのデプロイを効率化できます。 Kudu では、ZIP パッケージでのデプロイについて次の機能がサポートされています。

  • 以前のデプロイから残っているファイルの削除。
  • 既定のビルド プロセスを有効にするオプション (パッケージの復元を含む)。
  • デプロイのカスタマイズ (デプロイ スクリプトの実行など)。
  • デプロイ ログ。
  • パッケージ サイズの上限は 2048 メガバイトです。

Note

ZIP パッケージ内のファイルがコピーされるのは、既にデプロイされているファイルとタイムスタンプが一致しない場合のみです。

Kudu の ZIP デプロイ UI を使用する

ブラウザーで https://<app_name>.scm.azurewebsites.net/ZipDeployUI にアクセスします。 アプリ名については、上部の注を参照してください。

プロジェクトの ZIP パッケージを作成する」で作成した ZIP パッケージを、Web ページ上のエクスプローラー領域にドラッグしてアップロードします。

デプロイの進行中、右上隅のアイコンにその進行状況がパーセンテージで表示されます。 また、ページのエクスプローラー領域の下に、操作に関する詳細なメッセージも表示されます。 デプロイが完了すると、最後のメッセージに "デプロイが成功しました" と表示されるはずです。

現在、このエンドポイントは Linux App Services では機能しません。 代わりに、FTP または ZIP デプロイ API の使用を検討してください。

Kudu の ZIP デプロイ UI を使用しない

ZIP パッケージを Web アプリにデプロイするには、az webapp deploy コマンドを使用します。 この CLI コマンドは、Kudu publish API を使用してファイルをデプロイするもので、完全にカスタマイズすることができます。

次に示したのは、ZIP パッケージを自分のサイトにプッシュする例です。 --src-path に、ローカル ZIP パッケージのパスを指定してください。

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

このコマンドを実行すると、ZIP パッケージのデプロイ後にアプリが再起動されます。

ZIP デプロイ用にビルドの自動化を有効にする

デプロイ エンジンは、ZIP パッケージがそのまま実行できる状態であることと、ビルド自動化は実行されないことを既定では想定しています。 Git デプロイの場合と同じビルド自動化を有効にするには、Cloud Shell で次のコマンドを実行することで、SCM_DO_BUILD_DURING_DEPLOYMENT アプリ設定を設定します。

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

詳しくは、Kudu ドキュメントをご覧ください。

WAR、JAR、EAR パッケージをデプロイする

Azure CLI、PowerShell、または Kudu publish API を使用して、WARJAREAR のいずれかのパッケージを App Service にデプロイし、Java Web アプリを実行することができます。

ここで示すデプロイ プロセスでは、適切な名前付け規則とディレクトリ構造でアプリのコンテンツ共有にパッケージが配置されます。 詳細については、「Kudu publish API リファレンス」を参照してください。 Microsoft ではこのアプローチを推奨しています。 この方法ではなく FTP または WebDeploy を使って WAR、JAR、EAR パッケージをデプロイすると、命名や構造の誤りが原因で、不明なエラーが発生する可能性があります。

WAR パッケージを Tomcat または JBoss EAP にデプロイするには、az webapp deploy コマンドを使用します。 --src-path に、ローカル Java パッケージのパスを指定してください。

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

この CLI コマンドは、Kudu publish API を使用してパッケージをデプロイするもので、完全にカスタマイズすることができます。

個々のファイルをデプロイする

スタートアップ スクリプト、ライブラリ、静的ファイルを Web アプリにデプロイするには、--type パラメーターを指定して az webapp deploy コマンドを使用します。

この方法でスタートアップ スクリプトをデプロイした場合、App Service が自動的にそのスクリプトを使用してアプリを起動します。

CLI コマンドでは、Kudu publish API を使用してファイルをデプロイします。 コマンドは完全にカスタマイズできます。

スタートアップ スクリプトをデプロイする

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

ライブラリ ファイルをデプロイする

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

静的ファイルをデプロイする

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

ネットワークで保護されたアプリにデプロイする

Web アプリのネットワーク構成によっては、開発環境からアプリへの直接アクセスがブロックされる場合があります (「ネットワークで保護されたサイトへのデプロイ」と「ネットワークで保護されたサイトへのデプロイ、パート 2」をご覧ください)。 パッケージまたはファイルを Web アプリに直接プッシュする代わりに、Web アプリからアクセスできるストレージ システムにそれを発行し、アプリをトリガーしてストレージの場所から ZIP をプルできます。

リモート URL はパブリックにアクセスできるどのような場所でもかまいませんが、BLOB ストレージ コンテナーを使い、SAS キーでそれを保護するのが最善です。

他のセクションと同様に az webapp deploy コマンドを使いますが、--src-path ではなく --src-url を使います。 次の例では、--src-url パラメーターを使って、Azure ストレージ アカウントでホストされている ZIP ファイルの URL を指定します。

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Kudu publish API リファレンス

publish Kudu API では、CLI コマンドと同じパラメーターを URL のクエリ パラメーターとして指定できます。 Kudu REST API で認証を行う場合は、トークン認証をお勧めしますが、アプリのデプロイ資格情報を使って基本認証を使用することもできます。

次の表では、使用できるクエリ パラメーター、指定できる値、説明を示します。

キー 使用できる値 説明 必須
type war|jar|ear|lib|startup|static|zip デプロイする成果物の種類。これによって既定のターゲット パスが設定され、デプロイの処理方法が Web アプリに伝えられます。
- type=zip: ZIP パッケージの内容を /home/site/wwwroot に解凍することでパッケージをデプロイします。 target-path パラメーターは省略可能です。
- type=war: WAR パッケージをデプロイします。 既定では、WAR パッケージが /home/site/wwwroot/app.war にデプロイされます。 ターゲット パスは、target-path で指定できます。
- type=jar: JAR パッケージを /home/site/wwwroot/app.jar にデプロイします。 target-path パラメーターは無視されます
- type=ear: EAR パッケージを /home/site/wwwroot/app.ear にデプロイします。 target-path パラメーターは無視されます
- type=lib: JAR ライブラリ ファイルをデプロイします。 既定では、ファイルが /home/site/libs にデプロイされます。 ターゲット パスは、target-path で指定できます。
- type=static: スクリプトなどの静的ファイルをデプロイします。 既定では、ファイルが /home/site/wwwroot にデプロイされます。
- type=startup: App Service によってアプリのスタートアップ スクリプトとして自動的に使用されるスクリプトをデプロイします。 既定では、D:\home\site\scripts\<name-of-source> (Windows の場合) および home/site/wwwroot/startup.sh (Linux の場合) にスクリプトがデプロイされます。 ターゲット パスは、target-path で指定できます。
はい String
restart true|false 既定では、デプロイ操作の後に API によってアプリが再起動されます (restart=true)。 複数の成果物をデプロイする場合は、最後のデプロイ以外はいずれも restart=false を設定して再起動を禁止します。 いいえ Boolean
clean true|false 成果物をデプロイする前に、ターゲット デプロイをクリーン (削除) するかどうかを指定します。 いいえ Boolean
ignorestack true|false publish API は WEBSITE_STACK 環境変数を使用し、実際のサイトの言語スタックに応じて安全な既定値を選択します。 このパラメーターを false に設定すると、言語固有の既定値が無効になります。 いいえ Boolean
target-path 絶対パス 成果物のデプロイ先の絶対パス。 たとえば、"/home/site/deployments/tools/driver.jar""/home/site/scripts/helper.sh" のようになります。 いいえ String

高度なデプロイ シナリオの詳細については、Git を使用した Azure へのデプロイに関するページをご覧ください。 Azure への Git ベース デプロイでは、バージョン管理、パッケージの復元、MSBuild などが可能です。