2013/09/26(木)Apache 2.4.6 + mod_perl2

2017/10/12 5:38 サーバ運営・管理
記事が消えてしまったので、再度書き直し...orz
Apache は有名な Web サーバアプリケーションで、当方でも多用しています。
現行バージョンは 2.0.65(Ver 2.0系)、2.2.25(Ver 2.2系)、2.4.6(Ver 2.4系) の3つ。
現時点で最も普及しているのは、おそらく 上記のVer2.2系でしょう。

ですが、Ver 2.4系への以降が始まっています。
Linux の Debian や Fedora あたりはサポートの主力を Ver 2.4系に移行したとか。
当方でも FreeBSD ではありますが、このブログを含むWebサーバを Apache 2.4に移行しました。
20130926.png

題名の Apache 2.4.6 + mod_perl2 ですが、この組み合わせではそのままではインストール自体ができません。正式対応もしていません。
Apache 2.4 に対応したパッチを mod_perl2 に施す必要があります。
#mod_perl 2.0.8 用のパッチはありませんが、mod_perl 2.0.7用のパッチを一部変更で対応できます。

また、Perl 5.18 で mod_perl2 を動作させるには、 mod_perl 2.0.8 を導入する必要があります。
公式サイト(?)には掲載がありません)

特に新規案件で Apache 2.4 に移行しようか否か迷っているサーバ管理者も居られると思いますが、まだ時期尚早だと思います。ソフトウェア対応でまだ苦労しますので、、
mod_perl2 が Apache 2.4 対応になれば検討してもいいでしょう。

mod_perl2 は現在、Apache 2.4 対応作業が進められていますが、提供形態の検討を経て、作業が始まったのは先月くらいからのようです。

また、最近の mod_perl2 は、ソースコードから構築作業の際、
uninitialized value $v in concatenation (.) or string at
Apache-Test/lib/Apache/TestRun.pm line 1100
のようなエラーが出て、構築処理が中断してしまいます。
# mod_perl 2.0.5 あたりからこの現象は確認できるが、何故か一向に対処されない。

これの対処は、上記ファイルの 1100行目付近を
    while (my($k, $v) = each %args) {
      if (defined $v) {
        $v =~ s/\|/\\|/g;
        $body .= "\n\$Apache::TestConfig::Argv{'$k'} = q|$v|;\n";
      }
    }
のように変更して、再度構築作業をやり直せば大丈夫です。