Windows Server IISにASPリモートデプロイメントする方法

Javaを長年続いてきたことがある方なら、Spring MVCでApache Tomcatに一気にアップロードできるEclipseの連動した環境が結構魅力的な場面だと同意すると思います。最近はファイル一つ一つをFTPでアップロードするより、パッケージにして一気にサイトの構築を済ませることが、マネジメントにも、問題発生の可能性も下げられるのでだんだん広まってくるでしょう。

この記事でIISでASPリモートデプロイメントが可能になる方法を紹介いたします。

持ち物

  • Windows Server 2012以上のサーバーOS
    • もちろんIIS役割は必須です。
    • Windows 8.0, 8.1はサポートされていないと書かれていますが、Windows 10ではこのようなことができるのかまだ確認しておりません。
  • Web Deployのインストールファイル (.msi)
  • 開発用のPCの場合、Visual Studio 2017 Community以上
    • パッケージを作れる他のパソコンでのことです。

手順

サーバー役割の選択

サーバーマネージャーで役割と機能の追加を押します。

IISマネージャーをすべて選んでインストールします。これを先にした方が成功につながるようです。

Web Deployのインストール

Web Deployソフトウェアをインストールします。Web PIで3.5、3.6バージョンをボタン一回クリックでインストールもできますが、これが問題の原因になりがちです。

一番大きい問題は接続テスト段階で404、550エラーのようなことが起こるということです。必要なコンポーネントがまったく一緒にインストールされないようです。

そういう恐れを逃れるため、自分でリンクをクリックしてインストールしてみましょう。ファイルは上記の持ち物にあります。

インストールウィザードですべてのコンポーネントインストールを必ず選んでください。インストール完了したら、サーバーも一回再起動します。できるならシステム再起動してですね。

IISメニューを読み直しする必要があるからです。

IISのエキストラ設定

再起動はいかがでしたか。IISでの仕事がまだ残っています。

もし、すべてが順調ならば、Management Servicec Delegation項目も見えるはずです。

今は何もすることはありませんが。

私がこれからリモートで管理するサイトを(作るか、既存のものを)選択して、デプロイ(Deploy)のウェブデプロイ設定(Configure Web Publish Deploying…)を押します。

ここでデプロイ権限を設定したら、このサイトにアップロードをもらえるようになります。

サイトの設定が終わったら、マネジメントサービス(Management Service)に入りましょう。

ID資格証明を適当に設定し、証明書も使えるようにhttpsの証明書を選んでおきます。

自分のドメインネームを合う証明書を事前にもらって置いたらさらに便利でしょう。

接続テスト

間違いなく設定したら、Visual Studioで接続を確かめられます。

ソリューションのプロジェクトのメニューで [公開(Publish)…]に入ります。すでにしたことがあるなら、保存されたプロフィールが先に出ると思います。

ターゲットメソッドはIISにしましょう。

Web Deployを選び、サーバー(IP / ホストネーム)、IISメニューで見えるサイトの名前(Default Web Siteなど)、ユーザー名、暗証番号、ターゲットURLを入力します。

ターゲットURLはコネクションに影響はないはずですが、プレビューのアドレスに活用するようです。

[テスト(Vaildate Connection)]ボタンを押すと、上記の設定に間違いがなく、通信に成功したが表示されます。

ファイアウォールの設定

接続失敗の場合、Windowsファイアウォールが邪魔になっている可能性があります。ファイアウォールのオプションと回線からの制限も確認します。ポート番号はトラブルシューティングをご覧ください。

トラブルシューティング

  • Web Deployを復元、アップグレードする時、命令プロンプトで次のコマンドを実行し、ハンドラーとエージェントの再起動を行います。
    • net stop msdepsvc & net start msdepsvc
    • net stop wmsvc & net start wmsvc
  • 回線にあるファイアウォールが通信を邪魔してはいけません。Web Deployment Agent Serviceは普通80番、Web Management Serviceは8172番ポートを使います。
  • MsDepSvcはAdministratorあるいはAdminグループのみで実行する必要があります。ローカルでは動作しません。
  • .NET 4.0がIISに登録されていない可能性もあります。
    • .NET 4.0がインストールされておりますが、IISのサービスプールに登録されていない可能性もあります。その原因は.NET 4.0がIISのインストール前の事前になかったからです。
    • 次のコマンドで解決できます。
      • %systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru

結論

Springよりも強力なVisual Studioとサイトが繋がりました。SQLも一気にできそうですが、活用も知識次第だと思います。