FTP/S を使用した Azure App Service へのアプリのデプロイ
この記事では、FTP または FTPS を使用して、Web アプリ、モバイル アプリ バックエンド、または API アプリを Azure App Service にデプロイする方法について説明します。
アプリの FTP/S エンドポイントは既にアクティブです。 FTP/S デプロイを有効にするための構成は必要ありません。
Note
Azure portal の [開発センター (クラシック)] ページ (以前のデプロイ エクスペリエンス) は、2021 年 3 月に非推奨となる予定です。 この変更はアプリの既存のデプロイ設定には影響せず、 [デプロイ センター] ページで引き続きアプリのデプロイを管理できます。
デプロイ資格情報を取得する
「Azure App Service のデプロイ資格情報の構成」の指示に従って、アプリケーション スコープの資格情報をコピーするか、ユーザー スコープの資格情報を設定します。 いずれかの資格情報を使用して、アプリの FTP/S エンドポイントに接続できます。
選択した資格情報のスコープに応じて、次の形式で FTP ユーザー名を作成します。
アプリケーション スコープ ユーザー スコープ <app-name>\$<app-name>
<app-name>\<deployment-user>
App Service では、FTP/S エンドポイントはアプリ間で共有されます。 ユーザー スコープの資格情報は特定のリソースにリンクされていないため、前述のように、ユーザースコープのユーザー名の前にアプリ名を付加する必要があります。
FTP/S エンドポイントを取得する
デプロイ資格情報をコピーしたアプリの同じ管理ページ ( [デプロイ センター]>[FTP 資格情報] ) で、FTPS エンドポイントをコピーします。
ファイルを Azure にデプロイする
- FTP クライアント (Visual Studio、Cyberduck、WinSCP など) から、収集した接続情報を使用してアプリに接続します。
- ファイルとそれぞれのディレクトリ構造を、Azure の /site/wwwroot ディレクトリ (WebJobs の場合は /site/wwwroot/App_Data/Jobs/ ディレクトリ) にコピーします。
- アプリの URL を参照して、アプリが正しく動作していることを確認します。
Note
Git ベースのデプロイやZip デプロイとは異なり、FTP デプロイでは次のようなビルド オートメーションはサポートされていません。
- 依存関係の復元 (NuGet、NPM、PIP、Composer の自動化など)
- .NET バイナリのコンパイル
- web.config の生成 (Node.js の例はこちら)
ローカル コンピューターでこれらの必要なファイルを手動生成した後、アプリと共にデプロイします。
FTPS を強制する
セキュリティを強化するには、FTP over TLS/SSL のみを許可する必要があります。 FTP デプロイを使用していない場合は、FTP と FTPS の両方を無効にすることもできます。
Azure portal のご使用のアプリのリソース ページで、左側のナビゲーションの [構成]>[全般設定] を選択します。
暗号化されていない FTP を無効にするには、 [FTP state](FTP の状態) で [FTPS のみ] を選択します。 FTP と FTPS の両方を完全に無効にするには、 [無効にする] を選択します。 完了したら、 [保存] をクリックします。 [FTPS のみ] を使用する場合は、Web アプリの [TLS/SSL 設定] ブレードに移動して TLS 1.2 以降を適用する必要があります。 TLS 1.0 と 1.1 は、 [FTPS のみ] ではサポートされません。
使用しているアプリはデプロイ中にどうなりますか?
正式にサポートされているすべてのデプロイ メソッドは、アプリの /home/site/wwwroot フォルダー内のファイルに変更を加えます。 アプリの実行には、それらのファイルが使用されます。 したがって、ファイルがロックされていることにより、デプロイに失敗する可能性があります。 すべてのファイルが同時に更新されるわけではないため、アプリはデプロイ中に予期しない動作をすることもあります。 この動作は、顧客向けのアプリでは好ましくありません。 これらの問題を回避するにはいくつかの方法があります。
- ZIP パッケージ を展開せず、ZIP パッケージから直接アプリを実行します。
- デプロイ中に、アプリを停止するか、またはアプリのオフライン モードを有効にします。 詳細については、「Dealing with locked files during deployment」 (デプロイ中にロックされているファイルに対処する) を参照してください。
- 自動スワップを有効にした状態で、ステージング スロットにデプロイします。
FTP デプロイのトラブルシューティング
- FTP デプロイをトラブルシューティングするには、どうすればよいですか。
- FTP 接続してコードを発行できません。 問題を解決するには、どうすればよいですか。
- パッシブ モードを使用して Azure App Service で FTP に接続するには、どうすればよいですか。
FTP デプロイをトラブルシューティングするには、どうすればよいですか。
FTP デプロイのトラブルシューティングを行うための最初の手順は、デプロイの問題を、ランタイム アプリケーションの問題から切り離すことです。
デプロイの問題が発生すると、通常、アプリにファイルがデプロイされなかったり、誤ったファイルがデプロイされたりします。 FTP のデプロイを調べるか、代替デプロイ パス (ソース コントロールなど) を選択することで、トラブルシューティングを行うことができます。
ランタイム アプリケーションの問題が発生した場合は、通常、お使いのアプリに正しいファイル セットがデプロイされますが、アプリが適切に動作しません。 実行時のコードの動作に注目して特定のエラーのパスを調べることで、トラブルシューティングを行うことができます。
デプロイの問題かランタイムの問題かを判断するには、「Deployment vs. runtime issues (デプロイの問題とランタイムの問題)」を参照してください。
FTP 接続してコードを発行できません。 問題を解決するには、どうすればよいですか。
入力したホスト名と資格情報が正しいことを確認してください。 また、使用しているマシン上の次の FTP ポートが、ファイアウォールによってブロックされていないことも確認します。
- FTP コントロール接続ポート: 21、990
- FTP データ接続ポート: 989、10001-10300
パッシブ モードを使用して Azure App Service で FTP に接続するには、どうすればよいですか。
Azure App Service では、アクティブ モードとパッシブ モードの両方を使用した接続がサポートされます。 お使いのデプロイ マシンは、通常、(オペレーティング システム内の、またはホーム ネットワークまたはビジネス ネットワークの一部として) ファイアウォールの内側にあるため、パッシブ モードをお勧めします。 WinSCP ドキュメントに記載された使用例をご覧ください。
Azure App Service のデプロイに使用されたメソッドを確認するにはどうすればよいですか?
たとえば、アプリの所有を引き継ぐことになりましたが、変更を加えてデプロイできるように、Azure App Service がどのようにデプロイされたかを確認したいとします。 アプリケーション設定を確認することで、Azure App Service がどのようにデプロイされたかを判断できます。 アプリが外部パッケージ URL を使用してデプロイされた場合は、アプリケーション設定に URL 値を持つ WEBSITE_RUN_FROM_PACKAGE 設定が表示されます。 または、zip デプロイを使用してデプロイされた場合は、値が 1 の WEBSITE_RUN_FROM_PACKAGE 設定が表示されます。 アプリが Azure DevOps を使用してデプロイされた場合は、Azure DevOps ポータルにデプロイ履歴が表示されます。 Azure Functions Core Tools を使用した場合は、Azure portal に デプロイ履歴が表示されます。