Windows 7/Vista + IIS で自宅サーバーを構築してみました。Windows XP から windows 7/Vista になって、IIS のクライアント版の制限(IIS の機能制限)が少なくなり、小規模な Web サーバーであれば問題なく動作させることができるようになっています。また、目立たない部分ですが、ファイアウォール、タスクスケジューラという Web サーバーで利用する機能も大きく進歩しており運用もしやすくなっています。ハードウェア面でも、Intel Atom の出現で低消費電力にかかわらず小規模な Web サーバーに必要十分な性能を持ったマシンを入手することも容易になりました(私が運用している自宅サーバーについてのメモ)。日本は、ホスティングサーバーの選択の余地が少なく、一方で電力や通信回線のインフラは安定しているので、windows 7/Vista + IIS で自宅(自社)サーバーを構築してしまうのも一つの有力な方法だと思うので、検討した内容や具体的な操作の手順をメモしておきました。また、WebMatrix が公開されたことで Windows XP や 7/Vista で IIS の付属しない下位の機種でも公開サーバーを構築できるようになりました。詳細は、WebMatrix で公開サーバーにメモしました。
自宅(自社)サーバーの設定手順は、以下のようになりますが、イントラネットサーバーと比較して、ネットワークとセキュリティ設定の知識が少し必要なだけだというのがわかりました。Windows 7/Vista + IIS を使用して、自宅(自社)サーバーにすれば、日頃から使い慣れているOSを利用するので、新たに覚えなければいけないことが少なくなるというのは大きなメリットです。
※Microsoft Web Platform Installer 3.0 (Web PI)を利用すれば、上記の2.から5.を省略して、アプリケーションをインストールすることができます。本当に簡単にインストールできるので、是非試してみてください。
以下に、Windows 7/Vista で自宅(自社)サーバーが可能かどうか調べた内容を書いておきます。
Windows 7/Vista で自宅(自社)サーバを構築する場合には、マイクロソフトのライセンスに違反しないかどうかということと、セキュリティ面で問題がないかということの2点が問題になると思います。
まず、ライセンスの問題ですが、Windows ライセンスを読むと、インターネットの情報サービスに該当すると考えられ、接続台数がWindows 7 の場合は20台、Vista は10台(Vista Home Basic は5台)までであれば問題はありません。なお、商用のホスティングサービスをすることは、禁止されています。アクセスの多いサイトでなければ、同時接続台数が20台を超えるようになることはないので安心して自宅サーバーを構築できます。Windows/日本語/無料で始める自宅サーバーのWindowsサーバーとライセンスに明確な説明があるので参考にしてください。
Home Server 2011の場合は、Windows 7 の場合と違って、10個の指定されたアカウントにアクセスの許可が与えられているので、不特定多数からのアクセスをさせてもいいという解釈は難しいと思います。Home Server 2011は1万円以下で購入でき、ビデオや音楽の共有が簡単にできるというメリットがあるので、家族や少数の友人と情報を共有したい場合に使うようにしましょう。
次にセキュリティ面ですが、Vista SP2 以降であれば、Windows Server 2008 と基本的に同じモジュールを使用しており、サーバー機能が最適化できていないため性能は劣るものの、基本機能は同じになので、セキュリティ的にレベルが低いということは考えられません( Windows 7 で利用できる Webサーバの役割サービス IIS 7.0 Features and Vista Editions、 柔軟性と機能性を大幅に高めたIIS 7.0 、 クライアント版Windowsに付属するIISの制限を参照)。ということで、現時点では、もはや Windows 7/Vista のIISがセキュリティ面で劣っているということはありません。ただし、注意したいのは、Windows 7/Vista の IIS自体がもともと開発者向けの機能であり、セキュリティを確保するためにはそれ相応の技術力が必要になるということです。逆に言えば、Windows Server 2008 への移行は容易だということです。IIS マネージャー等多くの管理ツールは、Windows 7/Vista と Windows Server 2008 とで共通になっています。
※Windows 7 使用許諾契約書の抜粋
ユーザーの数 本ライセンス条項に別途規定されている場合を除き、本ソフトウェアは一度に 1 人のユーザーに限り使用することができます。
デバイスの接続 お客様は、ファイルサービス、プリントサービス、インターネットの情報サービス、インターネット接続共有サービスおよびテレフォニーサービスのみを利用するために、ライセンスを取得したコンピューターにインストールされた本ソフトウェアに対し 、最大 20 台の他のデバイスからの接続を許可することができます。
※Windows Home Server 2011 使用許諾契約書の抜粋
サーバー ソフトウェアの使用。お客様は、最大 10 個のアカウントを使用することができます。各アカウントでは、指定されたユーザーによる当該サーバー上のサーバー ソフトウェアへのアクセスおよびその使用を許可します。
サーバーの役割。お客様は、サーバー セットアップ プロセス時に既に有効にされている役割を除き、サーバーの役割を使用できません。
WordPress でホームページを作りたいというような通常の利用では、廉価になってきた共用ホスティングサーバー(レンタルサーバー)を利用することをお勧めします。一方、共用ホスティングサービスに不満があったり、共用サーバーの使用制限で禁止されていることをしたい場合(例えば定期的に負荷がかかる処理をしたいということが結構あると思います)で、仮想(VPS)サーバーのコストを負担するだけの余裕がない場合には、Windows 7/Vista による自宅(自社)サーバーを選択するメリットがあります。最近、Amazon EC2 の t1.micro の Windows OS が1年間無料で使えるようになっています。また、Microsoft BizSpark を利用すれば 3年間無料で Windows Azure の S コンピューティング インスタンスを2個利用することができます。Web サービスを提供しようと考えているのであれば、4年間無料でクラウドを利用することも可能です。
セキュリティ面でホスティングサーバーが優れているという意見がありますが、ASP.NET や PHP を使用するのであれば、ホスティングサーバーの場合でもアプリケーションのセキュリティには十分に注意が必要です。自宅サーバーの場合、ホスティングサーバーと比較して余計に注意する必要があるのは、以下のような点だと思うので、HTMLの静的ファイルのみのでサーバーを構築する場合は別にして、ホスティングサーバーの方が相当優れているというわけではありません。
共用のホスティングサーバーと比較して自宅サーバーのメリットとして、以下のような点があります。自宅サーバーの管理は大変ですが、その分楽しみも多くあります。
日本のホスティング・サービスの主流はLinuxです。コスト的にいえば、Windows の場合はライセンス料が必要なので、Linux の方が有利です。例えば、Amazon EC2 では、サーバー利用料は、Windows の方が Linux よりも、standard で 41% 、high で 24% 高くなっています。コストを重視する場合は、Linux を選択する方がいいでしょう。また、Microsoft の方針の変更に振りまわされなくなるというのも、Linux のメリットです。しかし、すでにWindows のシステムに慣れているという場合には、時は金なりです。人件費と比較するとサーバーのランニングコストの比重は小さいと思います。
以下に、Windows 7/Vista を Linux と比較してメリットとデメリットを比較してみました。自宅サーバーの場合は、日頃から使用しているOSなので、Linux を使用するよりはるかにハードルが低いと思うので、Windows 7/Vista を検討してみる価値はあると思います。
メリット
デメリット
日本のホームページでは、IIS を使っている例はあまりみられないし、ライセンス違反であるというような記述があるページがかなりあります。 例えば、村上俊一 著 「安全自宅サーバー活用ガイドブック for Windows XP」では、IIS を避けた理由について、以下の3点を挙げています。
また、日経ネットワークのWindows XPをサーバーに使う際の制限は?では、「例えば,データベースと組み合わせた独自のファイル・サーバーやアプリケーションを搭載したサーバーは,Windows XPでは利用できません。」という記述があります。
確かにIISは攻撃対象になりやすいという面はあるようですが、ライセンスの問題とセキュリティホールの記述には納得がいきません。使用許諾契約書を見れば、Apache も IIS も同じく最大20台(Vistaの場合は10台)までの接続が条件のはずです。使用許諾契約書を見ても、MSDN の Windows Vista 用 Web サーバーの新機能 を読んでも、IIS をインターネットで公開したらいけないという記載はありません。
また、セキュリティホールついても過去の話であって、IIS 6 以降では、Apache と差はありません。
使用許諾契約で、同時接続台数が20台(Vista Home Premium 以上 10台)となっています。この制約は、Webアプリケーションにとって非常に厳しい制限というわけではなく、平均サイト滞在時間を2分(1回につき2.5ページビュー)とすれば、1時間で最大600セッション(2.4秒に1回のページビュー)の処理ができます。特定の時間だけにアクセスが集中するのでなければ、 1日に2千セッション、5千ページビューであれば対応できるでしょう。接続が増加して同時接続台数で問題になるようであれば、keep alive の時間を短縮したり解除したりして調整することができます。サーバーも平均で2.4秒に1回のアクセスであれば、最終的にはアプリケーション次第になるのですが、通常であれば十分処理できると思われます。
一方で、Webブラウザは、css、javascript、画像などの複数の要素からなるWebページを表示する時には、並行してダウンロードするようになっているため、複数のTCP接続が開始します。このため、Webサーバに接続しているユーザー数がわずかでも、多数のTCP接続が開始されることになります。そういう点からいえば、IISの同時処理数の制限の方が厳しいと考えられます。Windows Vista の場合、IISの最大同時処理数は、Business 以上が10、Home Premium が3となっています。Windows 7 の最大同時処理数については、公式サイトでは記載されていませんが、実際にIISを立ち上げて調べたところでは、Vista と同じく、Pro以上が10、Home Premium が3、であると思われます。
なお、Windows XP Pro では、機能制限が多く、最大同時接続数は10ですが、それ以上の接続があると接続が拒否されていました。自宅サーバーに IIS を使うべきではないという評価が広がった一つの要因になっていると思われます。
Windows Server と Windows 7 の両方の OS を使っていて、Windows 7 は、多数のファイルの読み書きがある場合の処理は、Windows Server よりかなり処理が遅いように感じています。清水 理史氏の イニシャルBでも、「複数ユーザーから同時にアクセスした場合の処理などは低くなりがちだ。」といっています。処理速度の面からも、1日に5千ページビュー程度になれば、Server 版の Windows を使った方がいいと思います。
※Google Ad Planner でサイトのアクセス数を見ることができます。個人や小規模な会社のサイトで、1日5千ページビューのアクセスがあるサイトにまで成長させるのは相当骨がおれると思います。そういうことで、サイトの立ち上げ当初は、Windows 7/Vista で十分対応できます。そして、Windows 7 / Vista で対応できなくなれば、Server 版の Windows に移行すればいいし、その際には、特に変更することなくWindows 7/Vistaで築いた資産を使用することができます。そして1日に5千ページビューのアクセスがあるようになれば、Windows Server への投資も十分に元が取れるようになっていると思います。
Apache に付属するベンチマークソフト ab を使って、実際に IIS の処理速度を計測してみました。ab は、一つのファイルのみにアクセスするので、精度には限界があるかもしれませんが、簡単に使えるのでどの程度動作するかを調べるのには便利です。(操作についての参考、 ApacheBenchによる単純ベンチマーク測定) 以下で使用したパソコンのCPUは、Core 2 Duo E6300(1.86GHz)です。
まず、発行リクエスト数1000、同時リクエスト数 10 で通常のhtmlファイルでテストしました。1秒間に794リクエストの処理ができています。いずれにしても、小規模なサイトでは十分な処理能力です。
Server Software: Microsoft-IIS/7.5 Server Hostname: 192.168.0.3 Server Port: 80 Document Path: /ap/list Document Length: 1610 bytes Concurrency Level: 10 Time taken for tests: 1.258633 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 1857000 bytes HTML transferred: 1610000 bytes Requests per second: 794.51 [#/sec] (mean) Time per request: 12.586 [ms] (mean) Time per request: 1.259 [ms] (mean, across all concurrent requests) Transfer rate: 1440.45 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.9 0 9 Processing: 2 11 6.2 11 66 Waiting: 2 11 6.1 10 66 Total: 2 11 6.2 11 66 Percentage of the requests served within a certain time (ms) 50% 11 66% 13 75% 14 80% 15 90% 18 95% 22 98% 28 99% 39 100% 66 (longest request)
次に、Home Premium の処理能力がどの程度になるか確認のため、同時接続数を3に設定しました。同時接続数が10の場合と比較して、処理速度は若干落ちる程度です。Home Premium でも小規模なサイトであれば、十分に自宅サーバーにできると思います。
Server Software: Microsoft-IIS/7.5 Server Hostname: 192.168.0.3 Server Port: 80 Document Path: /ap/list Document Length: 1610 bytes Concurrency Level: 3 Time taken for tests: 1.337874 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 1857000 bytes HTML transferred: 1610000 bytes Requests per second: 747.45 [#/sec] (mean) Time per request: 4.014 [ms] (mean) Time per request: 1.338 [ms] (mean, across all concurrent requests) Transfer rate: 1355.14 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.9 0 9 Processing: 2 3 2.4 3 58 Waiting: 1 2 2.4 2 57 Total: 2 3 2.7 3 62 Percentage of the requests served within a certain time (ms) 50% 3 66% 3 75% 4 80% 4 90% 5 95% 7 98% 10 99% 12 100% 62 (longest request)
最後に、WordPress の画面でベンチマークをしてみました。かなり処理速度が落ちて、1秒間に2リクエストしか処理ができなくなりましたが、4で説明した程度のアクセス数であれば十分対応できます。このベンチマークでは、CPUの使用率が100%になっていることから、IIS が原因ではなく、アプリケーションの処理が原因だと思われます。
Server Software: Microsoft-IIS/7.5 Server Hostname: 192.168.0.3 Server Port: 80 Document Path: /wp/ Document Length: 31338 bytes Concurrency Level: 2 Time taken for tests: 489.124540 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 31595000 bytes HTML transferred: 31338000 bytes Requests per second: 2.04 [#/sec] (mean) Time per request: 978.249 [ms] (mean) Time per request: 489.125 [ms] (mean, across all concurrent requests) Transfer rate: 63.08 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 324 977 235.6 1042 1836 Waiting: 320 973 235.5 1039 1832 Total: 325 977 235.6 1042 1836 Percentage of the requests served within a certain time (ms) 50% 1042 66% 1073 75% 1093 80% 1114 90% 1195 95% 1259 98% 1387 99% 1466 100% 1836 (longest request)
こうみてくると、Microsoftにとってデスクトップ用のWindowsのIISの扱いはデリケートな問題だということがよくわかりました。デスクトップ用のWindowsのIISの性能を上げると、Windows Server の競争相手になってしまいます。しかし、デスクトップ用 Windows の IIS は、開発者にとってはテスト用として必要なものなので、外すわけにはいかないものなのです。
利用者としては、デスクトップ用のWindowsのIISであっても、個人サイトや小規模な会社のサイトであれば問題なく利用できること、デスクトップ用のOSにインストールされているIISは、簡易版ではなくサーバー用OSを利用するのと基本的な機能は同じであるが、性能面で制限があるため本格的なサイトになるとServer版のWindowsに移行する必要があることを理解したうえで利用すればいいと思います。
Webサイトを作ってみたいと思ったときには、普段使っている Windows 7/Vista を使ってみてはどうですか。一番手軽に初められると思います。それに、サーバー用 Windows のIISと基本的には全く同一のものなので、Windows 7/Vista での自宅サーバーでの運用経験は、Windows Server による Web サイトの運用にそのまま活かせるものなのです。