概要
Amazon Web Service(AWS)のElastic Compute Cloud(EC2)上にWindows Server 2022 /.NET 6の環境を構築し、
Webアプリケーション(ASP.NET Core MVC)をデプロイするまでの流れを解説します。手順の把握に主眼を置き、必要最低限の構成となります。
また、作業者のIAMユーザーアカウントに対し、AmazonEC2FullAccessのポリシーを付与しています。
- 概要
- 実行環境の構築
- .NET Windows Server Hostingのインストールを行う
- アプリケーションの配置
- IISを使用してアプリケーションを公開
- ダウンロード後のExcelファイル
- さいごに
利用サービス
実行環境
- Microsoft Windows Server 2022 Base
- .NET 6
- IIS10
- Microsoft Edge
開発環境
- Windows 11
- .NET 6
- Visual Studio 2022
実行環境の構築
以下の作業を行います。
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の確認
- 言語やタイムゾーンの調整
- Windows Serverの環境を構築
- IISアプリのインストール、動作確認
- .NET Windows Server Hostingのインストールを行う
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のインストールを行う
IISでASP.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にデプロイするまでを解説してきました。
今回は以上です。ありがとうございました。