Mac OS X 10.6 Snow Leopard で openldap をセットアップする手順(with MacPorts)
MacPorts 経由での openldap 利用は、ビルドまでは上手くいくのだけれど、簡単に利用できるところまではいかず、はまりどころが多い。特に launchd の配下で動かすところとかに試行錯誤があったので手順をまとめ。
試行錯誤のログはこちらで記述。尚、Xcode と MacPorts はインストール済みであることを前提にする。
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 すれば可能。
参考
- MacPorts Guide 5.7. StartupItems
- man launcd.plist