Apache
FreeBSD
ログ
モジュール

FreeBSD (Apache) において拡張モジュールの設定と「ログ」の取得

今回は拡張モジュールを用いてFreeBSDに機能を追加していきましょう。
Apacheには初期状態から多くのモジュールがインストールされています。

  • ユーザ認証
  • アクセス制限
  • HTTPSプロトコルの実装
  • Proxy機能
  • ログ

などなど・・・
  

現状の確認

まずは現状でどれだけのモジュールが既に組み込まれているのか確認して見ましょう。
httpdコマンドに「-M」オプションを付けると組み込まれているモジュールを一覧表示できます。モジュール名の横に付いている(static/shared)はモジュールタイプを示しており、

「static」は静的リンクを使用しており、Apacheのインストール時から組み込まれているものです。「shared」は動的リンクを使用しており、必要に応じて組み込むことのできるモジュールです。

組み込み済みモジュールの確認
$ su    ←まずはスーパーユーザになって下さい
# httpd -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 ...



 logio_module (shared)
 socache_shmcb_module (shared)

静的なものは切り離し・組み込みの際にApacheを再インストールする必要があります。
一方、動的なものは設定ファイルで簡単に有効 / 無効を切り替えることができます。

mod_statusの利用

では、簡単にモジュールを追加して見ましょう。

mod_statusのインストール
まずhttpd.confを編集します
# vim /usr/local/etc/apache24/httpd.conf
httpd.conf
#Server configuration
ServerRoot "/usr/local"
Listen 80

#LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
...ずっと続きます。変更点は以下です。
(「#」はコメントアウト)

LoadModule status_module libexec/apache24/mod_status.so
コメントアウトを外す
status_moduleとういモジュールをロードしてくれます

ExtendedStatus On
追加情報を表示

<Location /server-status>
        SetHandler server-status
        Order Deny,Allow
        Deny from all
        Allow from 192.168.56.1   192.168.56.1からのみ見られるように設定
</Location>
これらは追記して下さい

設定完了後、apachectlを用いてApacheを再起動を行い、アクセスを許可されたクライアントから「http://サーバ名/server-status」に接続します。
  
以下のようなページが表示されたら成功です。
server-status.png

またURLに「?auto」に付加した「http://ホスト名/server-status?auto」を指定することで文字列としてサーバステータスを取得できます。
server-status?auto.png

ログの設定

ではいよいよログについてやっていきます。「カスタムログ」を用いることで、URL参照元やクライアント情報などをログ出力に加えることができます。  
それでは先ほどと同様にhttpd.confを編集していきます。

ログの設定
# vim /usr/local/etc/apache24/httpd.conf
httpd.conf
#Server configuration
ServerRoot "/usr/local"
Listen 80

#LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
...ずっと続きます。変更点は以下です。



#以下の2行のコメントアウトを外して下さい
LoadModule log_config_module libexec/apache24/mod_log_config.so  ←ログを拡張できる
LoadModule logio_module libexec/apache24/mod_logio.so

#エラーログの設定
ErrorLog "/var/log/httpd-error.log"  ←エラーログの出力先の設定
LogLevel warn  ←ログレベルの設定

#カスタムログの設定
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined  ←ログフォーマット「combined」の定義
    LogFormat "%h %l %u %t \"%r\" %>s %b" common    ログフォーマット「common」の定義

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio ←ログフォーマット「combinedio」の定義
    </IfModule>

    CustomLog "/var/log/httpd-access.log" common /var/log/httpd-access.logcommonのフォーマットに従って記述する
</IfModule>

ではアクセスログを見てみましょう。

access_log.png

まあ外と繋がっていないのでアクセスは自分だけです。笑
以上で今回は終了です。