CentOS – Geoserver + osm2pgsql – Installation
DevFrançaisLinuxTutorials
Dans cet article nous allons voir comment mettre en place un serveur de carte.
Sur base de net install x64 de CentOS 6, installation de type “Basic server” tout par défaut.
Pour l’URL utilisez celle-là par exemple : http://mirror.centos.org/centos/6/os/x86_64
(une image virtual box est disponible ici… a venir…)
Les différentes ressources documentaires à l’origine de ce post :
– http://wiki.openstreetmap.org/wiki/Osm2pgsql
– http://weait.com/content/build-your-own-openstreetmap-server
– http://www.surfaces.co.il/?p=880
– http://ian01.geog.psu.edu/geoserver_docs/data/openstreetmap/osm.html
On commence par mettre à jour le système :
yum update -y yum upgrade -y
Création de l’utilisateur qui contrôlera les processus :
groupadd gis useradd -g gis gis
On télécharge GeoServer
cd /usr/local/ wget -c http://downloads.sourceforge.net/geoserver/geoserver-2.1.1-bin.zip unzip geoserver-2.1.1-bin.zip ln -s geoserver-2.1.1/ geoserver
Affectation des droits :
chown -R gis:gis /usr/local/geoserver-2.1.1
On installe rapidement un jdk :
yum install -y java-1.6.0-openjdk.x86_64
Et on lance geoserver
cd /usr/local/geoserver/ java -jar start.jar
Vous pouvez vérifier que tout fonctionne bien en allant sur :
http://[ip de votre server]:8080/geoserver
Le login password par défaut est admin / geoserver
Pour couper le serveur jetty : Ctrl + C
Pour configurer Jetty c’est là (pour changer les ports par exemple) :
vi /usr/local/geoserver/etc/jetty.xml
(Pour configurer le firewall, suivez le guide : http://www.quidquid.fr/fr/2010/07/centos-5-5-le-firewall/, en ajoutant une règle pour ouvrir le port du jetty de geoserver)
GeoServer est maintenant démarré mais ne possède aucun Workspace, nous allons en créer un.
Il nous faut maintenant installer PostgreSQL , PostGIS et osm2pgsql histoire de transformer et stocker les cartes quelque part et les ajouter ensuite dans un workspace de geoserver.
Premièrement les librairies standards :
yum install -y libxml2-devel bzip2-devel gcc-c++ autoconf automake libtool subversion
Ensuite PostgreSQL :
yum install -y postgresql-server postgresql-devel postgis postgresql-contrib
On ajoute l’EPEL (Extra Packages for Enterprise Linux) repository
rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Et on complete l’installation des packages :
yum install -y geos-devel proj-devel protobuf-c-devel
Et on installe OSM2PGSQL. Pour faire ça nous allons récupérer les sources et les compiler avec le user “gis” puis nous l’installerons sous root :
mkdir /usr/local/osm2pgsql su gis mkdir ~/bin cd ~/bin/ svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/ cd ~/bin/osm2pgsql/ ./autogen.sh ./configure --prefix=/usr/local/osm2pgsql
On demande au compilateur de préparer un exécutable optimisé pour notre processeur:
sed -i 's/-g -O2/-O2 -march=native -fomit-frame-pointer/' Makefile
Compilation :
make
Pour installer, quittez la session de l’utilisateur “gis” (ctrl + D) pour redevenir root, et allons dans le répertoire ou les sources ont été préparées :
cd /home/gis/bin/osm2pgsql/ make install
Maintenant nous allons configurer PostgreSQL et PostGIS
D’abord initialiser la base de données :
service postgresql initdb
Et éditons le fichier :
vi /var/lib/pgsql/data/postgresql.conf
pour modifier 4 valeurs (à cause de la typologie des données que nous allons manipuler) :
1 2 3 4 |
shared_buffers = 128MB checkpoint_segments = 20 maintenance_work_mem = 256MB autovacuum = off |
Nous allons augmenter la taille de la mémoire partagée (définitivement) :
sysctl -w kernel.shmmax=268435456 echo "kernel.shmmax=268435456" >> /etc/sysctl.conf
Et on redemarre postgres :
service postgresql restart
Si ça ne redémarre pas regardez ce qui déconne dans les logs :
cat /var/lib/pgsql/pgstartup.log
Nous allons créer une base de données nommée “gis” (quelle originalité) pour l’utilisateur “gis” :
sudo -u postgres -i createuser gis
La réponse à la question “Le nouveau rôle est-il super-utilisateur ? (o/n)” est oui.
1 2 3 |
createdb -E UTF8 -O gis gis createlang plpgsql gis exit |
Préparons PostGIS :
sudo -u gis -i psql -f /usr/share/pgsql/contrib/postgis-64.sql -d gis
On exécute 2 petite requêtes pour gérer correctement les droits (OWNER TO gis -> gis est l’utilisateur) :
echo "ALTER TABLE geometry_columns OWNER TO gis; ALTER TABLE spatial_ref_sys OWNER TO gis;" | psql -d gis
Avec ça comme réponse :
1 2 |
ALTER TABLE ALTER TABLE |
On active l’intarray (ne me demandez pas ce que c’est je n’ai pas regardé.) :
psql -f /usr/share/pgsql/contrib/_int.sql -d gis
On positionne le SRID (Spatial Reference IDentifier) sur la base gis :
psql -f ~/bin/osm2pgsql/900913.sql -d gis
Avec ça comme réponse :
1 |
INSERT 0 1 |
En passant on télécharge une carte (ici l’Aquitaine : ~100Mo) :
cd ~ wget -c http://download.geofabrik.de/osm/europe/france/aquitaine.osm.bz2
Et on charge cette carte dans la base de données :
cd ~/bin/osm2pgsql/ ./osm2pgsql -S default.style --slim -d gis -C 2048 ~/aquitaine.osm.bz2
Chez moi le traitement dure environ 20 minutes (Virtual Box 1Go de ram, le DDur de taille variable monte à 6Go)
Il est possible d’activer des traitement en multiprocesseur en suivant ce qui se trouve ici : http://wiki.openstreetmap.org/wiki/Osm2pgsql#Multicore mais je n’ai pas testé n’ayant mis qu’un core sur ma machine virtuelle.
Lorsque la sortie affichera un truc du genre :
1 2 3 4 5 |
Building index on table: planet_osm_rels Stopped table: planet_osm_nodes Stopped table: planet_osm_rels Stopped table: planet_osm_ways Completed planet_osm_polygon |
C’est que tout semble OK.
Au besoin pensez à configurer votre firewall
Maintenant passons à la suite, la définition d’un workspace dans Geoserver :
Démarrez geoserver et connectez-vous :
1 |
http://[ip de votre server]:8080/geoserver |
Le login password par défaut est admin / geoserver
Une fois connecté, allez sous “Données – Espaces de travail” et cliquez sur “Ajouter un nouvel espace de travail”.
1 2 |
Name : FR-AQ URI : http://maps.ledruide.com/fr/aquitaine |
Cliquez sur “Envoyer”
Naviguez vers “Données – Entrepôts” et cliquez sur “Ajouter un nouvel entrepôt”.
Nous allons ajouter une nouvelle “source de données Vecteur” et plus précisément “PostGIS”.
Cliquez donc sur “PostGIS” et remplissez les champs des comme il se doit.
1 2 3 4 5 6 7 8 9 10 |
Espace de travail : FR-AQ Nom de la source de données : POSTGIS - LOCALHOST Description : POSTGIS - LOCALHOST Paramètres de connexion - host : localhost - port : 5432 - database : gis - schema : public - user : gis - passwd : |
EN COURS DE REDACTION…
1 Comment
Merci pour ces instructions… sauf qu’il y a un léger souci… ce fichier n’existe pas pour l’installation de osm2pgsql:
svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/
J’ai de la difficulté à installer osm2pgsql sur Centos 6 à cause d’une erreur :
— Added test: regression-test-pbf (needs Python with psycopg2 module)
psycopg2 est installé.
J’espère trouvé une façon d’installer osm2pgsql sur Centos 6.