カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

apache ログのカスタマイズ

apacheでは、デフォルトでアクセスログなどを記録してくれますが
そこに例えばリファラー情報などは含まれません。

apacheの設定ファイルを変更すれば、記録する情報を任意にカスタマイズすることができます。

カスタムログの作成

ここでは例として、リファラー情報とリクエストURLを記録するカスタムログを作成してみます。

httpd.confを開き、<IfModule log_config_module>というディレクティブを探します。

※IfModuleディレクティブは消しておいたほうがいいという説があるようですが、
ここではそれについては割愛します。

デフォルトでは以下のようになっているはずです。(違う場合は環境によると思ってください)

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog logs/access_log common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog logs/access_log combined
</IfModule>

※combinedという設定が既にリファラーを記録するフォーマットになっていますので、
設定するのが面倒な場合はこちらを使用してください。
続きを読む…»

5,888 views

SSLでパスフレーズの入力を省略する

apacheにSSLを導入した場合、apacheの起動時にパスフレーズの入力を求められます。
サーバーの再起動時や、プログラム等でのapacheの自動起動でパスフレーズの入力で止まったまま起動しない、という問題が発生します。

[Apache+SSL環境の構築]の最後でも紹介したように、秘密鍵を復号化しておけばパスフレーズの入力を省略できますが、セキュリティ上良くありません。
そこで秘密鍵を復号化することなく、パスフレーズの入力を省略する方法をご紹介します。

apacheのhttpd.confの<ifModule ssl_module>ディレクティブを修正します。

<ifModule ssl_module>
...
    SSLPassPhraseDialog exec:{プログラムの絶対パス}
</ifModule>

通常、SSLPassPhraseDialogの記述はないかと思いますが、
デフォルトはbuiltinとなっており、対話形式でパスフレーズを入力する設定になっています。
続きを読む…»

2,660 views

テーブルの内容を簡単置き換え【SQL】

MySQLテーブルのデータ内容をSQL文を使って簡単に書き換えることができます。

例えば、何らかのシステムの変更により、テーブルのとあるカラムの内容を
条件を付けて一括で置き換えたい、という場合に便利な方法です。

わざわざPHP等のプログラムを書いてサーバーに入れて処理…などとしなくても
SQLだけで短時間で処理できます。

例)exTableというテーブルのカラム「ex_column2」が「test」という文字列のレコードの
カラム「ex_column」にある「source」という言葉を「destination」に全て置き換えます。

UPDATE exTable SET 
ex_column = REPLACE(ex_column, 'source' , 'destination') 
WHERE ex_column2 = 'test' ;
2,473 views

SPFレコード”~all”と”-all”の違い

末尾の「~all」と「-all」の違い。

~all

設定以外のアドレスは当該ドメインのメールサーバとして認証しないが、
正当なメールであっても認証失敗する可能性もある

-all

設定以外のアドレスは当該ドメインのメールサーバとして認証しない

「~all」としておくと、認証に失敗した場合でもはっきり認証失敗として扱って
ほしくないという意味になるため、「-all」で問題がなければ、できる限り避けるべきである、
とされている。

SPFレコードが正しく設定されているか確認できるサイトがあります。
http://www.sendmail.co.jp/sa/spfcheck.html

12,494 views

rndcコマンド

rndcコマンドは、namedをコントロールするユーティリティです。
使用方法の抜粋。

reload named.confとシリアル番号が増えているゾーン情報をリロード。
stats サーバーの統計情報をnamed.statsファイルに書き出す。
status サーバーのステータス情報を表示する。
dumpdb キャッシュデータをnamed_dump.dbファイルにダンプする。
flush サーバーのキャッシュをすべて消去する。

statsやdumpdbで生成されるファイルはnamed.confで設定されている[options]-[directory]に設定されているディレクトリ配下に保存されます。

2,046 views