httpd再起動エラー(解決)

internal dummy connectionのログをとらないようにするため、httpd.confに必要な記述を行い、apacheを再起動してみたところ・・・。

Job for httpd.service failed because the control process exited with error code. See “systemctl status httpd.service” and “journalctl -xe” for details.

というエラーが返されて、httpdの再起動に失敗しました。
systemctlで状態をチェックしろということらしいので、コマンドを入れてみたところ、以下のようなステータスが返されました。

httpd.service – The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 土 2022-10-15 18:32:01 JST; 2min 51s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 19742 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 19748 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 19748 (code=exited, status=1/FAILURE)
10月 15 18:32:00 localhost.localdomain systemd[1]: Starting The Apache HTTP …
10月 15 18:32:01 localhost.localdomain httpd[19748]: AH00558: httpd: Could n…
10月 15 18:32:01 localhost.localdomain httpd[19748]: (2)No such file or dire…
10月 15 18:32:01 localhost.localdomain httpd[19748]: AH00014: Configuration …
10月 15 18:32:01 localhost.localdomain systemd[1]: httpd.service: main proce…
10月 15 18:32:01 localhost.localdomain systemd[1]: Failed to start The Apach…
10月 15 18:32:01 localhost.localdomain systemd[1]: Unit httpd.service entere…
10月 15 18:32:01 localhost.localdomain systemd[1]: httpd.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

apacheはアクティブだけど起動に失敗しているようですね。そこでもう少し情報を求めてググってみたところ、どうやらapachectl -Vというコマンドで詳細に状況をチェックできるようです。

# apachectl -V
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message
(2)No such file or directory: AH02297: Cannot access directory ‘/var/log/httpsd/’ for log file ‘/var/log/httpsd/access_log’ defined at /etc/httpd/conf/httpd.conf:223
AH00014: Configuration check failed

どうやらhttpd.confの223行目に問題があるらしいことがわかりました。No such file or directory・・・ということはつまりファイル名かパス名が何か間違っているっぽい?
そしてその行番号は、まさに先ほど加筆を行ったあたりなのですが・・・。
と思い、入念にチェックを行ったところ、原因が判明しました(入念も何も、エラーメッセージにことの顛末は全て書かれていたわけですが)。

先ほどhttpd.confにSetEnvIfとCustomLogのディレクティブを加筆したわけですが、このとき横着をして過去のBLOGページから該当ディレクティブをコピー&ペーストしたんです。が、この本文に記載しておいたコマンドに問題が発生していたのでした。

その問題というのは、当BLOGをhttps化した際に、(リンク先のURLを書き換えるために)httpで始まる文字列を全てhttpsに置き換えるという処置を行なったこと。このとき、すでにhttpsだった文字列がhttpssになってしまうという不具合こそ気がついて修正したものの、httpのままでなければならなかったところがhttpsになってしまったということには思い至らなかったのです。

そして今回セットしたCustomLogディレクティブの記述はこうでした。

CustomLog /var/log/httpd/access_log combined env=!no_log

これが、

CustomLog /var/log/httpsd/access_log combined env=!no_log

に書き換えられていたのです。それに気づかずにこれをそのままhttpd.confにコピー&ペーストしてしまったのでした。
当然/var/log/httpsd/〜なんてパスは存在しませんからエラーが返されてapacheが起動しなかった、というわけですね。なるほど、だからエラーメッセージには「/var/log/httpsd/〜なんてディレクトリは無いョ!」って返してくれていたわけで・・・。
(その後、当該ページでhttpにしておくべきところは全て修正しておきました。他も見つけ次第適宜修正を施すことにします)

というわけで、全くのアンフォーストエラーだったわけですが、まぁそのおかげで有用な新しいコマンドを知ることもできたので、怪我の功名というか人間万事塞翁が馬というか・・・。

あ、もちろんhttpd.confの記述ミスはすでに修正をし、現在apacheは適切に稼働していますので!

boota

いろんなモノに、いろんな意味で、ヲタ。なのかも?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)