![在 RHEL 8 上安装 OpenLDAP -- slapd.pid 问题](https://linux22.com/image/211019/%E5%9C%A8%20RHEL%208%20%E4%B8%8A%E5%AE%89%E8%A3%85%20OpenLDAP%20--%20slapd.pid%20%E9%97%AE%E9%A2%98.png)
我已在新的 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
slapd服务
[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
,它是一个临时目录:每次系统启动时都会重新创建它。
要在 中创建目录/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 单元文件正在使用该PIDFile
指令,因为您正在slapd
以Type=forking
.从 `systemd.service(5) 手册页:
PIDFile=
采用引用服务的 PID 文件的路径。建议对
Type=
设置为分叉的服务使用此选项。指定的路径通常指向下面的文件/run/
。如果指定了相对路径,则其前缀为/run/
.服务启动后,服务管理器会从该文件中读取该服务主进程的PID。
所以如果我们不需要使用的话Type=forking
,我们可以去掉这里的PIDFile配置以及PidFile
slapd中对应的配置。我们修改slapd
命令行以包含-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