ทดสอบการติดตั้งและรัน OpenLDAP Server (slapd) ใน Fedora 17 (เลือกติดตั้งแบบ Minimal->Base)
ติดตั้งไฟล์ rpm
แพ็คเกจ openldap ที่ติดตั้งจาก Fedora 17 (Minimal->Base) จะมีแค่ openldap ซึ่งจะมีไฟล์ library พื้นฐานของ ldap เท่านั้น
[root@fc17-64a ~]# rpm -qa | grep openldap openldap-2.4.30-2.fc17.x86_64
ต้องติดตั้งไฟล์ rpm เพิ่มเติมคือ openldap-clients และ openldap-servers
mount แผ่นดีวีดีติดตั้ง Fedora 17 เพิ่อลงไฟล์ rpm เพิ่มเติม
[root@fc17-64a ~]# mount /dev/cdrom /mnt mount: /dev/sr0 is write-protected, mounting read-only
ใช้คำสั่ง rpm เพิ่อติดตั้งแพ็คเกจ openldap-clients และ libtool-ltdl ไฟล์หลังจำเป็นสำหรับ openldap-servers
[root@fc17-64a ~]# rpm -i /mnt/Packages/o/openldap-clients-2.4.30-2.fc17.x86_64.rpm [root@fc17-64a ~]# rpm -i /mnt/Packages/l/libtool-ltdl-2.4.2-3.fc17.x86_64.rpm
ส่วน openldap-servers ต้องดาวน์โหลดเพิ่มเติมจาก Fedora 17 Everything
[root@fc17-64a Everything]# rpm -i openldap-servers-2.4.30-2.fc17.x86_64.rpm
หมายเหตุ โครงสร้างไดเร็คทอรีในแผ่นดีวีดีติดตั้ง และ Everything ของ Fedora 17 ถูกจัดใหม่ โดยแยกชื่อไฟล์ rpm ตามตัวอักษรตัวหน้า เนื่องจากจำนวนไฟล์มีจำนวนมาก
รัน (start) เซอร์วิส slapd
ชื่อเซอร์วิสชอง OpenLDAP Server ในเวอร์ชั่น 2.4 คือ slapd ย่อมาจาก Standalone LDAP Daemon
ใช้คำสั่ง systemctl start เพื่อรัน slapd.service ซึ่งเป็นชื่อเซอร์วิส OpenLDAP Server
[root@fc17-64a ~]# systemctl start slapd.service
Job failed. See system journal and 'systemctl status' for details.
รันสตาร์ตเซอร์วิสไม่สำเร็จ ลองใช้คำสั่ง systemctl status เพื่อดูสาเหตุว่าทำไมถึง fail
[root@fc17-64a ~]# systemctl status slapd.service
slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled)
Active: failed (Result: timeout) since Sat, 30 Jun 2012 14:52:56 +0700; 1min 48s ago
Process: 1185 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=killed, signal=TERM)
Process: 1170 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/slapd.service
Jun 30 14:52:52 fc17-64a.example.com runuser[1173]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
Jun 30 14:52:52 fc17-64a.example.com runuser[1173]: pam_unix(runuser:session): session closed for user ldap
หลังจากพยายามหาสาเหตุสักพัก ก็พบปัญหาที่สตาร์ตเซอร์วิส slapd ไม่ได้เป็นเพราะว่า slapd ไม่สามารถที่จะแปลงชื่อ (resolv) ชื่อ hostname ของเครื่องให้เป็น IP address ได้
ตัวอย่างเครื่องที่ทดสอบตั้งชื่อเครื่องเป็น fc17-64a.example.com
[root@fc17-64a ~]# hostname fc17-64a.example.com
การแก้ไขทำได้สองวิธีคือเพิ่มชื่อ hostname ใน DNS server ที่เครื่องนี้ชี้ไป (ไฟล์ /etc/resolv.conf) ให้ถูกต้อง หรือ เพิ่มชื่อ hostname เข้าไปโดยตรงในไฟล์ /etc/hosts
ในที่นี้ขอเลือกแก้ไฟล์ /etc/hosts โดยเพิ่มชื่อ hostname ของเครื่องให้เป็น 127.0.0.1
[root@fc17-64a ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 fc17-64a.example.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
ลองสตาร์ตเซอร์วิสอีกครั้ง
[root@fc17-64a ~]# systemctl start slapd.service
ไม่ฟ้อง error ลองใช้คำสั่ง systemctl status เพื่อดูสถานะการรันเซอร์วิส
[root@fc17-64a ~]# systemctl status slapd.service
slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled)
Active: active (running) since Sat, 30 Jun 2012 15:06:52 +0700; 13s ago
Process: 1551 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
Process: 1522 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 1552 (slapd)
CGroup: name=systemd:/system/slapd.service
1552 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///
สถานะเป็น active (running) ลองใช้คำสั่ง ps เพื่อดูโปรเซสของ slapd
[root@fc17-64a ~]# ps -ef | grep slapd ldap 1552 1 0 15:06 ? 00:00:00 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///
ปิด (stop) เซอร์วิส slapd
หากต้องการปิดเซอร์วิส slapd สามารถทำได้โดยใช้คำสั่ง systemctl stop ตามด้วยชื่อเซอร์วิส
[root@fc17-64a ~]# systemctl stop slapd.service
ตรวจสอบสถานะเซอร์วิสหลังจากการปิด
[root@fc17-64a ~]# systemctl status slapd.service
slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled)
Active: inactive (dead) since Sat, 30 Jun 2012 15:10:12 +0700; 9s ago
Process: 1551 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
Process: 1522 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 1552 (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/slapd.service