Commit a73352a0 authored by Mathieu Ambrosy's avatar Mathieu Ambrosy
Browse files

v 0.18

parent 0e48afa7
v0.18.0 (2021-09-06) **[RELEASE]**
- [CRON] Ajout de scripts Batch pour exécution des scripts Python sous Windows
- [PYTHON] Compatibilité Windows des scripts Python
- [EXE] Ajout d'exécutables Windows dans "/tools"
- [MD] Ajout du document "README-PROD-Windows.md" et autres fichiers suffixés par "-Linux"
- [HTML] Ajout de l'export des documents "README-XXX" en version HTML
- [SQL] Rattachement inverse : amélioration de la requête SQL de création
- [VUE] Suppression des "crédits" des financeurs en pages de login et d'accueil et mise en valeur dans la page "À propos"
v0.17.0 (2021-04-21) **[DEV]**
- [VUE] Multi-rattachement
......@@ -5,7 +15,7 @@ v0.17.0 (2021-04-21) **[DEV]**
v0.16.0 (2021-03-29) **[RELEASE]**
- [MD] Ajout document "REBOOT.md"
- [MD] Ajout du document "REBOOT.md"
- [VUE] Changement de l'icône dans la modale de déconnexion
- [VUE] Accès au module rattachement interdit aux utilisateurs non "rattacheurs" ou "administrateurs"
- [VUE] Désactivation des modules depuis les paramètres admin, avec accès interdit via leur URL directe #86
......
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><h1>Installation de l&#39;application &ldquo;Le Bon Tag&rdquo; sur Debian 9 (MODE DEV)</h1>
<h2>Pré-requis</h2>
<p>L&#39;application nécessite entre autres PostgreSQL, PostGIS, Python 3, node.js, npm et osm2pgrouting.<br>
Ce document décrit l&#39;installation complète de l&#39;application et de ses dépendances pour une utilisation en mode développement (depuis les sources) sous Debian.</p>
<h2>Mise à jour des paquets et du système</h2>
<pre><code>sudo apt-get update &amp;&amp; sudo apt-get upgrade
</code></pre>
<h2>Clonage du dépôt git LeBonTag</h2>
<pre><code>sudo apt-get install -y git &amp;&amp; sudo git config --global user.email &quot;XXXX&quot;
cd /opt &amp;&amp; sudo git clone --branch latest https://gitlab.com/Geonov/le-bon-tag.git
</code></pre>
<p>Où XXXX est à remplacer par un email. </p>
<h2>Proxy (optionnel)</h2>
<p>Si votre organisme utilise un proxy, vous devez spécifier les variables d&#39;environnement &ldquo;http_proxy&rdquo; et &ldquo;https_proxy&rdquo; afin que Python accède à Internet.</p>
<p>Fichier /etc/environment :</p>
<pre><code>http_proxy=http://***:***
https_proxy=http://***:***
</code></pre>
<p>Fichier contab via &ldquo;sudo crontab -e&rdquo; :</p>
<pre><code>http_proxy=http://***:***
https_proxy=http://***:***
</code></pre>
<h2>Dépendances</h2>
<h3>Installation de node.js et de npm</h3>
<pre><code>sudo apt-get install -y curl &amp;&amp; sudo curl -sL https://deb.nodesource.com/setup_12.x | bash -
sudo apt-get install -y nodejs
</code></pre>
<h3>Installation de Python et de ses modules requis</h3>
<pre><code>sudo apt-get install -y python3 python3-pip libpq-dev
sudo pip3 install requests psycopg2 pyyaml lxml numpy
</code></pre>
<blockquote>
<p>Note : ne pas installer les modules Python depuis les paquets de la distribution (car obsolètes). </p>
<p>Note : pour mettre à jour les modules :<br>
<code>sudo -E pip3 install --upgrade requests psycopg2 pyyaml lxml numpy</code></p>
</blockquote>
<h3>Installation des dépendances node.js de l&#39;application (dev + prod)</h3>
<pre><code>cd /opt/le-bon-tag/ &amp;&amp; sudo npm install -g npm rimraf
cd /opt/le-bon-tag/ &amp;&amp; sudo npm install --unsafe-perm
</code></pre>
<h2>Base de données</h2>
<h3>Installation</h3>
<p>Attention, PostGIS &gt;= 2.5 est requis (utilisation de ST_Intersects avec des collections).<br>
Or sous Debian 9, PostGIS 2.3 sera installé depuis les paquets. Il faut donc utiliser une source alternative (https://wiki.postgresql.org/wiki/Apt) :</p>
<pre><code>sudo apt-get install curl ca-certificates gnupg &amp;&amp; curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c &#39;echo &quot;deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main&quot; &gt; /etc/apt/sources.list.d/pgdg.list&#39; &amp;&amp; sudo apt-get update
</code></pre>
<blockquote>
<p>Note : l&#39;application a été testée avec PostgreSQL 9.6, PostgreSQL 12, Postgis 2.5 et Postgis 3.</p>
</blockquote>
<p>Pour installer PostgreSQL 9.6 avec Postgis 2.5 :<br>
<code>sudo apt-get install -y postgresql-9.6 postgresql-contrib-9.6 postgresql-9.6-pgrouting postgresql-9.6-postgis-2.5</code></p>
<p>Pour installer PostgreSQL 12.0 avec Postgis 3 :<br>
<code>sudo apt-get install -y postgresql-12 postgresql-contrib postgresql-12-pgrouting postgresql-12-postgis-3</code></p>
<blockquote>
<p>Fichier de configuration : /etc/postgresql/XX/main/postgresql.conf (vérifier le port et listen<em>addresses = &#39;*&#39; pour ouvrir l&#39;accès vers l&#39;extérieur)<br>
Fichier de gestion des droits d&#39;accès : /etc/postgresql/XX/main/pg</em>hba.conf<br>
Fichiers journaux : /var/lib/postgresql/XX/main/pg_log </p>
</blockquote>
<p>Où XX est la version de PostgreSQL.</p>
<p>Pour redémarrer le service en cas de modification de la configuration :<br>
<code>sudo systemctl restart postgresql</code></p>
<h3>Création</h3>
<ol>
<li><p>Crée le rôle &ldquo;osm&rdquo;, la base &ldquo;osm&rdquo; avec les extensions requises et les schémas :<br>
<code>sudo runuser -l postgres -c &#39;psql -f /opt/le-bon-tag/sql/01_lbt_database_and_schemas.sql&#39;</code></p></li>
<li><p>Crée les tables dans le schéma &ldquo;lebontag&rdquo; de la base &ldquo;osm&rdquo; :<br>
<code>sudo runuser -l postgres -c &#39;psql -d osm -f /opt/le-bon-tag/sql/02_lbt_tables.sql&#39;</code></p></li>
<li><p>Insère les données dans le schéma &ldquo;lebontag&rdquo; :<br>
<code>sudo runuser -l postgres -c &#39;psql -d osm -f /opt/le-bon-tag/sql/03_lbt_data.sql&#39;</code></p></li>
</ol>
<h2>Installation des outils OSM &amp; GDAL</h2>
<p><code>sudo apt-get install -y osm2pgsql osmctools gdal-bin python-gdal</code></p>
<p>Attention, la commande précédente installe PostgreSQL et PostGIS en dépendances. Si la base de données est sur un autre serveur, vous pouvez désinstaller ces paquets ensuite. Par exemple (nom des paquets à adapter) :</p>
<pre><code>sudo apt-get remove postgis postgis-doc postgresql-11 postgresql-11-postgis-2.5 postgresql-11-postgis-2.5-scripts postgresql-client-11 postgresql-client-common postgresql-common
sudo apt-get autoremove
</code></pre>
<h3>Compilation de osm2pgrouting</h3>
<pre><code>sudo apt-get install -y cmake g++ libboost-dev expat libexpat1-dev libboost-program-options-dev libpqxx-dev git
cd /opt &amp;&amp; sudo git clone https://github.com/pgRouting/osm2pgrouting.git
cd /opt/osm2pgrouting &amp;&amp; sudo cmake -H. -Bbuild
cd build/ &amp;&amp; sudo make
sudo make install
</code></pre>
<blockquote>
<p>Note : ne pas installer osm2pgrouting depuis les paquets de la distribution (car obsolètes).</p>
</blockquote>
<h2>Données OSM de référence</h2>
<h3>Téléchargement des données</h3>
<p>Les données OSM de référence <strong>doivent</strong> 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 (&ldquo;OpenStreetMap internal server&rdquo;).</p>
<p>Une fois le compte OSM lié au site &ldquo;geofabrik.de&rdquo;, il est possible de télécharger les données de la région de son choix, par exemple :
<code>https://osm-internal.download.geofabrik.de/europe/france/languedoc-roussillon-internal.osm.pbf</code></p>
<p>Placer le fichier téléchargé sur le serveur, par exemple dans &ldquo;/opt/le-bon-tag/osm/source/&rdquo;.</p>
<blockquote>
<p><strong>Attention : ne jamais supprimer ce fichier, il sera utilisé par l&#39;application pour connaître la date des données de référence, charger les données puis mettre à jour les données pgRouting.</strong></p>
</blockquote>
<h2>Fichiers de configuration</h2>
<h3>Fichier /opt/le-bon-tag/.env</h3>
<p>Copier le fichier /opt/le-bon-tag/.env.sample vers /opt/le-bon-tag/.env et éditer les paramètres :</p>
<pre><code>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=2154
</code></pre>
<ul>
<li>POSTGRES_HOST : Adresse du serveur de base de données<br></li>
<li>POSTGRES_PORT : Port du serveur de base de données</li>
<li>POSTGRES_DB : Nom de la base de données</li>
<li>POSTGRES_SCHEMA : Schéma de la base de données</li>
<li>POSTGRES_USER : Rôle PostgreSQL</li>
<li>POSTGRES_PASSWORD : Mot de passe du rôle PostgreSQL</li>
<li>JWT_SECRET : Clé de hachage à générer aléatoirement (pour le jeton de connexion)</li>
<li>EPSG_OSM : Code EPSG du système de coordonnées des données OSM</li>
<li>EPSG_LOCAL : Code EPSG du système de coordonnées local</li>
</ul>
<h3>Fichier /opt/le-bon-tag/server/config.json</h3>
<p>Copier le fichier /opt/le-bon-tag/server/config.json.sample vers /opt/le-bon-tag/server/config.json et éditer les paramètres :</p>
<pre><code>{
&quot;port&quot;: 80,
&quot;bodyLimit&quot;: &quot;50mb&quot;
}
</code></pre>
<ul>
<li>port : port d&#39;écoute du service node.js</li>
<li>bodyLimit : taille maximale des fichiers à traiter</li>
</ul>
<blockquote>
<p>Note : Laisser le port 80 pour que node.js serve directement l&#39;application ou modifier le port (par exemple en 8081) pour utiliser ensuite Nginx ou autre comme reverse proxy (cf. https://<a href="http://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-debian-9">www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-debian-9</a>).</p>
</blockquote>
<h3>Fichier /opt/le-bon-tag/config.yaml</h3>
<p>Copier le fichier /opt/le-bon-tag/config.yaml.sample vers /opt/le-bon-tag/config.yaml et éditer les paramètres :</p>
<pre><code>database:
host: localhost
port: 5432
dbname: osm
schema: lebontag
username: osm
password: osm
srid: 4326
</code></pre>
<ul>
<li>host : Adresse du serveur de base de données<br></li>
<li>port : Port du serveur de base de données</li>
<li>dbname : Nom de la base de données</li>
<li>schema : Schéma de la base de données pour l&#39;application</li>
<li>username : Rôle PostgreSQL</li>
<li>password : Mot de passe du rôle PostgreSQL</li>
<li>srid : Système de coordonnées des données adiff</li>
</ul>
<h2>Compilation de l&#39;application</h2>
<p><code>cd /opt/le-bon-tag &amp;&amp; sudo npm run lint &amp;&amp; sudo npm run build</code></p>
<h2>Exécution de l&#39;application (en mode interactif)</h2>
<p>Pour tester la bonne installation de l&#39;application : </p>
<p><code>cd /opt/le-bon-tag &amp;&amp; sudo node api/index.js</code></p>
<p>Ouvrir un navigateur et entrer l&#39;adresse du serveur. La page de connexion de l&#39;application devrait apparaître.</p>
<p>&ldquo;CTRL + C&rdquo; pour quitter.</p>
<h2>Exécution de l&#39;application (en mode service)</h2>
<p>&ldquo;pm2&rdquo; est un gestionnaire de processus permettant de gérer le (re)démarrage automatique de l&#39;application. Les commandes suivantes installent &ldquo;pm2&rdquo; et créent le service pour l&#39;application.</p>
<pre><code>cd /opt/le-bon-tag/ &amp;&amp; sudo npm install -g pm2@latest --unsafe-perm
sudo pm2 start api/index.js -n LeBonTag &amp;&amp; sudo pm2 startup systemd &amp;&amp; sudo pm2 save
</code></pre>
<h2>Configuration de l&#39;application</h2>
<ul>
<li>Ouvrir l&#39;application via un navigateur.</li>
<li>Se connecter avec l&#39;utilisateur &ldquo;<strong>admin</strong>&rdquo; et le mot de passe &ldquo;<strong>lbtOSM34a</strong>&rdquo; puis cliquer sur &ldquo;Administration&rdquo; et &ldquo;Réglages&rdquo;.<br>
Cette page permet de spécifier les paramètres de l&#39;application, dont certains sont décrits ci-dessous.</li>
</ul>
<h3>Données OSM de référence</h3>
<p>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&#39;application puis mises à jour par l&#39;application.<br>
Spécifier les bons chemins des fichiers, en particulier le chemin vers le fichier PBF des données de référence téléchargé précédemment.</p>
<h3>Données OSM d&#39;itinéraire</h3>
<p>Cette rubrique spécifie les paramètres des données OSM pgRouting chargées lors de la mise en service de l&#39;application puis mises à jour par l&#39;application.</p>
<h3>Données OSM à valider</h3>
<p>Cette rubrique spécifie les paramètres gérant la validation des données OSM.<br>
La tolérance de géométrie précise la tolérance en mètres au-delà de laquelle la géométrie d&#39;un objet est considérée comme modifiée par rapport à son ancienne version.</p>
<h3>Carte</h3>
<p>Cette rubrique spécifie l&#39;emprise géographique de la zone de travail et son apparence sur la carte.</p>
<p>L&#39;emprise (au format GeoJSON, EPSG:4326) est très importante car elle limite les données chargées par l&#39;application à cette zone. Par défaut, l&#39;emprise de Montpellier Méditerranée Métropole est spécifiée.<br>
Sous PostGIS, la fonction &ldquo;ST_AsGeoJSON&rdquo; peut être utilisée pour récupérer la géométrie d&#39;un objet en GeoJSON, par exemple :</p>
<pre><code>SELECT ST_AsGeoJSON(ST_Transform(way,4326),9,4) FROM osm2pgsql.osm_polygon WHERE name = &#39;Montpellier Méditerranée Métropole&#39;;
</code></pre>
<p>Le site <a href="https://polygons.openstreetmap.fr/">https://polygons.openstreetmap.fr/</a> permet également de générer un GeoJSON à partir de l&#39;ID d&#39;une relation OSM.</p>
<h3>Rétention des fichiers</h3>
<p>Cette rubrique spécifie l&#39;âge maximal de certains fichiers générés par l&#39;application.</p>
<h3>Serveur LDAP</h3>
<p>Cette rubrique permet de définir la connexion à un serveur OpenLDAP pour la gestion des utilisateurs. </p>
<h3>Enregistrement</h3>
<p>Cliquer sur &ldquo;Enregistrer&rdquo; pour sauvegarder les modifications.</p>
<h2>Chargement des données OSM de référence et d&#39;itinéraire</h2>
<p>Lors de la mise en service de l&#39;application, les données OSM de référence et d&#39;itinéraire doivent être chargées en base.<br>
Le script &ldquo;lbt-load-data.sh&rdquo; automatise ce chargement :</p>
<pre><code>sudo apt-get install -y dos2unix &amp;&amp; sudo dos2unix /opt/le-bon-tag/scripts/*.sh &amp;&amp; sudo chmod +x /opt/le-bon-tag/scripts/*.sh
sudo -E /opt/le-bon-tag/scripts/lbt-load-data.sh
</code></pre>
<p>Ces données seront alors mises à jour avec les données validées dans l&#39;application. </p>
<blockquote>
<p><strong>Attention, la durée de chargement peut être élevée.</strong></p>
</blockquote>
<h2>CRON des scripts Python</h2>
<p>Plusieurs scripts Python sont à exécuter régulièrement, par exemple une fois par jour.</p>
<ul>
<li>&ldquo;lbt-get-adiff-xxx&rdquo; télécharge les fichiers adiff depuis l&#39;API Overpass et les charge en base de données.</li>
<li>&ldquo;lbt-update-db-by-osc&rdquo; met à jour la base de données de référence et la base d&#39;itinéraire avec les objets validés depuis l&#39;interface.</li>
<li>&ldquo;lbt-cleaning&rdquo; nettoie les fichiers OSM et journaux générés par l&#39;application.</li>
</ul>
<p>Pour exécuter ces scripts Python tous les jours, on les déclare dans le CRON :</p>
<pre><code>sudo dos2unix /opt/le-bon-tag/cron/*.sh &amp;&amp; sudo chmod +x /opt/le-bon-tag/cron/*.sh
echo &#39;MAILTO=&quot;&quot;&#39; &gt; /etc/cron.d/lebontag
echo &#39;0 0 * * * root /opt/le-bon-tag/cron/lbt-cleaning.sh&#39; &gt;&gt; /etc/cron.d/lebontag
echo &#39;0 1 * * * root /opt/le-bon-tag/cron/lbt-update-db-by-osc.sh&#39; &gt;&gt; /etc/cron.d/lebontag
echo &#39;0 3 * * * root /opt/le-bon-tag/cron/lbt-get-adiff.sh&#39; &gt;&gt; /etc/cron.d/lebontag
</code></pre>
<p>Pour charger les premières données adiff, on peut exécuter le script immédiatement :<br>
<code>sudo -E /opt/le-bon-tag/cron/lbt-get-adiff.sh</code></p>
<h3>Mode &ldquo;démo&rdquo; (demo.lebontag.fr)</h3>
<p>Pour utiliser l&#39;application en mode &ldquo;démo&rdquo;, ne pas mettre les fichiers précédents dans le CRON mais uniquement &ldquo;lbt-demo.sh&rdquo; afin de restaurer régulièrement les paramètres, par exemple toutes les heures :</p>
<pre><code>sudo dos2unix /opt/le-bon-tag/cron/*.sh &amp;&amp; sudo chmod +x /opt/le-bon-tag/cron/*.sh
echo &#39;MAILTO=&quot;&quot;&#39; &gt; /etc/cron.d/lebontag
echo &#39;0 * * * * root /opt/le-bon-tag/cron/lbt-demo.sh&#39; &gt;&gt; /etc/cron.d/lebontag
</code></pre>
<h2>Création d&#39;une release</h2>
<p>Pour créer manuellement une release de l&#39;application (version compilée) :</p>
<p><code>cd /opt/le-bon-tag/ &amp;&amp; sudo npm run package</code></p>
<p>Le fichier .tgz sera généré dans /opt/le-bon-tag/releases.</p>
</body></html>
\ No newline at end of file
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><h1>Installation de l&#39;application &ldquo;Le Bon Tag&rdquo; sur Debian 9 (MODE PROD)</h1>
<h2>Pré-requis</h2>
<p>L&#39;application nécessite entre autres PostgreSQL, PostGIS, Python 3, node.js, npm et osm2pgrouting.<br>
Ce document décrit l&#39;installation complète de l&#39;application et de ses dépendances pour une utilisation en mode production (version compilée) sous Debian.</p>
<h2>Application</h2>
<p>Décompresser le fichier contenant l&#39;application &ldquo;le-bon-tag_x.y.z.tgz&rdquo;, par exemple dans /opt/le-bon-tag :</p>
<p><code>tar xvzf le-bon-tag_x.y.z.tgz -C /opt/le-bon-tag</code></p>
<h2>Proxy (optionnel)</h2>
<p>Si votre organisme utilise un proxy, vous devez spécifier les variables d&#39;environnement &ldquo;http_proxy&rdquo; et &ldquo;https_proxy&rdquo; afin que Python accède à Internet.</p>
<p>Fichier /etc/environment :</p>
<pre><code>http_proxy=http://***:***
https_proxy=http://***:***
</code></pre>
<p>Fichier contab via &ldquo;sudo crontab -e&rdquo; :</p>
<pre><code>http_proxy=http://***:***
https_proxy=http://***:***
</code></pre>
<h2>Dépendances</h2>
<h3>Installation de node.js et de npm</h3>
<pre><code>sudo apt-get install -y curl &amp;&amp; sudo curl -sL https://deb.nodesource.com/setup_12.x | bash -
sudo apt-get install -y nodejs
sudo npm install -g npm
</code></pre>
<h3>Installation de Python et de ses modules requis</h3>
<pre><code>sudo apt-get install -y python3 python3-pip libpq-dev
sudo -E pip3 install requests psycopg2 pyyaml lxml numpy
</code></pre>
<blockquote>
<p>Note : ne pas installer les modules Python depuis les paquets de la distribution (car obsolètes). </p>
<p>Note : pour mettre à jour les modules :<br>
<code>sudo pip3 install --upgrade requests psycopg2 pyyaml lxml numpy</code></p>
</blockquote>
<h2>Base de données</h2>
<h3>Installation</h3>
<p>Attention, PostGIS &gt;= 2.5 est requis (utilisation de ST_Intersects avec des collections).<br>
Or sous Debian 9, PostGIS 2.3 sera installé depuis les paquets. Il faut donc utiliser une source alternative (https://wiki.postgresql.org/wiki/Apt) :</p>
<pre><code>sudo apt-get install curl ca-certificates gnupg &amp;&amp; curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c &#39;echo &quot;deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main&quot; &gt; /etc/apt/sources.list.d/pgdg.list&#39; &amp;&amp; sudo apt-get update
</code></pre>
<blockquote>
<p>Note : l&#39;application a été testée avec PostgreSQL 9.6, PostgreSQL 12, Postgis 2.5 et Postgis 3.</p>
</blockquote>
<p>Pour installer PostgreSQL 9.6 avec Postgis 2.5 :<br>
<code>sudo apt-get install -y postgresql-9.6 postgresql-contrib-9.6 postgresql-9.6-pgrouting postgresql-9.6-postgis-2.5</code></p>
<p>Pour installer PostgreSQL 12.0 avec Postgis 3 :<br>
<code>sudo apt-get install -y postgresql-12 postgresql-contrib postgresql-12-pgrouting postgresql-12-postgis-3</code></p>
<blockquote>
<p>Fichier de configuration : /etc/postgresql/XX/main/postgresql.conf (vérifier le port et listen<em>addresses = &#39;*&#39; pour ouvrir l&#39;accès vers l&#39;extérieur)<br>
Fichier de gestion des droits d&#39;accès : /etc/postgresql/XX/main/pg</em>hba.conf<br>
Fichiers journaux : /var/lib/postgresql/XX/main/pg_log </p>
</blockquote>
<p>Où XX est la version de PostgreSQL.</p>
<p>Pour redémarrer le service en cas de modification de la configuration :<br>
<code>sudo systemctl restart postgresql</code></p>
<h3>Création</h3>
<ol>
<li><p>Crée le rôle &ldquo;osm&rdquo;, la base &ldquo;osm&rdquo; avec les extensions requises et les schémas :<br>
<code>sudo runuser -l postgres -c &#39;psql -f /opt/le-bon-tag/sql/01_lbt_database_and_schemas.sql&#39;</code></p></li>
<li><p>Crée les tables dans le schéma &ldquo;lebontag&rdquo; de la base &ldquo;osm&rdquo; :<br>
<code>sudo runuser -l postgres -c &#39;psql -d osm -f /opt/le-bon-tag/sql/02_lbt_tables.sql&#39;</code></p></li>
<li><p>Insère les données dans le schéma &ldquo;lebontag&rdquo; :<br>
<code>sudo runuser -l postgres -c &#39;psql -d osm -f /opt/le-bon-tag/sql/03_lbt_data.sql&#39;</code></p></li>
</ol>
<h2>Installation des outils OSM &amp; GDAL</h2>
<p><code>sudo apt-get install -y osm2pgsql osmctools gdal-bin python-gdal</code></p>
<h3>Compilation de osm2pgrouting</h3>
<pre><code>sudo apt-get install -y cmake libboost-dev expat libexpat1-dev libboost-program-options-dev libpqxx-dev
cd /opt &amp;&amp; sudo git clone https://github.com/pgRouting/osm2pgrouting.git
cd /opt/osm2pgrouting &amp;&amp; cmake -H. -Bbuild
cd build/ &amp;&amp; make
make install
</code></pre>
<blockquote>
<p>Note : ne pas installer osm2pgrouting depuis les paquets de la distribution (car obsolètes).</p>
</blockquote>
<h2>Données OSM de référence</h2>
<h3>Téléchargement des données</h3>
<p>Les données OSM de référence <strong>doivent</strong> contenir certaines métadonnées (contributeur, date, changeset, etc.) et se téléchargent après connexion avec un compte OSM sur <code>https://osm-internal.download.geofabrik.de/index.html</code> (&ldquo;OpenStreetMap internal server&rdquo;).</p>
<p>Une fois le compte OSM lié au site &ldquo;geofabrik.de&rdquo;, il est possible de télécharger les données de la région de son choix, par exemple :
<code>https://osm-internal.download.geofabrik.de/europe/france/languedoc-roussillon-latest-internal.osm.pbf</code></p>
<p>Placer le fichier téléchargé sur le serveur, par exemple dans &ldquo;/opt/le-bon-tag/osm/source/&rdquo;.</p>
<blockquote>
<p><strong>Attention : ne jamais supprimer ce fichier, il sera utilisé par l&#39;application pour connaître la date des données de référence, charger les données puis mettre à jour les données pgRouting.</strong></p>
</blockquote>
<h2>Fichiers de configuration</h2>
<h3>Fichier /opt/le-bon-tag/.env</h3>
<p>Copier le fichier /opt/le-bon-tag/.env.sample vers /opt/le-bon-tag/.env et éditer les paramètres :</p>
<pre><code>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=2154
</code></pre>
<ul>
<li>POSTGRES_HOST : Adresse du serveur de base de données<br></li>
<li>POSTGRES_PORT : Port du serveur de base de données</li>
<li>POSTGRES_DB : Nom de la base de données</li>
<li>POSTGRES_SCHEMA : Schéma de la base de données</li>
<li>POSTGRES_USER : Rôle PostgreSQL</li>
<li>POSTGRES_PASSWORD : Mot de passe du rôle PostgreSQL</li>
<li>JWT_SECRET : Clé de hachage à générer aléatoirement (pour le jeton de connexion)</li>
<li>EPSG_OSM : Code EPSG du système de coordonnées des données OSM</li>
<li>EPSG_LOCAL : Code EPSG du système de coordonnées local</li>
</ul>
<h3>Fichier /opt/le-bon-tag/api/config.json</h3>
<p>Copier le fichier /opt/le-bon-tag/api/config.json.sample vers /opt/le-bon-tag/api/config.json et éditer les paramètres :</p>
<pre><code>{
&quot;port&quot;: 80,
&quot;bodyLimit&quot;: &quot;50mb&quot;
}
</code></pre>
<ul>
<li>port : port d&#39;écoute du service node.js</li>
<li>bodyLimit : taille maximale des fichiers à traiter</li>
</ul>
<blockquote>
<p>Note : Laisser le port 80 pour que node.js serve directement l&#39;application ou modifier le port (par exemple 8081) pour utiliser ensuite Nginx comme reverse proxy (cf. https://<a href="http://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-debian-9">www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-debian-9</a>).</p>
</blockquote>
<h3>Fichier /opt/le-bon-tag/config.yaml</h3>
<p>Copier le fichier /opt/le-bon-tag/config.yaml.sample vers /opt/le-bon-tag/config.yaml et éditer les paramètres :</p>
<pre><code>database:
host: localhost
port: 5432
dbname: osm
schema: lebontag
username: osm
password: osm
srid: 4326
</code></pre>
<ul>
<li>host : Adresse du serveur de base de données<br></li>
<li>port : Port du serveur de base de données</li>
<li>dbname : Nom de la base de données</li>
<li>schema : Schéma de la base de données pour l&#39;application</li>
<li>username : Rôle PostgreSQL</li>
<li>password : Mot de passe du rôle PostgreSQL</li>
<li>srid : Système de coordonnées des données adiff</li>
</ul>
<h2>Exécution de l&#39;application (en mode interactif)</h2>
<p>Pour tester la bonne installation de l&#39;application : </p>
<p><code>cd /opt/le-bon-tag &amp;&amp; sudo npm start</code></p>
<p>Ouvrir un navigateur et entrer l&#39;adresse du serveur. La page de connexion de l&#39;application devrait apparaître.</p>
<p>&ldquo;CTRL + C&rdquo; pour quitter.</p>
<h2>Exécution de l&#39;application (en mode service)</h2>
<p>&ldquo;pm2&rdquo; est un gestionnaire de processus permettant de gérer le (re)démarrage automatique de l&#39;application. Les commandes suivantes installent &ldquo;pm2&rdquo; et créent le service pour l&#39;application.</p>
<pre><code>cd /opt/le-bon-tag/ &amp;&amp; sudo npm install -g pm2@latest --unsafe-perm
sudo pm2 start api/index.js -n LeBonTag &amp;&amp; sudo pm2 startup systemd &amp;&amp; sudo pm2 save
</code></pre>
<h2>Configuration de l&#39;application</h2>
<ul>
<li>Ouvrir l&#39;application via un navigateur.</li>
<li>Se connecter avec l&#39;utilisateur &ldquo;<strong>admin</strong>&rdquo; et le mot de passe &ldquo;<strong>lbtOSM34a</strong>&rdquo; puis cliquer sur &ldquo;Administration&rdquo; et &ldquo;Réglages&rdquo;.<br>
Cette page permet de spécifier les paramètres de l&#39;application, dont certains sont décrits ci-dessous.</li>
</ul>
<h3>Données OSM de référence</h3>
<p>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&#39;application puis mises à jour par l&#39;application.<br>
Spécifier les bons chemins des fichiers, en particulier le chemin vers le fichier PBF des données de référence téléchargé précédemment.</p>
<h3>Données OSM d&#39;itinéraire</h3>
<p>Cette rubrique spécifie les paramètres des données OSM pgRouting chargées lors de la mise en service de l&#39;application puis mises à jour par l&#39;application.</p>
<h3>Données OSM à valider</h3>
<p>Cette rubrique spécifie les paramètres gérant la validation des données OSM.<br>
La tolérance de géométrie précise la tolérance en mètres au-delà de laquelle la géométrie d&#39;un objet est considérée comme modifiée par rapport à son ancienne version.</p>
<h3>Carte</h3>
<p>Cette rubrique spécifie l&#39;emprise géographique de la zone de travail et son apparence sur la carte.</p>
<p>L&#39;emprise (au format GeoJSON, EPSG:4326) est très importante car elle limite les données chargées par l&#39;application à cette zone. Par défaut, l&#39;emprise de Montpellier Méditerranée Métropole est spécifiée.<br>
Sous PostGIS, la fonction &ldquo;ST_AsGeoJSON&rdquo; peut être utilisée pour récupérer la géométrie d&#39;un objet en GeoJSON, par exemple :</p>
<pre><code>SELECT ST_AsGeoJSON(ST_Transform(way,4326),9,4) FROM osm2pgsql.osm_polygon WHERE name = &#39;Montpellier Méditerranée Métropole&#39;;
</code></pre>
<h3>Rétention des fichiers</h3>
<p>Cette rubrique spécifie l&#39;âge maximal de certains fichiers générés par l&#39;application.</p>
<h3>Serveur LDAP</h3>
<p>Cette rubrique permet de définir la connexion à un serveur OpenLDAP pour la gestion des utilisateurs. </p>
<h3>Enregistrement</h3>
<p>Cliquer sur &ldquo;Enregistrer&rdquo; pour sauvegarder les modifications.</p>
<h2>Chargement des données OSM de référence et d&#39;itinéraire</h2>
<p>Lors de la mise en service de l&#39;application, les données OSM de référence et d&#39;itinéraire doivent être chargées en base.<br>
Le script &ldquo;lbt-load-data.sh&rdquo; automatise ce chargement :</p>