# Installation on Suse Linux

LL::NG requires at least SLES 12 SP1 or equivalent

## Organisation

LemonLDAP::NG provides packages for SLES:

- lemonldap-ng: metapackage, contains no file but dependencies on other packages
- lemonldap-ng-doc : contient la documentation HTML et celle du projet (README, etc...)
- lemonldap-ng-fr-doc : traduction en français de la documentation
- lemonldap-ng-conf : contient la configuration par défaut (domaine DNS : example.com)
- lemonldap-ng-test : contient une simple page CGI de test
- lemonldap-ng-handler : contient l'implémentation de l'agent pour Apache (handler)
- lemonldap-ng-manager : contient l'interface d'administration et l'explorateur de session
- lemonldap-ng-portal : contient le portail d'authentification et le menu
- lemonldap-ng-fastcgi-server : le serveur FastCGI nécessaire pour utiliser Nginx
- perl-Lemonldap-NG-Common : CPAN - modules partagés
- perl-Lemonldap-NG-Handler : CPAN - modules agent
- perl-Lemonldap-NG-Manager : CPAN - modules manager
- perl-Lemonldap-NG-Portal : CPAN - modules portail

## Obtenir ces paquets

### Repositories

This manual only refers to SLES 12 SP1. Installation may work on other platforms, with no guarantee.

Different repositories are necessary for LemonLDAP::NG dependencies:

- Suse official repositories
- 2 repositories on OpenSuse Build Service
- Additional packages available on repository.linagora.org or lemonldap-ng.org
- Suse SDK repository is advised for building packages (yast2 → Software → Software Repositories → Add –> Extensions and modules from Registration Server)

First, make sure the exploitation system is up to date:

    zypper update

You can add the OpenSuse Build Service repositories with the following commands:

    zypper addrepo http://download.opensuse.org/distribution/leap/42.1/repo/oss/suse/ leap42
    zypper addrepo http://download.opensuse.org/repositories/devel:languages:perl/SLE_12/devel:languages:perl.repo
    zypper refresh

Accept both signing keys each time.

You can add the additional dependency repository *and* the LemonLDAP::NG repository with either commands:

    zypper addrepo http://lemonldap-ng.org/sles12 lemonldap-sles12-repository
    zypper refresh

or

    zypper addrepo http://repository.linagora.org/lemonldap-sles12-repository lemonldap-sles12-repository
    zypper refresh

Only packages on SLES 12 SP1 are tested for now.

### Téléchargement manuel

Les paquets RPM sont disponibles sur la page de téléchargement.

## Signature GPG des paquets

La clef GPG peut être téléchargée ici : rpm-gpg-key-ow2

L'installer pour certifier les RPMs:

    rpm --import rpm-gpg-key-ow2

## Installer les paquets

### With ZYPPER

If the packages are stored in a repository:

    zypper install lemonldap-ng

    59 new packages to install.
    Total download size: 13.5 MiB. Already cached : 0 B. After operation, 30.7 MiB of supplementary disk space will be used.
    Continue ? [y/n/? print all options] (y):

You can also use zypper on local RPMs file:

    zypper install lemonldap-ng-* perl-Lemonldap-NG-*

### Avec RPM

Before installing the packages, install all dependencies: (you need to get dependencies from previous repositories)

    zypper install apache2 apache2-mod_perl apache2-mod_fcgid perl-ldap perl-XML-SAX perl-XML-NamespaceSupport perl-XML-Simple perl-XML-LibXML perl-Config-IniFiles perl-Digest-HMAC perl-Crypt-OpenSSL-RSA perl-Authen-SASL perl-Unicode-String gd perl-Regexp-Assemble perl-Authen-Captcha perl-Cache-Cache perl-Apache-Session perl-CGI-Session perl-IO-String perl-MIME-Lite perl-SOAP-Lite perl-XML-LibXSLT perl-String-Random perl-Email-Date-Format perl-Crypt-Rijndael perl-HTML-Template perl-JSON perl-Crypt-OpenSSL-X509 perl-Crypt-DES perl-Class-Inspector perl-Test-MockObject perl-Clone perl-Net-CIDR-Lite perl-ExtUtils-MakeMaker perl-CGI perl-CGI-Session perl-HTML-Template perl-SOAP-Lite perl-IPC-ShareLite perl-Error perl-HTML-Parser perl-libwww-perl perl-DBI perl-Cache-Memcached perl-Class-ErrorHandler perl-Convert-PEM perl-Crypt-DES_EDE3 perl-Digest-SHA perl-Env perl-Mouse perl-String-CRC32 perl-Plack perl-Regexp-Common perl-Crypt-OpenSSL-Bignum perl-FCGI-ProcManager

Il faut ensuite installer tous les paquets téléchargés :

    rpm -Uvh lemonldap-ng-* perl-Lemonldap-NG-*

On peut n'installer qu'un seul composant en choisissant le paquet `lemonldap-ng-portal`, `lemonldap-ng-handler` ou `lemonldap-ng-manager`.

Installer le paquet `lemonldap-ng-conf` sur tous les serveurs qui contiennent un de ces paquets.

## Premiers pas de configuration

### Enable Apache extensions

These extensions are activated by default on Apache at LemonLDAP install:

    a2enmod perl
    a2enmod headers
    a2enmod mod_fcgid
    a2enmod ssl
    a2enmod rewrite
    a2enmod proxy
    a2enmod proxy_http

If you decide to use SSL, you should also activate the appopriate flag:

    sed -i 's/^APACHE_SERVER_FLAGS=.*/APACHE_SERVER_FLAGS="SSL"/' /etc/sysconfig/apache2

### Changer le domaine DNS par défaut

Par défaut, le domaine DNS est `example.com`. On peut le changer rapidement par une commande sed. Par exemple, pour le changer en `ow2.org`:

    sed -i 's/example\.com/ow2.org/g' /etc/lemonldap-ng/{*.conf,*.ini,for_etc_hosts} /var/lib/lemonldap-ng/conf/lmConf-1 /var/lib/lemonldap-ng/test/index.pl

Vérifier la configuration d'Apache et redémarrer :

    apachectl configtest
    apachectl restart

### Recharger l'hôte virtuel

Pour autoriser le manager à recharger la configuration, enregistrer le nom d'hôte virtuel de rechargement dans le fichier hosts du serveur :

    echo "127.0.0.1 reload.example.com" >> /etc/hosts

Adapter le nom d'hôte virtuel de rechargement au domaine configuré.

### Mise à jour

Pour mettre à jour LL::NG, lisez toutes les notes de mise à jour.

Pour la configuration apache, il faut peut-être supprimer l'ancien lien symbolique si ce n'est pas fait par le RPM:

    rm -f /etc/apache2/vhosts.d/z-lemonldap-ng.conf

L'ancienne configuration Apache devrait avoir été sauvée, il faut réporter les changements locaux dans le nouveau fichier de configuration Apache :

    vi /etc/lemonldap-ng/apache2.conf.rpmsave

Le processus de mise-à-jour va également migrer les anciens fichiers de configuration dans `/etc/lemonldap-ng/lemonldap-ng.ini`. Ceci inclut la liste des applications qui se trouve désormais dans le paramètre `applicationList` de la section `[portal]`, par exemple:

    [portal]
    applicationList={ 'Menu' => { type => 'category', 'Example' => { type => 'category', 'test1' => { type => 'application', options => { name => 'Application Test 1', uri => 'http://test1.example.com/', description => 'A simple application displaying authenticated user', logo => 'wheels.png', display => 'auto',  }, },'test2' => { type => 'application', options => { name => 'Application Test 2', uri => 'http://test2.example.com/', description => 'The same simple application displaying authenticated user', logo => 'wheels.png', display => 'auto',  }, }, },'Administration' => { type => 'category', 'manager' => { type => 'application', options => { name => 'WebSSO Manager', uri => 'http://manager.example.com/', description => 'Configure LemonLDAP::NG WebSSO', logo => 'tools.png', display => 'on',  }, },'sessions' => { type => 'application', options => { name => 'Sessions explorer', uri => 'http://manager.example.com/sessions.pl', description => 'Explore WebSSO sessions', logo => 'tools.png', display => 'on',  }, }, },'Documentation' => { type => 'category', 'localdoc' => { type => 'application', options => { name => 'Local documentation', uri => 'http://manager.example.com/doc/', description => 'Documentation supplied with LemonLDAP::NG', logo => 'docs.png', display => 'on',  }, },'officialwebsite' => { type => 'application', options => { name => 'Offical Website', uri => 'http://wiki.lemonldap.objectweb.org/xwiki/bin/view/NG/Presentation', description => 'Official LemonLDAP::NG Website', logo => 'web.png', display => 'on',  }, }, }, }, }

Il est désormais possible d'utiliser le manager pour configurer toutes les applications et catégories, ensuite commenter ou supprimer le paramètre `applicationList` de `/etc/lemonldap-ng/lemonldap-ng.ini`.

### DNS

Configurer le serveur DNS pour résoudre les noms avec l'adresse IP de votre serveur.

Pour les tests avec `example.com`, lancer ce qui suit :

    cat /etc/lemonldap-ng/for_etc_hosts >> /etc/hosts

Suivre les étapes suivantes

## Emplacement du fichier

- La configuration se trouve dans /etc/lemonldap-ng
- La configuration LemonLDAP::NG (editée par le manager) se trouve dans /var/lib/lemonldap-ng/conf/
- Tous les modules Perl se trouvent dans le répertoire VENDOR de Perl
- Tous les scripts/pages Perl se trouvent dans /var/lib/lemonldap-ng/
- Tous le contenu statique (exemples, CSS, images, etc...) se trouve dans /usr/share/lemonldap-ng/

## Construire les paquets

Si besoin, on peut reconstruire les RPMs :

- Install rpm-build package
- Get the lemonldap source package from repository:

    zypper source-install lemonldap-ng
    cd /usr/src/packages/
    ls SPECS/ SOURCES/

- Installer toutes les dépendances de construction (voir BuildRequires dans lemonldap-ng.spec)
- Build:

    rpmbuild -ba SPECS/lemonldap-ng.spec

Alternatively, you can use the automatic script “create-lemonldap-packages.sh”, available in rpm-sles directory in the lemonldap svn repository. The automatic script can also generate intermediate dependencies. See README file in the same directory for more information.