Webサーバー構築(導入編) (update 2000/09/27)
〜自宅でサーバーを立ち上げよう〜

注:この記事を書いたのは、確か1999年の7月頃だったかと思います。
あまりにも時代にそぐわない内容は訂正したつもりですが、基本的には当時のままです。
質問が集まればまた別に記事を書きたいと考えてます。



今使ってるPCをサーバーにしてみませんか?
アングラな使い道しか思い浮かばないという方もいるでしょうが、それはさておき・・・(笑)

さて、自宅のマシンをサーバーにして何の利益があるか・・・
以下のようなことが考えられます。
  1. プロバイダの容量に制限があるので、無制限に公開したい。
  2. 限られた人々に、自分の作品を公開したい。
  3. CGIをプロバイダで動かす前に、自宅で試してみたい。
  4. サーバーを運用してみて、スキルアップしたい。
  5. 何も知らない人は「すげー」と言うので、他人と差を付けたいという方にも(笑)
などなどあります。


1と2、普通はこれが動機でもあり、一般的な使い方でしょうか。

3と4は、サーバー運用してると副次的に発生します。私も学んだことがかなり多く、さんざん遊ばせていただいてます。時間的な余裕があれば、CGI動作などを試してみることをお勧めします。



必要なものは、パソコンだけです。無理にサーバーマシンを用意する必要はありません。あとはネット上に無料で配布されてるので、個人でサーバーの構築も簡単にできる所まで来ています。近いうちに、インターネット接続は、定額低額常時接続が当たり前の世の中になるでしょう。まさに先を見越した記事・・・・・(笑)

って書いたのが1999年半ば頃。それは現実のものとなりました(2000年9月)


そして企業のIT担当者へ・・・
いきなり訪れる営業マンに口説かれても高価なサーバーソフトを導入する必要なんてないって。Apache+Linuxなら、パワフルなサーバー環境がなんと無料。(というより、企業でもイントラあたりに商用ソフトを入れたらいろいろと大変。特にIISなんて・・・・(>_<)<経験者談



サーバーソフト(httpd)とは
では、サーバーソフトの具体例を挙げてみましょう。(ただし、フリーウェアのみ)

Apache (WindowsNT3.51/NT4.0/95/98/2000/Me/)
私が現在、主に使用しているのはLinuxのApache/1.3.12ですが、ここで取り上げたのはNT版のApache/1.3.6です。
今回取り上げたサーバの中でもっともメジャーであり、企業サーバでも多く採用されています。
サーバーの設定はテキストファイルの編集で行うあたり個人向けとは言い難いものもありますが、無料で導入できるという点から、個人でも十分使えるサーバだと考えます。

上記の通り国内外のプロバイダでも多く採用され、商用サーバーも含めて最大のシェアを持っています。(HTTPサーバーのシェアの48%はApacheらしいです) フリーウェアでありながら、その性能は商用のサーバーソフトに匹敵するか上回るものかと思われます。動作も非常に軽く、細かい設定も可能なので、かなり自由度の高いサーバーです。

難点は、テキストファイルで設定するので、初心者にはハードルが高すぎるということでしょうか?ただ、sendmailのCFのような「それだけで仕事ができる」ほどの難しさではないので、サーバーを立てたいと考えるくらいのヘビーユーザの方なら大丈夫でしょう。

特徴
インストール手順
Perlとの関連付け


Microsoft Internet Information Server など
(WindowsNT3.51/NT4.0/95/98/2000/・MacOS。多分WinMeにも入ってると思う)

私が初めて使ったサーバーは、NT4.0のPeer Web Services 2.0でした。いくつかの種類がありますが、基本的にはほとんど同じなので同列に扱ってます。(IISの動作環境はどう考えても個人向けじゃありませんが、PWSの名を持つ簡易版は個人向けです)

私が昔、真っ先に勧めたのは、NT4.0のPeerWebServices2.0と同じ操作系を持つPersonalWebServer1.0でした。操作が簡単なこともあり、身内で大ヒットしました(笑)
今は、次に挙げるAN HTTPDにその座を譲ってますが、PWSの名は個人のサーバを示す代名詞の如く今でも使ってます。

これは、厳密に言えばフリーではないかもしれません。WindowsというOSを買う段階で、その代金を払っているとも考えられるからです。そう言っても、追加費用なしで導入できるのでやっぱりフリーでしょうか。

特徴
Perlとの関連付け
インストール手順
IIS/PWS 2.0/3.0 (WinNT 4.0)
PWS 1.0 for Win95
PWS 4.0 for Win98
IIS/PWS 4.0(WinNT4.0/95)

Windows2000に入ってるIIS5.0はあまり興味がないので書いてません。どーしてもって方は個別に問い合わせてください。あと、WinMeにもIIS5.0が入ってるものと思われます。


AN HTTPD (WindowsNT4.0/95/98)

現在、誰にでも勧められるHTTPサーバーと言えば、これです。
操作方法がPWS3.0ほど簡単と言うわけでもありませんが、初心者にも比較的導入しやすく、細かい設定なども全てGUIベースで可能です。やっぱり、一般に出回ってるCGIスクリプトが、ほとんど無修正で動くのが最大の魅力でしょうか。初期設定の簡易さもダントツです。(IISやPWSでは、CGIが動作するようにするのも大変ですし、スクリプトも書き換えなければまず無理です)

特徴
インストール手順
Perlとの関連付け

An Httpdの運用編 (2000/02/13)
というか、これもまた別な方向に走っています(笑)



補足

HTTPサーバーのことを、HTTPdと呼ぶことがよくあります。その意味は、HTTP daemonの略です。
daemonとは、通常はバックグラウンドで動作しているのだけど、何らかのトリガーで起動するプログラムのことです。(Webサーバーの場合はポート80へのリクエストがトリガーとなります)
デーモンのことをNTの場合は「サービス」と呼びますが、何もこんなことまでゲイツ君の指示に従う必要はありません(笑)







各サーバーの特徴など

●Apache ( HTTP / Proxy )
UNIX用として開発され、現在はWindowsにも移植されているHTTPサーバーです。
HTTPサーバーのシェアはトップで、大半のプロバイダはApacheを採用しています。(Hi-HOもApacheです)よって、プロバイダの環境とほとんど同じ条件でCGIのテストなどができます。

Apache導入に関しての利点は
  • .htaccesshtpasswdが使用できる。
  • Perlスクリプトは、ネットで配布されているものの多くがそのまま動作する。
  • 動作が軽く、安定している。(MicrosoftのIISをも凌ぎます)
  • NTではサービスに組み込めるので、弱い権限で動作させればセキュリティ面も比較的強い。
  • httpd.confにより細かい設定が可能な上、ディレクトリごとにhtaccessでさらに細かく設定可能。
  • ユーザーディレクトリを設定できる。(http://www.inverse.co.jp/~lina/などのように)
  • WindowNT4.0 Workstationをサーバーに使用しても、クライアント数が100でも200でも使用可能なので、「Workstationは10ユーザまで」の制限が事実上撤廃されてしまう。
    極端な例では、OSがWin95/98でもイントラのHTTPサーバーなら十分使えます。ライセンス違反じゃないよね?多分。

など、他のWindows用のサーバーには存在しない利点が多数あり、
慣れてしまえばこれほど使いやすいサーバーもないかと思われます。

OSがWin95/98の場合でもかなり安定して動作し、そのパフォーマンスも決して低くありません。
PWSでは多数のアクセスが重なるとパフォーマンスが極端に低下しますし、AN HTTPDはその仕様上、あくまでも個人ユースの範囲内でしか使えませんがApacheにはそんな制限が全くありません。(現在のAN HTTPDはバーチャルホストなど、多人数でも使える仕様になってるようです)

眠ってるWindows95やNT3.51のマシンにApacheをインストールするだけで、高性能なWebサーバを作り上げることが可能なのです。もちろん、追加費用なんて一切発生しません。Pentium75で32MBも積んであれば十分でしょう。(それならLinuxとかを入れろよという話にもなりますが、これは本題から逸れるので略。)


ただ、GUIを持たないことが、Windows世代への高すぎるハードルになることは事実です。他のサーバーではGUIベースで設定できるので、そちらで慣れた後で・・・でもいいかと思います。



●Microsoft Internet Information Server など ( HTTP / HTTPS / FTP )
先にも述べたように、Microsoft製のサーバーはどれも似ています。
むしろ、バージョンによる相違の方が大きいと言えます。

・Internet Information Server 2.0/3.0 ( Windows NT 4.0 Server )
・Peer Web Services 2.0/3.0 ( Windows NT 4.0 Workstation )
・Personal Web Server 1.0 ( Windows95 )

NT4.0のIISとPWSは、接続可能なクライアント数などに若干の差があるだけで、ほとんど同じものと考えてよさそうです。実際に、IISとPWSは同一のコントロールパネルを持っており、PWSではその一部が使用不可になっているだけです。聞く所によると、IISを大規模サーバーで運用できなくしただけなのがWorkstationのPWSだとか。PWSでは時々、極端にパフォーマンスが悪くなる場合があります。意図的にやってそうな感じ・・・(>_<)

Windows95のPWS1.0も、IIS2.0の簡易版と考えていいでしょう。ファイル名などにIISの名を持つものが多数あり、IISを多少変更しているだけだと容易に想像付きます。設定などは基本的にブラウザから操作しますが、そのHTMLはIIS2.0のインターネットサービスマネージャ(HTML版)のデザインが多少変わった程度なのでこれもIISと同じものと考えていいでしょう。あくまでも私の主観ですが、意図的にパフォーマンスが落とされているであろうNT4.0のPWS2/3よりはレスポンスがいいです。


NT4.0用のIIS/PWSは、OSのインストールCD-ROMに入っており、95用のPWSはOSR2以降ではCD-ROMに入っています。それ以前の95でもMicrosoftが無償配布しているプログラムをインストールすれば使えます(MacOS用のPWSも配布されていた気がしますが・・・詳しくは知りません)

Webの公開と言う用途に限定してしまえば、今でもこれが一番扱いやすいかと思われます。OSの一部として提供されているので、手軽に導入できるという利点もあります。ただ、CGIの動作をさせようとか考えているのだったら、いい選択肢ではないと思います。


・Internet Information Server 4.0 / Peer Web Services 4.0
 ( Windows NT 4.0 Server / Windows NT 4.0 Workstation / Windows95 )
Windows NT 4.0 ServerのOption Packとして提供されているWebサーバーです。
ソフトの名前こそIIS/PWSですが、3.0以前のものと比べて大幅に変更されています。機能の面も、Ver3.0までは存在していたGopherが削除されました。(実際に使ってるケースは少ないと思うけど)

設定、運用は、基本的にManagement Consoleで行います。Option Packは、NTServer/Workstation/95の全てにインストールできるそうですが、私はNT Server以外にはインストールしていないのでそれ以外のことは知りません。

操作方法は・・・一応3.0よりは簡単になったと言うのかなぁ?いや、3.0では高度なことはレジストリを直接編集する必要があったのが、ほとんどGUIとして出てしまっているので、要求されるスキルが高くなっただけかも。
初めてサーバー運用をする方にはお勧めできません、これは。いろいろやって遊びたい方向けでしょう(言い過ぎ?)


追記
・PWS4.0では、ManagementConsoleが用意されていないので高度なことがほとんどできません。質問を受けて、私も結構ハマったあげく、根本的な解決手段を見つける事ができませんでした。
・Windows2000ProfessionalのIIS5.0はPWS4.0のバージョンアップ版です。が、ManagementConsoleが用意されたので管理方法はIIS4.0に似ています。名前が変更されたのとどういう関係があるのかは知りませんが、IIS5.0はServer版とほとんど同じ物と考えていいかもしれません。


・Personal Web Server 4.0 (Windows98)
Windows98にはPWSが標準で搭載されています。仕様は上述のWin95版のPWS4.0と同じ物だと思われます。私はほとんど使ってないので詳しくは知りません。
見た目はIIS4.0と言った感じで、操作方法などが95版のPWS1.0と比較して大幅に変わっていましたが、ファイル名にIISの名前を持つものが多数あり、やはりIIS4.0の簡易版でしょう(というより、Server-SoftwareヘッダーがIIS/4.0になっています)。また、PWS1.0には存在していたFTPの機能が削除されてしまいました。

多くを求めない場合は、導入の楽な点を考えればこれもいい選択肢かもしれません。今はAN HTTPDというすばらしいフリーウェアがあるので無理にこれを選ばなくても・・・とも思いますが(笑)



MicrosoftのWebサーバの利点は、ブラウザからでも設定可能と言うことでしょうか。
遠隔地のマシンでも、ブラウザ経由で設定をすることができます。

特徴としては、最近よく見かけるようになったASPスクリプトが動作するのはMicrosoftのサーバーの場合だけです。(サーチエンジンの goo でも採用されています)
ASPスクリプトを書いて、実行権のあるディレクトリにASPスクリプトを設置するだけで動作させることが可能なので、手軽にCGIを導入するにはいいかと思われます。ASPスクリプトはHTMLファイルにスクリプトを入れていくって形なので、Perlほど難しくもありません(発想的にはJavaScriptみたいなものかなぁ?これ。)

やっぱり、最新技術でいろいろとやって遊びたい人向けよねぇ・・・これ・・・・(笑)







●AN HTTPD( HTTP / Proxy )
誰にでもオススメできる、フリーなHTTP/Proxyサーバーです。
これを知った時は、「これ、本当に個人が作ったの?」とびっくりするようなものでした。Perlの動作も、UNIX系のスクリプトがそのまま動きます。根性さえあれば、特に何もしなくてもbatファイルでCGIを作って動かすこともできます。
Perl.exeとのマッピングも、指定されたフォームにパスを入れるだけという極めて簡単なもので、当時IIS3.0を使ってた私は「MSよ・・・もう少し何とかしようよ・・・」とつくづく思ったものでした(笑)

また、これはプロキシサーバとしても動作します。Apacheでモジュールを読ませたり、Delegateを立ち上げたり・・・方法はいろいろありますが、これをプロキシとして使うのが一番簡単です。ダイアルアップルータはないけど複数のマシンからアクセスしたいと考えた時にも最適の選択肢になると思います。


利点
・UNIXのWebサーバーと動作環境が似ている。
・アクセス制限をする時には、GUIにより簡単に行える。
htaccessは使えないものの、ディレクトリ単位でパスワード設定可能。
・ディレクトリの閲覧を許可したい場合、特定のファイル名のファイルを置くことにより閲覧許可できる。

など、htaccessに変わる手段が用意されており、個人ユースで不自由を感じることはまずないでしょう。


欠点は・・・思い当たらない・・・(笑)
強いて言うなら、いろんなことが出来る反面、PWS3.0ほど簡単には使えないってことでしょうか?仕様上、複数のユーザで使用するのにはあまり向きません(1999年末現在)。仲間内で使うサーバーを作る場合には問題ありませんが。







HTTPサーバーのインストール
どれもGUIベースなので、インストールで失敗することはまずないかと思います。
また、区別する必要のない場合には、95版のPWSをも含めてMicrosoftのWebサーバーをIISと呼びます。

Windows NT 4.0の IIS 2.0 / PWS 2.0 のインストール
  1. コントロールパネル → ネットワーク で、サービスのタブへ移動。
  2. [追加]を押し、Internet Information Server もしくは Peer Web Servicesを選択してOKを押す。
  3. インストール元を聞かれる場合がありますので、その場合にはセットアップCD-ROMを入れて "X:\i386\inetsrv\" (CD-ROMがXドライブの場合)と指定します。
  4. インストールする内容を聞いてきますので、Gopherのチェックを外し、他のサービスは全てチェックします。(Gopherも入れても問題はありませんが、現在では用途がほとんどありません)
  5. 次にドキュメントルートを聞いてきます。これは、http://172.0.0.1/ などと、サーバー名だけを指定した場合に出てくるディレクトリのことで、後からでも変更できるのでデフォルトのままでいいでしょう。(C:\InetPub\以下に集中してたと思う)
あとは忘れましたが・・・これで、インストールされ、再起動するとインストールが完了しHttpdが起動します。スタートメニューに「Microsoft Internet Information Server(共通)」という項目が増えているはずなので、その中の「インターネットサービスマネージャ」を使ってサーバー管理します。(多分大丈夫だと思いますが、どうしても分からなかったら連絡ください。)

次に、http://127.0.0.1/ とブラウザからアクセスして、IISのスタートページが表示されればインストール成功です。表示されている内容は、 C:\InetPub\wwwroot\default.htm のはずです。あとは、インターネットサービスマネージャをいじっていれば分かるかと思います。もし、操作方法がわからなくても公開したい内容はwwwrootの下に入れてしまえばいいので、詳しくは次の機会に(笑)

IISの最新版は3.0なので、インストール後にNTのサービスパックを当てておいた方がいいかもしれません。NTのサービスパックを当てることで2.0が3.0に更新されます。


Internet Information Server 4.0 / Peer Web Services 4.0 のインストール
これは、Windows NT Option Packの形で入手します。ダウンロード方法などは、Option Packの項目を参照してください。

Option Packをダウンロード後、setup.exeをダブルクリックしてインストール開始してください。インストールの方法を聞かれますが、標準コンポーネントで問題はないかと思います。(HDDの節約をしたい場合は、警告が出ないものに関してはカスタムでIIS以外のチェックを外す。)
以降、いくつか質問が来ますが、項目はIIS2.0と似たようなものです。この質問がわけわからなくても、認証局をインストールしない限りはデフォルトのまま進んでも構いません。


これでインストール完了ですが、IIS4.0にはセキュリティのバグがありますので、インストール後、iisadmpwd のエイリアスを削除してください。最悪の場合は、第三者に勝手にパスワードを変更され、PC内を全て覗かれてしまうおそれがあります。


Personal Web Server 1.0 for Windows95 のインストール
MicrosoftよりWindows95の追加コンポーネントがダウンロードできますので、パーソナルWebサーバをダウンロードしてきます。

落としたファイルをダブルクリックしてインストールして・・・あとは忘れました(笑)インストール完了後に再起動したらタスクトレイにアイコンが増えていると思いますので、それをダブルクリックして設定画面になったはずです。


再起動後 http://127.0.0.1/ にブラウザからアクセスできたらインストール成功です。その段階で表示している内容は C:\WebShare\wwwroot\default.htm だと思われます。

以下はMicrosoftのサイトです。
Personal Web Server 1.0 for Windows95 のダウンロード
http://download.jp.microsoft.com/win95/modules/common/japwssetup.exe


OSR2.0以降のWindows95では、セットアップディスクに含まれています。ネットワークのプロパティから導入可能だったかと思いますが・・・詳しい方法は忘れたので、もし見つからなければ上記のサイトよりダウンロードしてください。774KBしかありませんし(笑)


Personal Web Server 4.0 for Windows98 のインストール
プログラムがセットアップディスクに含まれています。
CD-ROMがXドライブの場合、X:\add-ons\pws\setup.exe を実行してインストールしてください。


これ以降は分かりません。いや、何も迷うことなくセットアップできるはずですが・・・・(笑)
(手軽にASPの学習をしたい場合には使えるサーバーになりそうです。)


Apache/1.3.6のインストール
まず、Apacheをダウンロードしてきます。
以下は、Apacheのサイトです。現在の最新版は1.3.12ですが、この文章は1.3.6を基に書いてます。
http://www.apache.org/dist/binaries/win32/
http://www.apache.org/dist/binaries/win32/apache_1_3_6_win32.exe (2.9MB)
http://www.apache.org/dist/binaries/win32/apache_1_3_12_win32.exe(3.0MB)


インストールは全てGUIで行えたはずです。どんな項目があったかは忘れましたが、インストール先を
C:\Apache\
に変更してインストールした方が後々になると楽なのでその方がいいでしょう。


インストールが完了すると再起動がかかりますので、再起動後に
C:\Apache\conf\httpd.conf
をエディタなりメモ帳なりで直接編集します。


変更する必要がある項目は、
ServerName new.host.name
を、自分の好きな名前に変更してしまいます。(別に www.nomura.co.jp とかでも構いませんが、ややこしくなるだけなのでオリジナリティのある名前にしましょう)

そして、CGIやSSIを動作させたい場合には、
#AddHandler cgi-script .cgi
#AddType text/html .shtml
#AddHandler server-parsed .shtml
の#を消します。

上記の項目はばらばらの場所にあるので、検索で文字列を探してください。


これで、一応動作するようになりました。
スタートメニューにApache Web Server という項目がありますので、
その中の Start Apache as Console app を実行してください。


一度起動させると、NTの場合にはサービスとしてバックグラウンドで実行させることが可能です。

ブラウザを開いて、http://127.0.0.1/ にアクセスしてApacheのメッセージが表示されれば成功です。その段階で表示されているのは C:\Apache\htdocs\index.html のはずです。また、http://127.0.0.1/cgi-bin/ でアクセス可能なディレクトリは C:\Apache\cgi-bin\ です。


以上のパスは、デフォルトで指定されているパスです。もちろん、仮想ディレクトリを変更したり新たに作ることはできますが、それはここでは割愛します。
(極論してしまえば、htdocsとcgi-binを使えば公開は可能)


あとは、httpd.confを自分の使いやすいように変更していくだけですが、それはまたにしたいと思います。というか、多少の英語力があれば適当に書き換えてなんとかなるでしょう(笑)



AN HTTPD のインストール
AN HTTPD Home Pageより、最新版のAN HTTPDをダウンロードしてきます。
httpd119f.zip などのファイル名の圧縮ファイルです。これを任意のディレクトリに解凍し、httpd.exeを起動するだけでポート80にてHTTPサーバーが起動します。

IISなどの場合と同様、http://127.0.0.1/ にブラウザからアクセスできればインストール成功です。表示されている内容は、AN HTTPDを設置したディレクトリです。


以下はAN HTTPDのサイトです。
AN HTTP Server Home Page








Perlのインストール

CGIの動作をさせる場合、いずれのサーバーでも「Perl for Win32」というモジュールが必要になります。その名の通り、Win32(WindowsNT3.5/3.51/4.0 Windows95/98)で動作するPerlインタープリタです。
以前、Pw32i316.exeを使用したPerlのインストール方法を紹介していましたが、現在ではActivePerlがメジャーなようです。1999年11月現在の最新版はApi522e.exe (Perl5.005.03 for Win32)です。


ダウンロード場所
以下は ActiveStates のサイトです。
http://www.ActiveState.com/ActivePerl/download.htm
http://www.ActiveState.com/ActivePerl/download/APi522e.exe(5.5MB)

インストール手順
便宜上、インストール先をC:\usr\local\というディレクトリ(なければ作る)にして、インストール開始。
そのままNextを押し続けていれば大丈夫です。
PerlとIIS/PWSの関連付けも、インストーラが自動で行ってくれるので必要ありません。

Pw32i316.exeでは別パッケージになっていたperlis.dllというIIS向けのPerlインタープリタもActivePerlにはパッケージされています。


Perl.exeとサーバとのマッピング
Windowsのサーバの場合にはこれを行わないと、基本的にCGIは動作しません。

AN HTTPD とperl.exeの関連付け

オプション/一般で、.pl .cgiの実行プログラムのフォームに、Perlをインストールしたパス(上記の例では C:\usr\local\bin\perl.exe )を入力します。それで、OKを押せば全て終わりです。

この他、AN HTTPDの場合はバッチファイルもCGIとして動作させることが可能な上、バイナリのCGIも http://127.0.0.1/cgi-bin/chat.exe? などとリクエストすることにより動作可能です。



Apache/1.3.6とperl.exeの関連付け

Apacheの場合、サーバー側ではperlとのマッピングは不要です。
スクリプトの方で、一行目に
#!/usr/local/bin/perl
と、パスを記述することによりperl.exeを起動します。

Perlのインストールで、あえてC:\usr\local\にインストールしたのはこの理由です。

デフォルトの C:\Perl や、他のプログラムのように C:\Program Files\perl などにインストールした場合は、ここのパス指定でも同じように指定する必要が出てきます。
#!/Program Files/perl/bin/perl とか書くのでは面倒でやってられません(笑)

なお、これはApacheとperlが両方とも同じCドライブにインストールされているという前提での話です。ドライブ名が違う場合にはルートディレクトリも変わってきますので、
#!D:/usr/local/bin/perl とか記述するハメになります(笑)



Internet Information Server と perl.exeの関連付け

IISやPWSの場合はActivePerlのインストーラーが関連付けてくれますので不要です。
が、一応知識ということで「昔はこうやってたんだな〜」という程度に残しておきます。


レジストリエディタを開いて、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Script Map
というレジストリの項目を探す。

文字列(REG_SZ)で、 名前".pl"、データ"C:\usr\local\bin\perl.exe %s %s" を追加。
名前".cgi" データ"C:\usr\local\bin\perl.exe %s %s"も追加すると、拡張子cgiでもperlを起動させられます。

Perlis.dllを使用する場合には以下のように設定します。
.pl: C:\usr\local\bin\perlis.dll
.cgi: C:\usr\local\bin\perlis.dll






立ち上げたサーバーをインターネットで公開

以上の設定が完了したら、インターネット上で公開してみましょう。ここまではURLを http://127.0.0.1/ で指定するように書いてきましたが、これはlocalhostという意味を持つ自分のPCを示す特殊なIPアドレスです。インターネット上から、他の人が http://127.0.0.1/ と指定しても、見ることはできません。

そこで必要となるのが「グローバルIP」というものです。これは、インターネット上でコンピュータを識別する番地みたいなもので、同じIPがふたつのコンピュータに割り当てられることはありません。
HTTP/1.1のバーチャルホスト機能では1つのIPで別々のコンピュータが動作しているように見えますが、これは仮想的に複数に見せてるだけで実態は1つのコンピュータです。


グローバルIPの調べ方
「スタート→ファイル名を指定して実行」で、winipcfg と打ち込んでリターン。(NTの場合には、コンソールよりipconfig と打ち込んでリターン)
これで、IPアドレスが表示されるはずです。インターネットからアクセスしてもらう時は、このIPを相手に通知しましょう。(ただし、接続の度に普通はアドレスが変更されます。個人のサーバが時限鯖などと呼ばれる理由です)

なお・・・これは「モデムかTAでダイアルアップ接続」してる方の場合です。LANから接続していたりすると、これが難しかったり不可能だったりするので,その場合はサーバー管理者と相談してみてください。CATV等もLAN接続と同じなので、事情は同じです。

「グローバルIPは振ってない」と回答されたら絶望的なのであきらめてください。こればかりはどうしようもないかと思われます・・・・

が、交渉次第で何とかなる場合もあります。
DeleGateなどのプロキシサーバを経由させると、ひとつのグローバルIPを複数のマシンで共有させることも可能・・・・・なんですが、ここらへんはサーバー管理者の理解にかかってるのでなんとも・・・というか、こんな面倒なことをする管理者がいるとも思えません(笑)

あくまでも、これは通常のプロバイダ加入者を対象ってことにしてください。








用語解説などなど

CGI
Common Gateway Interface の略。今となってはCGIと言った方が分かりやすいかと思う。端的に言ってしまえば、チャットやサーチエンジン、アクセスカウンターなど、ブラウザから情報を送って、サーバー側がそれに対応した答えを返してくるものなどをCGIと言います。ブラウザから送られたデータを元にして、HTMLファイルを送り返すプログラムを「CGIプログラム」といい、現在はPerlと呼ばれるスクリプト言語が主に使用されています。

CGI=Perlというイメージが強いですが、プログラムが書ければ無理にPerlである必要はありませんし、PerlもCGI専用言語ではありません。Cなどと同じようなプログラミングも可能です。また、シェルスクリプトやASP、BASICやDOS用のバッチファイルなどもCGIとして動作可能です。また、バイナリ形式であればCでもJavaでも使えますが、バイナリーの実行を許可しているプロバイダはあまりありません(コンパイルのすると人間が理解できないものになってしまうので、ウイルスでも何でも走らせたい放題ってのが理由でしょう)

余談ですが、バイナリーのCGIは動作が非常に速いです。Perlも、他のスクリプト言語に比べれば速いのですが、やはりCが使えるプロバイダは貴重です。


CGI利用の上で気を付けていただきたいのは、あくまでもサーバー上で動くプログラムだということです。Windowsを使ってても、マナーの悪いプログラムがWindowsごとダウンさせてしまうのと同様に、記述を誤ったスクリプトは、サーバーを簡単にダウンさせてしまいます(例えば、無限ループしてしまうとか。while文の$i++を忘れてしまったとかの致命的なミスは確実にサーバーが止まります)

また、Windowsにセキュリティホールが存在するように、Perlでもセキュリティを突破することは可能です。理由は、UNIXには「nobody」という権限があるからなのですが、これを悪用すれば他人のファイルを読み書きが可能な場合もあります。プロバイダがCGIの設置を禁止している理由は、負荷が大きいのと、セキュリティの問題だけと言って過言じゃありません。
余談
通常のスクリプトは、マシン語に一行一行実行しながら翻訳しているインタープリタ言語。
Cなどのバイナリーは、事前にコンパイラでマシン語に変換しているファイル。翻訳の過程がないので高速。
Perlは、その中間。実行前に一括してコンパイルするので、インタープリタのように一行一行翻訳するよりかは速い。



Microsoft製サーバーのCGI動作
MSのサーバーの場合、UNIXで動作する条件と比較すると特殊な要因が多数あります。

まず、CGIとして動作させることが可能なディレクトリは、管理者があらかじめ設定した実行権のあるディレクトリである必要があります。これにより、ユーザーが自由にスクリプトを置いて実験してみるということは事実上不可能でしょう。(プロバイダの場合。自宅サーバーだと自由に扱えるのであまり関係なし)

次に、Perlスクリプトの中で相対パスが指定できないという問題があります。例えば、他のファイルをオープンする時、通常は
require './jcode.pl';
などと記述して呼び出します。

しかし、IIS/PWSの場合、
require "C:\\InetPub\\Scripts\\lib\\jcode.pl";
というように、Windowsで使用する絶対パスで呼び出すという特殊なルールがあります。

この制約は、厳しいものではありませんが結構面倒なものでした。また、htaccessを使用したいと考えてた私には、Apacheに乗り換える十分な理由になりました。



追記

「IIS用のスクリプトを書く時、かならず絶対パスで指定しなければならない」と思ってましたが、絶対パスを使用しなくてもいい手段がいくつかありました。

ひとつは、perl.exeを使わずにperlis.dllを使うという方法です。自宅サーバの場合は自分でインストールすればいいだけですが、プロバイダの場合はそうも行かないです。


もうひとつは、スクリプトの初めに、
chdir 'C:/wsrv/cgi-bin';
などと言うように、動作させる場所の絶対パスを記述してしまうという方法です。(#!/usr/local/bin/ の代わりに置くと考えてもらえればいいかな?意味は全然違ってくるけど)
この方法は手軽でいいのですが、絶対パスを指定することにより、他の環境で使う場合は書き換えが必要になってしまうことです。

個人的にはperlis.dllがいいかと思います。以前はインストールが面倒でしたが、今ではActivePerlのインストールで自動的にインストールされるので。


Windows NT Option Pack
Microsoftより無償配布されている、遊びたい人向けのおもちゃ。
というのは冗談で、インターネットがらみのアプリケーションを中心とした、Windows NT Server用の追加パッケージです。IIS4.0を始め、SMTP(メール送信サーバ)、NNTP(ニュースサーバ)、電子証明書認証局、スクリプトデバッガ、Index Serverなど、個人で使うには無駄なアプリケーション満載で、まさにおもちゃには最適です(爆)

これだけのものがなんと! 住所、氏名などの必要事項を入力するだけでダウンロードできます(でも、ここで入れる住所、氏名って本物じゃなくちゃいけないの?笑)

昔は、雑誌の付録などにもなっていましたが、出てから結構経ってるので今はダウンロードしかありません。とりあえず、このパッケージはどう考えても個人向けじゃないね。企業でも全て使ってる所は少ないと思うんだけど・・・

Windows NT Serverのみならず、NT Workstation、Windows95にもインストール可能なので、いろいろやってみたい人にはお勧めの逸品です(Windows98の場合は未確認。多分大丈夫?)

でも、使い方を知らないとHDDのゴミにしかならないので、いくらIIS4.0に魅力を感じても無駄なものにもなりかねません(というか、IIS/PWS以外はおもちゃ以外にはなりません。IIS/PWSだけインストールすれば十分でしょう。)


ダウンロードは、以下のMicrosoftのサイトより
Option Packのダウンロード

80MB余りありますので、多少の根性が要ります。(笑)



Microsoft Management Console (略称 MMC)
全てを統合したコントロール用のコンソールだとか。Windows2000ではコントロールパネルやデバイスマネージャなど、システムに関係する全ての設定がこれに集約されるとか。発想はいいんだけど、これってあまり使いやすくないからやめて〜〜〜〜〜(笑)

これは、オプションパックの中に含まれていますので、先進の環境にチャレンジした方はぜひ!すでに先進ではなくなりましたが(笑)


追記(Win2000発売後)

私はひじょーに心配してたのですが、さすがにOptionPackのそれとは比べ物にならないくらい洗練されていました。これなら問題ありません。



GUI
グラフィカル ユーザー インターフェイス の略。つまり、マウスを使って直感的に操作できる環境のことです(WindowsやMacの世界では大半がこれ)。これに対し、UNIXやDOSの世界は文字ベースなので(CUI=キャラクターユーザーインターフェイス)と呼ばれます。

例えばファイルをコピーする時に、Windowsではマウスで引っ張ってくるだけですが、DOSでは copy a.txt \backup\a.txt などと、コマンドを打って操作します。

GUI環境もいいのですが、同じ処理を繰り返す時はCUIの方が効率的です。臨機応変に使い分けるのが賢い使い方です。


htaccess / htpasswd
HTTPサーバで広く使われているアクセス制御の方法。制御したいディレクトリに.htaccessという名前のファイルを置いて、テキストで設定内容を書込みます。

例えば、拡張子cgiのファイルを実行ファイルだと認識させるには
AddType application/x-httpd-cgi .cgi
「Netscapeを使ってLZHファイルをダウンロードするとファイルが壊れる」といった問題に対処するには
AddType application/x-lzh .lzh

といった感じです。プロバイダでのCGIやSSIの動作には、これが必要な場合が多いです。

またアクセス制限にも.htaccessは使用され、ディレクトリの閲覧を許可・不許可、特定のホストのみ許可・不許可、などです。

これを、「user:password」で許可・不許可とすることも.htaccessへの記述で可能で、ユーザーリストをhtpasswdと呼ばれるユーザの名簿に記載して、それを.htaccessから照合することでアクセスを制限します。

注:htaccessは全てのプロバイダで使えるわけではありません。CGIを禁止しているような所ではまず使えないでしょう。


Perlis.dll
Windows用のPerlインタープリタには、perl.exeとは別に、perlis.dllというものもあります。これはIIS向けに開発され、perl.exeより高速に動作することがウリなので、必須ってわけではありません。

が、perlis.dllを使用することにより、IISでは絶対パスで指定しなければならないという泣きそうな仕様から開放されるので、可能ならこちらを使用する方がいいでしょう。AvtivePerlではすでにパッケージされているので、別途インストールする必要はありません。


AN HTTPDでperlis.dllを使用する場合には オプション→一般で、「.pl.cgiをperlis.dllで実行する」にチェックを入れるだけです(注意:必ずperl.exeと同じディレクトリにperlis.dllが存在することを確認してチェックしてください)











参考になるWebサイト
(全て勝手にリンクしてます。問題があればおっしゃってください)


AN HTTP Server Home Page
優秀な個人向けサーバーソフトを作られた偉大な方のサイト。


The Apache Software Foundation
その名の通り、Apacheの本家です。Apacheの名前の日本サイトもあります。


カントリーWindowsNTワールド
東広島のプロバイダ、カントリーインターネットのNT向けのCGI入門です。
非常に分かりやすく説明されているので、Perlってなあに?って方は
かなり理解が深まると思います。


AN HTTPD
AN HTTPDのサイトからもリンクされていますが、AN HTTPDに関するサイトです。
私が書いたのよりはるかに親切に書いてあります(笑)


WinQ&A
ここも、トラブルが起きるとよく使います。
BBSはさすがに情報が早い・・・・
M$のサポートページより早いかも・・・・(笑)


Microsoftのサポートコーナー
いや、これもかなり役に立ちます。ここで解決することも多いですし。
でもね、途中から英文になってるセキュリティ情報を見たりするとね、
Microsostの方々も大変ね〜って同情しちゃう(爆)
とりあえず、日本語化すら諦める物量のバグがある製品って出荷して
いーんでしょーか?


東レ経営研究所 Windows NT/2000 Tips and FAQ
NT環境で分からないことがある時、ここを見ると結構解決するように思います。


ITNAVI.com
サーバー立ち上げではなく、WindowsNTのサイト・・・です(笑)
私はNT派であり9x系には否定的ですので、NT導入の参考になればと思います。
現在のCPU(Intel-P6系、AMD-K6〜K7系)は、Win9xで使うものではありません。
これらのCPUは16bit処理を苦手とするCPUであり、NTで使ってこそ高速に動きます。



窓の杜(サーバー)
ここには、他のサーバーソフトも多数あります。
今回は特に取り上げませんでしたがFTPサーバも立ち上げたい方はここから。










以下は、これを書いた時点でのサーバー環境
現在はLinux+Apache/1.3.9が中心の環境なので、NT Serverは検証できません。

Windows NT 4.0 Primary domain control server SP5
 ・Apache 1.3.6
 ・DeleGate 5.9.1
 ・Microsoft Internet Information Server 4.0
 ・Microsoft SMTP Server
 ・Microsoft NNTP Server
 ・Microsoft Transaction Server
 ・Microsoft Certificate Server
 ・Microsoft DNS Server
 ・Microsoft DHCP Server

Windows NT 4.0 Workstation SP5
 ・AN HTTPD 1.19
 ・Microsoft Peer Web Server 3.0






戻る


written by Lina