LinuCレベル2 202試験の例題と解説
主題2.09HTTPサーバーとプロキシサーバー
2.09.1Apache HTTPサーバーの設定と管理
LinuCレベル2 202試験の出題範囲から「2.09.1 Apache HTTPサーバーの設定と管理」についての例題を解いてみます。
例題
Apache HTTPサーバー設定ファイルの文法エラーの有無のみを検出するのに最も適切なコマンドはどれか。
- systemctl status httpd
- apachectl graceful
- apachectl configtest
- httpd -M
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「3. apachectl configtest」です。
apachectlコマンドは、Apache HTTPサーバーの制御を行うためのコマンドです。設定ファイルの文法エラーの有無を検出したり、サーバの起動・停止などを行うために使用します。apachectlコマンドには、以下のようなオプションがあります。
start:Apache HTTP Serverの起動
stop:Apache HTTP Serverの停止
restart:Apache HTTP Serverの再起動
graceful:Apache HTTP Serverの穏やかな再起動
configtest:Apache HTTP Server設定ファイルの文法エラーの有無を検出
status:Apache HTTP Serverのステータス確認
fullstatus:Apache HTTP Serverの詳細なステータス確認
graceful-stop:Apache HTTP Serverの穏やかな停止
各選択肢の解説は次の通りです。
1. systemctl status httpd
誤りです。
これは、Apache HTTPサーバーのサービスの現在の状態を表示するコマンドです。起動失敗時には、終了コードや直近のログが確認できます。
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: failed (Result: exit-code)
Process: 2143 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 2143 (code=exited, status=1/FAILURE)
Jan 09 14:32:18 server1.example.com httpd[2143]: AH00526: Syntax error on line 27 of /etc/httpd/conf/httpd.conf:
Jan 09 14:32:18 server1.example.com httpd[2143]: Invalid command 'Requre', perhaps misspelled or defined by a module not included in the server configuration
Jan 09 14:32:18 server1.example.com systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
Jan 09 14:32:18 server1.example.com systemd[1]: httpd.service: Failed with result 'exit-code'.ただし、これはすでに起動を試みた結果を表示しているだけであり、設定ファイルの文法エラーの検出のみを独立して行うものではありません。そのため、問題文の要件である「文法エラーの有無のみを検出する」用途には不適切です。
2. apachectl graceful
誤りです。
これは、稼働中の接続を維持したまま設定の再読み込みを行うコマンドです。gracefulは、設定が正しければ、サービスは停止せず新しい設定が反映されます。しかし、設定ファイルに文法エラー等がある場合は再読み込みに失敗し、結果としてApacheの起動に失敗します。そのため、これは主に設定確認後に使うコマンドであり、文法エラーの有無の検出など、設定確認そのものに使うべきコマンドではありません。
3. apachectl configtest
正しいです。
これは、Apacheの設定ファイル全体を読み込み、文法エラーの有無のみを検出するコマンドです。サービスの起動や再起動は行われないため、安全に事前確認が可能です。設定に問題がない場合、次のように出力されます。
# apachectl configtest
Syntax OK一方、ディレクティブの記述ミスやモジュール未ロードなどがある場合は、該当箇所とともにエラー内容が出力されます。
# apachectl configtest
AH00526: Syntax error on line 12 of /etc/httpd/conf/httpd.conf:
Invalid command 'Requre', perhaps misspelled or defined by a module not included in the server configuration上記より、設定反映前の文法やモジュールのロードに不備がないかどうかを確認するという目的に最も適しています。
4. httpd -M
誤りです。
これは、Apacheに現在ロードされているモジュールの一覧を表示するコマンドです。
次のように出力されます。
# httpd -M
Loaded Modules:
core_module (static)
so_module (static)
ssl_module (shared)
rewrite_module (shared)
.
.そのため、設定ファイルの文法エラーの有無を検出する機能はありません。
Apache HTTPサーバーにおいて、起動・停止や設定確認のコマンドを正しく理解し、設定変更時の影響を適切に管理できるようにしておきましょう。安定したサービス運用のために、設定検証や再起動方法の違いを把握し、状況に応じた適切な操作を行えることが重要です。
例題作成者
株式会社デージーネット 経営企画室 大河内 龍馬