CentOSでperl 5.10.1 + Catalyst + mod_perl


CentOS 5.4は未だにperl-5.8.8なので、perl-5.10.1をソースからインストールした。この作業は簡単なので詳細は省く。

$ tar jxvf perl-5.10.1.tar.bz2
$ cd perl-5.10.1
$ ./Configure -de
$ make
$ make test
$ sudo make install

しかし標準でインストールされるmod_perlはあくまでperl-5.8.8用にビルドされている。本当ならSRPMを落としてきてリビルドするのがいいのだが、面倒なのでmod_perlのソースからインストールする。

mod_perlのインストールにはapxsが必要だ。これはhttpd-develパッケージに入っている。

$ sudo yum install httpd-devel

後はいつもの手順通り、mod_perlのインストールだ。

$ wget http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz
$ tar mod_perl-2.0-current.tar.gz
$ cd mod_perl-2.0.4
$ perl Makefile.PL MP_APXS=/usr/sbin/apxs
$ make && make test
$ sudo make install

ハイライトした部分でMP_APXSを指定するのを忘れないようにしよう。実はここのmake testでエラーが出まくったりしたんだが、今回はテスト用サーバなので無視してmake installしてしまった。

後は、apacheの設定ファイルを書き換えれば完了だ。CentOSではmod_perlの設定ファイルは/etc/httpd/conf.d/perl.confにある。

LoadModule perl_module modules/mod_perl.so

<Location /perl-status>
    SetHandler perl-script
    PerlResponseHandler Apache2::Status
    Order deny,allow
    Deny from all
    Allow from localhost
</Location>

PerlSwitches -I/home/delphinus/catalyst/MyApp/lib
PerlLoadModule MyApp
<Location /myapp>
    SetHandler perl-script
    PerlResponseHandler MyApp
</Location>

ここではCatalystベースのアプリを登録している。11行目以降は、登録するアプリケーションによって変わるだろう。この設定でhttp://localhost/myapp/を開くとアプリケーションのトップページが現れる。http://localhost/perl-status/では現在読み込まれているモジュールなど、mod_perlの状態を確認することが出来る。

蛇足だが、テンプレートを保存しているディレクトリはapacheの起動ユーザー(普通はapache)から見えるようにしておこう。肝心のホームディレクトリ(/home/delphinus)のパーミッションが標準では0700になっていて、これで結構ハマった。(0755にしたら直った)

コメントを残す