はじめに

前回まではAzureのPaaS(Platform as a Service)であるApp Serviceにプログラムをデプロイする方法を紹介してきました。しかし未対応の言語など、サポートされていない機能を使いたい場合にはどうすればよいでしょうか?今回はAzure上にWindows Serverの仮想マシンを作成し、その上でASP.NETのWebアプリケーションを動作させるために必要な設定を紹介します。

前回同様、本連載では次の環境で動作確認を行っています。
・Windows 10 Home
・Visual Studio Community 2017 Version 15.2(以降、VS2017)

本稿で説明するリストはサンプルの中に収録しています。ご活用ください。

Azureの仮想マシン

何らかのWebアプリケーションを作成する場合に、最初からAzureで動作することが決まっていればAzureに合わせた設計や構成を行うことができますが、これまでオンプレミスで動作していたWebアプリケーションをAzure上に移行しようとすると、大幅な修正が必要となるかもしれません。そのような場合にはAzure上に仮想マシンを作成し、そこに移行することで大きなコストを払う必要がなく移行することが可能になります。

Azureで利用可能なOSはLinuxとWindowsです。仮想マシンはテンプレートから作成しますが、素のOSだけではなくあらかじめアプリケーションがセットアップされた状態のものも豊富に用意されています。例えばJenkinsなどのサーバ製品だけではなく、VS2017がインストールされたクライアントOSも選択できるようになっています。これらのテンプレートを利用して、開発、検証、テスト、本番環境などさまざまな用途に利用可能となっています。

仮想マシンの作成

Azureポータルメニュー

本記事ではオンプレミスで動作していたASP.NET MVCアプリケーションをAzureに移行するという前提のため、仮想マシンのOSとしてWindows Server 2012 R2を選択しました。

仮想マシンの作成はAzureポータル画面から行います。Azureにサインインしたらポータルメニューから「Virtual Machines」を選択します。

仮想マシンの管理画面の上部にある「追加」をクリックして仮想マシンの新規作成画面に遷移します。

仮想マシンの追加

OSの選択

OSのテンプレートにはあらかじめアプリケーションをインストール済みのものも、たくさんあるため、必要なものを探すには検索することをおすすめします。今回はWindows Serverを利用するため、検索エリアに「Windows Server」と入力すると利用可能なWindows Serverの一覧が表示されます。この中からWindows Server 2012 R2 Datacenterを選択します。

Windows Serverを検索

作成するOSを決めたらデプロイモデルを選択します。選択肢としては「クラシック」と「Resource Manager」の2種類がありますが、新しく作成する場合にはResource Managerを選択したほうが便利です。クラシックは以前のAzureとの互換のために用意されているオプションで、仮想マシンに関連する仮想ネットワークなどのリソースをユーザ自身が個別に設定する必要があります。準備ができたら「作成」をクリックしてください。

仮想マシンを作成

次に作成する仮想マシンの各種設定を行っていきます。

基本設定の構成

仮想マシンを作成するには多くの項目を設定する必要があります。ここでは最初に基本設定を行います。項目数が多いため2つに分割して説明します。

前半の5つは次の内容を設定します。

基本設定項目前半

項目名 説明
名前 仮想マシンの名前
VMディスクの種類 SSDまたはHDDから選択
ユーザ名 仮想マシンにログインするための管理用ユーザ名
パスワード ログインパスワード
サブスクリプション 支払い方法。従量課金、評価版など

基本設定前半

後半の3つは次の内容を設定します。

基本設定項目後半

項目名 説明
Resource group 仮想マシン、仮想ネットワークなどのリソースをまとめて管理するためのグループ名
場所 仮想マシンをホストする場所。日本の場合には東日本と西日本が用意されている
お金を節約 有効なライセンスを持っているかどうか

「お金を節約」という項目はOSとしてWindowsを選択した場合のみで設定可能な項目で、もし有効なWindowsのライセンスを持っている場合には、仮想マシンの費用が最大で40%割引になります。余っているライセンスがある場合にはお得に利用することができます。

基本設定後半

すべての項目を入力したら「OK」をクリックして次に進みます。

仮想マシンのサイズ選択

検証用からプロダクションサービスに利用するサーバまで、同じOSでもパフォーマンスはそれを動かすサーバスペックによって大きく変わります。オンプレミス環境ではサーバの調達に一定の期間が必要でしたが、Azureなどのクラウド環境では数分で必要なスペックのインスタンスを用意することができます。

仮想マシンのサイズは、用意されているものの中という制約はありますが、自由に選択することができます。今回は検証用ということで一番下のスペックであるDS1_V2 Standardを選択します。この構成ではCPUのコア数は1、3.5GBのメモリが搭載されています。

この構成を選択した場合に1ヶ月でどれくらいの費用がかかるかが目安として表示されています。この費用は基本的にはインフラコストなのですがWindowsの場合にはライセンス費用も含まれるためLinuxに比べて高めになっています。ちなみにUbuntuを選択した場合の費用は月に7,740.58円でした(2017年8月現在)。

仮想マシンのサイズ選択

仮想マシンのサイズが決まったら「選択」をクリックして次に進みます。

オプション機能の構成

次はストレージやネットワークなどの拡張機能など周辺部分の設定を行います。こちらも多くの項目があるため、2つに分けて説明します。

オプション機能項目前半

項目名 説明
管理ディスクを使用 「はい」を選択するとAzureで自動的にストレージの管理を行う。その場合には別途費用が必要
ストレージアカウント 管理ディスクを利用しない場合に自前で管理するためのストレージアカウント
Virtual Network この仮想マシンがアクセスするする仮想ネットワーク
サブネット 仮想ネットワークのIPアドレスの範囲
パブリックIPアドレス 仮想ネットワークの外部からアクセスするためのIPアドレス
ネットワークセキュリティグループ 仮想マシンと外部の間に立つファイアウォールの定義

オプション機能設定前半

ネットワークセキュリティグループでは、外部からこの仮想マシンにアクセス可能なプロトコルとポート番号を指定して受信規則を追加することができます。デフォルトではリモートデスクトップ(TCP/3389)が定義されていますが今回はHTTP(TCP/80)とWebDeploy(TCP/8172)を通すための定義を追加します。

受信規則を追加するには、「受信規則の追加」をクリックしてそれぞれの項目を指定します。この例ではWebDeployを行うための規則について入力しています。

優先度とは、このルールが適用される順番を指定するための値で、100から4096までの範囲の値を指定します。また値が小さいほど優先度は高くなります。

受信規則の追加設定

後半は次の5つの項目を設定します。今回は検証用のため設定値はすべてデフォルトのままとしました。

オプション機能項目後半

項目名 説明
拡張機能 Chefなどの構成管理ツールやウィルス対策などの拡張機能を追加
可用性セット 冗長性を持たせたい場合には複数の仮想マシンをグループ化することができる
ブート診断 「有効」の場合には仮想マシンのシリアルコンソール出力とスクリーンをキャプチャする
ゲストOSの診断 「有効」の場合には仮想マシンのメトリックを1分おきに取得する
診断ストレージアカウント 診断用の情報を書き込むためのストレージアカウント

オプション機能設定後半

すべての値を設定したら「OK」ボタンをクリックしてオプション機能の構成を確定させます。

設定内容の確認

以上で仮想マシン作成に必要な設定は終わりです。さまざまな項目に矛盾がないかどうか検証され大丈夫であれば次のように設定項目の内容が表示されます。

設定項目確認画面

仮想マシンの作成はスクリプトなどで設定できるようになっており、必要なパラメータをダウンロードして再利用できます。パラメータのダウンロードを行うには「テンプレートとパラメータのダウンロード」をクリックして必要な情報を取得します。CLI、PowerShell、.NETそしてRuby形式を選択することができます。

テンプレートとパラメータのダウンロード画面

仮想マシン作成実行

「OK」をクリックすることで仮想マシンを作成します。仮想マシンの作成には仮想ディスク、ネットワークなどいろいろなリソースを作成するため時間がかかります。作成状況はAzureのダッシュボードで確認することができます。

作成実行進捗確認

作成したWindows仮想マシンの設定

仮想マシンが出来上がっただけではWebアプリケーションを動作させることはできません。以降では仮想マシンにサインインして必要な設定を行う手順について説明します。

作成したWindows仮想マシンにリモートデスクトップ接続

Windowsの設定はスクリプトでも行うことができますが、試行錯誤しながらやる場合にはGUIのツールを使うほうが便利です。Azure上に作成された仮想マシンにアクセスするにはリモートデスクトップを利用することができます。 リモートデスクトップで接続するには、Azureの仮想マシンのページから接続情報が記述されたRDPファイルを取得して行います。

作成された仮想マシンの概要画面上部にある「接続」をクリックするとRDPファイルがダウンロードされ、このファイルをダブルクリックすることでリモートデスクトップが起動します。

リモートデスクトップ接続情報の取得

初回接続時に、このまま継続してよいか聞かれますので、リモートコンピュータ名を確認して「接続」をクリックして先に進みます。

接続先確認

次に仮想マシンにサインインします。初回接続時には作業をしているWindowsのアカウント情報がデフォルトで選択されていますので、「別のアカウントを使用する」から作成した仮想マシン用のアカウントを入力します。

資格情報の確認

サインインに成功したあと、場合によっては証明書エラーが発生するかもしれません。その場合には次のような画面が表示されます。接続先が正しいことを確認して「はい」で先に進みましょう。

接続先の証明書確認

無事にリモートデスクトップ接続できると次のような画面が表示されます。言語はデフォルトで英語となっていますので、必要に応じて言語を変更してください。ログインするとServer Managerが起動しています。

接続画面

必要なアプリケーションのインストールと設定

それでは用意した仮想マシンでASP.NETが動く環境を構築してみましょう。まずはこのサーバの役割をセットアップするため、「Add roles and features」を選択します。

Server Manager

ウィザードが起動するので、「Before You Begin」、「Installation Type」、「Server Selection」とデフォルトのままNextで進めます。「Server Roles」のところで、たくさんあるリストの中から「Web Server(IIS)」を選択します。

Server Role

Nextで画面を進めていき、「Role Services」のところで「ASP.NET 4.5」と「Management Service」を追加します。

Management Serviceを選択

引き続きNextを選択し、最後の画面でInstallをクリックします。Installが完了したらインストールしたManagement Serviceを起動しましょう。

Server Managerの左側のLocal Serverを選択し、下側にスクロールしてSERVICESの項目まで移動します。この一覧から「Web Management Service」を探し、右クリックメニューから「Start Services」を選択してサービスを開始させます。

Web Management Serviceを開始

次にVS2017からデプロイするために必要なモジュールである、Web Deployをインストールします。その前にIEでファイルをダウンロードできるようにするためセキュリティ設定を変更しておきます。Local Serverの上に戻って(1)IE Enhanced Security ConfigurationのOnとなっている部分をクリックすると、ダイアログが開きますので、(2)Administratorsの設定をOffに変更します。

IEのセキュリティ設定

次にIISマネージャを開きます。Server Managerの右上にある「Tools」から「Internet Information Services (IIS) Manager」を選択します。

IEのセキュリティ設定

IISマネージャの左側のペインで仮想マシン名を選択すると図のように切り替わりますので、右側の「Get New Web Platform Components」をクリックするとIEが開きます。ここからWeb Installerを実行してください。

Web Installerダウンロード画面を開く

起動するとさまざまなコンポーネントが並んでいます。(1)右上の検索窓にWeb Deployと入力して絞り込みます。(2)インストール対象の右側の「Add」をクリックしてインストール対象に追加します。(3)必要なものを選択したら「Install」をクリックしてインストールを開始します。

Web Deployのインストール

最後に外部からデプロイできるようにするための権限を追加します。IISマネージャの左側から「Default Web Site」を選択し、中央のコンポーネントの中から「IIS Manager Permissions」をダブルクリックして選択します。

IIS Manager Permissionsを起動

右上のActionsから「Allow User…」を選択するとWindowsかIISのユーザ化選択するダイアログが開きますので、(1)Windowsの方の「Select」を選択します。そして「仮想マシン名\ログインユーザ名」で登録を行います。

権限ユーザの追加

これで仮想マシンの準備はできました。

ASP.NETアプリケーションを仮想マシンにデプロイする

本記事で使うサンプルプロジェクトはこれまでと同様にASP.NET MVCで作成しました。ただしプログラムそのものよりも仮想マシンの設定に主眼をおいているため、デフォルトで作成されたプロジェクトをそのまま利用しています。

ドメイン名の設定

Webアプリケーションを外部からアクセスするにはIPアドレスだけでも可能ですが、ドメイン名があったほうがわかりやすいです。自分が持っているドメイン名も使うことができますが、Azureの持っているドメインのサブドメインを指定するほうが簡単です。サブドメインはリージョンごとにわけられたベースのドメインを指定できるようになっています。例えば東日本リージョンの場合には「<DNS名ラベル>.japaneast.cloudapp.azure.com」となります。 Azureポータル画面のメニューから「パブリックIPアドレス」を選択して設定します。

DNSラベル設定

VS2017からWebアプリケーションをデプロイ

仮想マシンにデプロイするには、発行プロファイルで設定が必要です。(1)ツールバーの発行から新しいカスタムプロファイルの設定を行います(発行が表示されていない場合は、メニューから「表示」、「その他のウインドウ」、「Web発行アクシビティ」を選択)。発行先の一番右にある「Microsoft Azure Virtual Machines」を選択して発行ボタンをクリックします。

仮想マシンへのサインインを行うと、最初に証明書エラーが表示されますが、承諾してください。

発行プロファイルで仮想マシンを選択

発行ボタンクリックで、仮想マシンにVS2017で開発しているASP.NETアプリケーションがデプロイされたでしょうか?

まとめ

App Serviceだけでは実現できないシステムや、オンプレミスで運用してきたシステムなどは仮想マシンを利用することでクラウドに移行できるようになります。Azureプラットフォームに乗ることで、セキュリティや負荷対策、バックアップといった、システムをサポートするための機能も簡単に導入できて運用コストも抑えられるようになります。

今回詳しくは紹介できませんでしたが、MarketPlaceにはたくさんのテンプレートが用意されており、それらを使うことでセットアップすらも簡単になります。

さて、今回まではバックエンド側の機能が中心でしたが、次回ではAzureの機能をクライアント側でも使えるようにするためのサービスである、Mobile Appについて紹介する予定です。

WINGSプロジェクト 花田善仁著/山田祥寛監修
<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。一緒に執筆をできる有志を募集中。