Apache構成エラーAH00526:構文エラー
序章
Apache AH00526: Syntax error このメッセージは、Apache構成ファイルのどこかにタイプミスまたは設定ミスがある場合に発生します。 これは一般的なエラーであり、根本的な問題の数を示している可能性があります。
エラーは、を使用して検出できます apachectl configtest 無効な構成がロードされる前。 また、を使用して見つけることができます systemctl と journalctl コマンド。 後者の2つのケースでは、エラーのためにApacheを実行できません。
を使用してエラーを検出した場合 apachectl 次に、このチュートリアルの組み込みのapachectlコマンドを使用したトラブルシューティングセクションにスキップします。 それ以外の場合は、次のセクションで使用方法を説明します systemctl エラーのトラブルシューティングを行います。
トラブルシューティング systemctl
このシリーズの冒頭にある一般的なApacheエラーのトラブルシューティング方法チュートリアルのトラブルシューティング手順に従って、AH00526エラーのトラブルシューティングを行う最初の手順は、Apacheのステータスを次のように確認することです。 systemctl. エラーが実行中のプロセスに影響を与えるのか、それともApacheの起動を妨げているのかを理解することが重要です。
UbuntuおよびDebianから派生したLinuxディストリビューションで、以下を実行してApacheのステータスを確認します。
- sudo systemctl status apache2.service -l --no-pager
CentOSおよびFedoraシステムでは、次のコマンドを使用してApacheのステータスを調べます。
- sudo systemctl status httpd.service -l --no-pager
The -l フラグは systemctl 楕円で置き換えるのではなく、行の内容全体を出力します(…)長い行の場合。 The --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は実行されていません。 このエラーは、先頭にある余分なS文字が原因で発生します。 SSSLCertificateFile の行 /etc/apache2/sites-enabled/000-default.conf ファイル。 正しいディレクティブは次のようになります SSLCertificateFileしたがって、この例のディレクティブ名を修正するためにファイルを編集すると、エラーが解決され、Apacheを起動できるようになります。
The systemctl この例の出力には、 systemd ジャーナル。 出力が構成ファイルの特定の行が構文エラーを生成していることを示している場合は、スキップできます journalctl と apachectl configtest トラブルシューティング手順。 代わりに、ファイルに直接移動して、エラーのある行を調べて編集し、エラーを解決することができます。
出力にApacheの構成ファイル内のエラーの場所に関する特定の情報が示されていない場合は、調べる必要があります journalctl からの出力 systemd ログ。 次のセクションでは、使用方法について説明します journalctl AH00526エラーのトラブルシューティングを行います。
トラブルシューティング journalctl ログ
もしあなたの systemctl 出力にはAH00526構文エラーに関する詳細は含まれていません。次のコマンドを使用して続行できます。 journalctl 調べるコマンド systemd Apacheのログ。
UbuntuおよびDebianから派生したシステムでは、次のコマンドを実行します。
- sudo journalctl -u apache2.service --since today --no-pager
CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してログを検査します。
- sudo journalctl -u httpd.service --since today --no-pager
The --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 モジュールが有効になっています。
無効に関連するAH00526エラーが発生した場合 SSLCertificateFile ディレクティブ、有効にすることで解決できます 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 コマンドは、問題を診断するための最も効率的で効果的な方法です。 次のセクションでは、ユーティリティを使用して、無効に関連するAH00526エラーを解決する方法について説明します。 SSLCertificateFile 指令。
トラブルシューティング apachectl
ApacheのAH00526エラーのトラブルシューティングを行うには apachectl ユーティリティを使用すると、Apache構成をテストできます。 configtest サブコマンド。 このツールは、Apacheファイルを解析して、有効かどうかを判断し、有効でない場合は、Apache構成で誤った設定を見つけます。
The 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エラーを調査するときの最初のステップは、サーバーのステータスを次のように調べることです。 systemctl status apache2、 また systemctl status httpd Linuxディストリビューションによって異なります。 そこから、Apacheが正しく実行されているかどうか、またはエラーが原因で起動できないかどうかを判断できます。
Apacheのステータスを確認したら、次を使用してさらに診断できます。 journalctl 調べるために systemd プロセスのログ。 また、使用することができます apachectl configtest 構成ファイルのエラーを直接チェックするコマンド。