序章

Apache AH00558: Could not reliably determine the server's fully qualified domain nameメッセージは、ApacheがグローバルServerNameディレクティブで構成されていない場合に生成されます。 このメッセージは主に情報提供を目的としており、AH00558エラーによってApacheの正常な実行が妨げられることはありません。

このチュートリアルでは、このシリーズの冒頭にある一般的なApacheエラーのトラブルシューティング方法チュートリアルで説明されている方法を使用してAH00558メッセージを検出する方法を学習します。 また、メッセージを解決するためにServerNameディレクティブを設定する方法についても学習します。

ApacheサーバーがAH00558メッセージの影響を受けることをすでに確認していて、トラブルシューティング手順をスキップしたい場合は、このチュートリアルの最後にあるグローバルServerNameディレクティブの設定手順でメッセージを解決する方法について説明します。 。

systemctlを使用したトラブルシューティング

AH00558: Could not reliably determine the server's fully qualified domain nameメッセージのトラブルシューティングを行う際の最初のステップは、systemctlを使用してApacheのステータスを確認することです。 systemctlからの出力には、多くの場合、メッセージを解決するために必要なすべての情報が含まれています。

UbuntuおよびDebianから派生したLinuxディストリビューションでは、以下を実行してApacheのステータスを確認します。

UbuntuとDebianシステム
  1. sudo systemctl status apache2.service -l --no-pager

CentOS FedoraおよびRedHatから派生したシステムでは、次のコマンドを使用してApacheのステータスを調べます。

CentOSおよびFedoraシステム
  1. sudo systemctl status httpd.service -l --no-pager

-lフラグは、systemctlが長い行を楕円()に置き換えるのではなく、行の内容全体を出力することを保証します。 --no-pagerフラグは、一度にコンテンツの画面のみを表示するlessのようなツールを呼び出さずに、ログ全体を画面に出力します。

次のような出力を受け取るはずです。

Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2020-07-29 14:30:03 UTC; 33min ago Process: 34 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 46 (apache2) Tasks: 55 (limit: 2344) CGroup: /system.slice/apache2.service ├─46 /usr/sbin/apache2 -k start ├─47 /usr/sbin/apache2 -k start └─48 /usr/sbin/apache2 -k start Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

AH00558メッセージを含む強調表示された行は重要な行です。 基本的に、Apacheは構成ファイルで有効なServerNameディレクティブを見つけることができなかったため、検出した最初のIPアドレスを使用することを通知します。 この例では、サーバーのパブリックIPアドレス172.17.02です。 AH00558メッセージのトラブルシューティングを行っている場合、検出されたIPアドレスが異なるか、人間が読み取れるDNS名である可能性があります。

systemctl出力に任意のIPアドレスまたはホスト名の自動検出値が含まれている場合は、このチュートリアルの最後のセクショングローバルServerNameディレクティブの設定にスキップして問題を解決してください。 このセクションでは、localhostのIPアドレス127.0.0.1を使用して安全なデフォルトのServerName値でApacheを構成します。

systemctl出力が、ServerNameディレクティブに使用できる値を示していない場合、このチュートリアルの次のセクションでは、journalctlAH00558メッセージを検索します。

journalctlを使用したトラブルシューティング

Apacheのsystemdログを調べるには、journalctlコマンドを使用します。 journalctlを呼び出す場合、大量のログエントリがある場合に特定のメッセージを見つけるのに役立つ2つの特定のフラグがあります。

journalctl呼び出しに追加する最初のフラグは、--since todayフラグです。 コマンドの出力は、当日の00:00:00から始まるエントリのみをログに記録するように制限されます。 このオプションを使用すると、エラーをチェックするときに調べる必要のあるログエントリの量を制限するのに役立ちます。

使用する2番目のフラグは、systemctlで使用したものと同じ--no-pagerオプションであり、ログ全体を一度に画面に出力します。

UbuntuおよびDebianから派生したシステムでは、次のコマンドを実行します。

  1. sudo journalctl -u apache2.service --since today --no-pager

CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してログを検査します。

  1. sudo journalctl -u httpd.service --since today --no-pager

ApacheサーバーがAH00558メッセージを生成している場合は、journalctlコマンド出力で次のような行を探します。

Output
-- Logs begin at Wed 2020-07-29 14:30:02 UTC, end at Wed 2020-07-29 14:45:03 UTC. -- . . . Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Starting The Apache HTTP Server... Jul 29 14:30:03 68e2cf19f3f1 apachectl[34]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Jul 29 14:30:03 68e2cf19f3f1 systemd[1]: Started The Apache HTTP Server.

出力の2行目は、AH00558メッセージです。 この行には、サーバーのパブリックIPアドレスが含まれています。これは、Apacheが自動的に検出し、実行時にデフォルトとして設定するアドレスです。 このメッセージをAH00558エラーの確認として使用すると、グローバルServerNameディレクティブの設定に進んで問題を解決できます。

それ以外の場合は、次のセクションで、apachectlコマンドを使用してAH00558エラーメッセージを診断する方法について説明します。

apachectlを使用したトラブルシューティング

AH00558: Could not reliably determine the server's fully qualified domain nameエラーは、Apacheのapachectlユーティリティを使用して検出できます。 apachectlを使用すると、Apacheをリロードまたは再起動する前にこのようなメッセージをキャッチでき、systemctlおよびjournalctlログを検索してエラーを見つける必要がなくなります。

Apache構成でAH00558メッセージを確認するには、次のコマンドを実行します。

  1. sudo apachectl configtest

サーバーがAH00558エラーメッセージの影響を受ける場合は、次のような出力が表示されます。

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message Syntax OK

systemctlおよびjournalctlを使用してAH00558メッセージを検索したこのチュートリアルの前のセクションと同様に、前の例で強調表示されているAH00558メッセージを含む行が重要です。 この例のIPアドレス172.17.0.2は、サーバーによって異なる場合があることに注意してください。

このチュートリアルの次のセクションでは、ServerNameディレクティブを設定してAH00558エラーメッセージを解決する方法について説明します。

グローバルServerNameディレクティブの設定

AH00558: Could not reliably determine the server's fully qualified domain nameエラーメッセージを解決するには、Apache構成にServerNameディレクティブを追加する必要があります。 Apacheは、ServerNameディレクティブを使用して、VirtualHostディレクティブを使用して着信HTTPリクエストをIPアドレスまたはDNSホスト名にマップし、単一のサーバーを使用して複数のサイトのリクエストを処理します。

エラーメッセージは、グローバルServerNameディレクティブも設定する必要があることを示しています。 そうすることで、Apacheは、追加のエラーを生成することなく、VirtualHostにマップされない着信要求を適切に処理できるようになります。

さまざまなApache構成との互換性を最大限に高めるには、グローバルServerNameディレクティブに127.0.0.1の値を使用します。 必要に応じて、サーバーの構成に対応する別のIPアドレスまたはDNS名を使用できますが、127.0.0.1を使用するのが最も安全です。

UbuntuおよびDebianから派生したシステムでは、nanoまたはお好みのテキストエディタを使用して、root権限で/etc/apache2/apache2.confファイルを開きます。

  1. sudo nano /etc/apache2/apache2.conf

ServerName 127.0.0.1を含む行をファイルの最後に追加します。

/etc/apache2/apache2.conf
. . .
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1

CentOS、Fedora、およびRedHatから派生したシステムでは、nanoまたはお好みのテキストエディターを使用して、root権限で/etc/httpd/conf/httpd.confファイルを開きます。

  1. sudo nano /etc/httpd/conf/httpd.conf

ServerName 127.0.0.1行をファイルの最後に追加します。

/etc/httpd/conf/httpd.conf
. . .
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
ServerName 127.0.0.1

終了したら、ファイルを保存して閉じます。 nanoを使用した場合は、CTRL + XYENTERの順に押してください。

ServerNameディレクティブを構成に追加したら、apachectlを実行して、構成が有効であることをテストします。

  1. sudo apachectl configtest

apachectl configtestの呼び出しが成功すると、次のような出力が得られます。

Output
Syntax OK

これで、Linuxディストリビューションに適切なsystemctl reloadコマンドを使用して、Apacheの構成を再ロードできます。

UbuntuおよびDebianから派生したシステムでは、以下を実行します。

  1. sudo systemctl reload apache2.service

CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してApacheの構成をリロードします。

  1. sudo systemctl reload httpd.service

Apacheをリロードすると、AH00558エラーメッセージがログに表示されなくなります。 このチュートリアルで示されている3つのsystemctljournalctl、またはapachectlコマンドのいずれかを実行すると、メッセージが無音になっていることを確認できます。

結論

このチュートリアルでは、AH00558: Could not reliably determine the server's fully qualified domain nameエラーメッセージについて学習しました。 これらのメッセージはApacheの実行を妨げるものではありませんが、グローバルServerNameディレクティブを設定することで解決できます。

systemctljournalctl、およびapachectlコマンドを使用してAH00558エラーメッセージを検索する方法を学習しました。 最後に、さまざまなLinuxディストリビューションでApache構成を編集して、メッセージを無音にする方法を学びました。

ApacheがServerNameディレクティブを使用する方法について詳しく知りたい場合は、名前ベースの仮想ホストに関するApacheのドキュメントでディレクティブについて詳しく説明しています。