新しい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