การเปลี่ยนแปลงอย่างหนึ่งใน Fedora เวอร์ชั่นหลังๆ คือการเปลี่ยนวิธีการคอนฟิก OpenLDAP ซึ่งจะเป็นรูปแบบใหม่ที่มีมาตั้งแต่ OpenLDAP เวอร์ชั่น 2.3 เป็นต้นมา แต่ทาง Fedora เพิ่งเริ่มนำมาใช้
แบบเก่าไฟล์คอนฟิกหลักจะอยู่ในไฟล์ /etc/openldap/slapd.conf แต่แบบใหม่คอนฟิกจะถูกเก็บแยกเป็นไฟล์ LDIF เป็นโครงสร้างอยู่ในไดเร็คทอรี /etc/openldap/slapd.d/ และเมื่อรันเซอร์วิส ไฟล์เหล่านี้จะถูกอ่านเข้าไปใน LDAP เลย ซึ่งทำให้เราสามารถแก้ไขคอนฟิกเซิร์ฟเวอร์ ได้ เหมือนกับการแก้ไขข้อมูลอื่นๆ ใน LDAP
รายละเอียดเพิ่มเติมหาอ่านได้จาก ข้อมูลอ้างอิง Configuring slapd
เพื่อความสะดวก ทางทีมพัฒนา OpenLDAP ได้สร้างคำสั่ง slaptest เพื่อใช้ในการเปลี่ยนคอนฟิกแบบเก่าไฟล์เดียว ให้เป็นรูปแบบใหม่ได้
ในบทความนี้จะแสดงขั้นตอนการติดตั้งและคอนฟิก OpenLDAP บนเครื่อง Fedora 13 (x86_64)
ติดตั้ง openldap
ใช้คำสั่ง rpm เพื่อตรวจสอบการติดตั้ง openldap ว่ามีอยู่แล้วหรือไม่
[root@fc13-64a ~]# rpm -qa | grep openldap openldap-2.4.21-4.fc13.x86_64
เพื่อจะคอนฟิกเป็นเซิร์ฟเวอร์ได้ ต้องติดตั้งไฟล์ rpm เพิ่มเติม บางไฟล์หาได้จากแผ่นดีวีดีติดตั้ง
[root@fc13-64a ~]# mount /dev/scd0 /media mount: block device /dev/sr0 is write-protected, mounting read-only [root@fc13-64a ~]# cd /media/Packages/
[root@fc13-64a Packages]# rpm -i libtool-ltdl-2.2.6-20.fc13.x86_64.rpm [root@fc13-64a Packages]# rpm -i openldap-clients-2.4.21-4.fc13.x86_64.rpm
ดาวน์โหลดไฟล์เพิ่มเติมจาก fc13 Everything แล้วติดตั้ง
[root@fc13-64a Everything]# rpm -i openldap-servers-2.4.21-4.fc13.x86_64.rpm
ไฟล์คอนฟิกดีฟอลต์ของ OpenLDAP จะถูกติดตั้งอยู่ใน /etc/openldap/
[root@fc13-64a ~]# cd /etc/openldap/
[root@fc13-64a openldap]# ls -l total 24 drwxr-xr-x. 2 root root 4096 Feb 24 16:19 cacerts -rw-r--r--. 1 root root 245 Feb 24 16:19 ldap.conf drwxr-xr-x 3 root root 4096 Jul 16 20:37 schema -rw-r----- 1 root ldap 4153 Feb 24 16:19 slapd.conf.bak drwx------ 3 ldap ldap 4096 Jul 16 20:37 slapd.d
รันเซอร์วิส
ใช้คำสั่ง service เพิ่มรัน slapd (OpenLDAP server)
[root@fc13-64a ~]# service slapd start
/var/lib/ldap/__db.004 is not owned by "ldap" [WARNING]
/var/lib/ldap/__db.001 is not owned by "ldap" [WARNING]
/var/lib/ldap/__db.002 is not owned by "ldap" [WARNING]
/var/lib/ldap/__db.006 is not owned by "ldap" [WARNING]
/var/lib/ldap/__db.005 is not owned by "ldap" [WARNING]
/var/lib/ldap/alock is not owned by "ldap" [WARNING]
/var/lib/ldap/__db.003 is not owned by "ldap" [WARNING]
ln: accessing `/var/run/openldap/slapd.pid': No such file or directory
มีข้อผิดพลาดฟ้องเรื่อง permission ไม่ถูกต้อง
[root@fc13-64a ~]# ls -l /var/lib/ldap/
total 884
-rw------- 1 root root 2048 Jul 16 20:37 alock
-rw------- 1 root root 24576 Jul 16 20:37 __db.001
-rw------- 1 root root 212992 Jul 16 20:37 __db.002
-rw------- 1 root root 270336 Jul 16 20:37 __db.003
-rw------- 1 root root 163840 Jul 16 20:37 __db.004
-rw------- 1 root root 802816 Jul 16 20:37 __db.005
-rw------- 1 root root 32768 Jul 16 20:37 __db.006
ใช้คำสัง chown เพื่อเปลี่ยนเจ้าของไฟล์ (owner)
[root@fc13-64a ldap]# chown ldap.ldap *
[root@fc13-64a ldap]# ls -l
total 884
-rw------- 1 ldap ldap 2048 Jul 16 20:37 alock
-rw------- 1 ldap ldap 24576 Jul 16 20:37 __db.001
-rw------- 1 ldap ldap 212992 Jul 16 20:37 __db.002
-rw------- 1 ldap ldap 270336 Jul 16 20:37 __db.003
-rw------- 1 ldap ldap 163840 Jul 16 20:37 __db.004
-rw------- 1 ldap ldap 802816 Jul 16 20:37 __db.005
-rw------- 1 ldap ldap 32768 Jul 16 20:37 __db.006
ใช้คำสั่ง service เพื่อรันเซอร์วิสอีกครั้ง
[root@fc13-64a ldap]# service slapd start Starting slapd: [ OK ]
ใช้คำสั่ง ps เพื่อตรวจสอบ process
[root@fc13-64a ldap]# ps -ef | grep ldap ldap 22636 1 0 21:18 ? 00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
ใช้คำสั่ง service เพื่อปิดเซอร์วิส
[root@fc13-64a ldap]# service slapd stop Stopping slapd: [ OK ]
แล้วทดลองรันเซอร์วิสอีกครั้ง จะมีข้อความฟ้องเรื่อง performance
[root@fc13-64a ldap]# service slapd start
Checking configuration files for slapd: [WARNING]
bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
Expect poor performance for suffix "dc=my-domain,dc=com".
config file testing succeeded
Starting slapd: [ OK ]
ปิดเซอร์วิสอีกครั้ง
[root@fc13-64a ldap]# service slapd stop Stopping slapd: [ OK ]
เพื่อปรับปรุงเรื่อง performance ต้องสร้างไฟล์ DB_CONFIG จากตัวอย่างไฟล์ใน /usr/share/doc/openldap-servers-2.4.21/
[root@fc13-64a ldap]# cp /usr/share/doc/openldap-servers-2.4.21/DB_CONFIG.example DB_CONFIG [root@fc13-64a ldap]# chown ldap.ldap DB_CONFIG [root@fc13-64a ldap]# chmod 600 DB_CONFIG
ทดสอบการเปิด/ปิด เซอร์วิส ครั้งแรกจะมีฟ้องว่า มีการปรับเปลี่ยนคอนฟิก แล้วหลังจากนั้นก็สามารถรันได้ตามปกติ
[root@fc13-64a ldap]# service slapd start
Checking configuration files for slapd: [WARNING]
bdb_db_open: DB_CONFIG for suffix "dc=my-domain,dc=com" has changed.
Performing database recovery to activate new settings.
bdb_db_open: database "dc=my-domain,dc=com": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded
Starting slapd: [ OK ]
[root@fc13-64a ldap]# service slapd stop Stopping slapd: [ OK ]
[root@fc13-64a ldap]# service slapd start Starting slapd: [ OK ]