windows mobileでApache × Perl(Perl開発環境構築)

2010/05/07 17:47

windows mobileでPerlのウェブアプリケーション開発環境を構築する手順を以下に示します。

端末: windows mobile6.1 Professional Edition(AUの端末E30HTを使用)
dll hellさえ気をつければ他の端末でも大丈夫だと思います。
※ こちらは一切責任を取りません。構築する場合は自己責任でお願いいたします。

まずは下記3つをダウンロード

【ApacheCE】
ドキュメント
http://digit.que.ne.jp/work/wiki.cgi?ApacheCE
ダウンロード先
http://www.wince-devel.org/wince/dirlist.html
ファイル名:apache-arm-hpc-wce300-2002-10-18.tar.gz

【PerlCE】
ドキュメント
http://digit.que.ne.jp/work/wiki.cgi?PerlCE
ダウンロード先
http://sourceforge.net/projects/perlce
ファイル名:perl-wince-arm-pocket-wce300.zip
ファイル名:celib-3.11-dll-src.tar.gz

【PerlIDE】
ドキュメント
http://digit.que.ne.jp/work/wiki.cgi?PerlCEDocument#i4
ダウンロード先
http://www.rainer-keuchel.de/wince/dirlist.html
ファイル名:perlide-wince-arm-hpc-wce300.tar.gz

************************手順************************

1.\windows\にあるmfcce300.dllのバックアップをとる
他にインストールしたアプリと干渉した際にdll hellに陥る為必須。
「有効なWindowsCEアプリケーションではありません。」状態になる可能性がある。

2.【apacheCE】【perlCE】【PerlIDE】のインストール
apache-arm-hpc-wce300-2002-10-18.tar.gz
perl-wince-arm-pocket-wce300.zip
perlide-wince-arm-hpc-wce300.tar.gz

インストールと言っても、それぞれを解凍しwindows mobileのディレクトリに展開、exeを実行するだけです。
ディレクトリ構成に特に決まりはありませんが、直下に\usr\というフォルダを作成し、それぞれ、

  • apache → \usr\apache\apache.exe
  • perlCE → \usr\bin\perl.exe
  • perlIDE → \usr\ide\perlIDE.exe

といった形になるよう展開して実行すると、一式まとまるのと、perlのパスがweb serverにhostingする際に一致するパターンが多いので楽かも知れません。

3.perlide.exeと同一階層に、この時点で\windows\にあるmfcce300.dllを入れる
dll hell対策。perlide.exeが自分と同一階層のmfcce300.dllを参照する様にする為。

4.1でバックアップをとったmfcce300.dllを\windows\直下に上書き

5.celib-3.11-dll-src.tar.gzを解凍後celib.dllを\windows\直下へ入れる

6.定義ファイル、UIで環境設定
【apacheCE】
\conf\httpd.conf ※設定内容はapacheとほぼ一緒
【perlIDE】
UIからPerl>>Options>>PerlPathに【perlCE】内のperl.exeのパスを設定
【perlCE】
libを使うならPerlCEの/lib/Config.pm内のパスを自分の環境に書き換える


1~6までが終了したら、まずはドキュメントルート(デフォルトだとhtdocs)直下に適当なindex.htmlを置き、http://localhost/index.htmlでアクセス。表示されたらapacheCEの環境は成功です。
次は適当なcgiファイルを作成して上記と同様にアクセスしてみましょう。

設定ファイルのミスを除き構築上問題はないはずです。何かありましたらコメントを下さい。
尚、windows mobileに環境を作るくらいなので、mobile環境以外でも構築経験のある方が対象です。

で、実際開発なんですが、サラリーマン時代、通勤中にPerlのクラスライブラリを作るくらいにしか使ってなかったのでapacheは意味をなしませんでした。。。

E30HTも当時後続でしたがスペックがいまいち。

IIS7.0(windows)でperlのCGIを動作させる際の注意

2010/04/22 18:32

IIS7.0でPerlのウェブアプリを開発しようと環境構築している方々は多いと思います。

perl.exeを利用した場合(※1)、当然ながらパスの問題が発生します。 

つまり、

「 require './lib/hoge.pl' 」
「 open(hoge,'./contents/hoge.csv'); 」

等と書くと自分ではそのパスにファイルが存在しているつもりでもエラーになります。そこで、

「 require ".\\lib\\hoge.pl" 」
「 open(hoge,".\\contents\\hoge.csv"); 」

ならばよいか?というとそうでもありません。

カレントディレクトリがperl.exeの場所になっているからです。
そこで、実行ファイル(リクエストしたファイル)のパスを求めます。

とても簡単です。特殊変数 $0 に入っているからです。
$0の中身を覗いてみると、例えば、http://localhost/hoge/fuga.cgiのwindows上の物理パス、
「c:\inetpub\wwwroot\hoge\fuga.cgi」という値を見ることができるでしょう。
(仮想ディレクトリ割り振っていたら上記の限りではありませんが)

この値を利用してカレントディレクトリを変更して下さい。

-----------------------------------------------

※1 ISAPI等、webサーバー向けのモジュールもある。