Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
45
Help us understand the problem. What is going on with this article?
@DQNEO

Apache2.4 on CentOS7 でsystemctl start httpdで起動しない問題の対処法

More than 5 years have passed since last update.

Apache2.2/CentOS6で動いていたサービスをApache2.4/CentOS7に移植しようとしたらハマったのでメモ。

症状

systemctl start したら延々待たされたあげくApacheが起動しない

[vagrant@localhost ~]$ sudo systemctl start httpd.service
# ここでシェルが固まったまま制御が返ってこない!

1-2分待つと制御が戻るのですが、どうも起動に失敗しているようです。

systemctl statusを見ると下記のような情報が。

[vagrant@localhost ~]$ sudo systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: timeout) since 木 2015-05-21 17:59:15 JST; 8s ago
  Process: 1154 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
 Main PID: 6061

 5月 21 17:56:15 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
 5月 21 17:57:45 localhost.localdomain systemd[1]: httpd.service operation timed out. Terminating.
 5月 21 17:59:15 localhost.localdomain systemd[1]: httpd.service stopping timed out (2). Killing.
 5月 21 17:59:15 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
 5月 21 17:59:15 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.

journalctlしても同じような情報でした。

[vagrant@localhost ~]$ sudo journalctl -xn
-- Logs begin at 木 2015-05-21 17:55:26 JST, end at 木 2015-05-21 18:03:41 JST. --
 5月 21 18:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[6116]: starting 0anacron
 5月 21 18:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[6122]: finished 0anacron
 5月 21 18:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[6124]: starting 0yum-hourly.cron
 5月 21 18:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[6128]: finished 0yum-hourly.cron
 5月 21 18:02:29 localhost.localdomain systemd[1]: httpd.service stopping timed out (2). Killing.
 5月 21 18:02:29 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit httpd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has failed.
--
-- The result is failed.
 5月 21 18:02:29 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.

Apacheのエラーログ(/var/log/httpd/) には何もエラーが出力されていませんでした。

原因はsystemd_moduleの読み込み忘れ

systemd_moduleは取説が見当たらないが、ないとFedora 19ではapacheは起動しない。 ソースらしきものを見ると、systemdに起動したことの表示と処理件数の報告など、2種類の通知が行われているもよう。systemd_moduleがないと apache httpdを起動できない。正確には、httpdは起動しても、systemdが起動したことが わからないため、systemdからhttpdを起動できない。sysstemdはhttpdを起動するときに systemd moduleがないと、httpdは起動しても1-2分後にhttpdを殺して、「失敗した」と表示する。

だそうです。
たしかにそんな感じの挙動でした。

systemd_moduleを読むこむようにして、マシンを再起動したら見事に解決しました。

LoadModule systemd_module modules/mod_systemd.so

どうやって原因を突き止めたのか

当初はまったく見当がつかず途方に暮れていたのですが、

まっさらのCentOS7にApache2.4をyum installした場合はどうなるのだろう?

ちゃんと起動した

Apache2.2のサーバから持ってきた自前設定ファイルに原因があるはず

Apache2.2用設定ファイルと、Apache2.4をyum installした直後の設定ファイルを比較してみた

Apache2.4には"systemd_module"という見知らぬモジュールがある。これは何だろう?

と考えて"systemd_module"でぐぐってみたら上記の答えにたどりつきました。

45
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
DQNEO
PHP/Go/Perl/C/Docker/Linux/Git/AWS
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
45
Help us understand the problem. What is going on with this article?