hana_shinのLinux技術ブログ読者になるhana_shinのLinux技術ブログLinuxの技術情報を掲載しています。ネットワークをメインに掲載していきます。httpdコマンドとは?Apacheのデバッグに使うコマンドです。検証環境CentOS版数は以下のとおりです。(Core)カーネル版数は以下のとおりです。オプション一覧オプション一覧を以下に示します。Apatchのバージョンを確認する方法(-v)-vは、Apatchのバージョンを表示するオプションです。以下の実行結果より、Apatchのバージョンは、Apache/2.4.6であることがわかります。設定ファイルをチェックする方法(-t)-tは、設定ファイル(httpd.conf)の設定内容が正しいかどうかをチェックするオプションです。httpd.confのServerNameがデフォルトのままだと、下記メッセージが出力されます。OKServerNameにApacheがパケットの到着を待つインタフェースのIPアドレスを設定します。192.168.2.100:80httpdサービスを再起動します。httpd.service再度、httpdコマンドを実行します。httpdコマンドの実行結果がOKとなりました。OK次に、1行目にTESTを追記して、誤りがある設定ファイルを作成します。the-snip-httpdコマンドを実行します。設定ファイルに誤りがあると、以下のようにエラーが表示されます。動的にロードされたモジュールを調べる方法(-M)-Mは、ロードされているモジュールを表示するオプションです。sharedのモジュールは、/etc/httpd/conf.modules.d配下の定義ファイルを編集することで、モジュールをロードしたり、ロードしないようにすることができます。staticはsharedのようにカスタマイズすることはできません。Apatcheに静的に組み込まれているモジュールです。(shared)-snip-モジュールの定義ファイルは、/etc/httpd/conf.modules.d配下に格納されています。01-cgi.conf上記定義ファイルにLoadModuleディレクティブが定義されています。00-base.confは以下のようになっています。/etc/httpd/conf.modules.d/00-base.conf##ThisfileloadsmostofthemodulesincludedwiththeApacheHTTP#Serveritself.#LoadModuleaccess_compat_modulemodules/mod_access_compat.soLoadModuleactions_modulemodules/mod_actions.soLoadModulealias_modulemodules/mod_alias.so-snip-LoadModuleディレクティブの書式は、以下のとおりです。-Mはモジュール名を表示しています。共有オブジェクトファイル名そして、モジュールの実体(共有オブジェクトファイル)は、/usr/lib64/httpd/modulesにあります。access_compat_moduleモジュールの共有オブジェクトファイル名はmod_access_compat.soです。/usr/lib64/httpd/modules/mod_access_compat.soaccess_compat_moduleがロードされているかどうかを確認します。access_compat_moduleがロードされていることがわかります。(shared)6行目の行頭に#を挿入して、access_compat_moduleの定義を無効化してみます。modules/mod_access_compat.so-snip-httpdを再起動します。-Mを実行してもaccess_compat_moduleモジュール名が表示されなくなったことがわかります。ディレクティブを表示する方法(-L)-Lは、ディレクティブを表示するオプションです。ディレクティブとは、Apacheに対するコマンドのことです。FileInfo-snip-LoadModuleディレクティブを表示してみます。(mod_so.c)LogLevelディレクティブを表示してみます。デバッグモードを有効にする方法(-X)デバッグモードを有効にすると、httpdプロセスが1つだけ起動されます。並列処理のためにプロセスをforkして複数プロセスを起動するような設定にしていると、要求が来たときにどのプロセスが処理しているのかわかりません。そのような時、本オプションを有効にして、デバッグ対象のプロセスを1つに絞り込みことができます。デバッグモード無効時の状態を確認してみます。複数のhttpdプロセスが起動していることがわかります。-DFOREGROUND次にデバッグモードを有効にしてみます。/etc/sysconfig/httpdファイルのOPTIONSに-Xを指定します。/etc/sysconfig/httpd-snip-#OPTIONS=OPTIONS=-Xhttpdを再起動します。httpdプロセスを確認してみます。デバッグモード有効時は、httpプロセスが1つだけ起動していることがわかります。その他(ログレベルの変更方法)ログレベルの変更をしてみます。ログレベルは、以下のものがあります。デフォルトのログレベルはwarnです。これをdebugに変更してみます。debug-snip-httpdを再起動します。httpderror_logを確認すると、debugレベルのログが出力されていることがわかります。以下の例では、proxy:debugがdebugレベルのログです。その他(dumpio_moduleモジュールの使い方)dumpio_moduleモジュールを使うと、httpdプロセスの入出力をデバッグすることができます。dumpio_moduleモジュールがロードされているかどうか確認します。私の環境では、デフォルトでロードされていました。(shared)httpd.confを編集します。LogLevelディレクティブにdumpio:trace7を追加します。dumpio:trace7次に、/etc/httpd/conf.d配下に任意のファイルを作成します。ここでは、debug.confという名前のファイルを作成しました。debug.confに下記設定を定義しました。DumpIOOutputもしくはDumpIOInputだけを有効にすることも可能です。Onhttpdを再起動します。httpdブラウザやcurlでhttpdにアクセスすると、下記ログが出力されることがわかります。2.4)の情報によると、ロギングされる情報は、TLS暗号化前/TLS複合後の情報が記録されるようです。私が業務や記事執筆で参考にした書籍を以下のページに記載します。)はてなブログをはじめよう!hana_shinさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。