FR:Debian/Bullseye/Installation
En construction
Installation d'un serveur OSM sur Debian 11 / Bullseye
Documentation
Debian/Stretch/FR:Installation
Environnement
Cette installation a été testée sur une machine virtuelle :
- proxmox
Les caractéristiques :
- CPU : KVM 2 coeurs
- RAM : 2 Go
- Disque dur : 32 Go SSD
Le serveur web répondra sur :
Pour information : Ce serveur a un stockage de masse monté sur /home. Toutes les références aux différents répertoires et les appels de commandes auront pour racine /home. Cette racine est a adaptée fonction de l'architecture sur laquelle est reproduite la procédure d'installation décrite de cet article.
Pré-requis
On met à jour le système :
# en tant que root apt-get update apt-get upgrade
Puis, on installe quelques utilitaires basiques :
apt-get install sudo htop multitail zip unzip git wget curl
FIX
apt install subversion git-core tar unzip wget bzip2 build-essential autoconf libtool libxml2-dev libgeos-dev libpq-dev libbz2-dev proj munin-node munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng-dev libtiff5-dev libicu-dev libboost-all-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev
/FIX
Comptes dédiés dans le système et les applications
Pour des raisons de sécurité, on n'exécutera pas les processus ou services en tant que root. Pour se faire, on crée un utilisateur "sudo-é" osm qui sera utilisé par la suite.
Le compte pour la base de données se nommera également osm. Il aura le même mot de passe que le compte UNIX.
La base de données qui va accueillir les données se nommera aussi osm.
En tant que root, on crée l'utilisateur osm :
# en tant que root adduser osm # Ajout au groupe sudo usermod -a -G sudo osm
Organisation du système de fichiers
Toutes les données et les fichiers vont être regroupés dans un répertoire /data/ :
data/ ├── backup ├── db │ └── postgresql │ └── gis -----------------------(FIX ! )------------------------------ └── osm ├── dumps <=== Répertoire de stockage des fichiers de données (ex : fichiers PBF) ├── mapnik ├── mod_tile <=== Répertoire de stockage de l'outils mod_tile ├── renderd ├── styles <=== Répertoire de stockage des stockage des feuilles de styles pour le rendu des cartes ├── tiles <=== Répertoire de stockage des tuiles générées (cache) └── www
On crée l'arborescence des répertoires dans le répertoire /home :
# on passe en root sudo -s cd /home mkdir data cd data mkdir backup mkdir -p db/postgresql mkdir postgresql/gis -----------------------(FIX ! )------------------------------ mkdir -p osm/dumps mkdir osm/mapnik mkdir osm/mod_tile mkdir osm/renderd mkdir osm/styles mkdir osm/tiles mkdir osm/www # on change les droits du répertoire osm chown -R osm:osm /home/data/osm/
Installation de PostgreSQL et PostGIS
Installation PostgreSQL
Pour l'installation de PostgreSQL, le lecteur est invité à lire les notes d'installations sur le site officiel de ce projet Open Source (cf. https://www.postgresql.org/download/linux/debian/).
Et, en octobre 2021, on a :
- Debian 11
- postgreSQL 13.0
- PostGIS 3
L'installation se fait via l'exécution des commandes suivantes :
# on passe en root sudo -s # on installe postgre et postgis apt-get install postgresql-13-postgis-3
Configuration PostgreSQL
Pour la configuration de postgreSQL, nous mettrons en place une règle pour fonctionner localement au serveur. Pour ce faire, on édite le fichier de configuration de PostgreSQL :
/etc/postgresql/13/main/pg_hba.conf
# on y ajoute les lignes suivantes (si besoin : <pre># TYPE DATABASE USER ADDRESS METHOD # pour acces depuis IP fixe host all all 127.0.0.1/32 md5 host all all ::1/128 md5
Dans le fichier postgresql.conf, nous allons mettre à jour quelques paramètres : /etc/postgresql/13/main/postgresql.conf
# on change des réglages sur la mémoire : shared_buffers = 128MB # min 128kB work_mem = 16MB # min 64kB maintenance_work_mem = 128MB # min 1MB # on indique qu'on ne veut pas d'autovacuum : autovacuum = off # Enable autovacuum subprocess? 'on'
Redemarrage de PostgreSQL
service postgresql restart
TableSpace
Maintenant, on crée un tablespace spécifique pour pouvoir stocker la bases de données et donc les données de OSM dans /home/data/db/ :
# On change les droits de /home/data/db chown -R postgres:postgres /home/data/db # Création du table space osm su postgres psql -c "CREATE TABLESPACE osm LOCATION '/home/data/db/';" # Création du table space gis psql -c "CREATE TABLESPACE gis LOCATION '/home/data/db/gis/' ;"
Tables
user postgres
createdb -E UTF8 -O osm --tablespace osm osm createdb -E UTF8 -O osm --tablespace osm gis
Utilisateur osm
# Connexion en tant que postgres su postgres psql -c "CREATE USER osm;" # on lui donne le même mot de passe que le compte système psql -c "ALTER USER osm WITH PASSWORD '#votre_mot_de_passe#';" ALTER ROLE
Pour information, si vous voulez que osm soit un super utilisateur dans PostgreSQL :
# Lors de la création de l'utlisateur psql -c " CREATE USER osm --superuser ;" # si l'utilisateur osm existe déja, on le modifie psql -c " ALTER USER osm WITH SUPERUSER ; "
Création des Bases de données
-------------------------FIX
BDD osm
# Création de la base de données osm appartenant à osm dans le tablespace osm createdb -E UTF8 -O osm --tablespace osm osm;" # Installation de l'extension hstore dans la base : psql -c "CREATE EXTENSION hstore ;" -d osm
BDD gis
: # Création de la base de données gis appartenant à osm dans le tablespace osm psql -c "CREATE EXTENSION postgis ;" -d osm # ok : on sort (ou ctrl-d) exit
-------------------------/FIX
Intégration des données OSM
Choix d'un style de carte pour le rendu
Voir https://github.com/mapnik/mapnik/wiki/StyleShare pour une liste des styles disponibles.
Github du style OSM officiel en CartoCSS] : git clone https://github.com/gravitystorm/openstreetmap-carto.git
ou
Github du style OSM FR en CartoCSS git clone https://github.com/cquest/osmfr-cartocss.git
ou
Github du style OSM Bright en CartoCSS de Mapbox] git clone https://github.com/mapbox/osm-bright.git
Installation du style officiel OSM
https://github.com/gravitystorm/openstreetmap-carto
source : https://github.com/gravitystorm/openstreetmap-carto/blob/master/INSTALL.md
# Installation des polices qui sont nécessaires : sudo apt-get install fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted fonts-hanazono ttf-unifont # --------------------------------------- FIX # Installation d'autres dépendances manquantes sudo apt install gnupg-utils software-properties-common debianutils apt-listbugs debian-archive-keyring # Dépendances python apt install python3-pip pip3 install pyyaml psycopg2-binary # --------------------------------------- /FIX
Installation du style officiel
su osm # téléchargement du style (requis avant osm2pgsql --style openstreetmap-carto.style) cd /home/data/osm/styles/ # Clonage du dépôt git git clone https://github.com/gravitystorm/openstreetmap-carto.git # Récupération des données requises par le style <pre> cd openstreetmap-carto/ cp scripts/get-external-data.py . ./get-external-data.py -f # téléchargement de données europe (attention 24Go ca peut prendre du temps ...) cd wget https://download.geofabrik.de/europe-latest.osm.pbf # import avec osm2pgsql dans la base osm # (nécéssite beaucoup de RAM pour tenir tous les noeuds en mémoire, ou alors options slim+flatmode "--F=/home/data/osm/flamode -s" ) osm2pgsql -G --hstore --style openstreetmap-carto.style --tag-transform-script openstreetmap-carto.lua -d osm ~/path/to/data.osm.pbf # --------------------------------------- FIX # --------------------------------------- FIX
Résultat souhaité
# world_boundaries/* : 50 Mo # simplified-land-polygons-complete-3857/simplified_land_polygons.shp : 25 Mo # ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp : # land-polygons-split-3857/land_polygons.shp: 460 Mo # antarctica-icesheet-polygons-3857/icesheet_polygons.shp : 50 Mo # antarctica-icesheet-outlines-3857/icesheet_outlines.shp : 50 Mo
# pour voir la place que ça prend du -sh 1.8G
Maintenant, on configure le fichier de configuration du style pour qu'il soit exploitable par renderd via mapnik. Il faut changer le nom de la base de données (gis -> osm).
# database name sed -i 's/dbname: "gis"/dbname: "osm"/' project.mml