httpdがsystemctlで起動できない
事象
検証環境に構築したApacheをsystemctl start httpd.serviceで起動しようとすると、時間がかかった後に失敗する事象が発生。 エラーログを確認してもTimeoutしているメッセージ以外、エラーらしいものはない。 httpd.service内のコマンドを直接実行すると、httpdは起動しているようだ。
経緯
検証環境のhttpd.confを元環境のhttpd.confに寄せるべく修正している際に発生した。
修正前のhttpd.confでは問題なく動作したので、httpd.confの修正箇所を重点にチェックしていたが原因がつかめなかった。
原因
Apacheのバージョン差異によるsystemd_moduleの読み込み漏れ?
同様の事象をネット検索したところ、以下サイトを発見し、同じ対策を施したところ改善した。
参考サイトではApache 2.2の設定ファイルをApache 2.4に流用しようとしているが、今回のケースではApache 2.4同士で発生している。
検証環境:Apache/2.4.37 (Red Hat Enterprise Linux)
元環境:Apache/2.4.43 (Unix)
対応
検証環境のhttpd.confでsystemd_moduleを読み込むように設定を追記した。
LoadModule systemd_module /usr/lib64/httpd/modules/mod_systemd.so
備考
元環境のApacheについてはパッケージインストールされたものではないようで、本番環境からディレクトリごとコピーして無理やり実行しているような雰囲気を感じる。
検証環境を構築する際も、同様に構築すれば良かったのかもしれないが、その意図を汲みとることができなかった。