持ち運んで使うWWWサーバ 2005 2005/04a
[Table of Contents]はじめに
前のページで述べたような
環境でしばらく満足していたのですが、
やっぱり人間というのは欲深いものなのですね。
2004(平成16)年の秋くらいから、この環境にだんだん不満を感じる
ようになってきました。その理由として
ということがあげられます(わざわざ箇条書きにした意味がないんだけど>俺)。
ちょっとした必要にせまられて、
『なんちゃって画像転送同調装置』 なるものを作ってみたんですけど、
このCGIプログラムが、フラッシュメモリを挿しただけのWindows機で
動いてくれたら! ‥‥とどうしても考えてしまうわけです。
[Table of Contents]そんなこんなで結局 Apache に
やっぱ Apache しかないのかよ と思って、
やってみたところ‥ CGI うまく動く!!
(^o^)
やったことを簡単に書いておくと‥
- フラッシュメモリを挿す。ここではこれを仮に F: ドライブとする
- F:\WWW フォルダを作る
- Apache を持ってくる。今回試したのは Apache 1.3.33 です。
- Apache のインストール。私が注意した点は‥
- インストール先は F:\WWW\Apache に。
- 途中で、何だっけな‥たしか
「サービスとして起動」か「手作業で起動」のどっち? とか
聞かれたときに「手作業で起動」をチェック
- F:\WWW\Apache\httpd.conf を開く。すると、あちこちのパス指定の
箇所に F:\WWW\Apache\... のようにドライブ名が決め打ちされてる
箇所があるので、そこから F: の部分を消して、
\WWW\Apache\... のようにする。
- DocumentRoot は F:\WWW\Apache\htdocs になってるけど、これを
\WWW\htdocs に変える。(個人的な趣味?)
- 上記以外の場所についても、チョコチョコいじる
(^_^;
AllowOverride None を AllowOverride All にしたり、
ServerName を 127.0.0.1 にしたりとか。まあ、
使うのはグローバルIPを名乗らないPCばかりだし、
セキュリティのことは考えずともよい環境だしね。
- この状態で、一度 Apache.exe をダブルクリックして Apache を
起動させてみる。 ... おおお、うまく起動してるじゃん!
- さらに Perl のインストール。とりあえず Perl4 のバイナリが
動けば十分だろ? ということで、JPERL4 のパッケージ
(njperl45.lzh というパッケージを見つけました)を入手して展開して
F:\WWW\Jperl\JPERL.exe という場所(これもフラッシュメモリの中ね)
に jperl 本体が置かれるようにしてみる。
- \WWW\Apache\cgi-bin に printenv.pl というファイルがあるけど、
このファイルの最初に以下の行を追加:
そのうえで http://localhost/cgi-bin/printenv.pl にアクセス。
おお、CGI 動いてるよ!!
(^o^)
- ここで一度 Apache を終わらせてフラッシュメモリを抜いて、
他のPCに挿して、フラッシュメモリ上にある Apache.exe を
ダブルクリックして Apache を起動させて CGI のテスト ... うまくいく!
- ちなみに、この段階での F:\WWW のファイル容量は
「サイズ: 5.57MB / ディスク上のサイズ: 12.3MB」といった感じ。
両方の数値にはずいぶん開きがあるけど、でもまあ、32MB の
フラッシュメモリを使うんであれば、容量にはかなり余裕が
ある感じ。
- なお jcode.pl はこの JPERL4 のセットでは動きません。
というか、私には動かせませんでした‥
なお、こうして構築した \WWW 以下のカタマリ(?)につきましては、
そのカタマリをそのまま別の Windows PC の C:\WWW にコピー
(ドラッグ・アンド・ドロップ)して、フラッシュメモリを抜いて、
C:\WWW 以下にある Apache.exe をダブルクリックしたらちゃんと
CGI まで動きましたので、かなり可搬性の高いセットになったの
ではないかと自負しております :D
(「ショートカット」は使わないのがコツみたいです。というか、
ドライブ名なしのショートカットがどうしても作れない‥)
[Table of Contents]Apache 起動とレジストリ
ここで気になるのは、Apache 起動によってレジストリにどのような
影響が生じるのか、といったあたりだと思われます。
‥とかいいつつ、実は私は「レジストリ」についてはよく知らないので、
とにかく「レジストリに大きな変更がなきゃいいなあ」といった程度の
心配しかないんですけどね。
んで、とりあえず Apache の起動の前後でレジストリにどのような
変化があったかを見てみるため、
regedit 起動、レジストリ書き出し(1)、
Apache 起動、 Apache 終了、regedit 起動、レジストリ書き出し(2)、
という一連の操作を行ってみて、
1回目に書き出したレジストリの中身と、
2回目に書き出したレジストリの中身との差分を RegDiff を使って
取り出してみました。取り出された差分情報は4項目だけで、
それらのキー部分(?)だけを取り出すと、こんな感じです。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG]
[HKEY_USERS\S-1-5-21-789336058-854245398-839522115-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\*]
[HKEY_USERS\S-1-5-21-789336058-854245398-839522115-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\reg]
[HKEY_USERS\S-1-5-21-789336058-854245398-839522115-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count]
|
‥‥何だかよくわかんないんですけど
^^;
、
ちょっと見た感じでは Microsoft の暗号系のキー値と、
Explorer のコモンダイアログの値が変更されてる
(この変化はたぶん regedit でレジストリの中身を書き出したことに
よって生じたものと推測)くらいで、
とくに Apache と関係してそうな項目が勝手にレジストリに追加された、
なんてことはなさそうです。
つまり、たぶんフラッシュメモリに入った Apache を
起動させたというだけでは Windows 環境に何かの重大な影響を与える
わけではなさそうだということが言えそうです。
[Table of Contents]ふろく
- 日本語のファイル名を用いたファイルの扱いに問題があります。
ファイルにアクセスできないことがあります。
アクセスできない文字が決まっているようですので、
それを避ければよいんだろうな、ということはわかりました。どういう文字がダメかというと、
私が得た感触では、文字列の中にアルファベットの大文字に当たる文字列、たぶん 0x40 から
0x5c のあたり、これが入っているとダメになるような感じです。たとえばSJISの「脱」、これ
アルファベットと関係しなさそうに一見見えるんですけど、文字の2バイト目が 0x45 でこれが
たぶんApacheからはアルファベットの"E"に見えるんでしょうね。んでたぶん
Apacheが内部的に"E"を"e"に書き換えてからファイルにアクセス
しに行って、でもそうすると「脱」だったのが「段」に変わってしまうので、
日本語をちゃんと扱うことのできるWindowsからすると「(脱ならあるけど)段なんて
ファイルないし」と言われる、そんな感じになってるように思われます。
‥んー。いまだ良い対処法なし。別のhttpdを探すしかない?
AN HTTPD は設定内容を全部レジストリに置くのでPortableには使えないんだよな‥
(レジストリを汚すとかどうとかより、マシン換えるごとにメニューから いちいち手作業で
設定作業をおこなう必要があり、Portableとしては実用的じゃない。まあ *.reg ファイルを
同じディレクトリに置いておけばいいのかもしれないけど、それはちょっとパスしたい)
==>==> [ムリムリと何とかしてみた]