RHEL 8에 OpenLDAP 설치 - slapd.pid 문제

RHEL 8에 OpenLDAP 설치 - slapd.pid 문제

새 RHEL 8 인스턴스에서 현재 버전의 OpenLDAP를 컴파일하고 서명된 SSL 인증서로 설정했습니다. 때리기 시작했을 때 나는 unable to open pid file "/var/run/openldap/slapd.pid": 2 (No such file or directory). 놀랍게도 openldap 디렉토리가 존재하지 않습니다.

디렉토리를 생성하고 소유권을 ldap:ldap으로 설정했습니다. 이제 slapd를 시작하면 Can't open PID file /var/lib/openldap/slapd.pid (yet?) after start: No such file or directory. 서비스가 pid 파일을 생성하면 안 되나요?

실행하여 문제 해결을 시도했지만 slapd -u ldap -g ldap -d 255오류가 반환되지 않았습니다. 시작 시 찰칵 소리가 나더니 무기한 정지됩니다. 출력은 다음과 같습니다.

632b738b.28af1a7e 0x7fb91fe62840 slapd starting
632b738b.28b084a2 0x7fb918147700 daemon: added 4r listener=(nil)
632b738b.28b0e5e8 0x7fb918147700 daemon: added 7r listener=0x1789270
632b738b.28b11145 0x7fb918147700 daemon: added 8r listener=0x1789360
632b738b.28b2645c 0x7fb918147700 daemon: epoll: listen=7 active_threads=0 tvp=zero
632b738b.28b27b69 0x7fb918147700 daemon: epoll: listen=8 active_threads=0 tvp=zero
632b738b.28b28d61 0x7fb918147700 daemon: activity on 1 descriptor
632b738b.28b2a342 0x7fb918147700 daemon: activity on:632b738b.28b2aaae 0x7fb918147700
632b738b.28b2c02b 0x7fb918147700 daemon: epoll: listen=7 active_threads=0 tvp=zero
632b738b.28b2d2eb 0x7fb918147700 daemon: epoll: listen=8 active_threads=0 tvp=zero

다음에 무엇을 시도해야 할지 아시나요?

도움이 된다면 내 구성은 다음과 같습니다.

./configure --prefix=/usr --sysconfdir=/etc --disable-static --enable-debug --with-tls=openssl --with-cyrus-sasl --enable-dynamic --enable-crypt --enable-spasswd --enable-slapd --enable-modules --enable-rlookups --enable-backends=mod --disable-ndb --disable-sql --disable-shell --disable-bdb --disable-hdb --enable-overlays=mod

때리고 서비스

[Unit]
Description=OpenLDAP Server Daemon
After=syslog.target network-online.target
Documentation=man:slapd
Documentation=man:slapd-mdb

[Service]
Type=forking
PIDFile=/var/lib/openldap/slapd.pid
Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"
Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"
ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

[Install]
WantedBy=multi-user.target

답변1

첫 번째 실수는 다음과 같습니다.

unable to open pid file "/var/run/openldap/slapd.pid": 2 (No such file or directory)

이 오류를 해결하는 방법에는 여러 가지가 있습니다.

파일 시스템 복구

slapdpid 파일에 쓰려고 시도했지만 /var/run/openldap/slapd.pid디렉터리가 /var/run/openldap존재하지 않습니다. /var/run예, 심볼릭 링크 /run입니다. 임시 디렉토리입니다. 시스템이 시작될 때마다 다시 생성됩니다.

에서 디렉토리를 생성하려면 .In 을 사용하여 다음 내용으로 파일을 생성 /run할 수 있습니다 .systemd-tmpfiles/etc/tmpfiles.dslapd.conf

D /run/openldap 0755 ldap ldap

그런 다음 다음을 실행하십시오.

systemd-tmpfiles --create

이렇게 하면 /var/run/openldap시스템이 시작될 때 존재하고 생성됩니다.

올바른 경로를 사용하려면 slapd systemd 장치를 업데이트해야 합니다.

[Service]
Type=forking
PIDFile=/var/run/openldap/slapd.pid
Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"
Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"
ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

구성에서 PidFile 제거

slapd 유닛 파일은 `systemd.service(5) 매뉴얼 페이지에서 수행하기 PIDFile때문에 해당 지시문을 사용하고 있습니다.slapdType=forking

PIDFile=

서비스를 참조하는 PID 파일의 경로를 사용합니다. 이 옵션은 Type=포크되도록 설정된 서비스 에 권장됩니다 . 지정된 경로는 일반적으로 다음 파일을 가리킵니다 /run/. 상대 경로가 지정되면 /run/서비스가 시작된 후 서비스 관리자가 이 파일에서 서비스 기본 프로세스의 PID를 읽습니다.

따라서 이를 사용할 필요가 없다면 Type=forking여기에서 PIDFile 구성을 제거하고 PidFileslapd에서 해당 구성을 제거할 수 있습니다. slapdinclude 로 명령줄을 수정하면 포그라운드에서 실행 -d0됩니다 .slapd

[Service]
Type=simple
Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"
Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"
ExecStart=/usr/libexec/slapd -d0 -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

PidFile그런 다음 (또는)에서 설정을 삭제하세요 .slapd.confolcPidFilecn=config

관련 정보