次の方法で共有


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

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

前提条件

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

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

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

重要

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

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

このディレクトリには、 index.htmlindex.phpapp.jsなど、Web アプリへのエントリ ファイルが含まれている必要があります。 また、 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 パッケージでのデプロイについて次の機能がサポートされています。

  • 以前のデプロイから残ったファイルの削除
  • パッケージの復元を含む既定のビルド プロセスを有効にするオプション
  • デプロイ スクリプトの実行を含むデプロイのカスタマイズ
  • デプロイ ログ
  • 2,048 メガバイトのパッケージ サイズ制限

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

Kudu で ZIP デプロイ UI を使用してデプロイする

  1. Azure portal でアプリを開き、[ 開発ツール>Advanced Tools] を選択し、[ Go] を選択します。
  2. Kudu で、[ ツール>Zip プッシュ展開] を選択します。
  3. 「プロジェクト ZIP パッケージの作成」で作成した ZIP パッケージをアップロードします。 Web ページのエクスプローラー領域にドラッグします。

デプロイが進行中の場合、右上隅のアイコンに進行状況の割合が表示されます。 このページには、ファイル エクスプローラー領域の下に操作メッセージが表示されます。 デプロイが完了すると、最後のメッセージに "デプロイが成功しました" というメッセージが表示されます。

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

Kudu で ZIP デプロイ UI なしでデプロイする

az webapp deploy コマンドを使用して、WEB アプリに ZIP パッケージをデプロイします。 この 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 デプロイで使用されるのと同じビルド自動化を有効にするには、SCM_DO_BUILD_DURING_DEPLOYMENT アプリ設定を設定します。 Azure Cloud Shell で次のコマンドを実行します。

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 発行 API を使用して、 WARJAR、または EAR パッケージを App Service にデプロイして Java Web アプリを実行できます。

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

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

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

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

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

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

この方法でスタートアップ スクリプトをデプロイした場合、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 にはパブリックにアクセスできる任意の場所を指定できますが、共有アクセス署名 (SAS) キーを持つ BLOB ストレージ コンテナーを使用して保護することをお勧めします。

他のセクションと同様に az webapp deploy コマンドを使いますが、--src-url ではなく --src-path を使います。 次の例では、--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:コンテンツを /home/site/wwwrootに解凍して ZIP パッケージをデプロイします。 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 で指定できます。
はい
restart true|false 既定では、デプロイ操作の後に API によってアプリが再起動されます (restart=true)。 複数の成果物をデプロイする場合は、 restart=falseを設定することで、最終的なデプロイを除くすべてのデプロイで再起動を防ぐことができます。 いいえ ブール値
clean true|false 成果物をデプロイする前に、ターゲット デプロイをクリーン (削除) するかどうかを指定します。 いいえ ブール値
ignorestack true|false publish API は WEBSITE_STACK 環境変数を使用し、実際のサイトの言語スタックに応じて安全な既定値を選択します。 このパラメーターを false に設定すると、言語固有の既定値が無効になります。 いいえ ブール値
target-path 絶対パス 成果物のデプロイ先の絶対パス。 たとえば、/home/site/deployments/tools/driver.jar または /home/site/scripts/helper.sh です。 いいえ

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