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 :
1 2 | yum update -y yum upgrade -y |
Création de l’utilisateur qui contrôlera les processus :
1 2 | groupadd gis useradd -g gis gis |
On télécharge GeoServer
1 2 3 4 | 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 :
1 | chown -R gis:gis /usr/local/geoserver-2 .1.1 |
On installe rapidement un jdk :
1 | yum install -y java-1.6.0-openjdk.x86_64 |
Et on lance geoserver
1 2 | 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) :
1 | 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 :
1 | yum install -y libxml2-devel bzip2 -devel gcc-c++ autoconf automake libtool subversion |
Ensuite PostgreSQL :
1 | yum install -y postgresql-server postgresql-devel postgis postgresql-contrib |
On ajoute l’EPEL (Extra Packages for Enterprise Linux) repository
1 | rpm -Uvh http: //download .fedora.redhat.com /pub/epel/6/i386/epel-release-6-5 .noarch.rpm |
Et on complete l’installation des packages :
1 | 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 :
1 2 3 4 5 6 7 8 | 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:
1 | sed -i 's/-g -O2/-O2 -march=native -fomit-frame-pointer/' Makefile |
Compilation :
1 | 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 :
1 2 | cd /home/gis/bin/osm2pgsql/ make install |
Maintenant nous allons configurer PostgreSQL et PostGIS
D’abord initialiser la base de données :
1 | service postgresql initdb |
Et éditons le fichier :
1 | vi /var/lib/pgsql/data/postgresql .conf |
pour modifier 4 valeurs (à cause de la typologie des données que nous allons manipuler) :
Nous allons augmenter la taille de la mémoire partagée (définitivement) :
1 2 | sysctl -w kernel.shmmax=268435456 echo "kernel.shmmax=268435456" >> /etc/sysctl .conf |
Et on redemarre postgres :
1 | service postgresql restart |
Si ça ne redémarre pas regardez ce qui déconne dans les logs :
1 | cat /var/lib/pgsql/pgstartup .log |
Nous allons créer une base de données nommée “gis” (quelle originalité) pour l’utilisateur “gis” :
1 2 | sudo -u postgres -i createuser gis |
La réponse à la question “Le nouveau rôle est-il super-utilisateur ? (o/n)” est oui.
Préparons PostGIS :
1 2 | 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) :
1 | echo "ALTER TABLE geometry_columns OWNER TO gis; ALTER TABLE spatial_ref_sys OWNER TO gis;" | psql -d gis |
Avec ça comme réponse :
On active l’intarray (ne me demandez pas ce que c’est je n’ai pas regardé.) :
1 | psql -f /usr/share/pgsql/contrib/_int .sql -d gis |
On positionne le SRID (Spatial Reference IDentifier) sur la base gis :
1 | psql -f ~ /bin/osm2pgsql/900913 .sql -d gis |
Avec ça comme réponse :
En passant on télécharge une carte (ici l’Aquitaine : ~100Mo) :
1 2 | cd ~ wget -c http: //download .geofabrik.de /osm/europe/france/aquitaine .osm.bz2 |
Et on charge cette carte dans la base de données :
1 2 | 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 :
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 :
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”.
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.
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.