wata.dev

Mac OS X Snow Leopard で Apache2.2.15 に mod_perl2.04 を組み込む 2

なんでも mod_perl は、メモリ上に実行コードをキャッシュすることで、毎回呼び出す必要が無くなり、通常のperl スクリプト(cgi)と比べて200%~2000%近く速くなるらしい。とにかく導入しとけばいいと思う。

httpd.conf の場所は、Mac なら”/private/etc/apache2”にあるはず。
※ちなみにhttpd.confは普通に編集しようとしても読み取り専用ファイルになっていて編集出来ないので、編集するときは一度デスクトップとかにファイルをコピペしてテキストエディタで開いて編集、再度ファイルを元の場所に移動させて上書き保存とかすればおk

1. httpd.confに追記

ちょうど“LoadModule… “が続いてる最後くらいに追記。

LoadModule perl_module /usr/libexec/apache2/mod_perl.so
#AddModule mod_perl.c

AddModule mod_perl.c の行は、エラーになるのでコメントアウトした。
(いろいろ調べてみると、この行を記述している例と、記述していない例がある様子 ※自分の場合は「Invalid command ‘AddModule’, perhaps misspelled or defined by a module not included in the server configuration」というエラーが出たのでとりあえずコメントアウトして、うまくいったのでそのまま… いらないのかな??)

で、以下をそのままコピペでいけるはず。(hogeは直してね)

<ifmodule mod_perl.c>

Alias /perl/ /Users/hoge/Sites/
Alias /cgi-perl/ /Users/hoge/Sites/

<location /perl>                       #「/perl」でないとうまくいかないので注意 以下同
    SetHandler perl-script
    PerlHandler ModPerl::Registry
    Options ExecCGI
    Allow from all
    PerlSendHeader On
</location>

<location /cgi-perl>
    SetHandler perl-script
    PerlHandler ModPerl::PerlRun
    Options ExecCGI
    Allow from all
    PerlSendHeader On
</location>

</ifmodule>

2. 確認用 cgi で確認

ここまで来たらApacheを再起動して、ちゃんとmod_perlで動くか確認してみる。

URLは

mod_perl.cgi
(Apacheをmod_perl対応にする - 闘うITエンジニアの覚え書きにあるものをそのまま使ってまs)

#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "MOD_PERL : $ENV{MOD_PERL}\n";
print "PROCESS ID : " . $$ . "\n";

mod_perlのバージョンが表示されれば…

MOD_PERL : mod_perl/2.0.4

ヤター!!\(^o^)/

/perl(Registry)と/cgi-perl(PerlRun)どちらも試してみて、PROCESS IDが読み直ししても変わらないことも確認。
※URL: http://localhost/cgi-bin/… にアクセスすると”/Library/WebServer/CGI-Executables“の方を参照します

あとCatalystをインストール済の人は、Catalyst::Engine::Apache(mod_perl と Catalyst の連携)もインストールしておくと良いと思います。する。

▼参考

ブログの記事一覧