Mac OS X 10.6 Snow Leopard で openldap をセットアップする手順(with MacPorts)

MacPorts 経由での openldap 利用は、ビルドまでは上手くいくのだけれど、簡単に利用できるところまではいかず、はまりどころが多い。特に launchd の配下で動かすところとかに試行錯誤があったので手順をまとめ。

試行錯誤のログはこちらで記述。尚、XcodeMacPorts はインストール済みであることを前提にする。

openldap のインストール

これは簡単。

sudo port install openldap

これで終了。インストール後に port load しろとか書かれるけれども、これは無視する。その間にやる事がある。

設定ファイル等の準備

MacPorts 経由の openldap インストールはデフォルトの設定ファイル等をしない。これは CentOS 等でも同じ。従ってこちらで準備してあげる必要がある。

$ sudo cp /opt/local/etc/openldap/slapd.conf{.default,}

ldap ユーザが設定ファイルを読み込めるようにパーミッションも変更する。

$ sudo chown root:ldap /opt/local/etc/openldap/slapd.conf
$ sudo chmod 740 /opt/local/etc/openldap/slapd.conf

ついでに rootpw も必要に応じて変更する。

$ sudo vi /opt/local/etc/openldap/slapd.conf

起動スクリプトの修正

どうも起動スクリプトに不具合があり、このままでは launchd 経由では起動できない。これを修正する。対象は /opt/local/etc/LaunchDaemons/org.macports.slapd/slapd.wrapper で、起動時のコマンドとして以下のような記述がある。

/opt/local/libexec/slapd -u ldap -f /opt/local/etc/openldap/slapd.conf

これに追加で -g daemon という記述を追加して保存する。

$ sudo vi /opt/local/etc/LaunchDaemons/org.macports.slapd/slapd.wrapper

ログの設定

slapd のログは syslog の local4 ファシリティに出力される。デフォルトでこれは存在しないので、/etc/syslog.conf に以下のように設定してあげる。

local4.*                              /var/log/slapd.log

保存領域の設定

保存領域が適切なパーミッションで設定されないようなので、事前に設定する。

$ sudo chown ldap:ldap /opt/local/var/openldap-data
$ sudo chown ldap:ldap /opt/local/var/openldap-data
$ sudo chmod 700 /opt/local/var/openldap-data

あと、DB_CONFIG も作成しておく

$ sudo cp /opt/local/var/openldap-data/DB_CONFIG{.example,}
$ sudo chown ldap:ldap /opt/local/var/openldap-data/DB_CONFIG

設定ファイルのロード

ここでようやく設定ファイルを launchd にロードする。

$ sudo port load openldap

ロードが完了すると起動がはじまるよ!

この時点で Firewall から「接続を許可しますか?」等の問い合わせがある。適切に対応してくだちい。自分はとりあえず拒否にしたけれど localhost からの接続には問題ないみたい。

停止と起動の制御

デフォルトの plist では、プロセスが停止したらすぐ起動するような設定になっている様子。

多分 plist を適切に変更すれば対応できるのだと思うんだけれど、上手く行かない。まぁがっつり止めたければ sudo port unload openldap すればよい(ぇー

結果的に再起動は sudo launchctl stop org.macports.slapd すれば可能。

参考