새 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)
이 오류를 해결하는 방법에는 여러 가지가 있습니다.
파일 시스템 복구
slapd
pid 파일에 쓰려고 시도했지만 /var/run/openldap/slapd.pid
디렉터리가 /var/run/openldap
존재하지 않습니다. /var/run
예, 심볼릭 링크 /run
입니다. 임시 디렉토리입니다. 시스템이 시작될 때마다 다시 생성됩니다.
에서 디렉토리를 생성하려면 .In 을 사용하여 다음 내용으로 파일을 생성 /run
할 수 있습니다 .systemd-tmpfiles
/etc/tmpfiles.d
slapd.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
때문에 해당 지시문을 사용하고 있습니다.slapd
Type=forking
PIDFile=
서비스를 참조하는 PID 파일의 경로를 사용합니다. 이 옵션은
Type=
포크되도록 설정된 서비스 에 권장됩니다 . 지정된 경로는 일반적으로 다음 파일을 가리킵니다/run/
. 상대 경로가 지정되면/run/
서비스가 시작된 후 서비스 관리자가 이 파일에서 서비스 기본 프로세스의 PID를 읽습니다.
따라서 이를 사용할 필요가 없다면 Type=forking
여기에서 PIDFile 구성을 제거하고 PidFile
slapd에서 해당 구성을 제거할 수 있습니다. slapd
include 로 명령줄을 수정하면 포그라운드에서 실행 -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.conf
olcPidFile
cn=config