今回は「Azure App Service」について解説します。Azure App Serviceは、手軽かつ無料または低コストで利用できるAzureのPaaS環境の1つです。単に「Web App」と呼ぶこともあります。
App ServiceのWeb Appとは
Web Appを利用すると、静的なHTMLを配置するだけの単純なWebサイトから、任意の言語で開発したWebアプリの実行環境まで柔軟に対応できます。PaaSであるため、インフラストラクチャを管理する必要がなく、WebコンテンツやWebアプリのコード開発に専念できるのが特徴です。
Web Appを使用すると、Linux、Windows、またはDockerベースのコンテナ(Web App for Containersとも呼ばれます)にWebコンテンツやWebアプリをデプロイするだけで、すぐにWebサイトやWebアプリを構築できます。利用可能なランタイム環境やデプロイ方法は、以下の公式ドキュメントのトップページを見れば、概ね想像がつくでしょう。
Webアプリでデータベースが必要な場合は、PaaS型データベースである「Azure SQL Database」「Azure Database for MySQL」「Azure Cosmos DB」(MongoDB用APIを提供)などを利用できます。
WindowsのWeb Appでは、Web Appのプラン内で利用できるローカルのMySQLインスタンス「MySQL in App」を使用することもできます。ただし、MySQL in Appは運用環境を想定したものではなく、単一インスタンスを超えてスケールすることはできません。
Web Appを利用した静的Webサイトの構築
公式ドキュメントでは、簡単なサンプルコードをデプロイして実行する方法がチュートリアルで説明されていますが、Azure Cloud ShellのAzure CLIまたはローカルのAzure CLIを使用して、コマンドラインで行う手順になっています。
それはそれで簡単なのですが、初めてWebアプリをデプロイする人にとってはコマンドラインというだけでハードルが高く感じるかもしれません。また、最初からコマンドラインで操作すると、何をしているのか全体像を把握するのが難しいでしょう。
そこで今回と次回は、メモ帳で数行書いただけの極めて簡単なサンプルを、Web AppとしてデプロイするまでをAzureポータルを中心にした手順で紹介します。今回は、単純なHTMLページを配置するだけの静的なWebサイトの構築です。
Webサイト用のWebコンテンツとして、HTMLファイルとイメージファイルの2ファイルで作成した、簡単なHTML(index.html)を用意しました。
Azureポータルを使用してApp Serviceに、このWebコンテンツをデプロイするには、まずはAzure Marketplaceから「Web App」の作成を選択し、アプリ名(サイトのURLはhttps://<アプリ名>.azurewebsites.netになる)、リソースグループ、「Windows」または「Linux」のインスタンスのプラットフォームOS、アプリの発行方法として「コード」または「Dockerイメージ」を選択し、「App Serviceプラン」を新規作成(または既存のプランから選択)します。
App Serviceプランは、Webアプリ/サイトのコンテナ(器の意味)となるもので、アプリの場所(Azureリージョン)、利用可能な機能や性能、価格が決まります。
App Serviceプランは複数のWeb Appで共用することができますが、WindowsとLinuxのインスタンスOSごとに分ける必要があります。WindowsベースのWeb Appの場合、無料のFreeプランから利用できます。LinuxベースのWeb Appには無料のプランはありませんが、代わりにエントリレベルのBasic(B1)プランは、最初の30日間、無料で利用可能です。
なお、WindowsのWeb AppはWindows ServerのIIS、LinuxのWeb AppはApache HTTP Serverベースですが、利用可能なランタイムや機能に大きな違いはありません(MySQL in AppとApplication Insightsの詳細監視機能はWindowsのみ)。同じプランの場合、Linuxのほうが低い単価で利用できます。詳しくは、以下の価格情報で確認してください。
「作成」ボタンをクリックすると、数十秒でWeb Appの作成が完了し、Webアプリのデプロイが可能になります。デプロイ方法はいくつか用意されていますが、最も簡単なのはWebコンテンツを1つのZIPファイルにまとめ、作成したWeb App専用のZip Deploy UI(https://<アプリ名>.scm.azurewebsites.net/ZipDeployUI)にドラッグ&ドロップする方法です。ZIPファイルをアップロードすると、自動的にsite/wwwrootディレクトリにWebコンテンツが展開されます。
FTP/FTPSでファイル転送するという、レガシーな方法を利用することもできます。それには、Web Appのブレードの「デプロイセンター」の「FTP」ダッシュボードを開き、事前にユーザー名とパスワードを作成しておく必要があります。
このFTPデプロイ用の資格情報はAzureサブスクリプションに紐づくため、Webアプリごとに作成する必要はありません。Web Appごとに準備されるFTP/FTPSホストには「アプリ名\デプロイユーザー名」のユーザー名とパスワードで接続することができます。
以上でWebコンテンツのデプロイは完了です。Webブラウザで「https://<アプリ名>.azurewebsites.net」を開けば、ローカルからアップロードした静的なWebサイトを参照できるはずです。
著者プロフィール
山市良
Web媒体、IT系雑誌、書籍を中心に執筆活動を行っているテクニカルフリーライター。主にマイクロソフトの製品やサービスの情報、新しいテクノロジを分かりやすく、正確に読者に伝えるとともに、利用現場で役立つ管理テクニックやトラブルシューティングを得意とする。2008年10月よりMicrosoft MVP - Cloud and Datacenter Management(旧カテゴリ: Hyper-V)を連続受賞。ブログはこちら。
主な著書・訳書
「インサイドWindows 第7版 上」(訳書、日経BP社、2018年)、「Windows Sysinternals徹底解説 改定新版」(訳書、日経BP社、2017年)、「Windows Server 2016テクノロジ入門 完全版」(日経BP社、2016年)、「Windows Server 2012 R2テクノロジ入門」(日経BP社、2014年)などがある。