Apache構成エラーAH00526:構文エラー
序章
Apache AH00526: Syntax error
メッセージは、Apache構成ファイルのどこかにタイプミスまたは設定ミスがある場合に発生します。 これは一般的なエラーであり、根本的な問題の数を示している可能性があります。
無効な構成がロードされる前に、apachectl configtest
を使用してエラーを検出できます。 systemctl
およびjournalctl
コマンドを使用して見つけることもできます。 後者の2つのケースでは、エラーのためにApacheを実行できません。
apachectl
を使用してエラーを検出した場合は、このチュートリアルの組み込みのapachectlコマンドを使用したトラブルシューティングセクションにスキップしてください。 それ以外の場合は、次のセクションでsystemctl
を使用してエラーのトラブルシューティングを行う方法について説明します。
systemctl
を使用したトラブルシューティング
このシリーズの冒頭にある一般的なApacheエラーのトラブルシューティング方法チュートリアルのトラブルシューティング手順に従って、AH00526エラーのトラブルシューティングを行う最初の手順は、systemctl
でApacheのステータスを確認することです。 エラーが実行中のプロセスに影響を与えるのか、それともApacheの起動を妨げているのかを理解することが重要です。
UbuntuおよびDebianから派生したLinuxディストリビューションで、以下を実行してApacheのステータスを確認します。
- sudo systemctl status apache2.service -l --no-pager
CentOSおよびFedoraシステムでは、次のコマンドを使用してApacheのステータスを調べます。
- sudo systemctl status httpd.service -l --no-pager
-l
フラグは、systemctl
が長い行を楕円(…
)に置き換えるのではなく、行の内容全体を出力することを保証します。 --no-pager
フラグは、一度にコンテンツの画面のみを表示するless
のようなツールを呼び出さずに、ログ全体を画面に出力します。
AH00526: Syntax error
メッセージのトラブルシューティングを行っているため、次のような出力が表示されます。
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: failed (Result: exit-code) since Wed 2020-07-15 13:45:49 UTC; 1min 37s ago
. . .
Jul 15 13:45:49 f17f01056c5b systemd[1]: Starting The Apache HTTP Server...
Jul 15 13:45:49 f17f01056c5b apachectl[15860]: AH00526: Syntax error on line 2 of /etc/apache2/sites-enabled/000-default.conf:
Jul 15 13:45:49 f17f01056c5b apachectl[15860]: Invalid command 'SSSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration
Jul 15 13:45:49 f17f01056c5b apachectl[15860]: Action 'start' failed.
Jul 15 13:45:49 f17f01056c5b apachectl[15860]: The Apache error log may have more information.
Jul 15 13:45:49 f17f01056c5b systemd[1]: apache2.service: Control process exited, code=exited status=1
Jul 15 13:45:49 f17f01056c5b systemd[1]: apache2.service: Failed with result 'exit-code'.
Jul 15 13:45:49 f17f01056c5b systemd[1]: Failed to start The Apache HTTP Server.
この場合、構文エラーのためにApacheは実行されていません。 このエラーは、/etc/apache2/sites-enabled/000-default.conf
ファイルのSSSLCertificateFile
行の先頭にある余分なS文字が原因で発生します。 正しいディレクティブはSSLCertificateFile
である必要があるため、この例のディレクティブ名を修正するためにファイルを編集すると、エラーが解決され、Apacheを起動できるようになります。
この例のsystemctl
出力には、systemd
ジャーナルからの行も含まれています。 出力が構成ファイルの特定の行が構文エラーを生成していることを示している場合は、journalctl
およびapachectl configtest
のトラブルシューティング手順をスキップできます。 代わりに、ファイルに直接移動して、エラーのある行を調べて編集し、エラーを解決することができます。
出力にApacheの構成ファイル内のエラーの場所に関する特定の情報が含まれていない場合は、systemd
ログからのjournalctl
出力を調べる必要があります。 次のセクションでは、journalctl
を使用してAH00526エラーのトラブルシューティングを行う方法について説明します。
journalctl
ログを使用したトラブルシューティング
systemctl
出力にAH00526構文エラーの詳細が含まれていない場合は、journalctl
コマンドを使用して、Apacheのsystemd
ログを調べることができます。
UbuntuおよびDebianから派生したシステムでは、次のコマンドを実行します。
- sudo journalctl -u apache2.service --since today --no-pager
CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してログを検査します。
- sudo journalctl -u httpd.service --since today --no-pager
--since today
フラグは、コマンドの出力を、当日の00:00:00から始まるエントリをログに記録するように制限します。 このオプションを使用すると、エラーをチェックするときに調べる必要のあるログエントリの量を制限するのに役立ちます。
Apache構成でAH00526エラーが発生した場合は、journalctl
コマンド出力で次のような行を探してください。
Output-- Logs begin at Tue 2019-11-05 21:26:44 UTC, end at Tue 2020-06-09 15:13:01 UTC. --
. . .
Jun 09 15:12:28 f17f01056c5b apachectl[3157]: AH00526: Syntax error on line 3 of /etc/apache2/sites-enabled/000-default.conf:
Jun 09 15:12:28 f17f01056c5b apachectl[3157]: Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration
. . .
出力の最初の行はAH00526エラーです。 このエラーは、構成ファイルの無効な設定またはタイプミスに関連する一般的なエラーであるため、次の行でエラーの原因を説明します。 この場合、これはSSLCertificateFile
と呼ばれるディレクティブであり、ssl
モジュールが有効になっている場合にのみ有効です。
無効なSSLCertificateFile
ディレクティブに関連するAH00526エラーが発生した場合は、ssl
モジュールを有効にしてから、Apacheを再起動してエラーを解消することで解決できます。
UbuntuおよびDebianシステムの場合、以下を実行してモジュールを有効にします。
- sudo a2enmod ssl
- sudo systemctl restart apache2.service
CentOSおよびFedoraシステムでは、mod_ssl
パッケージがインストールされていることを確認してから、次のようなファイルでApacheの/etc/httpd/conf.modules.d
ディレクトリにモジュールを追加してモジュールをロードします。
- sudo yum install mod_ssl
- echo "LoadModule ssl_module modules/mod_ssl.so" | sudo tee > /etc/httpd/conf.modules.d/00-ssl.conf
- sudo systemctl restart httpd.service
モジュールがApacheによって参照され、Linuxディストリビューションに適したコマンドを使用してモジュールを再起動すると、構成にエラーがなくなるとサーバーが起動します。
ただし、さらにエラーが発生した場合、Apacheとsystemctl status
は引き続きエラーを報告し、サーバーを起動できない理由を説明しようとします。 systemctl
は、UbuntuおよびDebianシステムで次のようなエラーメッセージを出力します。
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details
また、CentOS、Fedora、およびRedHatから派生したシステムでは、失敗した起動メッセージは次のようになります。
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.
エラーが原因でApacheが起動しない場合は、apachectl configtest
コマンドを使用すると、問題を診断するための最も効率的で効果的な方法になります。 次のセクションでは、ユーティリティを使用して、無効なSSLCertificateFile
ディレクティブに再び関連するAH00526エラーを解決する方法について説明します。
apachectl
を使用したトラブルシューティング
Apacheのapachectl
ユーティリティでAH00526エラーをトラブルシューティングするには、configtest
サブコマンドを使用してApache構成をテストできます。 このツールは、Apacheファイルを解析して、それが有効かどうかを判断し、有効でない場合は、Apache構成で誤った設定を見つけます。
apachectl configtest
コマンドは、新しい構成でapacheをリロードする前に構文エラーをキャッチするのに役立ちます。 このテストは、Apacheファイルの設定が誤っている場合にサービスの停止を回避するのに役立ちます。
次の設定テストコマンドの例は、AH00526 Syntax error
メッセージを返し、Apacheが空のSSLCertificateFile
を参照していることが問題の可能性があることを説明しています。
- sudo apachectl configtest
OutputAH00526: Syntax error on line 3 of /etc/apache2/sites-enabled/000-default.conf:
SSLCertificateFile: file '/etc/ssl/certs/example.com.pem' does not exist or is empty
この出力例では、エラーメッセージの注記として/etc/ssl/certs/example.com.pem
ファイルは存在しません。 ファイルにSSL/TLS証明書を追加するか、ディレクティブを削除すると、問題が解決します。
apachectl configtest
の呼び出しが成功すると、次のような出力が得られます。
OutputSyntax OK
結論
このチュートリアルでは、ApacheAH00526構文エラーのトラブルシューティング方法を学習しました。 Apacheエラーを調査するときの最初のステップは、Linuxディストリビューションに応じてsystemctl status apache2
またはsystemctl status httpd
でサーバーのステータスを調べることです。 そこから、Apacheが正しく実行されているかどうか、またはエラーが原因で起動できないかどうかを判断できます。
Apacheのステータスを確認したら、journalctl
を使用してさらに診断し、プロセスのsystemd
ログを調べることができます。 apachectl configtest
コマンドを使用して、構成ファイルのエラーを直接確認することもできます。