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
- FusionDirectory 1.0 Install From Sources
- fusiondirectory/INSTALL at master · makinacorpus/fusiondirectory
- Cómo instalar FusionDirectory en Debian
Tal vez pueda interesarte