おはよう君需要なし

求不得苦な日々

Windows 10でIIS(ASP.net)の実行環境を整えました

はじめに

この記事ではAWS上でIISの実行環境を構築しました。

nodemand.hatenablog.com

今回は、ローカルネットワーク内で使用できるIISの実行環境を構築してみたので、そのことについて書いてみたいと思います。前回記事と異なるのは、サーバのOSが「Windows Server」ではなく「Windows 10」であるということです。

手順

IISの有効化

「コントロールパネル」の「プログラム」から「Windowsの機能の有効化または無効化」を選択。そこに表示される「インターネットインフォメーションサービス」を展開し、チェックを入れていきます。どれをチェックするかは自由ですが「IIS管理コンソール」にはチェックを入れておきましょう。

f:id:yoh_mar28:20170220204357p:plain

f:id:yoh_mar28:20170220204439p:plain

f:id:yoh_mar28:20170220204512p:plain

IISが有効化できれば、このようにブラウザでlocalhostにアクセスすればIISのテストページが確認できると思います。

f:id:yoh_mar28:20170220204608p:plain

ファイアウォールの設定

Windowsでは標準でファイアウォールが80のポートを遮断してしまうので、これを開きます。「World Wide Webサービス(HTTP)」のプライベートにチェックを入れます。

f:id:yoh_mar28:20170220204730p:plain

こうすることで、プライベートネットワーク(ローカルネットワーク)内からのアクセスを許可することができます。チェックを入れるとローカルネットワーク内のパソコンからIP直打ちでIISのテストページにアクセスすることができます。

f:id:yoh_mar28:20170220210451p:plain

デプロイの方法

Windows 10を使用する上での問題点

AWSではネットワーク経由でのデプロイを実現するためにManagement Serviceというのを開きリモート接続を有効にしましたが、Server版でないWindowsではその機能が封じられてしまっているため、有効化できないみたいです。

f:id:yoh_mar28:20170220210805p:plain

回避策

もうこれは仕方ないので、Web Deploy以外の方法を考えます。Visual StudioではWeb DeployのほかにFTPやFile SystemへのDeployを行うことができます。 今回はFile SystemへのDeploy機能を使用してリモートDeployを実現してみたいと思います。

まずは、Webサイトのルートディレクトリを共有する設定にします。共有するユーザは最小限で管理者アカウントを設定しておけばよいでしょう。

f:id:yoh_mar28:20170220211112p:plain

次に、そのフォルダにネットワークドライブを割り当てます。私はProductの意味をこめてPドライブにしてみました(正直なんでもいい)。そうすることで共有したルートディレクトリからPドライブへエイリアスすることが可能で、ここにファイルを置くと即座にサーバのディレクトリへ反映されます。

これを利用して発行の設定を書きます。

f:id:yoh_mar28:20170220211505p:plain

これだけです。

アクセスできない問題発生

ここで、wwwrootを共有フォルダにしたためか、ブラウザ経由ではページにアクセスできなくなってしまいます。これについては偽装ユーザで対処します。こうすることでIIS経由のファイルアクセスは設定したユーザアカウントで実行されるようになるので、アクセス権限の問題はクリアできるはずです。

f:id:yoh_mar28:20170220211637p:plain

終わりに

まさかOSにWindowsを選んだせいでこういった制約が出てきてしまうとは・・・といった感じですが何とか回避できて良かったです。とっととコードを書いて動かせるものを作らなければ・・・

遅ればせながらAWSに挑戦(その2)

はじめに

AWSぐらい扱えなくてどうすんねん!ってことで始めたはいいものの、その1でずっと止まっていました。今回はASP.netをデプロイするにはどういった手順を踏むのかということでVisual Studioを使ってデプロイ(発行)するところまで調べてみました。

手順

IISの有効化

Add Roles and Features Wizardで、Server RoleとしてIISを追加します。ここで重要なのが「IIS Management Console」「Management Service」にちゃんとチェックをいれておくということです。

f:id:yoh_mar28:20170220201744p:plain

IISが有効になったことを確認する。

Edgeで「localhost」にアクセスします。IISが有効になっていればデフォルトのページが開くはずです。

f:id:yoh_mar28:20170220202001p:plain

リモート管理を有効にする

Visual Studioからのデプロイを有効にするには「WebDeploy」をインストールします。これはググればマイクロソフトのページが出てくるのでそれをダウンロードしてインストールします。(私はバージョン3.6をインストールしました)

次に、IISマネージャを開き、中のManagement Serviceを開きます。ここにはリモート接続で使用するポートが記載されているので覚えておきましょう。Enable remote connectionsにチェックが入っていない場合は入れます。

f:id:yoh_mar28:20170220202501p:plain

f:id:yoh_mar28:20170220202530p:plain

そして今度はインスタンスが所属するセキュリティグループの設定を変更してリモート接続を許可します。AWSコンソールで、以下のように設定しました。

f:id:yoh_mar28:20170220202803p:plain

デプロイしてみる

今回はとりあえずDefault Web Siteにデプロイしてみます。VisualStudioで適当に作ったプロジェクトで、「ビルド」→「○○の発行」から出てくるこのようなダイアログを埋めます。

f:id:yoh_mar28:20170220203154p:plain

ここで大切なのが、Site nameに指定するモノが、実際にサーバに存在するサイト名でないといけないということです。「Default Web Site」と正しくタイプしなければValidate Connectionに失敗します。

f:id:yoh_mar28:20170220203428p:plain

デプロイに成功したら、このようにAWSインスタンスのパブリックIPをタイプしてあげればこちら側からアクセスできるようになったのが確認できると思います。

おわりに

以上で、一通りデプロイできるようになりました。今後はデータベースを使用するなど実用する際に必要になることを学習したいと思います。