インターネット上の IIS Web サーバーに ASP.NET Core のプログラムをリモートで発行する
環境
- Windows Server
-
- Windows Server 2019
- Internet Information Services (IIS)
-
- 10.0
- ASP.NET Core
-
- 5.0
- Web Deploy
-
- 3.6 日本語版
はじめに
Windows Server にセットアップした IIS (Internet Information Services) に Visual Studio から直接 ASP.NET Core のプログラムをアップロードしたい場合の手順について説明します。
初回は Windows Server 上で操作が必要ですが、一度セットアップすれば2回目以降は Visual Studio から直接発行することが可能です。
本 Tips ではインターネット上のサーバーにプログラムを公開していますが、セキュリティ対策は最低限のものしか行っておりませんので不安であるならば追加対策をするか別のアップロード方法を取ることをお勧めします。
前提条件
- Windows Server がセットアップ済み
- アップロードする ASP.NET Core プログラムがすでにある
- サーバーにインターネット、またはイントラネットで接続可能
手順
IIS (Internet Information Services) のセットアップ
手順については以下のページにまとめていますので参照してください。IIS は ASP.NET Core のプログラムを動かすこと以外でも使うことがあります。
ちなみに IIS のセットアップで追加の設定が必要なのですが上記のリンク先の Tips では設定していません。 後からでも設定可能なので、それについては次で説明します。
IIS で管理サービスを追加する
IIS の既定のセットアップでは「管理サービス」が設定されていないので追加します。
「サーバー マネージャー」を起動します。
メニューの管理から「役割と機能の追加」を選択します。
目的の画面まで「次へ」ボタンを何回か押します。
「サーバーの役割の選択」画面にきたら「Web サーバー (IIS)」「管理ツール」を展開し「管理サービス」にチェックを入れます。(図は英語になっていますが同じです)
ASP.NET 4.7 がインストールされていない場合は以下のダイアログが表示されるので一緒に追加します。
あとはそのまま「次へ」ボタンをクリックしていきインストールしてください。
IIS マネージャーを開くと管理サービスが追加されていることを確認できます。
また配置用のポートがファイアウォールで自動的に許可されます。
ASP.NET Core Hosting Bundle のインストール
Windows Server で ASP.NET Core を動かすために必要です。これをインストールすると従来の ASP.NET アプリケーションのように IIS で動作させることができます。
以下のページにアクセスします。ちなみに本 Tips では 5.0 を使用しているので、使用するバージョンが違う場合は該当のページに移動してください。
画面右下のランタイムで Windows 向けの Hosting Bundle があるのでリンクをクリックしてダウンロードします。
ダウンロードしたインストーラーを Windows Server 上で実行します。
「ライセンス条項および使用条件に同意する」にチェックをいれてインストールボタンをクリックします。
インストールが完了したら閉じます。
Web Deploy のインストール
Visual Studio からの発行プログラムを受け取るために必要です。
以下のリンク先に移動します。
ダウンロードします。
Windows Server は基本 64bit しかないので 64bit 版をダウンロードします。
Windows Server 上で実行します。
「次へ」をクリックします。
「使用許諾契約書に同意します」にチェックをいれて「次へ」をクリックします。
「完全」をクリックします。
「インストール」ボタンをクリックします。
インストールが終わったら「完了」ボタンをクリックします。
IIS マネージャーを開くと「管理サービスの委任」が追加されています。
アプリケーションプールの設定
ASP.NET Core の場合 .NET CLR は関係ないのでマネージド コードなしのアプリケーションプールを追加します。 既存の DefaultAppPool を変更しても問題ありません。 この設定は Web 配置とは直接関係ありませんので詳細は割愛します。
アプリケーションプールを追加した場合はサイトに設定してください。
サイトの作成
サイトを作成します。新規で作成しても構いませんし、最初からある Default Web Site を使用しても構いません。 本 Tips では Default Web Site をそのまま使用します。 サイトの作成は Web 配置とは直接関係ありませんので詳細は割愛します。
配置ユーザーの作成
Windows アカウントでも配置可能ですが、セキュリティリスクが高まるので専用の配置ユーザーを作成します。 Windows アカウントで配置する場合はこの項目の設定は不要です。
IIS マネージャーを起動します。
左のツリーからサーバーを選択し、中央の「管理」グループの中にある「IIS マネージャユーザー」を開きます。
右にある「ユーザーの追加」をクリックします。
配置ユーザーの名前とパスワードを入力して作成します。
追加されました。
配置の許可
IIS に追加したユーザーは追加しただけですので、サイトごとに許可を設定する必要があります。 Windows の管理者アカウントで発行する場合はこの設定は不要です。
左のツリーから対象のサイトを選択し「IIS マネージャーのアクセス許可」を開きます。
右の項目から「ユーザーの許可」をクリックします。
今回 IIS に追加したユーザーを指定するので IIS マネージャーにチェックをいれて選択ボタンをクリックします。 Windows アカウントで発行する場合は Windows にチェックを入れてください。
ユーザーの一覧が表示されるので選択します。
選択したら OK ボタンをクリックします。
追加された状態です。
配置の設定
左のツリーからサーバーを選択し「管理サービス」を開きます。
「リモート接続を有効にする」「Windows 資格情報または IIS マネージャー資格情報」にチェックがついている場合は何もする必要はありません。 Windows アカウントで発行する場合は「Windows 資格情報のみ」にチェックが入っていれば OK です。
チェックがついていない場合はチェックを入れます。
各項目が入力できない状態になっていると思いますので、右にある「停止」をクリックします。
必要な項目にチェックを入れます。入れ終わったら右にある「開始」のリンクをクリックしてください。
この画面の下の方にはセキュリティを高める設定がありますが、まずは配置ができることの確認が必要ですので今回は割愛します。
Visual Studio からプログラムを配置する
作業 PC に戻り Visual Studio を起動して ASP.NET Core のプログラムを開きます。 今回はプロジェクトを新規で作成した状態のプログラムを発行します。
プロジェクトを右クリックして「発行」を選択します。
「Web サーバー (IIS)」を選択して「次へ」をクリックします。
「Web 配置」を選択します。
以下の項目を入力します。
パラメータ名 | 値 |
---|---|
サーバー | IIS を設定したサーバーの IP アドレスまたは DNS 名またはドメイン名。インターネット、イントラネットどちらでも指定可能です。 |
サイト名 | IIS に追加してあるサイト名を指定します。 |
宛先 URL | 空白で問題ありません。 |
ユーザー名 | Windows Server のユーザーアカウント、または IIS で作成したユーザー名を指定します。 |
パスワード | 上記ユーザーの認証パスワードを入力します。 |
パスワードの保存 | 発行するたびにパスワード入力するのが面倒であれば保存します。 |
図のように作成されます。
複数の発行プロファイルを作成した場合は上のドロップダウンで変更可能ですが、名前が紛らわしい場合は変更可能です。
細かい設定については編集画面で変更可能です。
左のタブから「設定」を選択している状態です。特別変える必要はありませんが、必要に応じて「構成」「ターゲット ランタイム」「ファイル公開オプション」を変更してください。
左のタブから「接続」を選択した状態です。最初に入力したものが表示されていますが、下にある「接続の検証」ボタンをクリックしてください。
発行先に正常に接続できると以下のダイアログが表示されます。「Visual Studio の今後のセッションのためにこの証明書を保存する」にチェックをいれて「同意する」ボタンをクリックします。 保存した場合、このダイアログは初回のみ表示されます。
接続の検証の右側にチェックマークが表示されれば正常に接続できていることとなります。
ちなみに失敗する場合はリンクをクリックして原因を確認し、原因に応じて対処してください。
よくある原因としては
- ユーザー名・パスワードが間違っている。
- IIS 側でユーザーが許可されていない。調査方法としてはいったん Windows 管理者で配置する。
- ファイアウォールの「TCP 8172」が許可されていない。Azure などのクラウドではクラウド側で許可していない。
- Web 配置ツールを「完全」でインストールしていない。
- IIS の設定が不足している。本 Tips を再確認してください。
設定が終わったらソリューション エクスプローラーから「ソリューション → プロジェクト → Properties → PublishProfiles」 を展開し、設定した発行名の「.pubxml」があるので開きます。
Project
> PropertyGroup
タグの中に以下のコードを追加して保存します。
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
設定が終わったら発行ボタンで発行します。
公開に成功すれば完了です。たまに失敗することがありますので、その場合は再度発行するか接続の検証を行ってください。
Web ブラウザでアクセスし、ASP.NET Core のプログラムが動作しているのを確認できれば完了です。
更新履歴
- 2021/11/12 : いつのころからか .pubxml に
AllowUntrustedCertificate
が必要になったため説明を追加