Apache構成エラーAH00558:サーバーの完全修飾ドメイン名を確実に判別できませんでした
序章
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のステータスを確認します。
- sudo systemctl status apache2.service -l --no-pager
CentOS FedoraおよびRedHatから派生したシステムでは、次のコマンドを使用してApacheのステータスを調べます。
- 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
ディレクティブに使用できる値を示していない場合、このチュートリアルの次のセクションでは、journalctl
AH00558メッセージを検索します。
journalctl
を使用したトラブルシューティング
Apacheのsystemd
ログを調べるには、journalctl
コマンドを使用します。 journalctl
を呼び出す場合、大量のログエントリがある場合に特定のメッセージを見つけるのに役立つ2つの特定のフラグがあります。
journalctl
呼び出しに追加する最初のフラグは、--since today
フラグです。 コマンドの出力は、当日の00:00:00から始まるエントリのみをログに記録するように制限されます。 このオプションを使用すると、エラーをチェックするときに調べる必要のあるログエントリの量を制限するのに役立ちます。
使用する2番目のフラグは、systemctl
で使用したものと同じ--no-pager
オプションであり、ログ全体を一度に画面に出力します。
UbuntuおよびDebianから派生したシステムでは、次のコマンドを実行します。
- sudo journalctl -u apache2.service --since today --no-pager
CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してログを検査します。
- 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メッセージを確認するには、次のコマンドを実行します。
- sudo apachectl configtest
サーバーがAH00558エラーメッセージの影響を受ける場合は、次のような出力が表示されます。
OutputAH00558: 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
ファイルを開きます。
- sudo nano /etc/apache2/apache2.conf
ServerName 127.0.0.1
を含む行をファイルの最後に追加します。
. . .
# 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
ファイルを開きます。
- sudo nano /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1
行をファイルの最後に追加します。
. . .
# 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 + X
、Y
、ENTER
の順に押してください。
ServerName
ディレクティブを構成に追加したら、apachectl
を実行して、構成が有効であることをテストします。
- sudo apachectl configtest
apachectl configtest
の呼び出しが成功すると、次のような出力が得られます。
OutputSyntax OK
これで、Linuxディストリビューションに適切なsystemctl reload
コマンドを使用して、Apacheの構成を再ロードできます。
UbuntuおよびDebianから派生したシステムでは、以下を実行します。
- sudo systemctl reload apache2.service
CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してApacheの構成をリロードします。
- sudo systemctl reload httpd.service
Apacheをリロードすると、AH00558エラーメッセージがログに表示されなくなります。 このチュートリアルで示されている3つのsystemctl
、journalctl
、またはapachectl
コマンドのいずれかを実行すると、メッセージが無音になっていることを確認できます。
結論
このチュートリアルでは、AH00558: Could not reliably determine the server's fully qualified domain name
エラーメッセージについて学習しました。 これらのメッセージはApacheの実行を妨げるものではありませんが、グローバルServerName
ディレクティブを設定することで解決できます。
systemctl
、journalctl
、およびapachectl
コマンドを使用してAH00558エラーメッセージを検索する方法を学習しました。 最後に、さまざまなLinuxディストリビューションでApache構成を編集して、メッセージを無音にする方法を学びました。
ApacheがServerName
ディレクティブを使用する方法について詳しく知りたい場合は、名前ベースの仮想ホストに関するApacheのドキュメントでディレクティブについて詳しく説明しています。