LoginSignup
10
2

More than 5 years have passed since last update.

AzureVMの構築からWebDeployでWebAPIを発行する

Last updated at Posted at 2018-12-16

SC(非公式)Advent Calendar 2018 の16日目です。

はじめに

Azureの話ですが、クラウドを利用する場合、システムの種類や特性を理解した上で、自分たちの管理する領域をなるべくクラウドベンダーに任せる設計にすることがクラウド上のシステム構築のポイントの一つです。
しかしながら、どうしてもサードパーティ製品をインストールしなければならない場面はでてきます。
最近.NetCore+AppServiceばかり構築していて、
IISの設定や、ネットワーク周りでつまづいたので、備忘録として投稿します。

環境

WindowsServer2016
VisualStudio2017
.NetFramework4.7
.NetFramework WebAPI2.0

Azure上にVMを構築する

Azureのポータルから新規作成-->
Windows Server 2016 DatatCenter のイメージを選択します。
image.png
リソースグループと仮想マシン名を決めます。
image.png
基本的にはデフォオルト値でいいですが、
後述の作業のために、RDPのポート(3398)を開けておきます。
image.png
image.png
VMが作成できたら、リモートデスクトップでログインします。
が、その前に、DNS名を構成します
image.png
image.png
adv20181216というDNS名にしました。
これを設定しておくか、IPを静的にしておかないと、マシンの再起動のたびにIPが変更されるので、
RDPファイルをDLしないといけません。
ではRDPファイルをDLしてリモートデスクトップします。
image.png

WindowsServerへのIISと.NetFrameworkの設定

image.png
Add roles and features をクリック
image.png
Nextをクリック
image.png
Nextをクリック
image.png
Nextをクリック
image.png
Web Server(IIS)のチェックボックスをクリック
image.png
Add Featuresをクリック
image.png
Nextをクリック
image.png
ASP.NET 4.6を選択してNextをクリック
image.png
Nextをクリック
image.png
Mangement Sserviceを選択してNextをクリック
image.png
必要に応じてサーバーを再起動(意訳)にチェックを入れて
Installをクリック
image.png
インストールが完了したら、Closeをクリック

WebDeployのインストール

ローカルのVisusalStudioからAzure上のWindowsServerに発行するために、
WindowsServerにWeb Deployをインストールする必要があります。
以下のサイトからダウンロードできます。
https://www.microsoft.com/ja-jp/download/details.aspx?id=43717
※Azure上のWinServerのIEはデフォルトではファイルダウンロードが禁止されていますので、
必要に応じてインターネットオプションの設定を変えてください
image.png
image.png
WinServerは64bitなので、WebDeploy_amd64_ja-JP.msi をダウンロードしてください
image.png
ダウンロードしたmsiファイルを実行します。
image.png
image.png
image.png
セットアップの種類は完全を選択してください
image.png
image.png

IIS Manager でのサイトの設定

バインドポートの変更

image.png
Bindingsをクリック
今回は80ポートではなく、8080ポートで接続するので、
バインド先を8080ポートに変更します。
image.png
image.png

WebDeployの発行設定

Default Web Site を右クリックしてメニューを表示
Configure Web Deploy Publishingをクリック
image.png
image.png
デフォルトの設定でSetupをクリック
デプロイユーザーはVMを作成した時のadminユーザーになっています。
セキュリティ的に問題がある場合はユーザーを作成して、デプロイ用のユーザーを設定してください。

ネットワーク設定

Windowsファイアウォールのポートの解放

image.png
Windowsファイアウォールの受信設定
image.png
image.png
image.png
8172はWebDeployのデフォルトポートです
image.png
image.png
image.png
同じくWebAPI用の8080ポートの受信許可も追加します
image.png
image.png

ネットワークインターフェースの設定

Azureのネットワークインターフェースの受信設定で、
Webアプリ用の8080ポートとWebDeploy用の8172ポートを受信許可に追加します。
image.png
image.png

WebAPI作成とデプロイ

ここからはVisualStudioでアプリを作成していきます。
.NetFrameworkのWebAPIを作成します。
image.png
発行オプションを開きます
image.png
image.png
image.png
image.png
image.png
image.png
保存したら、発行します。
image.png
証明書エラーが出ますが承諾を押して、進めます。
発行したら、以下の500InternalServereエラーがでます。
リモートデスクトップ上でlocalhost:8080に対してリクエストしてみると、
以下のエラーがでます。
image.png
image.png
image.png
「HandlerMapping」「Modules」をRead/Writeに設定します
サーバーの役割のWebServer(IIS)の下層のAppricationDevelopmentの以下の項目にチェックを付けて追加します。
image.png
image.png
再度VisualStudioから発行します。
image.png

これで設定は完了です。

さいごに

今回はMicrosoft.Office.interopを使用しなければならず、DotnetCoreではまだ対応していない(そもそもWindowwsOffice用のライブラリは思想的に違う)ので、.NetFrameworkのWebAPIを用意して、機能的に切り出しました。
マイクロサービスの時代なので、機能ごとに言語や、インフラを選択してk8sなどを使用して管理する方法がDeveloperもOperatorも幸せになれそうです。
WebAPIの技術はどの言語でも勉強していきたいです。

10
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
10
2