Windows Serverの構築
目次
WISAサーバーとは?
サーバーを構築する際、「ランプで構築」という言い方をします。
ランプ(LAMP)は、灯りのLampと綴りが同じですが、 OSがLinux、WebサーバーとしてApache、データベースとしてMySQLかMariaDB、その他、動的なページを作成するため、Perl、PHP、Pythonといったプログラム言語が動作するサーバー構成の事で、L.A.M.Pと頭文字をとって、LAMPサーバーと呼ばれます。
一方、このLAMPに対抗してMicrosoft社が提供しているのが、OSがWindows Server、WebサーバーとしてIIS、データベースがSQLServer、 動的なページを作成するため ASP.NETで構築したサーバーを、WISA(ウィサ)と呼んでいます。
WISAは高額です…
個人の主観もありますが、WISAは、LAMPに比べて余り知名度が高く無いようです。
理由は、調達コストが高額である事が大きいでしょう。
社内SE時代、一度見積を取った事がありますが、確か4コアのCPU、16ギガバイトのメモリ、8TBのRAID1ハードディスク(つまり2台)のサーバー機に、Windows Server2012と、5人使用でSQLServerを載せたところ、100万円弱の見積が来たと記憶しています。
LAMPサーバーなら、OSレス(OSが入っていない)サーバー機を購入すればよいので、最新のサーバー機を買ってもこの1/3くらい。
中古サーバーでも良いのなら、もっと安くする事もできます。

こちらのNTT-Xなどでは、10万円以下でサーバーが買える場合がありますが、これでも充分です。
しかし、機体以外全てが無料である反面、構築するにはLinuxサーバーの知識が必須ですし、運用にも専門知識を要求される場面が多いです。
導入は安く済んだけれど、途中でその技術者を失ったら、メンテナンスや追加開発を外注する必要が出て、コストが非常にかかった…という話はよくききます。
一方、WISA は導入コストは高額にかかりますが、そこはWindows の系統なので、メンテナンスツールなどがGUI操作できる為、非常に判りやすく、兼任技術者でもなんとか維持していく事が可能です。
なお、制約はありますが、WISAサーバーを無料で構築する事は可能です。
OSとしてのWindows Serverは、180日なら無償で全機能テストできますし、SQLServerには、Express エディションという無償版があり、データベース一つあたり、10GB以上のデータは保存できませんが、それ以外の機能は全て製品版と同じです。
私は、「専門用語で良くわからないが、 今のと同じ系統だという事だし、構築されてくるんならその方が良いだろう」という、負荷を減らそうという配慮なのか、辞めさせたあと困るからという打算なのか良くわからない理由で、 WISAサーバーの導入をしたことがあります。
また、 WISAサーバーを運用していくにあたり、当然、いろいろなテストが必要だったので、OSレス状態からWISAサーバー を構築したことがあるので、その手順のご紹介です。
Windows Serverをインストールする
まず、MicrosoftのWindows Server試用版のページに行き、OSのISOファイルを入手します。
ISOファイルはDVD-ROMなどに焼き付けして使用する事を前提にした、ディスクイメージファイルですが、そのまま使用する方法もあります。
今回は、Windows Server2016で試します。

最近は、OSの進化でサイズ的に4.7GBしかない一層のDVD-ROMに入らない事例も出てきました。その場合はより大きな二層DVDか、USBメモリでインストールできます。

インストール時の言語などが出ています。
※テスト用にVMware環境で再現しています。

Windows Serverにも、GUIを使用しないモードがありますが、それではLAMPサーバーに比べて優位性がないので、 デスクトップエクスペリエンス を選択します。

インストールは、流石Windows の系列なので、簡単です。
IISを有効化する
次に、Webサーバーを構築しますが、IISはWindows Serverに内蔵されているので、設定するだけで簡単にWebサーバーを構築できます。




サーバー一覧が表示されたら、WEBサーバーをクリックすると、ウィザードが開きます。
ウィザードの機能の追加をクリックします。
次へボタンが表示されるので、進みます。



Windows Serverをインストールしただけのコンピュータに、最初にISSをインストールする場合、ドキュメントなどを置く場所が存在しないので、警告がでます。
そのままインストールすれば、デフォルトの場所として、C:\inetpub\wwwroot が作成されますので、そのまま進みます。


インストールが正常に完了しました が現れたら、これでWEBサーバーの構築は完了です。

Windows Serverのコンピュータ名をブラウザで呼び出してみると、正常にスタートページが表示されています。

C:\inetpub\wwwroot フォルダに、index.html を作成し、
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Windows ServerのIISです。</title>
</head>
<body>
<p>Windows ServerのIISです。</p>
</body>
</html>
とHTMLを記述して保存すると、

正常に動作しています。
SQL Serverをインストールする。
Microsoftのダウンロードセンターで、SQL ServerのExpress(無料版)をダウンロードします。

ダウンロードしたファイルを実行すると、確認を求められます。
確認後はインストールを選ぶモードになります。
今回は基本で進行します。
ライセンス条項に同意し、インストール先を確認されますが、これらはデフォルトで問題ありません。
ファイルのダウンロードとインストールが始まります。
インストールが終わると、そのままSSMSのインストールをクリックします。アプリはブラウザを指定します。
SQL Server Management Studio ********のダウンロード
をクリックします。ここでは17.9.1ですが、新しいものが良いでしょう。
SSMS-Setup-JPN.exe がダウンロードされているので、実行します。
SQLServer本体のインストールが終わったら、GUIでデータベースを管理できるSQLサーバーマネージャーをインストールします。
インストールのボタンを押すと、ブラウザによりダウンロードサイトへ誘導されますので、そこからダウンロードし、インストールします。
これにより、データベース本体と管理ツールがインストールできました。
起動してみます。

サーバー管理ツールが立ち上がりました。

SQLServerはインストール時に特に指定しなければ、Windows認証のみで接続するよう構築されます。
Microsoftの推奨としては、SQLServer認証は使用しないように推奨されているためです。
これからWISAでWEBアプリを作成するならWindows認証のみで大丈夫ですが、例えばWEBアプリが稼働中のWISAサーバーのリプレース等では、SQLServerのユーザー認証が必要になる事があります。
このため、認証をどちらでも使用できる混合モードにします。

SQLServer の管理ユーザは、sa というユーザーになりますが、混合モードにしてもsaは無効なままです。
可能なら、saユーザーを使用しない方が良いのですが、アプリによっては、saでのアクセスを求められる事があります。
必要な場合は、ユーザー名をクリックして、状態に移動し、有効化します。

次に、データベースサーバーのリプレースの場合、旧来データを復元する必要があります。
別のSQLServerでバックアップされたファイルを適用すると、簡単にデータベースを復元できます。

データベースの復元を選び、デバイスからbakファイルを選択するだけです。
エクスプローラー状の画面でファイルを選びます。


ASP.NETなどで、データベースを使用する際には、ユーザーやパスワードが指定されている事があります。
今回復元しようとしたASP.NETの場合は、web.configというファイルに記載されていました。

さて、これで旧データベースが復旧し、ユーザーも出来たのですが、このままではこのデータベースはスタンドアロン(孤立)状態で、SQLServer自体の他は、どこからもアクセスできません。
そのため、リモートの接続を許可します。

次に、SQL Server 構成マネージャーを開きます。
デフォルトの設定では、TCP/IPが無効になっているので、右クリックし、有効化を選んで、有効にします。

さらに、このデフォルトではポート番号もランダムな数字になっている事があります。
このため、もう一度、TCP/IPを右クリックしてプロパティを出し、IPアドレスのタブで、TCP Dynamic Portsを1433にします。

また、SQLServer自体も、ビルトインアカウントに設定し、Local Systemにしておきます。

次に、SQL Server Browserもデフォルトでは起動していないので、コンピュータの管理から、サービスを開き、 SQL Server Browser を探して右クリックでプロパティを開き、起動時に開始されるよう、スタートアップを自動にしておきます。
次回再起動時に、自動で起動されるようになります。

なお、ユーザーを追加したり、セキュリティ設定を変更したりした上、サービスの幾つかが起動していない状態なので、Windows Serverごと再起動します。
ASP.NETをインストールする。
次に、WEBプログラムとして、ASP.NETをインストールします。
これも、WISAの場合は、機能の追加から簡単にインストールできます。


ASP.NETと、HTTPアクティブ化をインストールします。

インストールはこれで完了なので、サービスの自動起動を設定します。
コンピューターの管理からサービスを開き、aspnet_stateを探して右クリックして、スタートアップを自動にし、サービスの状態で開始をクリックしてスタートさせます。

テストとして、HelloWorldと表示させてみます。
まずは、ASP.NETが使用するディレクトリをIISに指定します。
サーバーマネージャーから、IISのツールを開きます。

開くと、自分のサーバー名が表示されています。
この中のDefault Web Site がWEBサーバーのルートディレクトリである、 C:\inetpub\wwwroot を指しています。
ASP.NETをインストールした事で、このディレクトリにaspnet_client というディレクトリが出来ているので、これをプログラムの置き場にしてみます。
順番にツリーをクリックしていき、 aspnet_client で右クリックして、「アプリケーションへの変換」を行います。


確認を求められますが、今回は特に変更事項がないのでそのままOKします。
C:\inetpub\wwwroot\aspnet_client
に移動し、hallo.aspxを下記のように作成します。
<%@ Language="VBScript" %>
<html>
<body>
<%
Response.Write ("Hello World")
%>
</body>
</html>
http://[サーバー名] /aspnet_client/hallo.aspx
で呼び出すと、HTMLが作成されて表示されますので、ASP.NETは正常に動作しています。

このアプリケーションへの変換は、WEBサーバーのルート領域以外でも指定を行えば、WEBアプリの一員とする事ができます。
例えば、c:\直下にASPプログラムのフォルダを置き、それをアプリケーションの変換で追加する事が可能です。
下は、C:\直下にあるプログラムフォルダを登録しています。

これで、WISAサーバーとして、WEBページを動的に生成し、表示する構成が完了しました。
ただ、ASP.NETは進歩しているため、古いものだとエラーが出る事があります。

今のASP.NETでは必要のない記述がいくつか入っていたため、エラーになりました。
この場合は、不要な記述をコメントアウトして対処しました。

インストール作業はここまでになります。
流石に値段が100万円に届くかというものですので、納品時にはインストールはほぼ完了し、この記事ではASPのプログラムを投入する位しか作業がありませんが、一から構築する場合でも、LAMPに比べるとGUIで直感に判るものが多く、簡単なように思えます。
この記事では、Windows Serverは評価版なので、180日を経過すると使用できなくなります。
また、SQLServerは、データベース一つで10GBの制限があります。
このため、あくまでテスト用環境の構築と割り切って下さい。
できれば、空いているパソコンなどでこの環境を構築し、要不要の切り分けを検討するのが良いかと思います。
予算が付いたら、サーバーのコア数にあわせてWindows Serverのライセンスを正規購入し、データベースについては、設計上、10GBを超える事がないのであればそのまま、超える場合は、正規エディションを購入すれば、試験から正規運用にチェンジする事も可能です。
2020年1月には、Windows Server2008がサポートを終了します。
現在、 Windows Server2008 でこのようなシステムを動作させている場合、早急にリプレースの計画が必要になるかと思います。
最新Windows Serverでの評価や、移行について、お役にたてるかと思いますので、お問い合わせよりご連絡ください。