ติดตั้งและสตาร์ต OpenLDAP Server บน Fedora 17

ทดสอบการติดตั้งและรัน 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

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.