AdvanceSoftware Tech Blog

アドバンスソフトウェア株式会社の技術ブログ

VB-Report11をWebアプリに組み込みEC2(AWS)のWindows Server 2022にデプロイする

概要

Amazon Web Service(AWS)のElastic Compute Cloud(EC2)上にWindows Server 2022 /.NET 6の環境を構築し、 Webアプリケーション(ASP.NET Core MVC)をデプロイするまでの流れを解説します。手順の把握に主眼を置き、必要最低限の構成となります。
また、作業者のIAMユーザーアカウントに対し、AmazonEC2FullAccessのポリシーを付与しています。

利用サービス
実行環境
開発環境

実行環境の構築

以下の作業を行います。

  • AWS EC2のインスタンスを作成する
  • リモートアクセスする為の機能をローカル端末に用意
  • Windows Serverの環境を構築

AWS EC2のインスタンスを作成する

AWSにサインインして、EC2サービスの利用を開始します。
コンソールのホーム画面が表示されたら、左上の「サービス」-「コンピューティング」から「EC2」を選択してください。
EC2ダッシュボードが表示されたら、「インスタンスを起動」ボタンをクリックし、インスタンス(仮想サーバー)の作成を行います。

  • 名前とタグ
    インスタンスの名前を入力します。今回は「AdvEC2Sample」とします。

  • アプリケーションおよびOSイメージ
    OSを選択します。今回は「Microsoft Windows Server 2022 Base」を選択します。

  • インスタンスタイプ
    CPUとメモリの仕様を選択します。今回は「t2.micro」を選択します。

  • キーペア(ログイン)
    リモート接続用パスワードの復号に必要なキーペアを登録します。今回は新規にキーペアを作成します。

    キーペア名は任意です。今回は「Sample」とします。プライベートキーファイル形式は.pemを選択します。

    「キーペアを作成」ボタンをクリックすると、プライベートキーファイルがダウンロードされます。

  • ネットワーク設定
    ファイアウォール(セキュリティグループ)
    今回は新規にセキュリティグループを作成します。
    「セキュリティグループを作成する」にチェックを入れて作成を進めることで、 VPCサービス内のセキュリティグループ(ファイアウォールルール)が新規に作成されます。

「RDPトラフィックを許可する」にチェックを入れて作成を進めることで、専用ポートの解放が行われ、ローカル環境端末からのリモート接続が可能になります。
また、「インターネットからのHTTPトラフィックを許可」にチェックを入れることで、インターネット経由でのアクセスが可能になります(IPv4のみ)。

  • ストレージを設定
    OSイメージにWindows Serverを選択した場合は、1x30GiBが標準設定です。ストレージタイプは任意のものを選択してください。今回は汎用SSD(gp2)を指定します。

  • 高度な詳細
    必要に応じて適宜設定してください。今回は何も変更せず、デフォルトのまま進めます。

選択内容を確認し、「インスタンスを起動」ボタンを押すと、インスタンス作成が開始、起動されます。

インスタンスの起動後、ステータスのチェックが実行されます。
作成したインスタンスの概要ページ下部の「ステータスチェック」タブから確認が可能です。
システムステータス、インスタンスステータスの両方が合格になれば、正常に起動完了です。

リモートアクセスする為の機能をローカル端末に用意(RDP)

作成したサーバーにリモート接続する準備を行います。
インスタンス概要ページ内の「接続」ボタンをクリックし、「インスタンスに接続」画面に移動します。

インスタンス情報の記述に失敗~」の旨のエラーが出ますが、セッションマネージャーを利用してリモート接続しない場合は問題ありません。
画面内で「RDPクライアント」を選択し、「リモートデスクトップファイルのダウンロード」をクリックすると、リモート接続用のアイコンがダウンロードできます。このアイコンをデスクトップ画面上などに配置し、ダブルクリックすることでAWS上のWindows Serverにリモート接続できます。

実際に接続を試す前に、「パスワードを取得」をクリックし、リモート接続に必要なパスワードを取得します。

インスタンス作成時に作成したプライベートキーファイル(.pem)をアップロードし、「パスワードを復号化」ボタンをクリックします。

RDPクライアントの画面に戻り、「パスワードを取得」が表示されていた辺りに、生成されたパスワードが表示されています。このパスワードはコピーして、保管してください。
ローカル環境のデスクトップ画面上など、任意の場所に配置したリモート接続のアイコンをダブルクリックし、リモート接続します。発行元の識別やセキュリティ証明書エラーは「接続」「はい」で進めて問題ありません。
また、資格情報の入力を要求されるので、先ほど保管したパスワードを入力します。
「このアカウントを記憶する」にチェックを入れると、次回以降パスワードの入力が不要になるので、必要に応じてチェックを入れてください。



リモート接続され、Windowsのデスクトップ画面が表示されたら接続成功です。

Windows Serverの環境を構築

以下の作業を行います。

Windows Updateの確認

左下の「スタートボタン」-「Settings(設定)」-「UpdateUpdate&Security(更新とセキュリティ)」から、「Check for Update」をクリックし、Windows Updateを確認します。

言語やタイムゾーンの調整

作成したばかりのWindows Serverは、標準ではタイムゾーンやリージョン、言語が日本向けではない為、必要に応じて変更してください。今回は日本向けの設定に調整します。
左下の「スタートボタン」-「Settings(設定)」-「TimeTime&Language(時刻と言語)」から、各項目を変更します。Speech(音声認識)は今回設定しません。
「Date & time」ページ内で、タイムゾーンを変更します。
今回は「(UTC+09:00) Sapporo, Tokyo」に変更します。

続いて、「Region」ページ内で、国や地域を変更します。
今回は「Country or region」で「Japan」を選択します。

次に、「Language」ページ内で、言語の変更を行います。
日本語の言語パックはインストールされておらず、「Windows display language」のドロップダウンリストには日本語が表示されません。適用するために、まずは言語パックのインストールが必要です。
「⊞ Add a language」をクリックし、追加する言語を選択します。

言語を検索するウィンドウが開きます。テキストボックスに「ja」などを入力すると、候補が検索され、日本語を簡単に見つけることができます。日本語を選択して「Next」ボタンをクリックします。

次に、インストールする項目を選択します。
今回はデフォルトのまま「Install」ボタンをクリックします。

言語パックのインストールが完了すると、「Windows display language」のドロップダウンリストで日本語が選択できるようになります。これを選択する事で、表示言語が日本語に変更されます。
変更を反映させるには、一度サインアウトする必要があります。「Yes, sign out now」でサインアウトし、数分ほど時間を空けて再度リモート接続しましょう。

再接続し、日本語表示が適用されていれば設定完了です。

IISアプリのインストールを行う

サーバーマネージャーを起動します。
初回起動時はサーバーの情報をチェックしていて、少しのあいだ操作を受け付けません。
「②役割と機能の追加」部分をクリックし、機能のインストールを行います。

「開始する前に」の内容を確認し、「次へ」をクリックします。

インストールの種類:役割ベースまたは機能ベースのインストールを選択して「次へ」をクリックします。

サーバーの選択:「サーバープールからサーバーを選択」を選択状態で、アクセス中のサーバーを選択します。

役割の選択:リストの中から「Web Server(IIS)」を探し、チェックを入れて「次へ」をクリックします。

追加を確認する画面が出現しますが、デフォルトのままで「機能の追加」をクリックします。

機能の選択:必要な機能が有る場合、適宜追加します。今回はデフォルトのまま「次へ」をクリックします。

役割サービス:必要な機能が有る場合、適宜追加します。今回はデフォルトのまま「次へ」をクリックします。

指定した条件で機能のインストールが実行されます。正常完了したら「閉じる」で終了します。

インストール完了後、サーバーマネージャー上にIISの表示が追加されます。

IISの動作を確認する

インターネットインフォメーションサービス(IIS)マネージャーを起動し、動作を確認します。

左メニューバーのリストを展開し、「Default Web Site」をクリックします。
右カラム中段の「Webサイトの参照」-「*:80(http)参照」をクリックし、ブラウザーでWebページが表示可能か確認します。

Webブラウザーが起動し、青い画面が表示されれば、IISの動作に問題はありません。

リモート接続の画面は最小化しておき、ローカル環境からも同じページにアクセス可能か確認します。
AWS EC2画面でインスタンスのパブリックIPv4アドレス、もしくはパブリックIPv4 DNSをコピーし、Webブラウザーのアドレスバーにペーストしてアクセスします。
先程と同じページが表示されれば、IISの動作確認は完了です。

.NET Windows Server Hostingのインストールを行う

IISASP.NET CoreのWebアプリケーションを公開するには、Hosting Bundleに含まれるIIS runtime support(ASP.NET Core Module)が必要になります。
Windows Server上でWebブラウザーを起動し、「Microsoft」、「.net」などで検索し.NETのダウンロードページにアクセスします。

公開するWebアプリケーションの.NETバージョンに合ったページにアクセスし、Hosting Bundleをダウンロードします。今回は.NET 6.0版をダウンロードします。
「全 .NET 6.0 ダウンロード」のリンクをクリックして.NET 6.0コンポーネントのダウンロードページに移動します。

.NET 6.0のダウンロードページへ移動したら、画面内でASP.NET Coreランタイムのエリアを探します。ダウンロードリンクの中から「Hosting Bundle」を見つけたら、クリックしてダウンロードします。

インストーラーがダウンロード出来たら、インストールを行います。

インストール完了後、IISマネージャーからサーバーを再起動してください。

アプリケーションの配置

IISと.NETランタイムの準備が整ったら、アプリケーションをWebサーバーへ配置します。
方法はシンプルで、Webサーバーに配置できるようにアプリケーションを加工した後、アプリケーションのフォルダーをリモート接続先のサーバー上にコピーペーストします。

なお、この手順で使用しているアプリケーションは以下のURLからダウンロード頂けます。
https://adv.co.jp/download/blog/deploy-vbreport11-ec2-windowsserver2022/VBR11WebSample.zip

Webサーバーに配置する為のファイルを生成

作成済のアプリケーションを開発環境のVisual studioで開き、プロジェクト上で右クリック、発行をクリックします。

発行プロファイルを作成します。今回はターゲットに「フォルダー」を選択し、「次へ」をクリックします。

ファイルの出力先を指定します。任意の場所を指定してください。
今回はC:\の直下に新規フォルダーを作成して指定します。

プロファイル作成が完了すると、公開準備が完了した旨の表示が出るので、「発行」ボタンで発行します。

発行が正常に完了すると、公開が成功した旨の表示が出ます。
Visual Studio上での作業は以上になり、Visual Studioは終了して構いません。

アプリケーションを実行環境に移動

発行したアプリをフォルダーごとコピーし、Windows Server画面を表示させて、任意の場所にペーストします。今回はC:\inetpub直下にペーストします。IISのインストールが完了していれば、C:\の直下にinetpubフォルダーが作成されている筈です。
※リモート接続画面を縮小して並べています。

IISを使用してアプリケーションを公開

いよいよWindows Server上でWebアプリを公開する準備になります。
IISマネージャーを起動し、動作確認時と同様に、左メニューバーのリストを展開します。

アプリケーションプールの追加

アプリケーションの公開前に、アプリケーションプールの設定を行います。
「アプリケーションプール」を右クリックし、「アプリケーションプールの追加」をクリックします。

アプリケーションプールの名前は任意です。今回は「Sample」とします。 .Net CLRバージョンは「マネージコードなし」、マネージドパイプラインモードは「統合」を選択して「OK」をクリックし、アプリケーションプールを追加します。

Webサイトの追加

左メニューバーのリストから「Default Web Site」を右クリックし、削除します。
次に「サイト」上で右クリック、「Webサイトの追加」をクリックします。

アプリケーションプール:先ほど作成したアプリケーションプールを指定します。「選択」ボタンをクリックすると、アプリケーションプールの選択画面が開きます。
サイト名:任意です。今回は「AdvEC2Sample」とします。
物理パス:アプリケーションを配置したフォルダーを指定します。
バインドについては、今回は以下の通り設定します。

Webサイトを直ちに開始するにチェックを入れ、「OK」をクリックします。

アクセス許可と認証の設定

Webサイトの追加が完了したら、サイトへのアクセス許可および認証について設定を行います。
「サイト」の下に先ほど入力したサイト名が表示されたら、サイト名をクリックしてホーム画面を表示させます。

アクセス許可の編集

サイト名を右クリック、「アクセス許可の編集」をクリックし、フォルダーのプロパティを編集します。
「セキュリティ」タブを選択し、「編集」をクリックすると、アクセス許可の編集画面を呼び出せます。
「追加」をクリックし、「ユーザーまたはグループの選択」画面を呼び出したら、テキストボックスに「IIS_IUSRS」と入力し、「名前の確認」ボタンをクリックします。
先程入力した文字列の前方にサーバー名が追加されていれば、「OK」をクリックします。

IIS_IUSRSに対するアクセス許可の編集を行います。
アクセス許可のチェックボックスは「変更」もしくは「読み取りと実行」を任意で選択します。
今回は「変更」にチェックを入れ、「OK」で閉じます。プロパティ画面も「OK」で閉じます。

認証資格情報の編集

中央の「認証」をダブルクリックし、画面を移動します。

匿名認証を右クリックし「編集」をクリックすると、認証資格情報の編集画面が表示されます。
※認証の名前一覧は、環境によっては他の名前も表示されている場合があります。

今回はアプリケーションプールIDを選択します。

「OK」をクリックして閉じたら、IISマネージャー上での編集作業は終了です。IISマネージャーは閉じても構いません。
再びAWS EC2画面でインスタンスのパブリックIPv4アドレス、もしくはパブリックIPv4 DNSをコピーし、ローカル環境のブラウザーからアクセスします。

期待通りの画面が表示されれば公開完了です。

ダウンロード後のExcelファイル

「データ一覧」
取得したデータの一覧を基に新規の帳票を作成します。

「納品書」
取得したデータの一覧を基に納品書を作成します。

Excelファイルでの出力の他、印刷や PDF ファイルでの出力も可能です。

さいごに

VB-Report11をWebアプリに組み込みEC2(AWS)のWindows Server 2022にデプロイするまでを解説してきました。
今回は以上です。ありがとうございました。

© 2022 Advance Software Co., Ltd. All Rights Reserved.