Este artículo detalla los pasos necesarios para instalar FusionDirectory 1.2 desde los fuentes, en Debian 8. Se basa en la documentación oficial para instalar FusionDirectory 1.0 desde los fuentes.

Recientemente expliqué cómo instalar y configurar FusionDirectory en Debian desde el gestor de paquetes. FusionDirectory es un gestor de directorio Web con soporte para LDAP. Permite administrar un directorio LDAP desde un navegador Web.

Sin embargo, el problema al instalar software desde paquete es que uno no tiene control sobre la versión instalada o disponible, sino que depende de lo que la distribución o el creador de la aplicación publiquen o pongan a disposición en forma de paquete para nuestra versión específica de sistema operativo (en este caso Debian 8). Por ende, para tener un mejor control tanto sobre la versión instalada y como sobre las actualizaciones a futuro, es recomendable instalar todo software específico desde los fuentes. De esta forma tendremos control total sobre el software en uso (obviamente a cambio de más trabajo y mayores responsabilidades por nuestra parte).

Será cuestión de cada SysAdmin qué opción tomar, de acuerdo a su metodología de trabajo (más control sobre el software y más trabajo versus menor control sobre el software y menos independencia).

Veamos entonces cómo instalar FusionDirectory 1.2 desde los fuentes en Debian 8.

Descargar los fuentes necesarios

Crear un directorio para juntar los fuentes de FusionDirectory y sus dependencias:

# cd /usr/local/src/
# mkdir FusionDirectory
# cd FusionDirectory/

Descargar FusionDirectory y sus plugins:

# wget https://github.com/fusiondirectory/fusiondirectory/archive/fusiondirectory-1.2.tar.gz
# wget https://github.com/fusiondirectory/fusiondirectory-plugins/archive/fusiondirectory-1.2.tar.gz
# mv fusiondirectory-1.2.tar.gz.1 fusiondirectory-plugins-1.2.tar.gz

Crear un archivo de texto plano donde

# echo "Path::Class
Net::LDAP
MIME::Base64
Crypt::PasswdMD5
Crypt::CBC
File::Copy::Recursive
Archive::Extract
XML::Twig
Term::ReadKey" > perl-deps.txt

Descargar los fuentes de las dependencias de FusionDirectory:

# wget http://script.aculo.us/dist/scriptaculous-js-1.9.0.zip
# wget https://ajax.googleapis.com/ajax/libs/prototype/1.7.3.0/prototype.js
# wget http://repos.fusiondirectory.org/sources/1.0/smarty3-i18n/smarty3-i18n-1.0.tar.gz
# wget http://repos.fusiondirectory.org/sources/1.0/schema2ldif/schema2ldif-1.3.tar.gz

Instalar dependencias

Instalar las dependencias de FusionDirectory desde paquete:

# apt-get update && apt-get upgrade
# apt-get install apache2 libapache2-mod-php5 smarty3 schema2ldif gettext php5-ldap php5-curl php5-imap php5-imagick

Verificar la versión de PHP instalada:

root@debian8:/usr/local/src/FusionDirectory# php5 -version
PHP 5.6.30-0+deb8u1 (cli) (built: Feb  8 2017 08:50:21) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Instalar las dependencias Perl:

# cpan -i $(cat perl-deps.txt)

Instalar smarty3-i18n-1.0:

# tar xzf smarty3-i18n-1.0.tar.gz
# less smarty3-i18n-1.0/README
# cp smarty3-i18n-1.0/block.t.php /usr/share/php/smarty3/plugins/

El archivo README explica el proceso de instalación (simplemente copiar el archivo block.t.php a su ubicación definitiva).

Instalar FusionDirectory

Extraer el paquete:

root@debian8:/usr/local/src/FusionDirectory# cd /var/www/
root@debian8:/var/www# tar xzf /usr/local/src/FusionDirectory/fusiondirectory-1.2.tar.gz
root@debian8:/var/www# mv fusiondirectory-fusiondirectory-1.2/ fusiondirectory

Otorgar permisos de ejecución a los binarios incluidos en el pquete:

root@debian8:/var/www# chmod 0750 fusiondirectory/contrib/bin/fusiondirectory-*

Configurar la ruta de instalación de FusionDirectory (directorio base de la instalación):

root@debian8:/var/www/fusiondirectory/contrib/bin# cd fusiondirectory/contrib/bin/
root@debian8:/var/www/fusiondirectory/contrib/bin# ./fusiondirectory-setup --set-fd_home="/var/www/fusiondirectory" --write-vars
Setting fd_home to /var/www/fusiondirectory
Choose FusionDirectory Directories

Luego instalar los scripts de administración de FusionDirectory en su ubicación definitiva:

root@debian8:/var/www/fusiondirectory/contrib/bin# mv * /usr/local/bin/

Instalar las páginas de manual:

root@debian8:/var/www/fusiondirectory/contrib/bin# cd ../man
root@debian8:/var/www/fusiondirectory/contrib/man# gzip *.5
root@debian8:/var/www/fusiondirectory/contrib/man# gzip *.1
root@debian8:/var/www/fusiondirectory/contrib/man# mv *1.gz /usr/local/man/man1/
root@debian8:/var/www/fusiondirectory/contrib/man# mv *5.gz /usr/local/man/man5/

Instalar los plugins de Smarty:

root@debian8:/var/www/fusiondirectory/contrib/man# cd ../smarty/plugins/
root@debian8:/var/www/fusiondirectory/contrib/smarty/plugins# mv * /usr/share/php/smarty3/plugins/

A continuación es necesario instalar los schemas de LDAP necesarios para FusionDirectory:

root@debian8:/var/www/fusiondirectory/contrib/smarty/plugins# cd ../../openldap/

Se recomienda crear un directorio donde alojar los schemas de FusionDirectory:

root@debian8:/var/www/fusiondirectory/contrib/openldap# mkdir /usr/local/etc/openldap/schema/fusiondirectory
root@debian8:/var/www/fusiondirectory/contrib/openldap# mv *.schema /usr/local/etc/openldap/schema/fusiondirectory

Cargar los schemas de FusionDirectory en la configuración estática de slapd:

root@debian8:/var/www/fusiondirectory/contrib/openldap# cd /usr/local/etc/openldap/
root@debian8:/var/www/fusiondirectory/contrib/openldap# nano slapd.conf

Agregar las siguientes líneas:

#######################################################################
# FusionDirectory
#######################################################################

include                 /usr/local/etc/openldap/schema/inetorgperson.schema
include                 /usr/local/etc/openldap/schema/fusiondirectory/core-fd-conf.schema
include                 /usr/local/etc/openldap/schema/fusiondirectory/core-fd.schema
include                 /usr/local/etc/openldap/schema/fusiondirectory/ldapns.schema
#include                 /usr/local/etc/openldap/schema/fusiondirectory/rfc2307bis.schema
include                 /usr/local/etc/openldap/schema/fusiondirectory/template-fd.schema

Instalar la nueva configuración:

root@debian8:/usr/local/etc/openldap# service slapd stop

ATENCIÓN: ¡Se perderá toda configuración dinámica existente! Este tutorial está orientado a una instalación fresca de OpenLDAP.

root@debian8:/usr/local/etc/openldap# rm -fr slapd.d/*
root@debian8:/usr/local/etc/openldap# slaptest -f slapd.conf -F /usr/local/etc/openldap/slapd.d
config file testing succeeded
root@debian8:/usr/local/etc/openldap# chown -R ldap:ldap slapd.d/
root@debian8:/usr/local/etc/openldap# service slapd start

El siguiente paso consiste en configurar FusionDirectory:

root@debian8:/usr/local/etc/openldap# fusiondirectory-setup --check-directories --update-cache --update-locales
root@debian8:/usr/local/etc/openldap# mv /var/www/fusiondirectory/contrib/fusiondirectory.conf /var/cache/fusiondirectory/template/

Instalar los plugins de FusionDirectory

Para instalar los plugins de FusionDirectory, recurrir al utilitario fusiondirectory-setup:

# fusiondirectory-setup --install-plugins --check-directories --update-locales --update-cache

Si este comando falla con el error "Can't open directory /tmp/fusiondirectory-plugins-1.2", esto se debe a una inconsistencia en el nombre del directorio de plugins. Corregir el error ejecutando el siguiente comando:

# mv /tmp/fusiondirectory-plugins-fusiondirectory-1.2/ /tmp/fusiondirectory-plugins-1.2/

Y luego reiniciar la instalación:

root@debian8:/usr/local/etc/openldap# fusiondirectory-setup --install-plugins --check-directories --update-locales --update-cache
Installing FusionDirectory's plugins
Where is your plugins archive ?:
/usr/local/src/FusionDirectory/fusiondirectory-plugins-1.2.tar.gz
Installing plugins into /var/www/fusiondirectory, please wait...
Checking FusionDirectory's directories
/var/www/fusiondirectory exists…
Rights on /var/www/fusiondirectory are correct
/etc/fusiondirectory exists…
Rights on /etc/fusiondirectory are correct
/var/spool/fusiondirectory exists…
Rights on /var/spool/fusiondirectory are correct
/var/cache/fusiondirectory exists…
Rights on /var/cache/fusiondirectory are correct
/var/cache/fusiondirectory/tmp exists…
Rights on /var/cache/fusiondirectory/tmp are correct
/var/cache/fusiondirectory/fai exists…
Rights on /var/cache/fusiondirectory/fai are correct
/var/cache/fusiondirectory/template exists…
Rights on /var/cache/fusiondirectory/template are correct
Updating translations
Updating class.cache

Limpiar los archivos temporales generados:

# rm -fr /tmp/fusiondirectory-plugins-*

El siguiente paso consiste en eliminar los plugins que no serán necesarios o no se desea instalar (en este caso asterisk, fax, rsyslog, mixed groups):

# rm -Rf /var/www/fusiondirectory/plugins/personal/faxaccount/
# rm -Rf /var/www/fusiondirectory/plugins/admin/blocklists/
# rm -Rf /var/www/fusiondirectory/plugins/addons/faxreports/
# rm -Rf /var/www/fusiondirectory/plugins/personal/phoneaccount/
# rm -Rf /var/www/fusiondirectory/plugins/addons/fonreports/
# rm -Rf /var/www/fusiondirectory/plugins/admin/conference/
# rm -Rf /var/www/fusiondirectory/plugins/admin/macro/
# rm -Rf /var/www/fusiondirectory/plugins/addons/rsyslog/
# rm -Rf /var/www/fusiondirectory/plugins/admin/ogroups/

Este paso depende de las preferencias y las necesidades de cada instalación en particular.

A continuación es necesario habilitar los schemas de LDAP necesarios para el correcto funcionamiento de todos los plugins. Es posible generar la sintaxis de configuración con el siguiente comando:

# ls -1 /var/www/fusiondirectory/contrib/openldap/*fd-conf.schema | sed 's/\//#include \//'

Editar nuevamente el archivo de configuración de estática de slapd:

root@debian8:/var/www/fusiondirectory# nano /usr/local/etc/openldap/slapd.conf

Agregar la salida generada anteriormente:

#######################################################################
# FusionDirectory Plugins
#######################################################################
include /var/www/fusiondirectory/contrib/openldap/mail-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/mail-fd.schema
include /var/www/fusiondirectory/contrib/openldap/alias-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/alias-fd.schema
include /var/www/fusiondirectory/contrib/openldap/applications-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/applications-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/argonaut-fd.schema
include /var/www/fusiondirectory/contrib/openldap/audit-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/audit-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/autofs-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/calEntry.schema
#include /var/www/fusiondirectory/contrib/openldap/calRessources.schema
include /var/www/fusiondirectory/contrib/openldap/community-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/community-fd.schema
include /var/www/fusiondirectory/contrib/openldap/cyrus-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/debconf-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/debconf.schema
#include /var/www/fusiondirectory/contrib/openldap/dhcp-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/dhcp-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/dns-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/dns-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/dnszone.schema
#include /var/www/fusiondirectory/contrib/openldap/dovecot-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/dsa-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/ejbca-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/ejbca-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/fai-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/fai.schema
#include /var/www/fusiondirectory/contrib/openldap/freeradius.schema
include /var/www/fusiondirectory/contrib/openldap/fusioninventory-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/fusioninventory-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/gpg-fd.schema
include /var/www/fusiondirectory/contrib/openldap/internet2.schema
include /var/www/fusiondirectory/contrib/openldap/inventory-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/ipmi-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/nagios-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/netgroups-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/netways.schema
#include /var/www/fusiondirectory/contrib/openldap/newsletter-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/newsletter-fd.schema
include /var/www/fusiondirectory/contrib/openldap/openssh-lpk.schema
#include /var/www/fusiondirectory/contrib/openldap/opsi-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/opsi-fd.schema
include /var/www/fusiondirectory/contrib/openldap/personal-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/personal-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/pgp-keyserver.schema
#include /var/www/fusiondirectory/contrib/openldap/pgp-recon.schema
#include /var/www/fusiondirectory/contrib/openldap/pgp-remte-prefs.schema
#include /var/www/fusiondirectory/contrib/openldap/postfix-fd.schema
include /var/www/fusiondirectory/contrib/openldap/ppolicy-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/proxy-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/puppet-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/puppet.schema
#include /var/www/fusiondirectory/contrib/openldap/pureftpd.schema
include /var/www/fusiondirectory/contrib/openldap/quota-fd.schema
include /var/www/fusiondirectory/contrib/openldap/quota.schema
#include /var/www/fusiondirectory/contrib/openldap/renater-partage-fd.schema
include /var/www/fusiondirectory/contrib/openldap/repository-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/repository-fd.schema
include /var/www/fusiondirectory/contrib/openldap/samba-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/samba.schema
include /var/www/fusiondirectory/contrib/openldap/service-fd.schema
#include /var/www/fusiondirectory/contrib/openldap/sogo-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/spamassassin-fd.schema
include /var/www/fusiondirectory/contrib/openldap/subcontracting-fd.schema
include /var/www/fusiondirectory/contrib/openldap/sudo-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/sudo.schema
#include /var/www/fusiondirectory/contrib/openldap/supann_2009.schema
#include /var/www/fusiondirectory/contrib/openldap/supann-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/sympa-fd-conf.schema
#include /var/www/fusiondirectory/contrib/openldap/sympa-fd.schema
include /var/www/fusiondirectory/contrib/openldap/systems-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/systems-fd.schema
include /var/www/fusiondirectory/contrib/openldap/user-reminder-fd-conf.schema
include /var/www/fusiondirectory/contrib/openldap/weblink-fd.schema
include /var/www/fusiondirectory/contrib/openldap/webservice-fd-conf.schema

Habilitar sólo los schemas de los plugins instalados/necesarios, eliminando el numeral que precede la línea correspondiente.

Habilitar sólo los schemas de los plugins necesarios.

Además, verificar que se incluyan los siguientes schemas de LDAP:

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema

Para que el plugin de política de contraseñas funcione, es necesario agregar el overlay ppolicy debajo de la configuración de la base de datos (siempre dentro del mismo archivo de configuración de OpenLDAP slapd.conf):

overlay ppolicy

Finalmente, reinicializar la configuración dinámica de slapd:

root@debian8:/var/www/fusiondirectory# cd /usr/local/etc/openldap/
root@debian8:/usr/local/etc/openldap# service slapd stop
root@debian8:/usr/local/etc/openldap# rm -fr slapd.d/*
root@debian8:/usr/local/etc/openldap# slaptest -f slapd.conf -F /usr/local/etc/openldap/slapd.d
config file testing succeeded
root@debian8:/usr/local/etc/openldap# chown -R ldap:ldap slapd.d/
root@debian8:/usr/local/etc/openldap# service slapd start

Cabe destacar que a fin de que el servidor slapd soporte los schemas "ppolicy" y "audit", éste debe ser compilado con las opciones --enable-ppolicy=yes, --enable-auditlog=yes y soporte para SASL (--with-cyrus-sasl).

El orden de inclusión de schemas debe ser correcto. En caso de errores al ejecutar slaptest, cambiar el orden de include.

Configuración de Apache

Por último resta configurar el servidor Web. Esta instalación esta basada en Apache, y FusionDirectory incluye un archivo de configuración de Apache de ejemplo.

Instalar la configuración de Apache:

root@debian8:/var/www/fusiondirectory# mv /var/www/fusiondirectory/contrib/apache/fusiondirectory-apache.conf /etc/apache2/sites-available/
root@debian8:/var/www/fusiondirectory# a2ensite fusiondirectory-apache
Enabling site fusiondirectory-apache.
To activate the new configuration, you need to run:
  service apache2 reload
root@debian8:/var/www/fusiondirectory# service apache2 reload
[ ok ] Reloading web server: apache2.

Setup gráfico

Con FusionDirectory instalado y configurado, junto con todas sus dependencias y servidor Web en perfecto funcionamiento, es posible acceder por primera vez a la URL "/fusiondirectory" desde un navegador Web y continuar la instalación gráfica tal como lo explica el artículo Cómo instalar FusionDirectory en Debian.

Seleccionar el idioma:

Verificar la instalación:

Especificar las credenciales de acceso como superusuario al servidor LDAP:

Configurar FusionDirectory:

Inspeccionar y resolver todos los conflictos con la instalación de LDAP:

En este paso se crea el usuario administrador de FusionDirectory.

Descargar e instalar el archivo de configuración dentro del directorio /etc/fusiondirectory/:

Ingresar por primera vez como usuario administrador:

Panel de control de FusionDirectory:

Troubleshoot

En caso de que ocurra el siguiente error:

Fatal error: require(): Failed opening required '/usr/share/php/smarty3' (include_path='.:/var/www/fusiondirectory/include:/usr/share/php:/usr/share/php') in /var/www/fusiondirectory/include/php_setup.inc on line 339

Esto se debe a una inconsistencia en el instalador de la versión 1.2. Para corregirlo simplemente editar el archivo variables.inc:

root@debian8:/usr/local/etc/openldap# nano /var/www/fusiondirectory/include/variables.inc

Cambiar la variable SMARTY:

/* Path for smarty3 libraries */
define("SMARTY", "/usr/share/php/smarty3");

Por:

/* Path for smarty3 libraries */
define("SMARTY", "/usr/share/php/smarty3/Smarty.class.php");

Instalación de dependencias Javascript

Instalar las dependencias de Javascript necesarias para el funcionamiento de FusionDirectory.

Instalar prototype.js:

root@debian8:~# cd /var/www/fusiondirectory/html/include/
root@debian8:/var/www/fusiondirectory/html/include/# cp /usr/local/src/FusionDirectory/prototype.js .

Instalar script.aculo.us:

root@mendieta--deb8:/var/www/fusiondirectory/html/include# cd /usr/local/src/FusionDirectory/
root@mendieta--deb8:/usr/local/src/FusionDirectory# unzip scriptaculous-js-1.9.0.zip
root@mendieta--deb8:/usr/local/src/FusionDirectory# cp scriptaculous-js-1.9.0/src/* /var/www/fusiondirectory/html/include/

Referencias


Tal vez pueda interesarte


Compartí este artículo