0
2

【ASP.NET】EC2(Windows Server)にASP.NETアプリケーションをWebデプロイする

Posted at

はじめに

対象読者

  • ASP.NETで作成したWebアプリケーションのデプロイ方法を知りたい方
  • ローカルフォルダへの発行ではなく、Web配置の方法を知りたい方
  • IISの設定方法を知りたい方

特に2つ目のWeb配置を行う方法はあまりまとまっていなかったので、本記事をご活用いただければ幸いです。
また、EC2を使わない場合もIISの設定やデプロイの方法は共通したものになるので、参考になるかと思います。

やること全体像

image.png

動作環境

クライアント

  • Windows 11 Home(23H2)
  • .NET 8.0(SDK 8.0.204)
  • Visual Studio 2022

サーバ

  • Windows Server 2022(21H2)
  • IIS(10.0.20348.1)
  • .NET 8.0(ASP.NET Core Runtime 8.0.7)

EC2

インスタンスの作成

AWSコンソールにログインし、EC2 > インスタンス > インスタンスの起動から、今回は「My Windows Server」という名前で、Windows Server環境のインスタンスを作成します。
image.png
image.png

キーペアを作成し設定します。
image.png

その他設定は特に変更せず、インスタンスを起動します。

ポート設定

今回は、アプリケーションへのアクセスに81番ポートを、Web配置によるアクセスに8172番ポートを使用するため、これらのポートを開放するよう設定します。
image.png

EC2 > インスタンスから、対象のインスタンスを選択し、セキュリティグループを編集します。
image.png

インバウンドルールの編集を選択し、
image.png

TCPポート81番,8172番を開放します。(HTTP(S)はTCPを使用するため)
image.png

保存して、ポート設定は以上になります。

インスタンスへ接続

EC2 > インスタンスから、対象のインスタンスに接続します。
image.png

リモートデスクトップで接続します。
image.png

初めに作成したキーペアを使用して、パスワードを取得します。
image.png
image.png

リモートデスクトップファイルを実行し、取得したパスワードを使用してログインすれば完了です。

必要に応じて、Windowsの設定言語を日本語に変更します。
image.png

サーバ側

必要な資源のインストール

IIS

サーバーマネージャーから、役割と機能の追加を選択します。
image.png

インストールの種類、サーバーの選択はデフォルトのままで次へ進みます。
image.png
image.png

サーバーの役割から、Webサーバー(IIS)を選択し次へ進みます。
image.png

機能から、.NET Framework 4.8 Features > ASP.NET 4.8を選択し次へ進みます。
image.png

Webサーバーの役割(IIS)では、そのまま次へ進みます。
image.png

役割サービスから、Webサーバー > アプリケーション開発 > ASP.NET 4.8を選択します。
image.png

また、管理ツール > 管理サービスも選択し次へ進みます。
image.png

インストールして完了です。
image.png

Web Deploy

Web配置を行うために、以下サイトからWeb Deployツールをダウンロードします。
https://www.iis.net/downloads/microsoft/web-deploy

今回は、最新のv4.0(webdeploy_amd64_ja-JP.msi)をダウンロードしました。

ダウンロードしたインストーラを実行します。
image.png
image.png

セットアップの種類は完全を選択します。
image.png

インストールして完了です。
image.png

.NET Core ホスティングバンドル

IISでASP.NETアプリケーションを動かすために、以下サイトから.NET Core ホスティングバンドルのインストーラをダウンロードします。
https://learn.microsoft.com/ja-jp/aspnet/core/host-and-deploy/iis/hosting-bundle?view=aspnetcore-8.0

今回は、最新のv8.0.7(dotnet-hosting-8.0.7-win.exe)をダウンロードしました。

ダウンロードしたインストーラを実行して完了です。
image.png

IISの設定

IISマネージャーユーザー作成

IISマネージャーを開き、IISマネージャーユーザーを選択します。
image.png

ユーザーの追加を選択し、任意のユーザーを追加します。
image.png
image.png

サイト作成

サイトを右クリックし、Webサイトの追加を選択します。
image.png

今回は、以下の通りWebサイトを作成します。
サイト名:Web Deploy Sample Site
物理パス:C:\WebDeploySample(フォルダ作成済み)
ポート:81
image.png

Web配置による発行の有効化

作成したサイトを右クリックし、展開 > Web配置による発行の有効化を選択します。
image.png

先ほど作成したユーザーを選択します。
image.png
image.png
image.png

設定を選択します。
image.png

結果が出力されたら、ダイアログを閉じます。
image.png

発行の設定ファイルが作成されている(デフォルトだとデスクトップ)ので、クライアント側の設定で使用するために控えておきます。
image.png

ポート設定

サーバの81番ポートを開放するよう設定します。
image.png

サーバーマネージャーから、ツール > セキュリティが強化されたWindows Defenderファイアウォールを選択します。
image.png

受信の規則から、新しい規則を選択します。
image.png

ポートを選択し、
image.png

TCPポート81番を入力します。
image.png

接続を許可するを選択し、
image.png

プロファイルはデフォルトのままとします。
image.png

最後に名前を付けて完了です。
image.png

8172番ポートは開放しないのか?
image.png
先の手順でIISのインストールを行った際に、管理ツール > 管理サービスをインストールしていれば、自動で開放してくれているので別途設定は不要です。
image.png

クライアント側

ASP.NETアプリケーションの作成

Visual Studioを起動し、ASP.NET Core Webアプリを作成します。
(今回はRazor Pagesアプリケーションを使用しますが、MVC/Blazor/Web APIでもデプロイの手順は同様です)
image.png
image.png

デプロイ

ビルド > 発行を選択します。
image.png

Webサーバー(IIS)を選択し、
image.png

Web配置を選択します。
image.png

サーバ側の設定で控えておいた発行の設定ファイルを参考に、接続情報を入力します。
(今回はIPアドレスでアクセスします)
image.png

接続の検証を行った場合は、セキュリティ証明書のエラーが発生しますが、同意するを選択します。
image.png

完了を選択しダイアログを閉じます。
image.png

発行を選択します。
image.png

発行が完了すると自動でブラウザが立ち上がり、無事にアクセスできていることを確認できます。
image.png
image.png

以上でデプロイ完了です!

補足

Web配置でデフォルトの8172番ポート以外を使用する

ここまでの手順を参考に、

  • EC2のセキュリティグループを編集し、任意のポートを開放
  • サーバのファイアウォールの設定から、任意のポートを開放

これらに加えて、以下の通りサーバの設定を変更すれば完了です。

IISマネージャーを開き、管理サービスを選択します。
image.png

任意のポートに変更します。
image.png

おわりに

ASP.NET、およびAWS(触り始めほやほやです。。)の学習を通じて、本記事を書いてみました。
特にIISまわりについて、どのような仕組みでASP.NETアプリケーションが動いているのか、大変勉強になりました。

ただ、主にAWSやネットワークまわりで誤った記載があるかもしれませんので、その時はご教授いただけますと幸いです。
その他、実用的でない箇所などはご容赦ください。

ご一読いただき、ありがとうございました!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2