我已经在一个新的 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
但它没有返回任何错误。它启动 slapd 然后无限期挂起。这是输出:
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
slapd.service
[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
你的第一个错误是:
有几种方法可以解决此错误。
修复文件系统
slapd
正在尝试将 pid 文件写入/var/run/openldap/slapd.pid
,但该目录/var/run/openldap
不存在。/var/run
是一个符号链接/run
,它是一个临时目录:每次系统启动时都会重新创建它。要在其中创建目录
/run
,可以使用systemd-tmpfiles
. 在/etc/tmpfiles.d
中,创建一个slapd.conf
包含以下内容的文件:然后运行:
这将确保它
/var/run/openldap
存在并且在系统启动时被创建。您将需要更新您的 slapd systemd 单元以使用正确的路径:
从您的配置中删除 PidFile
您的 slapd 单元文件正在使用该
PIDFile
指令,因为您slapd
以Type=forking
. 从`systemd.service(5) 手册页:所以如果我们不需要使用
Type=forking
,可以去掉这里的PIDFile配置和PidFile
slapd中的对应配置。我们将slapd
命令行修改为 include-d0
,这会导致slapd
在前台运行:PidFile
然后从slapd.conf
(或olcPidFile
从)中删除您的设置cn=config
。