FreeBSD: установка phpLdapAdmin для OpenLDAP

Автор: | 01/03/2014
 

freebsd_logoУстановка производится на:

# uname -ro
FreeBSD 9.1-RELEASE-p5
# httpd -v
Server version: Apache/2.2.26 (FreeBSD)
Server built:   Jan  2 2014 10:12:17
# mysql -V
mysql  Ver 14.14 Distrib 5.5.35, for FreeBSD9.1 (i386) using  5.2

Ищем порт:

# make search name="phpldapadmin"
Port:   phpldapadmin-1.2.3_2,1
Path:   /usr/ports/net/phpldapadmin
Info:   PHP application to administer LDAP over the web
# cd /usr/ports/net/phpldapadmin && make install clean

Кроме того, сам PHP должен быть установлен с поддержкой LDAP, что бы проверить это — выполняем:

# php -m | grep ldap
ldap

Если его нет — установите отдельно:

# cd /usr/ports/ && make search name=»php53-ldap»

Port:   php53-ldap-5.3.28
Path:   /usr/ports/net/php53-ldap
Info:   The ldap shared extension for php
Maint:  flo@FreeBSD.org
B-deps: autoconf-2.69 autoconf-wrapper-20131203 libiconv-1.14_1 libxml2-2.8.0_3 m4-1.4.17,1 openldap-client-2.4.38 pcre-8.34 perl5-5.16.3_6 php53-5.3.28
R-deps: libiconv-1.14_1 libxml2-2.8.0_3 openldap-client-2.4.38 pcre-8.34 php53-5.3.28

И добавьте в файл extensions.ini стркоу:

extension=ldap.so

После установки нам подсказывают, что:

phpldapadmin-1.2.3_2,1 has been installed into:

/usr/local/www/phpldapadmin

Please edit config.php to suit your needs.

В файл  /usr/local/etc/apache22/httpd.conf добавляем алиас:

# cat /usr/local/etc/apache22/httpd.conf | grep phpldap
Alias /phpldapadmin /usr/local/www/phpldapadmin/

В данном случае phpLdapAdmin будет работать на отдельном субдомене и в отдельном виртауалхосте для удобства натройки доступа.

В файл /usr/local/etc/apache22/extra/httpd-vhosts.conf добавляем:

<VirtualHost 178.***.***.13:80>
ServerName "phpldapadmin.domain.in.ua"
ServerAlias "www.phpldapadmin.domain.in.ua"

DocumentRoot "/usr/local/www/phpldapadmin"

ErrorLog "/var/log/apache/phpldapadmin-error.log"
CustomLog "/var/log/apache/phpldapadmin-access.log" "combined"

<Directory "/usr/local/www/phpldapadmin">
Options -ExecCGI -Indexes +FollowSymLinks -Multiviews
AllowOverride All
</Directory>
</VirtualHost>

В случае, если используется PHP версии 5.5 и выше — необходимо добавить патч (хотя — потом всё равно наблюдались проблемы, поэтому — перешёл на PHP 5.3):

# cd /usr/local/www/phpldapadmin
# mkdir Patch
# cd Patch/

Качаем сам архив с патчем:

# wget http://sourceforge.net/code-snapshots/git/u/u/u/nihilisticz/phpldapadmin.git/u-nihilisticz-phpldapadmin-7e53dab990748c546b79f0610c3a7a58431e9ebc.zip

Страница на Sourceforge с описанием и деталями.

# unzip u-nihilisticz-phpldapadmin-7e53dab990748c546b79f0610c3a7a58431e9ebc.zip
# cd u-nihilisticz-phpldapadmin-7e53dab990748c546b79f0610c3a7a58431e9ebc
# rm -rf /usr/local/www/phpldapadmin/lib/
# mkdir /usr/local/www/phpldapadmin/lib
# cp -R lib/* /usr/local/www/phpldapadmin/lib

Теперь продолжаем обычную установку:

# cd /usr/local/www/phpldapadmin

Редактируем основной файл настроек:

# vim config/config.php

Находим строку:

#  $servers->setValue('login','bind_id','cn=Manager,dc=example,dc=com');

И приводим её в соответствие с настройками своего LDAP-a:

// $servers->setValue('login','bind_id','');
$servers->setValue('login','bind_id','cn=root,dc=domain');
// $servers->setValue('login','bind_pass','');
$servers->setValue('login','bind_pass','MyPassword');

Устанавливаем доступ только на чтение себе и группе Apache-а:

# chmod 440 config.php
# ls -l
total 112
-r--r-----  1 root  www  24929 Jan  2 17:33 config.php

Готово, заходим на страницу http://phpldapadmin.domain.in.ua:

phpldapadmin_1

Вместо страницы phpLdapAdmin — Возможно появление ошибки:

Notice: Undefined index: plaConfig in /usr/local/www/phpldapadmin/lib/page.php on line 379

Fatal error: Call to a member function getValue() on a non-object in /usr/local/www/phpldapadmin/lib/page.php on line 379

Возможно — дело в том, что Apache HTTP (как случилось на одном из севреров) настроен на использование suexec (FreeBSD: Apache + mpm_worker + PHP + mod_fcgid).

В таком случае — можно либо изменить владельца каталога и файла config/config.php, либо открыть доступ на чтение остальным пользователям:

# chmod o+x config/
# chmod o+r config/config.php
# ls -l | grep config
dr--r--r-x   2 www  www    512 Feb 16 18:46 config
# ls -l config/
total 112
-r--r--r--  1 www  www  24913 Feb 16 18:46 config.php

Слева кликаем Войти:

phpldapadmin_2

Готово.