apache2.4.12にあげたら動かなくなった

久しぶりにhttpd.apache.orgをチェックすると2.4.12ってのがリリースされていました。1月の末ですね。ftpのサイトをチェックすると2.4.11がないので一個飛ばしのリリース。

で、早速ダウンロードして再起動したところhttpdが上がってこない。
error_logにはこんなエラーが。

[Wed Feb 18 16:16:00.000321 2015] [slotmem_shm:error] [pid 27192:tid 140704011601664] (17)File exists: AH02611: create: apr_shm_create(/usr/local/apache2/logs/slotmem-shm-pf9675912.shm) failed
[Wed Feb 18 16:16:00.001824 2015] [:emerg] [pid 27192:tid 140704011601664] AH00020: Configuration Failed, exiting

なんか見たことがあるなぁ、と自ブログを検索すると同じような事象が過去に二度。

http://d.hatena.ne.jp/rougeref/20121205
これはセマフォがいっぱいになって動作しなかった件。これは該当せず。

http://d.hatena.ne.jp/rougeref/20121031
こっちは共有メモリ制御用のファイルが残った話し。これも違う。

ということでよくわからない(笑)。
もう一度ログをみると、apr_shm_createって関数でエラーになっているんですね。ソースをちらりとチェックすると、aprapr-utilを参照している。
aprapr-utilのバージョンをチェックすると微妙に古い。いや、だいぶ古い。

まぁよくわからんがバージョンアップしてみる。

aprをインストール

aprは1.5.1が最新。いままでは1.4.10とかなんとか。
ダウンロードしてきたtarballを展開後、以下の通り。

$ ./buildconf
$ ./configure --with-ldap --prefix=/usr/local/apache2
$ make
# make install

apr-utilをインストール

apr-utilは1.5.4が最新。tarball展開後は以下の通り。

$ ./buildconf
$ ./configure --with-ldap --with-apr=../apr-1.5.1/ --prefix=/usr/local/apache2
$ make
# make install

インストールの最中に既存のライブラリとコンフリクトして云々カンヌンと言われたので、思い切って既存ライブラリは削除。

# cd /usr/local/apache2/lib
# rm -fr *apr*

apache2.4.12を再コンパイル

configure時に以下を追加。

--with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2

make,make installして、動いてくれ。

# /usr/local/apache2/bin/apachectl start

いやー、動作しました。ちらっとソースは見たけどこういう勘と度胸のシステム管理は卒業せんとイカンですね。