7. Запуск slapd
slapd(8) предназначен для работы в качестве автономной службы. Такой подход позволяет серверу воспользоваться преимуществом кэширования, управлять проблемами параллельной работы основных баз данных и экономить системные ресурсы. Запуск с помощью inetd(8) НЕ допускается.
7.1. Параметры командной строки
slapd(8) поддерживает несколько параметров командной строки, подробно описанных в man-странице. В этом подразделе дано описание некоторых часто используемых параметров.
-f <filename>
Этот параметр задает альтернативный файл конфигурации для slapd. Обычно по умолчанию данный файл располагается в /usr/local/etc/openldap/slapd.conf.
-F <slapd-config-directory>
Задаёт расположение конфигурационной директории slapd. По умолчанию /usr/local/etc/openldap/slapd.d.
Если задано сразу оба параметра -f и -F, конфигурационный файл будет прочитан, переконвертирован в формат конфигурационной директории и записан в указанную директорию. Если ни одного из этих двух параметров не было задано, slapd попытается прочитать конфигурационную директорию по умолчанию перед тем, как попытаться использовать конфигурационный файл по умолчанию. Если существует конфигурационная директория правильного формата, тогда конфигурационный файл по умолчанию игнорируется. Все slap-утилиты, использующие настройки конфигурации, ведут себя аналогично.
-h <URLs>
Данный параметр указывает настройки того, на каких интерфейсах/портах slap будет ожидать подключения. Значение по умолчанию - ldap:///, что означает, что slapd будет ожидать подключения
URL | Протокол | Транспорт |
ldap:/// | LDAP | TCP порт 389 |
ldaps:/// | LDAP поверх SSL | TCP порт 636 |
ldapi:/// | LDAP | IPC (Unix-сокеты) |
Например, -h "ldaps:// ldap://127.0.0.1:666" укажет slapd обслуживать два варианта подключений: один из них по (нестандартной) схеме ldaps:// на всех интерфейсах на стандартном для ldaps:// порту 636, а второй - по стандартной схеме ldap:// на интерфейсе localhost (loopback) на порту 666. Хосты можно задавать либо именем хоста, либо адресом
Для LDAP поверх IPC, в URL может быть указан путь к Unix-сокету. Обратите внимание, что разделительные символы директорий должны быть закодированы в формате URL, как и все остальные символы, являющиеся специальными для URL. Таким образом, сокет /usr/local/var/ldapi должен быть закодирован как
ldapi://%2Fusr%2Flocal%2Fvar%2Fldapi
ldapi: подробно описан в Using LDAP Over IPC Mechanisms (Использование LDAP поверх механизмов IPC) [Chu-LDAPI].
Имейте ввиду, что транспорт ldapi:/// пока не получил широкого распространения: не OpenLDAP-клиенты могут быть неспособны его использовать.
-n <имя сервиса>
Этот параметр указывает имя сервиса, которое используется при журналировании и для других целей. Имя сервиса по умолчанию - slapd.
-l <syslog-local-user>
Этот параметр указывает имя пользовательского канала для syslog(8). Значения могут быть LOCAL0, LOCAL1, LOCAL2, ..., и до LOCAL7. Значение по умолчанию - LOCAL4. Данный параметр может не поддерживаться на всех системах.
-u user -g group
Эти параметры указывают, соответственно, пользователя и группу, под которыми будет запущен slapd. user может быть либо именем пользователя, либо uid. group может быть либо именем группы, либо gid.
-r директория
Этот параметр задаёт директорию времени исполнения. slapd выполнит chroot(2) в эту директорию после того, как начнёт слушать на указанных ему портах, но до того, как начнёт чтение любых конфигурационных файлов или инициализацию любых механизмов манипуляции данными.
-d <уровень> | ?
Этот параметр устанавливает уровень отладки в требуемый <уровень>. Если в качестве уровня был передан символ `?', slapd выведет различные доступные уровни отладки и завершит работу, независимо от того, какие ещё параметры Вы ему передали. Текущие уровни отладки:
Уровень | Ключевое слово | Описание |
-1 | any | включить всю отладочную информацию |
0 | отключить отладку | |
1 | (0x1 trace) | отслеживать вызовы функций |
2 | (0x2 packets) | отладка обработки пакетов |
4 | (0x4 args) | усиленная отладка |
8 | (0x8 conns) | управление соединениями |
16 | (0x10 BER) | вывод посылки и приёма пакетов |
32 | (0x20 filter) | обработка поисковых фильтров |
64 | (0x40 config) | обработка конфигурации |
128 | (0x80 ACL) | обработка списков контроля доступа |
256 | (0x100 stats) | статистика соединений/операций/результатов |
512 | (0x200 stats2) | статистика посылки записей журнала |
1024 | (0x400 shell) | вывод взаимодействия с механизмами манипуляции данными shell |
2048 | (0x800 parse) | вывод отладочной информации разбора записей |
16384 | (0x4000 sync) | обслуживание потребителей syncrepl |
32768 | (0x8000 none) | только сообщения, выводимые независимо от заданного уровня журналирования (то есть высокоприоритетные) |
Вы можете задать несколько уровней отладки одновременно, указав по одному параметру -d для каждого желаемого уровня. Либо, поскольку уровни отладки можно складывать, Вы можете сами вычислить сумму и передать её slapd. Например, если Вам нужно отслеживать вызовы функций и проследить за обработкой конфигурационного файла, можно задать требуемый уровень как сумму этих двух уровней (в данном случае, -d 65). Либо, Вы можете позволить самому slapd произвести вычисления, (то есть -d 1 -d 64). Подробности смотрите в <ldap_log.h>.
Примечание: для того, чтобы была доступна вся отладочная информация, помимо двух уровней stats, доступных по умолчанию, slapd должен быть скомпилирован с опцией --enable-debug.
7.2. Старт slapd
Обычно slapd запускается так:
/usr/local/libexec/slapd [<параметр>]*
где /usr/local/libexec определяется во время выполнения configure, а <параметр> - один из описанных выше (или в slapd(8)) параметров. Если Вы не указали уровень отладки (включая уровень 0), slapd автоматически выполнит ответвление (fork), отделит себя от управляющего терминала и начнёт работать в фоновом режиме.
7.3. Остановка slapd
Для безопасной остановки slapd(8) нужно выполнить такую команду:
kill -INT `cat /usr/local/var/slapd.pid`
где /usr/local/var определяется во время выполнения configure.
Остановка slapd более радикальными методами может привести к потере информации или повреждению базы данных.