はじめに
先日、OpenVZではipsetコマンドが使えないことがわかり新しくKVMを契約後、久しぶりにApacheをソースからインストールしました。
しかし、Apacheを構築している途中でapr-1.7.0のバグを踏んでしまい結構ハマったのでメモしておきます。
因みにサーバはMinimumインストールですが、開発ツール系はインストール済みです。
環境
CentOS7.7に以下のtarballを解凍しインストール。
apr-1.7.0.tar.gz
apr-util-1.6.1.tar.gz
httpd-2.4.41.tar.gz
事象
apachectl start でApacheを起動しようとすると下記エラーが発生。
Function not implemented: AH00141: Could not initialize random number generator
原因
apr-1.7.0のバグの模様。
公式サイトからapr-1.7.0.tar.gzをダウンロードして解凍後、./configure、make、make install、ここまでは問題なし。
ただし、apachectl start を実行するとエラー発生。
結構ググりましたが、結局Apacheの英文サイトぐらいしか情報がありませんでした。
対処
最初はaprのバージョンが悪いのかそれともapr-utilなのか悩みましたが、旧サーバでApache2.4系をソースコードからインストールしたときはapr-1.6.3で且つapr-util-1.6.1で問題なく構築できていたので、aprのバージョンが原因と判断。
Apacheの公式サイトからapr-1.6.3.tar.gz をダウンロードし、コンパイル。
その後、apr-utilを再コンパイルし、無事解決。
まとめ
WEBサーバをApacheベースでソースコードから構築する機会はそれ程多くないと思いますが、久しぶりに一から構築すると各ライブラリー等のバージョンが上がっているため、バグを踏んでしまうことがあります。
手順は今まで通り問題ないはずなのに上手く起動しない場合は、ログを確認し対処するのはもちろんですが、対処できているはずなのにそれでも上手くいかないときはバグの可能性が高いと思います。
先日、メールサーバもソースから構築しましたが、いろいろな細かいところで結構ハマります。。
ご参考になれば幸いです。
コメント
情報ありがとうございます。助かりました!
他のOSからですが、docker で httpd:2.4 を起動しようとして同じバグを踏みました。
結局 httpd:2.2 を使うことで解決しました。docker は仮想化ではないことを実感。
無事、解決できたようで良かったです!これからも当サイトをよろしくお願いいたします。