1.はじめに

    1. 何ができるのか

    2. CEHTTPはWindowsCE(ver2.11以上)で動作するWEBサーバーです。ネットワークを通して広くHTMLなどの文章を公開できます。

      Perlなどの一般的なCGIは、まだ動作しません。その代わりC++で拡張できる手段を用意しています。

      基本認証をサポートしています。クライアントに対してユーザー名とパスワードを要求することが可能です。

    3. ApacheやIISと何がちがうのか

    4. 小さく、早い を重視しています。

      CEHTTPはWindowsCEで動作するように作成された専用Webサーバーです。全てC++で記述されています。マルチスレッドで動作し、常にストレステストを行いながら実装をしています。若干、実装の美しさよりも効率を重視しています。

      その代わり、あまり大きなデータを取り扱うのは苦手かもしれません。

      ApacheやIISはサーバースペックのPCで効率よく動作するように設計されています。WindowsCEには若干重たい気がしています。

      またウィルスに感染しにくい特徴があります。世に出回っている多くのサーバーウィルスは、攻撃対象をIntelのPentiumと想定しています。NIMDAのようなウィルスにはまず感染しないでしょうし、またウィルス製作者もCEHTTPは相手にしていないでしょう。

    5. 何につかうのか

      何につかっても問題ありませんが、

      私はADSL等の常時接続環境で、古いWindowsCE機が復活し、お役に立てればよいと考えています。また、ちょっとイベント会場などでHTMLを配信したいときに利用するのも良いと思います。

      WindowsCE機ですから気軽に持ち運べて、しかもすぐにリセットができます。

2.インストールの方法

    1. ダウンロード

      http://www001.upp.so-net.ne.jp/ishi/

      から最新版のCEHTTPをパソコン上にダウンロードしてください。

    2. 解凍する

      ダウンロードしたファイルを解凍ツール(たとえばlhaca等)で解凍します。

    3. WindowsCE機にコピーする

      自分の持っているWindowsCE機のCPUにあわせて、ファイルをWindowsCE機にコピーします。

      ARM用 cehttp2.ARM.CAB
      SH3用 cehttp2.SH3.CAB
      SH4用 cehttp2.SH4.CAB
      MIPS用 cehttp2.MIPS.CAB

      自分のWindowsCE機がどのCPUかは、コントロールパネルで「システムのプロパティ」を開き、「デバイス」タグを見れば判別できます。インターネット上で検索してもOKです。

      WindowsCE機にコピーできたら、CE機上でCABファイルを実行してください。自動的にインストーラーが起動し、CEHTTPがインストールされます。

    4. インストールされるファイル

      インストールされるファイルとディレクトリは下記のようになります。

      「\program files\cehttp\cehttp2.exe」

    5. 実行する

      インストールが完了したら、まずは実行してみましょう。

      ここで最低限行っておかなくてはならないことは「WindowsCE機をネットワークに接続しておく」事です。Webサーバーですからネットワークに接続されていることが必須条件です。

      もし、初めてCEHTTPを実行したのならば、上記のようなダイアログが現れます。これはCEHTTPが「ドキュメントルートがないので、作成しても良いか?」と聞いています。

      ここでは「はい」をクリックします。
      そうすると自動的に「\wwwroot」フォルダと、その中に「index.html」ファイルが自動的に生成されます。

      上記のような画面になります。(HPC/Pro/2000の場合)

      IP Address は現在CEHTTPが認識しているIPアドレスです。

      もしネットワークに接続されていない場合、ここには「127.0.0.1」と出ているかもしれません。このような場合は他のPCからはCEHTTPにアクセスできません。まずWindowsCE機をネットワークに接続して、CEHTTPを再度起動してください。

      アイコンをタップすると、CEHTTPの画面が非表示になります。再度アイコンをタップすると、CEHTTPが表示されます。

      Status は、現在のCEHTTPの状況が表示されています。
      「Listen...」と表示されていると、CEHTTPはうまく動作しています。
      「Listen failed.」と表示されている場合は、なんらかの理由で起動が失敗している状態です。CEHTTPを二つ立ち上げたりすると、CEHTTPの中でポート番号を取り合って、失敗しています。

      ここで他のPCからアクセスしてみましょう。上記の例だとIPアドレスが「192.168.2.31」となっていますから、

      http://192.168.2.31/

      とブラウザのアドレスに打ち込めば良いことになります。

      「Can you see me?」とブラウザに表示されたらOKです。インストールは完了です。

    6. その他のファイル

      必要であれば、ログファイルを取る拡張DLLなどを同様な方法で追加インストールします。

3.設定

    1. 設定ダイアログ

      メインダイアログの「Setting...」をクリックすることによって、設定ダイアログが現れます。

       

    2. ドキュメントルートの設定

      ドキュメントは、Webアクセスの際にルートとなる場所のことです。デフォルトでは「\wwwroot」となっています。

      もし、「\wwwroot\index.html」というファイルがあれば、「http://<IPアドレス>/index.html」というURLでアクセスできることになります。

      「\wwwroot\cehttp\index.html」というファイルは「http://<IPアドレス>/cehttp/index.html」というURLでアクセスできます。

       

    3. 拡張ルートの設定

      サーバー拡張を動作させるための特別なフォルダを指定します。デフォルトでは「\wwwroot\scripts」となっています。

      拡張ルートは、必ず「ドキュメントルート」の下に設定されていなければなりません。

      このディレクトリは拡張子が「.CHX」と「.DLL」のファイルにアクセスしたときだけ、CEHTTPがリクエストを処理する特別なフォルダです。普通のHTMLファイル等はここから読み出せません。

      1.CHXとDLLファイルがダウンロードされることを防ぎます。
      2.CHXとDLLファイルが実行することを許可します。

    4. ポート番号の設定

      Webサーバーが聞き取り(listen)を行うポート番号を指定します。通常Webサーバーは80番で聞き取りを行います。

      たとえばポート番号8081番で聞き取りを行った場合、ブラウザは下記のようにしてアクセスできるようになります。

      http://<IPアドレス>:8081/index.html

    5. サーバスレッド数の設定

      Webサーバー数(同時アクセス)を設定します。初期値は8スレッドです。
      数が大きくなると、同時アクセス数が増えて、高負荷時の応答性がよくなりますが、メモリをその分消費します。

4.基本認証

  1. 基本認証とは

    Webサーバーにアクセスをする際に、クライアントにユーザー名とパスワードを要求することができます。これを認証といいます。

    CEHTTPでは「基本認証(Basic authoraization)」をサポートしています。

    基本認証が掛かったページをブラウザから参照しようとすると

    上記のようなダイアログが出てきます。

    ユーザーはブラウザからユーザー名とパスワードを入力し、Webサーバー側で認証されると、はじめてページを参照することができるようになります。

    BBSの管理用ページなどは基本認証でアクセス制限する必要があるでしょう。また、ログファイルに認証したユーザーが残ります。誰がアクセスしたのか厳密に管理したい場合などに使ってください。

  2. 基本認証ファイルの書式

    認証ファイルはデフォルトでは「access.cha」というファイル名になります。

    下記の書式でテキスト形式で記述します。

    <username>:<password>

    たとえば、ユーザー名「taro」、パスワードが「yamada」を設定したい場合、

    taro:yamada

    という風に記述します。ユーザー名とパスワードは連続して何人でも記述できます。

    taro:yamada<改行>
    ichiro:suzuki<改行>

    SJIS形式で保存してください。WindowsCE上のWordなどはデフォルトではunicodeで保存しますので、PC上で作成し、後ほどWindowsCE機に転送すると良いでしょう。

  3. 基本認証ファイルの置き場所

    基本認証ファイルを配置する場所は、認証を掛けたいフォルダです。

    基本認証を配置した場合、そのフォルダ配下全てのフォルダに認証の効力は及びます。複数の認証ファイルがある場合、もっとも近い場所にある認証ファイルを利用します。

    例;

    [\wwwroot]
    +access.cha -A

    [\Japan]
    ||
    |+access.cha -B
    |+[\Tokyo]

    上記のような配置であったとします。認証ファイルは
    \wwwroot\access.cha(A)
    \wwwroot\japan\access.cha(B)
    があります。

    このとき、URL

    http://<サーバー>/」 はaccess.cha(A)に影響されます。
    http://<サーバー>/Japan/」 はaccess.cha(B)に影響されます。
    http://<サーバー>/Japan/Tokyo/」 はaccess.cha(B)に影響されます。

    access.cha(A)だけ配置すると、全てのアクセスがaccess.chaによる認証となります。

5.レジストリで設定できる値

    CEHTTPはいくつかの設定値をレジストリで操作することができます。レジストリツールについては、フリーソフトが沢山ありますので、それらを利用してください。これらの値は、それほど変更する理由はありません。

    レジストリ保管場所は[HKEY_LOCAL_MACHINE\SOFTWARE\ISHISOFT\CEHTTP]です。

    キー名 デフォルト値 解説
    Port DWORD 80 Listenするポート番号
    Timeout DWORD 3000 タイムアウト値

    現在は利用されていません。 タイムアウト値参考:
    リクエスト受付時間は合計90秒です。
    データ送信時間は無通信時間が5秒までです。

    KeepAlive DWORD 1 キープアライブ

    キープアライブとは、一度接続した場合、連続してリクエスト処理を行う処理のことを言います。HTTP/1.0以前の実装では、一回のリクエストを行うたびに、一回のソケット接続を行っていました。しかしながら昨今のHTMLはGIFなどの画像が多く利用されており、一枚のページを表示するのにも、3〜10回ほどサーバーにリクエストが発生します。ソケット接続はコストのかかる処理であり、この負荷を軽減するためにHTTP/1.1では、キープアライブの実装が求められています。

    StartServers DWORD 8 サーバー数

    CEHTTPはマルチスレッドで動作します。
    このスレッドの数を指定できます。
    サーバー数を大きくすると、高負荷時に応答が良くなりますが、メモリを多く消費します。
    サーバー数を小さくすると、メモリ使用量が減ります。

    DocRoot STRING \wwwroot ドキュメントルートディレクトリ

    設定ダイアログで設定できます。

    CgiRoot STRING \wwwroot\scripts .dll.chxが動作可能なディレクトリ

    必ずドキュメントルート配下になるようにしてください。

    DefaultDoc STRING index.html デフォルトドキュメント

    ファイル名を指定されなかった場合に利用されるファイル名です。

    BasicAuthFile STRING access.cha 基本認証ファイル名です。

    「access.cha」というファイルは、通常CEHTTPは特別なファイル名として扱い、アクセスできません。
    どうしてもaccess.chaというファイルが利用したい場合はここで変更してください。

    LogFile STRING \access_log.txt ログファイル名

    アクセスログを取得している場合、ログの保管場所となります。

    たとえばシグマリオンIIが内蔵している「カスタム メモリ」にログファイルを保存したい場合は
    「\カスタム メモリ\acess_log.txt」とします。

    LogSize DWORD 102400 ログファイルサイズ

    ログファイルが無限に増えていくのは困りますので、このサイズで制限を掛けます。

    ファイルサイズが102400(=100KB)を超えると、バックアップを取ってログファイルを新たに作成します。

    つまりログファイルは、バックアップをあわせて最大(LogSize)*2 となります。

    DNSLookup DWORD 0 DNSルックアップ

    アクセスを受けたときにDNSlookupを行う場合は0以外を指定します。
    これによって、dll.chx呼び出しの際には「REMOTE_HOST」がセットされます。
    またログファイルにドメインネームが書き出されるようになります。
    ただし応答性は悪くなります。

     

6.MIMEタイプ設定

  1. MIMEタイプとは

    MIMEタイプとは、ファイルの拡張子とファイルの中身を結びつける拡張子です。たとえば、index.htmlの拡張子「.html」は、HTMLであるという意味を持ちます。

    たとえば、あるファイルが下記のように記述されているとします。

    <html><body><b>こんにちは</b></body></html>

    このファイル名が「test.html」だと、ブラウザは

    こんにちは

    と表示しますが、「test.txt」だと

    <html><body><b>こんにちは</b></body></html>

    と表示します。

    前者は「Content-type: text/html」、後者は「Content-type: text/plan」とサーバーが指定してブラウザに送信します。これを受けてブラウザ側で、テキストとして表示を行います。

  2. なぜ必要なのか

    拡張子が「.html」なのだから「HTML文章でいいのでは?」と思ってしまいますが、以外とコンテンツタイプは重要です。

    ブラウザが「http://hogehoge/cgi.pl」というファイルをリクエストしたとします。このとき拡張子は「.pl」が提供するファイルは一体「Content-type: txt/html」なのでしょうか。それとも「Content-type: image/gif」なのでしょうか。

    当然Perlですから、どちらのデータを返す可能性があります。

    PerlでCGIを記述したことがある人は、先頭行に「Content-type: txt/html」を記述したことがあると思います。ブラウザは拡張子だけでは、送信されてきたデータが何者であるのかを決定できません。そのためWebサーバーはブラウザに「Content-type:」 を送信するのです。

    MIMEタイプに登録しておけば、拡張子にあわせて適切な「Content-type: 」を送信してくれます。PerlなどのCGIはそれを自分で記述するのです。

  3. デフォルトのMIMEタイプ

    CEHTTPでは、あらかじめいくつかのMIMEタイプが設定されています。

    .html text/html
    .htm text/html
    .gif image/gif
    .png image/png
    .jpg image/jpeg
    .jpeg image/jpeg
    .txt text/plain
    .css text/css
    .bmp image/bitmap
    .tif image/tiff
    .tiff image/tiff
    .mpg video/mpeg
    .mpeg video/mpeg
    .pdf application/pdf
    .ls application/x-javascript
    .js application/x-javascript
    .mp3 audio/mp3
    .m3u audio/x-mpegurl
    .wav audio/x-wav
    .mid audio/mid
    .midi audio/mid
    .swf application/x-shockwave-flash

  4. MIMEタイプの追加

    上記MIMEタイプの他に追加したいMIMEタイプがある場合、MIMEタイプを追加します。

    MIMEタイプ追加ファイルは「AddType.txt」というファイル名になります。

    下記の書式で、テキスト形式で記述します。

    <拡張子>:<対応するコンテンツタイプ>

    たとえば、拡張子「.hdml」、コンテンツタイプ「text/x-hdml;charset=Shift_JIS」を設定したい場合、

    .hdml text/x-hdml;charset=Shift_JIS

    と記述します。この記述をしないと、WebサーバーはMIMEタイプを決定できず、単なるバイナリとして送信します。
    CEHTTPでは認識できないMIMEタイプを全て「Content-type: application/octet-stream」としてブラウザに送信します。

    MIMEタイプはいくつでも記述することができます。auのEZWebに対応するコンテンツを記述する場合は、

    .hdml text/x-hdml;charset=Shift_JIS<改行>
    .wml text/vnd.wap.wml;charset=Shift_JIS<改行>

    と記述します。

  5. MIMEタイプファイルの置き場所

    MIMEタイプファイルを配置する場所は、CEHTTPがインストールされた場所です。
    CEHTTPは起動時に「AddType.txt」というファイルを探して読み込みを行います。

7.ログファイル

  1. ログファイルとは

    CEHTTPは拡張DLLによってログを取ることができるようになります。これによって、アクセスがあったのかを記録に残す事ができます。

    cehttplog.dll をCEHTTPがインストールされたディレクトリと同じ場所に配置することによって自動的にログファイルが取得されます。

    各種設定は 「レジストリで設定できる値」を参照してください。

  2.  
  3. ログファイルの書式

    Apache標準形式を参考にしています。

    192.168.2.31 - user [11/Feb/2003:14:58:25 ] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

    上記のようなログが取れます。詳細は下記のようになります。

    192.168.2.31 IPアドレス
    - ident - 未使用
    user 基本認証で認証したユーザー名
    [11/Feb/2003:14:58:25 +900] アクセス日時
    "GET / HTTP/1.1" リクエストの内容
    304 リクエストの結果
    - 送信したバイト数
    "Mozilla/4.0" クライアントが利用したブラウザ名

     

  4. ログファイルの置き場所

    デフォルトでは「\access_log.txt」になります。この値はレジストリ操作によって変更できます。

  5. 自動バックアップ

    ログファイルはある一定の大きさになると、自動的に一部バックアップを作成し、新たにファイルを作成します。
    バックアップファイル名は末尾がアンダースコアに置き換えられたものです。

    「access_log.txt」->「access_log.tx_」

  6. 注意点

    ログファイルを取るのはコストが掛かります。高負荷時にはパフォーマンスの足かせとなります。もし、ログファイルが必要ないのならば、「cehttplog.dll」の名前を「_cehttplog.dll」のように変更しておくか、削除するとログは取得されません。

     

8.拡張ファイル

  1. 拡張ファイルとは

    CEHTTPはDLLにより拡張が可能となっています。
    拡張ファイルにはCHX形式、DLL形式、MOD形式のものがあります。

    拡張ファイルについては、各拡張ファイル同梱のヘルプ等を参照ください。

    また作成方法は「CEHTTP テクニカル マニュアル」を参照してください。

  2. CHX/DLL拡張ファイル

    拡張子「.chx」/「.dll」のファイルは、CGIディレクトリ配下で動作します。

    ブラウザより呼び出されたときに、CEHTTPがダイナミックにロードし、実行します。

  3. MOD拡張ファイル

    拡張子「.mod」のファイルは、CEHTTPがインストールされた場所に配置してください。

    CEHTTPは起動時にmodファイルを検索します。たとえば「ns.mod」というMOD拡張ファイルがあれば、MIMEタイプリストに動的に「.ns」を追加します。「.ns」拡張子を持つファイルがリクエストされた場合、登録されたMOD拡張ファイルが呼び出され処理されます。

  4. 注意点

    不完全な拡張ファイルはCEHTTPを不安定にします。

9.エラーページファイル

  1. エラーページファイルとは

    HTTPレスポンスにあわせた独自のエラーページを送信する事ができます。
    たとえば、存在しないページをリクエストされた時に、あらかじめ作成しおいたHTMLファイルを送信したり、拡張ファイルを呼び出したりする事が可能です。

    「404 Page not found.」を表示する際に、トップページへのリンクを表示するなどに利用すると良いでしょう。

  2. エラーページ設定ファイルの書式

    「ErrorDocument.txt」というファイルを作成し、CEHTTPがインストールされた場所に配置してください。

    下記の書式で、テキスト形式で記述します。

    <エラー番号><空白><エラーページ>

    たとえば404エラーが発生した時に /error/404.html を表示したい場合は次のようにします。

    404 /error/404.html


yu-ishi@ya2.so-net.ne.jp
Copyright (C) 2003 IshiSoft Allrights reserved.