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) :

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.

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 :

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 :

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 :

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…

Previous
Create a kickstart for a CentOS Net install
Next
CentOS 6 – Voldemort install
  • 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.

Leave a comment to Mike L. Cancel reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.