Walrus,Digit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

ApacheCE

編集

General Paranoyaxcで公開されているWindows CE用のApacheに関する情報。

ちょっと特殊な部分がありますが、PerlCEと組み合わせてローカルでCGIの試験もできるようです。 PerlCEはすでに、動作を確認しています。

Apache for Windows CE ドキュメント対訳

編集

前半部「ApacheCE」は、2002年11月28日現在の上記サイトの和訳です。 後半部「apache-ce.txt」は、2002年11月28日現在のapache-arm-ppc-wce300に同梱されているファイルです。 過去に上記サイトからリンクされていたREADMEに情報を追加したものになっているようです。

Rainer Keuchel氏にはメールで公開の許可をいただきました。

ApacheCE

ApacheCEはApache1.3.20 web-serverをWinCEに移植したものです。 これは、シンプルなCGIアプリケーションをサポートします。 この移植はプロフェッショナルなWebサーバーではなく、電車の待ち時間にHTMLやCGIを書き、テストするためのプラットフォームであることを目的としています。


ApacheCE is a port of the Apache 1.3.20 web-server to WinCE. It supports simple cgi apps. The port is not intended to be used as a professional web-server, but as a test platform for writing html and cgi code while you're waiting for the train.

News

2002年10月19日(土)

  • サブプロセス(PERL5LIB、XCE_TRACE、XCE_TRACE_FILE)に正しく環境変数が渡されない問題のフィックス。
  • perlで書かれた、madplayを利用する簡単なMP3プレイヤー(音楽プレイヤー)が入手できます。

Sat Oct 19 2002:

  • Fixed some problems with certain environment variables that were not passed to sub-processes (PERL5LIB, XCE_TRACE, XCE_TRACE_FILE).
  • There is a simple mp3 player (audio-player) available which is written in perl and uses madplay.

Screenshots

News

2002年5月4日

  • CGIにパイプを利用する新しいビルドです。環境(変数)は共有メモリを介して渡されます。celib.dllを利用する実行ファイルとしてのみ動作します。arm-hpc-wce211用も新しいビルドになっています。

Sat May 04 2002:

  • New builds that use pipes for cgi. Environment is passed via shared memory. Only works with executables that use celib.dll. Also new build for arm-hpc-wce211.

Problems

  • WinCE2.11デバイスでは、クライアントが同一マシン上にあるときに、ソケットがクローズ時に正しくフラッシュされないようです。おそらく、winsock.dllにSO_LINGERバグがあるのでしょう。クライアントがエラーを検出し、一部を再取得するかも知れません。いくつかの個所でSleep()を呼ぶことにより解決を図りましたが。完全な解決には至りませんでした。
  • IEは、インターネットへのダイアルアップ接続がまったく作られていない状態でのローカルホストへの接続にバグがあるように見えます。このダイアルアップがアクティブである必要はありません。
  • IEはキャッシュにも問題があります。

  • On WinCE 2.11 devices, sockets seem not to be flushed correctly on close when the client runs on the same machine. Maybe an SO_LINGER bug in winsock.dll. The client may detect an error and do partial regets. This slows things down. I have tried to fix this with some Sleep() calls but it did not fix the problem completely.
  • IE seems to have problems connecting to localhost when there is not at least one internet-dialup connection created. This dialup need not be active.
  • IE also has problems with caching.

apache-ce.txt

Apache 1.3.20 for WinCE

  • Time-stamp: <04/05/02 20:17:39 keuchel@netwave.de>

ApacheCEはWinNTへの移植を元に、汚い変更をたくさんしています。 これは私のcelib.dllと一緒にコンパイルされています。

ApacheCEはたった1つのプロセスと10のスレッドしか使えません。 ローカルでの試験サーバにする分には問題ないでしょう。

ウィンドウはトレイアイコンをクリックすることで表示/非表示に切り替えられます。

何か問題が起きた時は、\apache-stderr.txtでメッセージを見つけられるでしょう。

HKLM\EnvironmentのAPACHEDIRに、サーバーのインストールディレクトリを設定することができます。 そうしなかった場合、Apacheバイナリのパスが採用されます。


ApacheCE is based on the WinNT port, with lot's of dirty modifications. It compiles with my celib.dll.

ApacheCE uses only one process and allocates only 10 threads. This should be no problem for a local test server.

The window can be hidden/shown by clicking on the tray icon.

If something goes wrong, messages might be found in \apache-stderr.txt.

You can set APACHEDIR in HKLM\Environment to point to the server installation dir. Otherwise the path of the apache binary is taken.

CGI (OLD)

CGIは現在、一度に1つのリクエストだけを受け付けることができます。 環境変数は\cgi-env.txtに出力され、CGIからの出力は\cgi-ut.txtに存在します。 POSTによる入力は\cgi-in.txtにあります。

WinCEでは環境変数やファイルハンドル、パイプを子プロセスに渡すことができないので、スクリプトはこれらのファイルを処理/作成する必要があります、

\cgi-out.txtは子プロセス/スクリプトが削除されると、サーバーによって処理されます。

これらのファイル処理の例として、printenv.plを参照してください。

Interpreter Selectionのためにレジストリを使うには、下の例のようにhttpd.conf内で"ScriptInterpreterSource?"を設定する必要があります。 この例の行を使わないことも方法もなくはありません。 もちろん、HKEY_CLASSES_ROOTへの適切な設定が必要となります。


CGI currently only works with one request at a time. Environment variables are written to \cgi-env.txt and output of the cgi is expected in \cgi-out.txt. Input from post is in \cgi-in.txt.

It's the script's Professional resume services responsibility to process/create these files, as it is not possible in WinCE to pass environment, filehandles, pipes to child processes.

\cgi-out.txt is processed by the server when the child/script has terminated.

See printenv.pl for a sample of how to process these files.

CGI (NEW)

今版ではCGIはパイプを用いて動作します。 これは、celib.dllを利用するプログラムのみがCGIとして利用できることを意味します。

今版では環境(変数)は直接子プロセスに引き継がれますが、いまだにenvファイルにも書き込まれます。

新しいサンプルとして、printenv2.plを参照してください。


CGI now works with pipes which means that only programs that use celib.dll can be used for CGI.

The environment is now passed directly to child processes, although the env file is still written.

See printenv2.pl for a new sample.

CGI

Interpreter Selectionのためにレジストリを使うには、下の例のようにhttpd.conf内で"ScriptInterpreterSource?"を設定する必要があります。 あるいは、shebang行を使うこともできます。 もちろん、HKEY_CLASSES_ROOTへの適切な設定が必要となります。


To use the registry for interpreter selection, you must set "ScriptInterpreterSource?" in httpd.conf, as in the example below. Otherwise the shebang line will be used. You need the right entries in HKEY_CLASSES_ROOT, of course.


<Directory "/speicherkarte/apache/cgi-bin">
	ScriptInterpreterSource registry
	AllowOverride None
	Options None
	Order allow,deny
	Allow from all
</Directory>

Installation

  • tarballをPC上で展開します。WinZipを使う時は、smart-crlf-conversionを切ってください。
  • apache/conf/httpd.conf 内のパスやその他のエントリを修正します。
  • Apacheをあなたのデバイス上のディレクトリにコピーします。
  • celib.dllを\windowsディレクトリにコピーします。
  • Perl CGIスクリプトを使用したい時は、デバイス上の.pl/plfileエントリーをチェックしてください。

  • Unpack the tarball on your PC. When you use WinZip, turn off smart-crlf-conversion.
  • Fix paths and other entries in apache/conf/httpd.conf.
  • Copy the apache directory to your device.
  • Copy celib.dll to your \windows directory.
  • If you want to use perl cgi-scripts, check the .pl/plfile entries in the registry on your device.

Problems/Todo

  • Apacheは自身のウィンドウを閉じる時にハングするでしょう。この問題は解決できたと思います。
  • IEはCGIの出力がContent-type: text/plainで、拡張子が.plの時にファイル保存ダイアログを出します。これはIEのバグのようです。
  • dub()コールが実装されていないため、stderrをエラーログにリダイレクトすることはできません。メッセージは「了解」してやってください。
  • CGIリクエストはサーバー上でmutex-lockされるはずです。
  • Perlはコンソールを表示しないべきでしょう。non-console Perlをビルドしましょう。

コンソールにリンクされた新しいプログラムは、現在の版は--noconsoleオプションをチェックします。 SHELL/OPEN/COMMANDのエントリにこのオプションを入れてやるべきでしょうが、しかし以降は.plファイルをダブルクリックしてコンソール付きで開始させることはできなくなります...。

  • Perl dllは直接ロードされ、呼び出されます。これはPerl CGIを非常に速くするでしょう...。
  • 標準ファイル要求が非常に制限されますので、PPC上でPerl CGIスクリプトを編集するのは大変でしょう。
  • PPCEM上にトレイアイコンが現れますが、クリックしても何の効果もありません。
  • エミュレーションでのPerlは、exit時のファイルの自動クローズに問題があります。コンソールはエミュレーション時、exit()を呼びません。
  • PPCEMのタスク切替は、ちょっと混乱させられます。メモリーアプレットを使う必要があります。これは常に働くわけではありません。タスク切替を書く必要があるのでしょう。

  • Apache might hang the machine when closing it's window. Seems to be fixed now.
  • IE shows file save dialog when cgi-output has Content-type: text/plain and the script has .pl extension. Seems to be IE bug.
  • stderr cannot be redirected to error log due to currently unimplemented dup() call. Ignore this message.
  • CGI requests should be mutex-locked in the server.
  • Perl should not show the console. Maybe build a non-console perl.

New programs that are linked with the console now check the option --noconsole. You would have to put this option in the SHELL/OPEN/COMMAND entry, but you cannot start .pl files with console by doubleclicking anymore...

  • The perl dll should be loaded and called directly. This would make perl cgi much faster...
  • Editing perl cgi-scripts on PPC is difficult because the standard file requester is very limited.
  • The TrayIcon? appears in PPCEM, but clicking it has no effect.
  • Perl in Emulation has auto-close-file problem on exit. Console does not call exit() in emulation.
  • Task-switching on PPCEM is a bit complicated. You have to use the memory applet. It does not work always. Maybe write a task switcher.

このページへのご意見、ご質問

(ここにお書きください。)

一行コメント

  • 2002-07-22 (Mon) 00:59:02 Nathan? : インストール方法、使い方など教えて下さい。
  • 2002-10-21 (Mon) 17:48:05 kermit : 僕の WinCE でも動くかな?
  • 2002-10-23 (Wed) 02:20:35 塚本牧生 : 見たところ、ほとんどのCE環境で動くみたいです。動かないのは、むしろ新しすぎるもの、という感じで。
  • 2002-11-28 (Thu) 14:09:41 hiro? : 「詳細な情報はREADMEとCGISampleをご覧下さい。 」とありますがリンクが切れています。このファイルがあれば添付してください。
  • 2002-11-28 (Thu) 14:14:20 hiro? : Apacheの設定と起動方法がわかりません。もう少し詳しく解説してください。
  • 2002-11-28 (Thu) 15:34:21 塚本牧生 : READMEとCGISampleはサイトの改定に伴い削除されたようです。サイト対訳文は現在の内容に合わせて更新しました。後半部のapache-ce.txtは当時のREADMEを更新したもののようですので、参考になるかと思います。
  • 2002-11-28 (Thu) 15:35:23 塚本牧生 : Apacheの設定に就いては、Apacheのサイトや日本語解説サイトで調べてください。私は実際に使ってはいないので、分かりません。起動はCEConsoleからで良いと思います。
  • 2002-11-29 (Fri) 05:55:02 hiro? : 記事を書く以上、ある程度その内容に責任があると思います。シグマリオン2(1週間前にこの記事を見て購入)でApacheのパラメータを-sや色々と変えて試しています(Win98やWin2kを参照して)がどうも旨くいきません。
  • 2002-11-29 (Fri) 06:07:22 hiro? : Apacheを実行した時のログファイル(apache-debug.txtやAPACHE-stderr.txt)を参照しながら、パラメータの設定を色々と試しています。
  • 2002-11-29 (Fri) 08:55:44 塚本牧生 : まず、このサイト全般について現状でフォローできる部分はしますが、それ以上はコストが捻出できないのでフォローできません。現在の興味の対象で優先順位が高かったり、頼まれて断りに杭などの例外はありますが。それから、原文が言葉足らずであるという部分はKeuchel氏にお問い合わせください。
  • 2002-11-29 (Fri) 08:58:26 塚本牧生 : もし、使ってもいない者が訳文を持っていてはいけない、と信じるのであれば、ご自由にどうぞ。このサイトはオーナーもビジターも関係なしにページを追加、編集、削除できるWikiです。間違えて消されたように見える場合にはページを復旧していますが、hiroさんの意志で消したことがはっきりしていて、(私以外の人からの)hiroさんの問い合わせ先がはっきりしていればそのままにしますので。
  • 2002-11-30 (Sat) 15:28:07 hiro? : 動作するようになりました。ありがとうございました。原因は”/speicherkarte”のディレクトリーを省略したことでした。”httpd.conf”の内容もそれに合わせて書き直していましたが駄目でした。次はPerlの設定ができれば自由にプログラムが作成できます。
  • 2002-12-09 (Mon) 20:07:07 ちみ? : WINCEFANから飛んできました。シグマリなので四苦八苦しながらレジストリ手で修正してPerl動いています。塚本牧生さん英語の読めない僕に貴重な情報ありがとうございます!
  • 2002-12-09 (Mon) 20:11:56 ちみ? : 次はApacheの設定がんばってみます!perlがテストできないのでノートを欲しがっていたのですが、僕の用途だとシグマリだけで十分かもしれないです(^^vwebの事は一通りシグマリ単体でできるようになったのでうれしいです!
  • 2003-05-13 (Tue) 12:59:31 PHPはさすがに無理ですかね。
  • 2004-02-26 (Thu) 14:02:31 yoshi? : PHP~~~~!! T-T
  • 2004-12-08 (Wed) 13:18:36 php
[[#comment]]