INSTALLATION

GeoNature repose sur les composants suivants :

  • PostgreSQL / PostGIS

  • Python 3 et dépendances Python nécessaires à l’application

  • Flask (framework web Python)

  • Apache

  • Angular 7, Angular CLI, NodeJS

  • Librairies javascript (Leaflet, ChartJS)

  • Librairies CSS (Bootstrap, Material Design)

Deux méthodes d’installation existent :

Prérequis

Préparation du serveur

Commencer la procédure en se connectant au serveur en SSH avec l’utilisateur linux root.

  • Mettre à jour de la liste des dépôts Linux :

    # apt update
    # apt upgrade
    
  • Configuration de la locale du serveur

    Certains serveurs sont livrés sans “locale” (langue par défaut). Pour l’installation de GeoNature, il est nécessaire de bien configurer la locale. Si la commande locale renvoie ceci :

    LANG=fr_FR.UTF-8
    LANGUAGE=fr_FR.UTF-8
    LC_CTYPE="fr_FR.UTF-8"
    LC_NUMERIC="fr_FR.UTF-8"
    LC_TIME="fr_FR.UTF-8"
    LC_COLLATE="fr_FR.UTF-8"
    LC_MONETARY="fr_FR.UTF-8"
    LC_MESSAGES="fr_FR.UTF-8"
    LC_PAPER="fr_FR.UTF-8"
    LC_NAME="fr_FR.UTF-8"
    LC_ADDRESS="fr_FR.UTF-8"
    LC_TELEPHONE="fr_FR.UTF-8"
    LC_MEASUREMENT="fr_FR.UTF-8"
    LC_IDENTIFICATION="fr_FR.UTF-8"
    LC_ALL=fr_FR.UTF-8
    

    Vous pouvez alors passer cette étape de configuration des locales.

    Sinon exécuter la commande dpkg-reconfigure locales. Une fenêtre s’affiche dans votre console. Dans la liste déroulante, sélectionnez fr_FR.UTF-8 UTF-8 avec Espace, puis cliquez sur OK. Une 2ème fenêtre s’affiche avec une liste de locale activées (fr_FR.UTF-8 doit être présent dans la liste), confirmez votre choix, en cliquant sur OK, puis attendez que la locale s’installe.

  • Installer l’utilitaire sudo :

    # apt install sudo
    
  • Créer un utilisateur Linux dédié (nommé geonatureadmin dans notre cas) pour ne pas travailler en root :

    # adduser geonatureadmin
    
  • Lui donner ensuite les droits administrateur en l’ajoutant au groupe sudo :

    # adduser geonatureadmin sudo
    
  • Pour la suite du processus d’installation, on utilisera l’utilisateur non privilégié nouvellement créé. Si besoin d’éxecuter des commandes avec les droits d’administrateur, on les précèdera de sudo.

    Il est d’ailleurs possible renforcer la sécurité du serveur en bloquant la connexion SSH au serveur avec root. Voir https://docs.ovh.com/fr/vps/conseils-securisation-vps/ pour plus d’informations sur le sécurisation du serveur.

    Pour passer de l’utilisateur root à geonatureadmin, vous pouvez aussi utiliser la commande :

    # su - geonatureadmin
    

Installation globale

Ce document décrit une procédure d’installation packagée de GeoNature.

En lançant le script d’installation ci-dessous, l’application GeoNature ainsi que ses dépendances seront installées sur un seul et même serveur au sein d’une seule base de données.

Les applications suivantes seront installées :

  • GeoNature

  • TaxHub qui pilote le schéma taxonomie

  • UsersHub qui pilote le schéma utilisateurs (le paramètre install_usershub_app du fichier de configuration install_all.ini permet de désactiver l’installation de l’application. Il est cependant recommandé d’installer l’application pour disposer d’une interface pour gérer les utilisateurs dans GeoNature)

Si vous disposez déjà de Taxhub ou de UsersHub sur un autre serveur ou une autre base de données et que vous souhaitez installer simplement GeoNature, veuillez suivre la documentation Installation de GeoNature uniquement.

Installation de l’application

Commencer la procédure en se connectant au serveur en SSH avec l’utilisateur dédié précédemment créé lors de l’étape de Préparation du serveur (usuellement geonatureadmin).

  • Se placer à la racine du home de l’utilisateur puis récupérer les scripts d’installation (X.Y.Z à remplacer par le numéro de la dernière version stable de GeoNature). Ces scripts installent les applications GeoNature, TaxHub et UsersHub (en option) ainsi que leurs bases de données (uniquement les schémas du coeur) :

$ wget https://raw.githubusercontent.com/PnX-SI/GeoNature/X.Y.Z/install/install_all/install_all.ini
$ wget https://raw.githubusercontent.com/PnX-SI/GeoNature/X.Y.Z/install/install_all/install_all.sh

Attention : l’installation globale fonctionne uniquement si les scripts sont placés à la racine du home de l’utilisateur courant.

  • Configurez votre installation en adaptant le fichier install_all.ini :

nano install_all.ini

Renseignez à minima votre utilisateur linux, l’URL (ou IP) de votre serveur (avec un / à la fin) ainsi que l’utilisateur PostgreSQL que vous souhaitez et son mot de passe. Le script se chargera d’installer PostgreSQL et de créer l’utilisateur de base de données que vous avez renseigné.

Pour la définition des numéros de version des dépendances, voir le tableau de compatibilité des versions de GeoNature avec ses dépendances. Il est déconseillé de modifier ces versions, chaque nouvelle version de GeoNature étant fournie avec les versions adaptées de ses dépendances.

  • Lancer l’installation :

touch install_all.log
chmod +x install_all.sh
./install_all.sh 2>&1 | tee install_all.log

Une fois l’installation terminée, lancez la commande suivante:

exec bash

Les applications sont disponibles aux adresses suivantes :

Vous pouvez vous connecter avec l’utilisateur intégré par défaut (admin/admin).

Note

Pour en savoir plus TaxHub, sa configuration et son utilisation, reportez-vous à sa documentation : https://taxhub.readthedocs.io. Idem pour UsersHub et sa documentation : https://usershub.readthedocs.io

Note
  • GeoNature-atlas : Comme dans la V1, le script install_all.sh permettra à terme d’installer automatiquement GeoNature-atlas (en option)

  • Une première version de GeoNature-atlas compatible avec GeoNature V2 est disponible : https://github.com/PnEcrins/GeoNature-atlas

  • Vous pouvez utiliser le schéma ref_geo de GeoNature pour votre territoire, les communes et les mailles, si vous les avez intégré dans ref_geo.l_areas au préalable.

Note

Une version expérimentale du calcul automatique de la sensibilité est disponible : https://github.com/PnX-SI/GeoNature/issues/284

Si vous rencontrez une erreur, se reporter aux fichiers de logs :

  • Logs de l’installation de la base de données : /home/`whoami`/geonature/var/log/install_db.log

  • Log général de l’installation de l’application : /home/`whoami`/install_all.log

Si vous souhaitez que GeoNature soit à la racine du serveur, ou à une autre adresse, editez le fichier de configuration Apache (/etc/apache2/sites-available/geonature.conf) en modifiant l’alias :

  • Pour /: Alias / /home/test/geonature/frontend/dist

  • Pour /saisie : Alias /saisie /home/test/geonature/frontend/dist

Note

Par défaut la base de données est accessible uniquement localement par la machine où elle est installée. Pour y accéder depuis une autre machine (pour s’y connecter avec QGIS, pgAdmin ou autre), ouvrez-en les connexions. Voir la documentation https://github.com/PnEcrins/GeoNature-atlas/blob/master/docs/installation.rst#acc%C3%A9der-%C3%A0-votre-bdd. Attention si vous redémarrez PostgreSQL (sudo service postgresql restart), il faut ensuite redémarrer les API GeoNature et TaxHub (sudo supervisorctl reload).

Note

Il est aussi important de configurer l’accès au serveur en HTTPS plutôt qu’en HTTP pour chiffrer le contenu des échanges entre le navigateur et le serveur (https://docs.ovh.com/fr/hosting/les-certificats-ssl-sur-les-hebergements-web/).

Installation d’un module GeoNature

L’installation de GeoNature n’est livrée qu’avec les schémas de base de données et les modules du coeur (NB : le module Occurrence de Taxon - Occtax - est fourni par défaut). Pour ajouter un gn_module externe, il est nécessaire de l’installer :

1. Téléchargez le module depuis son dépôt Github puis dézippez-le dans le repertoire utilisateur, au même niveau que le dossier geonature.

cd /home/`whoami`

2. Renseignez l’éventuel fichier config/settings.ini du module.

3. Installez le module. Rendez-vous dans le répertoire backend de GeoNature et activez le virtualenv pour rendre disponible les commandes GeoNature :

source venv/bin/activate

Lancez ensuite la commande geonature install_gn_module <mon_chemin_absolu_vers_le_module> <url_relative_du_module>

Le premier paramètre est l’emplacement absolu du module sur votre serveur et le deuxième est le chemin derrière lequel on accédera au module dans le navigateur.

Exemple pour un module Import :

geonature install_gn_module /home/`whoami`/gn_module_import import

Le module sera disponible à l’adresse http://mon-geonature.fr/geonature/#/import

L’API du module sera disponible à l’adresse http://mon-geonature.fr/api/import

Cette commande exécute les actions suivantes :

  • Vérification de la conformité de la structure du module (présence des fichiers et dossiers obligatoires)

  • Intégration du blueprint du module dans l’API de GeoNature

  • Vérification de la conformité des paramètres utilisateurs

  • Génération du routing Angular pour le frontend

  • Re-build du frontend pour une mise en production

4. Complétez l’éventuelle configuration du module (config/conf_gn_module.toml) à partir des paramètres présents dans config/conf_gn_module.toml.example dont vous pouvez surcoucher les valeurs par défaut. Puis relancez la mise à jour de la configuration (depuis le répertoire geonature/backend et une fois dans le venv (source venv/bin/activate) : geonature update_module_configuration nom_du_module)

Installation de GeoNature uniquement

Cette procédure détail l’installation de GeoNature seul, sans TaxHub et UsersHub. Si vous souhaitez installer GeoNature avec TaxHub et UsersHub, reportez-vous à la section Installation globale.

Installation des dépendances

Installer les paquets suivants :

$ sudo apt install unzip git postgresql postgis python2 python3-pip python3-venv libgdal-dev libffi-dev libpangocairo-1.0-0 apache2

Installation de l’application

  • Se placer dans le répertoire de l’utilisateur (/home/geonatureadmin/ dans notre cas)

  • Récupérer l’application (X.Y.Z à remplacer par le numéro de la dernière version stable de GeoNature). Voir le tableau de compatibilité des versions de GeoNature avec ses dépendances.

    $ wget https://github.com/PnX-SI/GeoNature/archive/X.Y.Z.zip
    
  • Dézipper l’archive de l’application

    $ unzip X.Y.Z.zip
    $ rm X.Y.Z.zip
    
  • Renommer le répertoire de l’application puis placez-vous dedans :

    $ mv GeoNature-X.Y.Z /home/`whoami`/geonature/
    $ cd geonature
    
  • Copier puis mettre à jour le fichier de configuration (config/settings.ini) comportant les informations relatives à votre environnement serveur :

    $ cp config/settings.ini.sample config/settings.ini
    $ nano config/settings.ini
    

Installation de l’application

Rendez vous dans le dossier install et lancez successivement dans l’ordre les scripts suivant :

  • 01_install_backend.sh : Création du virtualenv python, installation des dépendances et du backend GeoNature dans celui-ci, création du service systemd (permettant d’utiliser sudo systemctl {start,stop} geonature2).

  • 02_create_db.sh : Création du role postgresql, de la base de données, ajout des extensions nécessaires (postgis, …), création des schémas nécessaires à GeoNature et ajout des données métiers.

  • 03_install_gn_modules.sh : Installation des modules OccTax, OccHab et validation (si activé dans le fichier settings.ini).

  • 04_install_frontend.sh : Création des dossiers et liens symboliques nécessaires, création des fichier custom à partir des fichiers d’exemple, génération des fichiers de configuration grâce à la commande geonature, installation de nvm, npm et node ainsi que toutes les dépendances javascript nécessaires puis build du front.

  • 05_configure_apache.sh : Installation du fichier de configuration Apache /etc/apache2/conf-available/geonature.conf et activation des modules Apache nécessaires.

Vous pouvez alors démarrer le backend GeoNature : sudo systemctl start geonature2

Configuration Apache

  • Copiez et adaptez le fichier de configuration d’exemple d’Apache de GeoNature :

    $ sudo cp install/assets/geonature_apache.conf /etc/apache2/sites-available/geonature.conf
    $ sudo nano /etc/apache2/sites-available/geonature.conf
    
  • Activez les modules suivants :

    $ sudo a2enmod rewrite
    $ sudo a2enmod proxy
    $ sudo a2enmod proxy_http
    
  • Activez la nouvelle configuration:

    $ sudo a2ensite geonature.conf
    
  • et redémarrez Apache:

    $ sudo systemctl restart apache2
    
  • L’application est disponible à l’adresse suivante : http://monip.com/geonature

Dépendances

Lors de l’installation de la BDD (02_create_db.sh) le schéma utilisateurs de UsersHub et le schéma taxonomie de TaxHub sont intégrés automatiquement dans la BDD de GeoNature.

UsersHub n’est pas nécessaire au fonctionnement de GeoNature mais il sera utile pour avoir une interface de gestion des utilisateurs, des groupes et de leurs droits.

Par contre il est nécessaire d’installer TaxHub (https://github.com/PnX-SI/TaxHub) pour que GeoNature fonctionne. En effet, GeoNature utilise l’API de TaxHub. Une fois GeoNature installé, il vous faut donc installer TaxHub en le connectant à la BDD de GeoNature, vu que son schéma taxonomie a déjà été installé par le script 02_create_db.sh de GeoNature. Lors de l’installation de TaxHub, n’installez donc que l’application et pas la BDD.

Télécharger TaxHub depuis son dépôt Github depuis la racine de votre utilisateur :

cd ~
wget https://github.com/PnX-SI/TaxHub/archive/X.Y.Z.zip
unzip X.Y.Z.zip
rm X.Y.Z.zip

en mode développeur:

https://github.com/PnX-SI/TaxHub.git

Rendez vous dans le répertoire téléchargé et dézippé, puis “désamplez” le fichier settings.ini et remplissez la configuration avec les paramètres de connexion à la BDD GeoNature précedemment installée :

cp settings.ini.sample settings.ini
nano settings.ini

Lancer le script d’installation de l’application :

mkdir var
mkdir var/log
touch var/log/install_app.log
./install_app.sh 2>&1 | tee var/log/install_app.log

Suite à l’execution de ce script, l’application Taxhub a été lancé automatiquement par le superviseur et est disponible à l’adresse 127.0.0.1:5000 (et l’API, à 127.0.0.1:5000/api)

Voir la doc d’installation de TaxHub : http://taxhub.readthedocs.io/

Voir la doc d’installation de UsersHub : http://usershub.readthedocs.io/

Passer en mode développement

Si vous avez téléchargé GeoNature zippé (via la procédure d’installation globale install_all.sh ou en suivant la documentation d’installation standalone), il est nécessaire de rattacher votre répertoire au dépôt GitHub afin de pouvoir télécharger les dernières avancées du coeur en git pull. Pour cela, suivez les commandes suivantes en vous placant à la racine du répertoire de GeoNature.

--- Se créer un répertoire .git ---
mkdir .git
---  récupérer l'historique du dépôt ---
git clone --depth=2 --bare https://github.com/PnX-SI/GeoNature.git .git
--- initialiser un dépôt git à partir de l'historique téléchargé ---
git init
--- vérifier que le dépôt distant et le contenu local sont synchronisés ---
git pull
--- Reset sur HEAD pour mettre à jour les status ---
git reset HEAD
-> vous êtes à jour sur la branche master
--- Cloner les sous-modules pour récupérer les dépendances
git submodule init
git submodule update
--- Installer les dépendances de développement
cd backend && pip install -r requirements-dev.txt

@TODO : A relire et à basculer dans DOC DEVELOPEMENT ?

Editez le fichier de configuration de GeoNature (<GEONATURE_DIRECTORY>/config/geonature_config.toml) de la manière suivante :

URL_APPLICATION = 'http://127.0.0.1:4200'
API_ENDPOINT = 'http://127.0.0.1:8000'
API_TAXHUB =  'http://127.0.0.1:5000/api'
ID_APPLICATION_GEONATURE = 3

Puis le fichier /home/<mon_user>/geonature/frontend/src/conf/app.config.ts :

URL_APPLICATION: 'http://127.0.0.1:4200',
API_ENDPOINT: 'http://127.0.0.1:8000',
API_TAXHUB:  'http://127.0.0.1:5000/api',
ID_APPLICATION_GEONATURE: 3
  • Lancer le serveur de développement du frontend grâce à Angular-CLI :

    cd frontend
    npm run start
    
  • Lancer l’API en mode développement

Ouvrir un nouveau terminal :

cd backend

Stopper d’abord gunicorn qui est lancé en mode production via le supervisor :

sudo supervisorctl stop geonature2

Puis lancer le backend en mode développement :

source venv/bin/activate
geonature dev_back

Le serveur de développement du backend est disponible à l’adresse 127.0.0.1:8000

Le serveur de développement du frontend est disponible à l’adresse 127.0.0.1:4200.

Vous pouvez vous connecter à l’application avec l’identifiant admin et le mot de passe admin.

HTTPS

La procédure décrit une méthode de certification HTTPS de votre domaine, grâce au service Let’s Encrypt. Les manipulations ont été effectuées sur un serveur Debian 9 avec Apache2 installé, et un utilisateur bénéficiant des droits sudo.

Ressources :

Installer certbot

sudo apt-get install python3-certbot-apache

Lancer la commande cerbot

Lancer la commande suivant pour générer des certificats et des clés pour le nom de domaine que vous souhaitez mettre en HTTPS.

sudo certbot certonly --webroot --webroot-path /var/www/html --domain mondomaine.fr --email monemail@mondomaine.fr
  • certonly : demander la création du certificat uniquement.

  • --webroot : utiliser le plugin webroot qui se contente d’ajouter des fichiers dans le dossier défini via --webroot-path.

  • --webroot-path : le chemin de votre « DocumentRoot » Apache. Certbot placera ses fichiers dans $DocumentRoot/.well-known/ pour les tests et vérifications

  • --domain : le nom de domaine à certifier. Mettre tous les sous-domaines à certifier

  • --email : l’adresse qui recevra les notifications de Let’s Encrypt. Principalement pour rappeler de renouveler le certificat le moment venu.

Les certificats obtenus

Le certificat se trouve dans le répertoire /etc/letsencrypt/live/mondomaine.fr/.

Il est constitué de 4 fichiers :

  • privkey.pem : La clé privée de votre certificat. A garder confidentielle en toutes circonstances et à ne communiquer à personne quel que soit le prétexte. Vous êtes prévenus !

  • cert.pem : Le certificat serveur est à préciser pour les versions d’Apache < 2.4.8. Ce qui est notre cas ici.

  • chain.pem : Les autres certificats, SAUF le certificat serveur. Par exemple les certificats intermédiaires. Là encore pour les versions d’Apache < 2.4.8.

  • fullchain.pem : Logiquement, l’ensemble des certificats. La concaténation du cert.pem et du chain.pem. A utiliser cette fois-ci pour les versions d’Apache >= 2.4.8.

Automatiser le renouvellement du certificat

Le certificat fourni par Let’s Encrypt n’est valable que 3 mois. Il faut donc mettre en place un renouvellement automatique. Ajouter une tache automatique (Cron) pour renouveler une fois par semaine le certificat :

sudo crontab -e
1 8 * * Sat certbot renew --renew-hook "service apache2 reload" >> /var/log/certbot.log

Prise en compte des nouvelles configurations Apache

Activer les modules ssl, headers et rewrite puis redémarrer Apache :

sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod headers
sudo apachectl restart

Les fichiers de configuration des sites TaxHub et UsersHub ne sont pas à modifier, ils seront automatiquement associés à la configuration HTTPS. En revanche, la configuration de GeoNature doit être mise à jour.

Configuration de l’application GeoNature

Il est nécessaire de mettre à jour le fichier de configuration geonature_config.toml situé dans le répertoire geonature/config :

cd geonature/config
nano geonature_config.toml

Modifier les éléments suivants :

URL_APPLICATION = 'https://mondomaine.fr/geonature'
API_ENDPOINT = 'https://mondomaine.fr/geonature/api'
API_TAXHUB = 'https://mondomaine.fr/taxhub/api'

Pour que ces modifications soient prises en compte, lancer les commandes suivantes :

cd geonature/backend
source venv/bin/activate
geonature update_configuration
deactivate

Les applications sont désormais accessibles sur votre domaine sécurisé en HTTPS !

Taches planifiées

Depuis sa version 2.9.0, GeoNature permet de générer des profils pour chaque taxon à partir des observations existantes et validées.

Pour automatiser la mise à jour des profils en fonction des nouvelles observations, il est nécessaire de relancer automatiquement la fonction de calcul des profils de taxon en créant une taches planifiée (cron)

Créer une tache planifiée, exécutée tous les jours à minuit dans cet exemple :

sudo nano /etc/cron.d/geonature

Ajouter la ligne suivante en remplaçant “<CHEMIN_ABSOLU_VERS_VENV>” par le chemin absolu vers le virtualenv de GeoNature et “<GEONATURE_USER>” par l’utilisateur Linux de GeoNature :

0 * * * * <GEONATURE_USER> <CHEMIN_ABSOLU_VERS_VENV>/bin/geonature profiles update

Exemple :

0 * * * * geonatadmin /home/user/geonature/backend/venv/bin/geonature profiles update

Mise à jour de l’application

Attention, avant chaque mise à jour de GeoNature, il est important de sauvegarder l’application et sa base de données, ou de faire un snapshot du serveur pour pouvoir revenir à son état antérieure avant mise à jour en cas de problème.

La mise à jour de GeoNature consiste à télécharger sa nouvelle version dans un nouveau répertoire, récupérer les fichiers de configuration et de surcouche depuis la version actuelle et de relancer l’installation dans le répertoire de la nouvelle version.

La mise à jour doit être réalisée avec votre utilisateur linux courant (geonatureadmin par exemple) et non pas le super-utilisateur root.

  • Télécharger la dernière version de GeoNature :

    wget https://github.com/PnX-SI/GeoNature/archive/X.Y.Z.zip
    unzip X.Y.Z.zip
    rm X.Y.Z.zip
    
  • Renommer l’ancien repertoire de l’application, ainsi que le nouveau :

    mv /home/`whoami`/geonature/ /home/`whoami`/geonature_old/
    mv GeoNature-X.Y.Z /home/`whoami`/geonature/
    cd geonature
    
  • Suivez les éventuelles notes de version spécifiques décrites au niveau de chaque version : https://github.com/PnX-SI/GeoNature/releases.

⚠️ Si la release inclut des scripts de migration SQL : lancer ces scripts avec l’utilisateur de BDD courant (généralement geonatadmin) et non le super-utilisateur postgres.

Sauf mentions contraires dans les notes de version, vous pouvez sauter des versions mais en suivant bien les différentes notes de versions intermédiaires et notamment les scripts de mise à jour de la base de données à exécuter successivement.