WindowsNTでmod_perl

2000/09/04

以下に記すのは、私がwindowsNT4.0上でmod_perlをコンパイルした際の記録です。
(単に覚え書きともいう)
すべて私の環境に合わせて具体的に記してあるので、パスなどは随時読み替えてください。




1.環境

モジュール
モジュール名バージョンインストールパス
apache1.3.12c:\apahe
mod_perl1.2.4c:\temp

ツール
ツール名バージョンパス
perl (non activeperl)5.6.0c:\perl
VC++ (c compiler)6.0 SP3c:\VisualStudio\VC
nmake (with VC++)1.62.7022c:\VisualStudio\VC\bin\nmake
cmd.exe (shell)4.0c:\winnt\system32\cmd.exe

環境変数
変数名
PATH%SystemRoot%\system32;c:\perl\bin;c:\jdk1.3\bin;c:\VisualStudio\VC\Bin;
LIBc:\VisualStudio\VC\mfc\lib;d:\VisualStudio\VC\lib;c:\perl\lib\core;
MAKE_MODEunix

OS : windows NT workstation 4.0 SP5




2.apacheのcompile

cmd.exeを起動
> vcvars32.bat <----VC++でコンパイルする際の環境設定bat
> rname c:\apache_1.3.12 c:\apache
> cd c:\apache\src
> nmake /f makefile.nt _apacher <----リリースモードでコンパイル

-----結果の出力-----
(warningがたくさん出るが、気にしない)

c:\apache\src\corerディレクトリに「apachecore.lib」が作成されていることを確認。

最初にディレクトリの名前を変更しているのは、単なる趣味。
mod_perlのサンプルがc:\apacheを前提に書いているので合わせただけ。




3.mod_perlのcompile

cmd.exeを起動
> vcvars32.bat <----VC++でコンパイルする際の環境設定bat
> cd c:\temp\mod_perl-1.24
> perl Makefile.PL

-----Makefileを自動作成-----

> nmake /f Makefile

-----DLL作成環境を構築-----
(この時に、perlのlibにパスが通っている必要あり?)
(前提条件としてlibwww-perlモジュールが必要。
 その為にはHTML-Parser, HTML-Tagset,libnet, MIME-Base64, URI モジュールが必要?)


VC++6.0(SP3)を起動
「ファイル」-> 「開く」-> 「プロジェクト」を選択
c:\temp\mod_perl-1.24\src\modules\ApacheModulePerl\ApacheModulePerl.dspを開く

FileViewより「ApacheCore.lib」および「perl.lib」を削除
「プロジェクト」-> 「プロジェクトへ追加」-> 「ファイル」を選択
「c:\apache\src\corer\apachecore.lib」 を追加
「c:\perl\lib\core\perl56.lib」 を追加(注:1)

「ツール」-> 「オプション」を選択
「ディレクトリ」タグを選択、「表示するディレクトリ」で「インクルードファイル」を選択
「c:\apache\src\include」を追加
「c:\perl\lib\core」を追加
「c:\temp\mod_perl-1.24\src\modules\perl」を追加

「ビルド」-> 「アクティブな構成の設定」を選択
「Win32-Release」を選択

「プロジェクト」-> 「設定」を選択
「C/C++」タグを選択、「カテゴリ」で「コード生成」を選択
「使用するランタイムライブラリ」を「マルチスレッド(DLL)」に変更

「c:\temp\mod_perl-1.24\src\modules\perl」を開く
738,739行目をコメントアウト(注:2)
738: // if (ap_configtestonly)
739: // GvSV_setiv(GvSV_init("Apache::Server::ConfigTestOnly"), TRUE);

「ビルド」-> 「ビルド」を選択

-----ApacheModulePerl.DLLを構築中-----

「C:\TEMP\mod_perl-1.24\src\modules\ApacheModulePerl\Release」に
「ApacheModulePerl.DLL」が作成されているのを確認


(注:1)perl5.6から名前が変更になった模様。perl5.0005_03での名前は「perl.lib」
    また、自分でnmake installすればわかると思うが、perlのディレクトリパスは思いっきり変更してある・・・(^^;
(注:2)コメントアウトしないと、_ap_configtestonlyが参照できないといわれ、コンパイルできない
    名前がtestonlyだったので、勝手にコメントアウトした。
    コメントアウトせずにコンパイルできた方がいたら教えてください





4.apacheへの組み込み

「c:\apache\conf\httpd.conf」を編集
「Dynamic Shared Object (DSO) Support」のカテゴリで
「LoadModule perl_module modules/ApacheModulePerl.dll」の行を追加orコメントをはずす

コンパイルしたApacheModulePerl.DLLを「c:\Apache\modules」にコピー




5.apacheの起動

その他必要なapacheの設定は終了しているものとする。
apacheをサービスで起動(apache -iでサービスに登録できる)





続き、mod_perlの設定に関する話はまたのちほど・・・


back
by agano