An HTTP Server導入メモ

Warning.

以下で紹介しているAn HTTP Serverは、もはやメンテナンスされていません。使うべきではありません。

Windows機にWebサーバーをインストールし,手元の機械でCGIプログラムのテストなどができるようにする。インターネットへ常時接続していれば,そのまま外向けのサーバーとして公開もできる「かも」。

Windows用のWebサーバーソフトとして,AN HTTPD(AN HTTP Server, AnWeb, AN HTTP Daemon; しかし別名が多い)を使ってみる。

AN HTTPD Home Page

インストール

インストール自体は,ファイルをダウンロードして,展開すればいい。そこまではいい。が,設定を大いにいじる必要がある。しかしデフォルト設定,なんか無茶苦茶でない?

以下,インストール先は,D:\apps\httpd とする。それ以外の場合は適当に読み替えてほしい。

[一般]タブ

項目説明
ドキュメントルート: デフォルトは,D:\apps\httpd 。これではこの下の内容がクライアントから丸見えになる。新たに d:\apps\httpd\htdocs ディレクトリを作成して,ここにする。
/~ユーザー名 公開するWebサイトのデータは,httpdのフォルダよりか,ほかの自分の文書などと同じフォルダに保存した方がバックアップが取りやすい。ここではドキュメントルートの下にしか設定できないので,この左のチェックを外す。[エイリアス]タブで設定する。
リモートホストを取得: CGIでは取得できた方が便利。「CGI/SSIでは有効」にする。
SSIを許可する: SSIを有効にするかは好みだが,有効にする場合でもindex.htmlだけ特別扱いすることはないだろう。/index.htmlのチェックを外す。
NPHスクリプトではサーバから接続を切る: なぜこんなオプションが? 外す。
拡張子/実行プログラム... .rbを追加。.cgiもperlとは限らないので,#!を見るようにする。
CGI出力を検査 ヘッダーにエラーがあるとき,500を返すようにする。チェックを入れる。

[エイリアス]タブ

項目説明
実行パス: /scriptsは不要。チェックを外す。
一般パス: /~ユーザー名 => c:\home\ユーザー名\public_htmlなどを追加。
拡張子: index.html以外,.htmを探してもらう必要はないので,チェックを外す。

Rubyスクリプトを動かしてみる

さっそくCGIを試してみよう。Rubyで次のようなスクリプトを書く。

#!D:\cygwin\usr\local\bin\ruby.exe

print <<EOF
Content-Type: text/html

<body>
<font size="+3">It is running!</font>
</body>
EOF

なんか,#!に続けてWindowsのパス名を書くのって違和感があるなぁ。

実行結果;

ふーむ,なかなかいいんじゃない?

認証

ユーザーを区別する必要がある場合,自分でパスワードなどにより認証を行うスクリプトを書いてもいいが,Webサーバーの認証機能を使うと簡単。

[ユーザ認証]タブで設定する。

項目説明
認証名/パス...: 認証を行うディレクトリを設定する。パスは仮想パス。ファイル単位では設定できない。

ファイル単位で設定できないのが,ちょい痛い。