Apache2.2へアップグレード

2007–11–25

Apacheの脆弱性に関するGLSAが出てたのを機に、Apache2.0x系からApache2.2系へアップグレードした。

自分にとって2.2系のありがたい新機能は、

  • modcacheによる高速化
  • Perl5互換の正規表現

ただ、mod_cacheはまだexperimentなんで、有効にせず運用中することにした。

設定まわりで一番影響があったのは、認証情報をPostgresqlで管理する mod_auth_ptsql が2.2系では対応していなくて、 代わりに mod_authn_dbd を用いる事。 このモジュールは apr-util というパッケージに入っているそうで、Gentoo的には

emerge apr-util	  

として、インストール。

Apacheのリファレンスを参考に設定

# PostgreSQLを使用
DBDriver pgsql

# 接続情報
DBDParams "dbname=fuga user=hoge host=127.0.0.1 port=5432 password=xxxxxx"

# コネクションプーリング
DBDMin  1
DBDKeep 2
DBDMax  10
DBDExptime 60	  

各ディレクティブで、以下のように設定する。 Basic認証の場合は、こんな感じ。

        AuthName "Please Enter Your Password"
        Authtype Basic
        AuthBasicProvider dbd
        Require valid-user
        AuthDBDUserPWQuery "select passwd from d_user where user_id = %s"	  

以前のmod_auth_pgsqlで、グループ毎に認証を管理する場合は、 グループを管理するテーブルを作って、ユーザー名と紐付けるようにしてた。 例えば、sysグループのユーザーについての認証を行う場合は、以下のようにする。

        # グループを管理するテーブル
        Auth_PG_grp_table m_group
	# ユーザー名を格納するフィールド
        Auth_PG_grp_user_field user_id
	# グループ名を格納するフィールド
        Auth_PG_grp_group_field group_id
	# グループ名
	Require group sys	  

mod_ahthn_dbd の場合 AuthDBDUserPWQueryでSQLをゴリゴリ書いて実現するみたい

AuthDBDUserPWQuery "select passwd from m_user, m_group where m_user.user_id = %s
and m_user.user_id = m_group.user_id and  group_id = 'sys'"