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でコマンドラインを変更すると、フォアグラウンドで実行されます-d0slapd

[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

おすすめ記事