Open4

Apacheスクラップ

kobusutorakobusutora

httpdのログ

ログの種類

access_log
error_log
ssl_access_log
ssl_error_log
ssl_request_log

access_logの見方

12.23.34.56 - - [24/Jul/2022:00:38:19 +0000] "POST /xmlrpc.php HTTP/1.1" 200 439
①リモートホストのIPアドレス
②リモートログ名
 ※リモートログ名は通常ハイフン(-)になってしまう。
③リモートユーザー名
 ※リモートユーザー名もハイフン(-)になってしまう。
④リクエスト受信日時
⑤リクエスト内容
 ※リクエスト内容の最初の行が表示される。メソッド名とファイル名。
⑥ステータスコード
⑦レスポンス本文のバイト数

kobusutorakobusutora

フォルダ構成

bin
cgi-bin
conf
error
htdocs
icons
include
lib
logs
modules

本体の場所

/usr/sbin/httpd

デーモンの場所

/usr/lib/systemd/system/httpd.service

設定ファイルの場所

RHEL系
/etc/httpd/conf/httpd.conf
Debian系
/etc/apache2/apache2.conf

httpd-dav.conf

conf/extraの中にある

モジュールの場所(例:proxy_module)

RHEL系
modules/mod_proxy.so
Debian系
mods-available/proxy.load

ApacheHausのフォルダ構成

Apache24・・・Apacheフォルダ
readme_first.html・・・ここにバージョンの記載あり

ライセンス情報

LICENSE.txt・・・Apache本体のライセンスの説明
Licenses.txt・・・Apacheに使われているサードパーティのライセンスの説明

kobusutorakobusutora

コマンド

httpdとapachctlとsystemctlの違い

・apachectlはhttpdのラッパーであり、より分かりやすく使いやすいインターフェースを提供している。
・スクリプトを通じて裏でhttpdをたたいているので若干のオーバーヘッドはあるが、速度差はほぼ皆無(10msecくらい?)。
・apachectlもhttpdもいずれもApacheサーバーのプロセスに直接働きかけるコマンドである。
・一方systemctlはsystemdを通じて間接的に働きかけるコマンドである。
・systemctlではgracefulな停止はできないので注意。

バージョン関連

httpd -V
または
apachectl -V
バージョンだけでなく、アーキテクチャのビット数、MPMの方式、コンパイル時に使用したオプションなどが分かる。

デーモン(サービス)関連

サービス開始:httpd -k start
サービス再起動:httpd -k restart
サービス停止:httpd -k shutdown

以下はWindowsのみ

サービス登録:httpd -k install
サービス削除:httpd -k uninstall
※サービス化せず、cmd立ち上げてhttpd実行で起動できるが、cmdの画面閉じたらhttpdも終了してしまう。

モジュール関連

静的モジュールの確認方法

httpd -l
※モジュール名ではなく、ファイル名で表示されるので注意!
※ただし、静的モジュールなので、ビルド時にバイナリに組み込まれているため、ファイルとしてどこかに存在しているわけではない。

動的モジュールの確認方法

httpd -M
※このオプションでは動的静的すべてが表示される。staticと表示されているものが静的で、sharedと表示されているものが動的。
※ファイル名ではなく、モジュール名(モジュール識別名、モジュールごとに識別名というものが一意に決まっている)で表示されるので注意!
または、httpd.conf内のLoadModuleを確認する。
モジュール一覧からMPMの方式を知ることもできる。

その他

バーチャルホストの設定確認
httpd -S

kobusutorakobusutora

エラーメッセージ

エラーログ内のタイムスタンプは普通UTCになっている?

AH01102: error reading status line from remote server 12.34.56.78

クライアントには502エラー(Bad Gateway)が返る。

AH01095: prefetch request body failed to 12.34.56.78

クライアントには400エラー(Bad Request)が返る。

AH01618: user ユーザー名 not found

BASIC認証のエラー。存在しないユーザー名を指定した可能性大。

AH00957: HTTP: attempt to connect to 12.34.56.78 (ホスト名:ポート番号) failed

接続先(転送先)のサーバーがリッスンしてないか、ダウンしていることを意味する。高負荷でさばき切れていないか、拒絶している可能性がある。
ここでの接続はTCPレベルで確立できなかったことを意味する。

AH01114: HTTP: failed to make connection to backend: hoge.jp

HTTP接続を確立できなかったことを意味する。ふつうAH00957とセットで吐かれる。

(70007)The timeout specified has expired

文字通り、タイムアウトを引き起こしたことを意味する。