なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

HTML::Mason

きっかけはこのサイトでHTML::MasonというPerlモジュールが紹介されていたこと。これを使えばStrutsJSTLみたいな記述がPerlで可能になるらしい。
さっそく環境構築を開始してみる。最初はWindowsApacheをインストールして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'っていうディレクトリを作ればいいんですね、わかります。

実行した画面

最後に…mod_perlを使うとfoltiaの番組表も早く読み込まれるようになりました。