Windows Home Server を使って簡単に自宅 Web サーバー構築

みなさんは、Windows に家庭向けのサーバー OS が存在するのをご存じですか?
Windows Home Server がそれにあたり、表現が妥当であるかどうかはさておき、私としては Windows Server 2003 の機能縮小版に家庭向けの機能(ビデオや写真などのファイル共有、家庭内のPCの自動バックアップ機能など)をプラスアルファした製品といった印象でしょうか。

なぜ開発者向けコミュニティでこの家庭向けサーバーを紹介したかというと、実はこの OS、機能縮小版とはいえれっきとした Windows Server 2003 なのです。
しかも、このサーバー製品は、外出先からでも Web アクセスにより簡単にサーバーに写真やビデオなどを送信したり、リモートアクセスを行ったりすることができます。
WEB アクセス・・・。そうです。Web サーバーとして動作、つまり IIS(Internet Information Services) が動作しているのです。
もちろん、ASP.NET アプリケーションも動作可能。というよりも、Home Server のリモートアクセスツール自体が ASP.NET 2.0 の Web アプリケーションなので、Windows Home Server を手順に沿ってリモートアクセス可能な状態まで設定していけば、自動的に ASP.NET 2.0 が動作する Web サーバー環境が整うというわけです。

Web に公開するわけですからドメインが必要ですが、こちらに関しては、ダイナミック DNS を設定するアプリケーションがプレインストールされていますので、これを利用してマイクロソフトが無償で提供しているサービスに接続するだけです。

それでは、インストールから WEB サイトの立ち上げまでを簡単に解説していこうと思います。
(今回は、マイクロソフトから提供されている 120 日評価版を使用します。試用してみて気にいったら製品版を購入すると良いでしょう。)

まずは、評価版の入手先
http://connect.microsoft.com/windowshomeserver
現在は、PowerPack1 の RC4 がリリースされており、製品版ももう間近かなと思います。
Microsoft Connect サイトを利用(要登録)すると、PowerPack 1 適用済みの評価版インストール DVD の ISO イメージをダウンロードすることができます(約1.2GB)。

動作環境は、1GHz 以上のプロセッサ、512MB のメモリ、80GB 以上のハードディスクを搭載した PC です。二世代ほど前のスペックの PC が余っていたらそれで OK ですね。
今回私は、Virtual PC 2007 を利用して、仮想環境にインストールを行ってみたいと思います。こちらもマイクロソフトより無償で利用できる仮想環境なので、PC 1台で利用できる様々な OS 環境を試せるので非常に便利です。

ISO イメージのダウンロードが完了したら、.ISO ファイルを Virtual PC 2007 にマウントして、インストーラを起動してみましょう。("本物"の PC を利用の場合は、あらかじめ ISO イメージより DVD への焼きこみを行ってください。)
インストールに関しては、特になにも気にする点はありません。Windows Vista や Windows XP などのクライアント OS をインストールするように、インストールウィザードを進めてゆくだけです。

インストールが完了したら、次に外部への公開(リモートアクセス)に向けた設定を行ってゆきます。
(既定の状態の Windows Home Server は、リモートアクセスが有効化されていませんので、これを有効にしてダイナミックDNS を設定します。)

以下の手順で行ってください。

[ドメインの設定]

1. Windows に管理者アカウント(Administrator)でログインすると、デスクトップに「 Windows Home Server Console 」というショートカットがありますので、これを起動します。
2. Windows Home Server Console が開いたら、まずは右上にある、Settings をクリックします。

whs1.jpg

3. 設定画面の中の RemoteAccess をクリックすると、Web Site Connectivity が開きます。
4. まずは Turn On をクリックしてリモートアクセスを有効にします。
5. 次に、ドメイン名の設定を行います。 Domain Name の Setup ボタンをクリックすると、Windows Live ID のサインインになりますので、ご自身の Live ID でサインインしてください。
6. 次のステップで任意の名前(ドメイン名)を入力しウィザードを進めていくと、ダイナミック DNS の設定は完了です。
7. Done ボタンを押し、設定画面に戻ると、接続状態が再度自動検知されます。
8. 設定画面上の Router および Domain Name の Status (状態)がすべて正常になったら、Web からのリモート接続環境はできあがりです。
   ※ ルータが正しい動作状態にならない場合は、ヘルプを参考にルータの設定を確認してください。
   マイクロソフトの Windows Home Server サイトに「レビュアーズガイド」が公開されているので、こちらもご参考いただくと良いでしょう。
   http://www.microsoft.com/japan/windows/products/winfamily/windowshomeserver/default.mspx
9. ここで携帯電話などを使って、外部からの接続を確認してみましょう。
   http://xxxxxxx.homeserver.com
   DNS の反映などで正常にアクセスできるまでに若干時間が必要な場合もありますので、だめだった場合はしばらく待ってから再度確認してみてください。
   もしそれでもだめな場合は、ルータの設定を確認してください。(ISP の制限により接続できない場合もあります。)

以上で、基本的なサーバー環境の準備は完了です。

IISの設定

管理ツールより、IIS マネージャを起動してください。
whs2.jpg

既定では、Windows Home Server のリモートアクセス用サイトが Default Web Site として登録されています。
こちらはこのまま利用して、この下にご自身のアプリケーションフォルダを仮想フォルダとして加えましょう。この場合、アクセス先は、http://xxxxxxx.homeserver.com/xxxxxxx/ となります。
( Windows Home Server のリモート機能を使用しないという方は、この Web サイトを停止して、新規の Web サイトを登録して起動することで、ルートからのアクセスでご自身の Web アプリケーションを起動することができます。)

それでは、新規追加を行った Web サイトで、ASP.NET アプリケーションの動作を確認してみましょう。

私はすごく簡単なサンプルで、

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void btnHello_Click(object sender, EventArgs arg)
{
 this.lblHello.Text = "Hello, My Home Server!";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>My Home Server</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="btnHello" runat="server" Text="Hello" OnClick="btnHello_Click" />
<asp:Label ID="lblHello" runat="server" Text="" />
</form>
</body>
</html>

のようなものを置いてみました。
早速、外部から(携帯電話などで)、http://xxxxxxx.homeserver.com/xxxxxxxx/ とアクセスしてみましょう。(ローカルで利用する場合は、http://localhost/xxxxxxxx/ や http://[コンピュータ名]/xxxxxxxx/ です。)
ページにボタンが表示されており、これをクリックすると、Hello, My Home Server! と表示されればOKです。

さて、ここまで Windows Home Server を使用して、簡単に ASP.NET が利用できる自宅サーバーの構築を説明してきました。

既定の状態であれば、単に ASP.NET 2.0 が動作する Web サーバーですが、必要に応じて、別途 SQL Server や .NET Framework3.5 をインストールすることでさらに高度な Web アプリケーションを利用することができます。最近では、FastCGIをインストールして、PHP アプリケーションを動作させてみるというのもおもしろいと思います。

このように、開発者向けには、ホスティングサーバーではなかなか操作が困難だったりする部分があったり、最新環境をいち早く Web 上で試したいなんて時には最適な実行環境ではないかと思います。

今回は、本来の Windows Home Server の利用法とはちょっと違った切り口でしたが、Web 開発者ならではの Home Server 活用方法もいろいろあるのではないかと思っています。
なによりも、Web 開発者の一家に1台、自宅サーバー。なんて素敵ではないですか!

なお、データベース製品などの各製品をご利用の際は、ライセンスの取扱いにはくれぐれもご注意ください。