きっかけはこのサイトでHTML::MasonというPerlモジュールが紹介されていたこと。これを使えばStrutsのJSTLみたいな記述がPerlで可能になるらしい。
さっそく環境構築を開始してみる。最初はWindowsにApacheをインストールしてWindows上で開発をしようと思ったが、Linuxでは通常「yum install httpd httpd-devel」「apt-get install httpd httpd-devel」とすれば入ってくるDSO用のツール、apxsが手に入らない(正確には手に入るが起動させられない…)、そしてソースからApacheからビルドしようとするとなんかLinuxでやるときより難しい。nmake,dmakeとかあんまわからんです。ただその過程でActivePerlからStrawberryPerlに移行した。ストロベリーパールは中身がActivePerlといろいろ違うらしくcpanとの相性がいい。
結局、録画サーバーであるFedora15にmod_perlをインストールすることに。
tar zxvf mod_perl-2.0.5.tar.gz cd mod_perl-2.0.5 perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1 make make install
※私の場合ここでExtUtils::Embedが無いと言われたのでcpanで最初インストールしようとしました。が、どうもそのモジュールがPerlの5.14で書かれているみたいで、警告がいろいろ出た。cpanの代わりにyumを使ってインストールするとうまくいった。
これでモジュールとしてmod_perlが読み込めるはずなのでhttpd.confに「LoadModule perl_module modules/mod_perl.so」を追記する。
そしてHTML::Masonの本部サイトのやり方を真似てみる。
DocumentRootである'/var/www/html'の下の設定の部分に以下のように設定した。
PerlModule HTML::Mason::ApacheHandler <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all # MasonTest SetHandler perl-script PerlHandler HTML::Mason::ApacheHandler </Directory>
でもってindex.htmlを以下のようにした。
<html> <head> <title>HTML::Masonのテスト</title> </head> <body> % my $hobby = 'Anime'; Hello <% $hobby %> Otaku ! <% 12000 / 120 %> </body> </html>
と、ここで普通に実行すると500InternalServerError。ログを見てみると以下のように言われる。
[Mon Oct 31 22:03:47 2011] [error] [client 192.168.11.30] Cannot create directory '/etc/httpd/mason/obj' (mkdir /etc/httpd/mason: Permission denied at /usr/local/share/perl5/HTML/Mason/Interp.pm line 301\n) for user 'foltia', group 'foltia'. Perhaps you need to create or set permissions on your data_dir ('/etc/httpd/mason'). (…以下略)
つまりは'/etc/httpd/mason'っていうディレクトリを作ればいいんですね、わかります。