L’application nécessite entre autres PostgreSQL avec PostGIS, Python 3, node.js, npm et osm2pgrouting.
Ce document décrit l’installation complète de l’application et de ses dépendances pour une utilisation en mode production (version compilée) sous Windows.
Les droits d’administration seront nécessaires.
Décompresser le fichier “le-bon-tag_x.y.z.tgz” contenant l’application avec un logiciel comme 7zip :
Un fichier “le-bon-tag_x.y.z.tar” est généré.
Décompresser ce fichier à son tour, mais cette fois-ci en spécifiant un sous-répertoire de destination :
Les messages d’avertissement de type “Can not create symbolic link” peuvent être ignorés en cliquant sur le bouton “Fermer” :
Déplacer le répertoire généré sur le serveur, en évitant les chemins avec des espaces ou des caractères spéciaux, par exemple à la racine de C:, et le renommer le-bon-tag
:
La version 12 de node.js doit être installée : Lien de téléchargement
Utiliser les paramètres d’installation par défaut.
La version 3 de Python doit être installée : Lien de téléchargement
Cocher “Add Python 3.X to PATH” et cliquer sur “Customize installation” :
Cliquer sur Next, cocher “Install for all users” et cliquer sur “Install” :
A la fin de l’installation, cliquer sur “Disable path length limit” si l’option est proposée, puis sur “Close” :
Ouvrir une invite de commandes en tant qu’administrateur et exécuter (mise à jour de “pip”) :
"C:\Program Files\Python39\python.exe" -m pip install --upgrade pip
Toujours avec l’invite de commandes, exécuter (installation des modules requis) :
"C:\Program Files\Python39\python.exe" -m pip install requests psycopg2 pyyaml lxml numpy
Note : pour mettre à jour les modules déjà installés :
"C:\Program Files\Python39\python.exe" -m pip upgrade requests psycopg2 pyyaml lxml numpy
L’application nécessite une base de données PostgreSQL, avec des extensions comme PostGIS.
Attention, PostGIS >= 2.5 est requis (utilisation de ST_Intersects avec des collections).
La base de données peut être sur un autre serveur (recommandé) ou sur le même serveur que l’application.
Utiliser les paramètres d’installation par défaut, spécifier un mot de passe pour le “super utilisateur” de la base de données et préciser la locale “C” :
A la fin de l’installation, accepter l’exécution de “Stack Builder” afin d’installer l’extension PostGIS (ou refuser et exécuter directement “postgis_3_1_pg13.exe” si déjà téléchargé) :
Répondre “Oui” aux différentes questions posées à la fin de l’installation de PostGIS.
Fichier de configuration :
C:\Program Files\PostgreSQL\XX\data\postgresql.conf
(vérifier le port etlisten_addresses = '*'
pour ouvrir l’accès vers l’extérieur si besoin)
Fichier de gestion des droits d’accès :C:\Program Files\PostgreSQL\XX\data\pg_hba.conf
Fichiers journaux :C:\Program Files\PostgreSQL\XX\data\log
Où XX est la version de PostgreSQL.
Les scripts SQL de l’application sont chargés en base depuis l’invite de commandes :
SET PGCLIENTENCODING=utf-8 && chcp 65001
"C:\Program Files\PostgreSQL\13\bin\psql" --host=localhost --port=5432 --username=postgres -f C:\le-bon-tag\sql\01_lbt_database_and_schemas.sql
SET PGCLIENTENCODING=utf-8 && chcp 65001
"C:\Program Files\PostgreSQL\13\bin\psql" --host=localhost --port=5432 --username=postgres -d osm -f C:\le-bon-tag\sql\02_lbt_tables.sql
SET PGCLIENTENCODING=utf-8 && chcp 65001
"C:\Program Files\PostgreSQL\13\bin\psql" --host=localhost --port=5432 --username=postgres -d osm -f C:\le-bon-tag\sql\03_lbt_data.sql
Les données OSM de référence doivent contenir certaines métadonnées (contributeur, date, changeset, etc.) et se téléchargent après connexion avec un compte OSM sur https://osm-internal.download.geofabrik.de/index.html
(“OpenStreetMap internal server”).
Une fois le compte OSM lié au site “geofabrik.de”, il est possible de télécharger les données de la région de son choix, par exemple :
https://osm-internal.download.geofabrik.de/europe/france/languedoc-roussillon-latest-internal.osm.pbf
Placer le fichier téléchargé sur le serveur, par exemple dans “C:\le-bon-tag\osm\source”.
Attention : ne jamais supprimer ce fichier, il sera utilisé par l’application pour connaître la date des données de référence, charger les données puis mettre à jour les données pgRouting.
Copier le fichier C:\le-bon-tag\.env.sample
vers C:\le-bon-tag\.env
:
copy C:\le-bon-tag\.env.sample C:\le-bon-tag\.env
Et éditer les paramètres si nécessaire (connexion à la base de données) :
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=osm
POSTGRES_SCHEMA=lebontag
POSTGRES_USER=osm
POSTGRES_PASSWORD=osm
JWT_SECRET=b4e9cb1d8e532b7d2dae5be291dffab9
LOGGING=true
EPSG_OSM=4326
EPSG_LOCAL=4326
Copier le fichier C:\le-bon-tag\api\config.json.sample
vers C:\le-bon-tag\api\config.json
et éditer les paramètres si nécessaire (port d’écoute du serveur Web) :
{
"port": 80,
"bodyLimit": "50mb"
}
Copier le fichier C:\le-bon-tag\config.yaml.sample
vers C:\le-bon-tag\config.yaml
et éditer les paramètres si nécessaire (connexion à la base de données) :
database:
host: localhost
port: 5432
dbname: osm
schema: lebontag
username: osm
password: osm
srid: 4326
A ce stade, l’application devrait être fonctionnelle. Pour tester la bonne installation de l’application, exécuter en ligne de commandes :
cd C:\le-bon-tag && npm start
Ouvrir un navigateur et entrer l’adresse du serveur (ou http://127.0.0.1
en local). La page de connexion de l’application devrait apparaître.
Taper CTRL + C
en ligne de commandes pour arrêter l’application.
“pm2” est un gestionnaire de processus permettant de gérer les applications. De plus, pour créer un service Windows, le programme pm2-installer
doit être utilisé.
A exécuter dans une invite de commandes en tant qu’administrateur :
cd C:\le-bon-tag\tools\pm2-installer-main
npm run configure
npm run configure-policy
npm run setup
cd C:\le-bon-tag && npm install -g pm2@latest --unsafe-perm
pm2 start api/index.js -n LeBonTag && pm2 save
Cette rubrique spécifie les paramètres des données OSM de référence chargées lors de la mise en service de l’application puis mises à jour par l’application.
Spécifier les bons chemins des fichiers (avec des /
et non des \
), en particulier le chemin vers le fichier PBF des données de référence téléchargé précédemment.
Par exemple :
C:/le-bon-tag/osm/source/languedoc-roussillon-latest-internal.osm.pbf
C:/le-bon-tag/osm/poly/MMM_4326_20190701.poly
C:/le-bon-tag/osm/style/MMM_20190701.style
Attention, pour le paramètre “Système de coordonnées des données de référence après chargement (SRID)”, la valeur “4326” est obligatoire sous Windows.
Cette rubrique spécifie les paramètres des données OSM pgRouting chargées lors de la mise en service de l’application puis mises à jour par l’application.
Spécifier le bon chemin du fichier (avec des /
et non des \
), par exemple :
C:/le-bon-tag/osm/mapconfig/mapconfig_MMM_20191107.xml
Cette rubrique spécifie les paramètres gérant la validation des données OSM.
La tolérance de géométrie précise la tolérance en mètres au-delà de laquelle la géométrie d’un objet est considérée comme modifiée par rapport à son ancienne version.
Cette rubrique spécifie l’emprise géographique de la zone de travail et son apparence sur la carte.
L’emprise (au format GeoJSON, EPSG:4326) est très importante car elle limite les données chargées par l’application à cette zone. Par défaut, l’emprise de Montpellier Méditerranée Métropole est spécifiée.
Pour utiliser une autre emprise, se rendre dans le module “Emprises” de l’application et téléverser une nouvelle emprise. Ensuite revenir à ce paramètre et sélectionner la nouvelle emprise depuis la liste déroulante.
Notes :
SELECT ST_AsGeoJSON(ST_Transform(way,4326),9,4) FROM osm2pgsql.osm_polygon WHERE name = 'Montpellier Méditerranée Métropole';
Cette rubrique spécifie l’âge maximal de certains fichiers générés par l’application.
Cette rubrique permet de définir la connexion à un serveur OpenLDAP pour la gestion des utilisateurs.
Cliquer sur “Enregistrer” pour sauvegarder les modifications.
Lors de la mise en service de l’application, les données OSM de référence et d’itinéraire doivent être chargées en base.
Le script “lbt-load-data.bat” automatise ce chargement :
cd "C:\le-bon-tag\scripts"
lbt-load-data.bat
Ces données seront alors mises à jour avec les données validées dans l’application.
Attention, la durée de chargement peut être élevée.
Plusieurs scripts Python sont à exécuter régulièrement, par exemple une fois par jour, pour maintenir les données à jour :
Pour exécuter ces scripts Python tous les jours sous Windows, il faut créer des tâches planifiées à l’aide du planificateur de tâches.
Les planifications à mettre en place sont :
Fichier c:\le-bon-tag\cron\lbt-cleaning.bat