FR:Debian/Bullseye/Installation

From OpenStreetMap Wiki
Jump to navigation Jump to search


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