Guide d'installation des outils dédiés au serveur cartographique internet sous Debian Sarge Minimal


Table des matières

Avant-propos
Les divers outils à installer
Avant d'installer
Création de l'utilisateur postgres
Installaton de paquets debian requis
Installation de PROJ et de GEOS
Installation de PostgreSQL et de PostGIS
Initialisation de PostgreSQL et test de création d'une base avec PostGIS
A retenir pour Démarrer/Arrêter le serveur PostgreSQL
Installation de GD
Installation de PDFLIB
Installation de PHP
Configuration en tant que CGI
Chargement du module Actions avec Apache
Installation de CURL
Installation de GDAL
Installation de MapServer
Librairie PHPMapScript
Test 1: PhpInfo
Test 2: Affichage de la carte d'Europe

Avant-propos

Le présent document fournit les diverses commandes à effectuer pour la mise en place d'un serveur cartographique à partir d'outils open-source sur un système GNU/ Linux . Les points abordés concernent

  • les divers outils à installer;

  • le mode d'installation des outils

    Attention

    Pour me contacter

    Auteur: TECHER Jean David
    Site: http://www.postgis.fr
    Tél bureau 04 67 45 60 27
    Portable 06 85 37 36 75

Les divers outils à installer

Le tableau suivant liste l'ensemble des outils à installer:

Tableau 1. Les outils à installer

PROJ4.4.9ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz
GEOS2.1.3http://geos.refractions.net/geos-2.1.3.tar.bz2
POSTGRESQL8.0.3ftp://ftp3.fr.postgresql.org/pub/postgresql/source/v8.0.3/postgresql-8.0.3.tar.bz2
POSTGIS1.0.3http://postgis.refractions.net/download/postgis-1.0.3.tar.gz
GD2.0.33- par apt-get -
PDFLIB5.0.3http://www.01map.net/download/sources/PDFlib-Lite-5.0.3-Unix-src.tar.gz
PHP4.3.11http://www.01map.net/download/sources/php-4.3.11.tar.bz2
CURL7.10.5http://www.01map.net/download/sources/curl-7.10.5.tar.gz
GDAL1.2.0http://www.01map.net/download/sources/gdal-1.2.0.tar.gz
MAPSERVER4.4.2http://www.01map.net/download/sources/mapserver-4.4.2..tar.gz

Les adresses données ici ont été testées et validées pour la journée du mercredi 4 mai 2005. On pourra obtenir les sources à partir de wget et d'un simple shell. Par exemple:

wget ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz 
wget http://geos.refractions.net/geos-2.1.3.tar.bz2

Avant d'installer

Pour procéder aux installations, il faudra avoir le compte root de la machine.

Création de l'utilisateur postgres

Nous aurons aussi recours à un utilisateur normal. Dans ce document, la session de l'utilisateur normal sera postgres. C'est avec ce compte postgres que nous utiliserons PostgreSQL. Toutes les sources des outils du tableau précédent seront mis dans /home/postgres/src. Tout en étant root sur la machine, créons notre utilisateur et notre répertoire

adduser postgres

mkdir /home/postgres/src

Comme mot de passe, nous choisirons ici postgres. Pour cette dernière commande c'est le mot de passe à saisir en deux fois.

Installaton de paquets debian requis

Afin de garantir une installation conforme du serveur, la distribution GNU/Linux Debian Sarge Minimal doit être complétée par des paquets Debian. Nous allons les installer grâce à l'utilitaire de gestionnaire de paquets apt-get:

Nous aurons besoin d'installer

  • bzip2, zip et unzip;

  • zlib1g et zlib1g-dev;

  • mysql-server;

  • apache et apache-ssl.

apt-get install bzip2

apt-get install zip

apt-get install unzip

apt-get install zlib1g

apt-get install zlib1g-dev

apt-get install mysql-server-4.1

apt-get install apache

apt-get install apache-ssl

Installation de PROJ et de GEOS

Il s'agit d'une installation standard du monde GNU/Linux. PROJ est un paquetage permettant de tirer profit des systèmes de projection spatial, notamment des reprojections entre divers systèmes (Lambert II étendu, Lambert III etc...)

cd /home/postgres/src

wget ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz

tar xvzf proj-4.4.9.tar.gz

cd proj-4.4.9

./configure && make && make install

Occupons-nous maintenant de GEOS. Ce paquetage contient notamment une librairie qui permet d'ajouter des fonctionnalités supplémentaires à PostGIS notamment Within(), Intersects()...Pour son installation , nous ferons

cd /home/postgres/src

wget http://geos.refractions.net/geos-2.1.3.tar.bz2

tar xvjf geos-2.1.3.tar.bz2

cd geos-2.1.3

./configure && make && make install

Les librairies concernant GEOS et PROJ (libgeos.so, libproj.so ...) sont dans le répertoire /usr/local/lib. Il faut inclure ce chemin dans le fichier /etc/ld.so.conf en fin de fichier

echo /usr/local/lib >> /etc/ld.so.conf

Pour que le système charge dans son cache les librairies qui viennent juste d'être créées, nous saisirons la commande

ldconfig

Pour vérifier que PROJ et GEOS ont respectivement bien été installés, la commande

proj

devrait nous renvoyer

Rel. 4.4.9, 29 Oct 2004
usage: proj [ -beEfiIlormsStTvVwW [args] ] [ +opts[=arg] ]  [ files ]

et pour GEOS, la commande

geos-config --version

devrait nous renvoyer

2.1.1

Installation de PostgreSQL et de PostGIS

On va commencer par PostgreSQL. Nous nous occuperons de PostGIS plus tard.

cd /home/postgres/src

wget ftp://ftp3.fr.postgresql.org/pub/postgresql/source/v8.0.3/postgresql-8.0.3.tar.bz2

tar xvjf postgresql-8.0.3.tar.bz2

cd postgresql-8.0.3

./configure --prefix=/usr/local --without-readline --enable-multibyte --with-CXX --enable-nls

make

make install

On s'occupe maintenant de PostGIS

cd /home/postgres/src

wget http://www.01map.net/download/sources/postgis-1.0.3.tar.gz

tar xvzf postgis-1.0.0.tar.gz

cd postgis-1.0.3

autoconf

./configure --with-geos=/usr/local/bin/geos-config --enable-autoconf --with-proj=/usr/local 
--with-pgsql-src=/home/postgres/src/postgresql-8.0.3

make

make install

Pour s'assurer que PostgreSQL a été installé, nous utiliserons les commandes suivantes

which pg_config; for i in 'version' 'bindir' ; do pg_config --$i;done

qui devraient nous renvoyer

/usr/local/bin/pg_config
PostgreSQL 8.0.3
/usr/local/bin

indiquant que PostgreSQL a bien été installé dans le répertoire /usr/local et que la version en cours est la 8.0.2

Initialisation de PostgreSQL et test de création d'une base avec PostGIS

ATTENTION: contrairement aux autres sections, cette section doit avoir lieu sous la session de l'utilisateur postgres dans un terminal. L'initialisation va avoir lieu avec la commande initb ....La création de la base - testgis - sera rendue possible par la saisie des 4 dernières commandes ci-dessous(createb ..., createlang, psql ...).

su postgres

initdb -A trust -E SQL_ASCII -D /home/postgres/pgdata

pg_ctl -o -i -D /home/postgres/pgdata start

createdb testgis

createlang plpgsql testgis

psql -d testgis -f /usr/local/share/postgresql/contrib/lwpostgis.sql

psql -d testgis -f /usr/local/share/postgresql/contrib/spatial_ref_sys.sql

A retenir pour Démarrer/Arrêter le serveur PostgreSQL

Tout démarrage/arrêt doit être effectuer sous la session (terminal) de l'utilisateur postgres. On utilisera pour ce faire la commande:

  • pour le démarrage:

    su postgres
    
    pg_ctl -o -i -D /home/postgres/pgdata start
  • pour l'arrêt:

    su postgres
    
    pg_ctl -o -i -D /home/postgres/pgdata stop

Installation de GD

Pour GD, nous utiliserons directement l'installation par apt-get. Avant de procéder à l'installation, il nous faut vérifier que la version utilisée est la 2.0.33-1.1 ou au moins une version supérieure ou égale à la 2.0.15 . Pour celà, la commande suivante

apt-cache show libgd2 | grep Version

devrait renvoyer

Version: 2.0.33-1.1

Si la version est bonne, alors installons GD en faisant

apt-get install libgd2

apt-get install libgd2-dev

Installation de PDFLIB

C'est une installation usuelle comme pour Geos et Proj:

cd /home/postgres/src

wget http://www.01map.net/download/sources/PDFlib-Lite-5.0.3-Unix-src.tar.gz

tar xvzf PDFlib-Lite-5.0.3-Unix-src.tar.gz

cd PDFlib-Lite-5.0.3-Unix-src

./configure && make && make install

Installation de PHP

ici, nous allons procéder à l'installation de PHP, puis sa configuration avec Apache en tant que CGI (Common Gateway Interface).

cd /home/postgres/src

wget http://www.01map.net/download/sources/php-4.3.11.tar.bz2

tar xvjf php-4.3.11.tar.bz2

cd php-4.3.11

./configure --enable-fastcgi --with-config-file=/var/www/php.ini --with-gd=/usr 
--with-pdflib=/usr/local --with-png-dir=/usr --with-freetype-dir=/usr --with-zlib=/usr --with-pgsql
--with-regex=system --enable-dbase --enable-dbx --with-jpeg-dir=/usr --enable-versioning

make

make install

Si on souhaite vérifier que PHP a été installé, on effectuera le test suivant

php-config --version

qui nous renverra

4.3.11

Configuration en tant que CGI

Il nous maintenant copier l'executable PHP (CGI) résultant dans le répertoire d'Apache fournit à cet effet /usr/lib/cgi-bin/.

cp /usr/local/bin/php /usr/lib/cgi-bin/

Pour que PHP soit configuré en tant que CGI, nous allons ajouter quelques lignes au fichier de configuration d'Apache à savoir /etc/apache/httpd.conf

echo ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ >> /etc/apache/httpd.conf

echo AddType application/x-httpd-php .php .php3 .php4 >> /etc/apache/httpd.conf

echo Action application/x-httpd-php \"/cgi-bin/php\" >> /etc/apache/httpd.conf

Chargement du module Actions avec Apache

La dernière ligne de la sous-section précédente -celle contenant le mot-clé Action - nécessite un module qu'Apache a besoin de charger. Or il se peut que cette dernière ne soit pas chargée par défaut. Pour le vérifier, nous allons charger le module en faisant:

apache-modconf apache enable mod_actions

Il se peut qu'une interface graphique se charge alors à l'écran. Le cas échéant il se peut que l'écran apparaisse avec un fond bleu. Le seul impératif est de répondre par oui en ce qui concerne la question de garder la configuration actuelle du serveur - concernant ici le fichier de configuration /etc/apache/httpd.conf-

Installation de CURL

C'est ici une installation standard

cd /home/postgres/src

wget http://www.01map.net/download/sources/curl-7.10.5.tar.gz

tar xvzf curl-7.10.5.tar.gz

cd curl-7.10.5

./configure && make && make install

Pour vérifier que CURL a été installé, le test suivant

for i in 'version' 'prefix'; do curl-config --$i;done

devrait renvoyé comme résultat

libcurl 7.10.5
/usr/local

Installation de GDAL

C'est l'avant-dernier outil à installer

cd /home/postgres/src

wget http://www.01map.net/download/sources/gdal-1.2.0.tar.gz

tar xvzf gdal-1.2.0.tar.gz

cd gdal-1.2.0

./configure -- with-libz=/usr --with-png=/usr --with-libtiff=internal --with-geotiff=internal 
--with-jpeg=/usr 

make

make install

La commande suivante

for i in 'version' 'prefix'; do gdal-config --$i;done

doit renvoyer comme résultat

1.2.0
/usr/local

Installation de MapServer

C'est ler dernier outil à installer. Il n'y a pas de 'make install' avec MapServer

cd /home/postgres/src

wget http://www.01map.net/download/sources/mapserver-4.4.2.tar.gz

tar xvzf mapserver-4.4.2.tar.gz

cd mapserver-4.4.2

./configure --without-tiff --with-jpeg=/usr --with-png=/usr --with-threads --with-proj \ 
--with-postgis --with-pdf --with-mapscript --with-gdal=/usr/local/bin/gdal-config \
--with-gd=/usr --with-freetype=/usr --with-ogr --with-wmsclient --with-wfs --with-wfsclient \
--with-php=/home/postgres/src/php-4.3.11

make

Librairie PHPMapScript

La librairie PHPMapScript - fichier php_mapscript.so -doit être mis dans le répertoire des extensions de PHP. Or il se peut que ce répertoire spécifique à PHP n'existe pas encore. Pour connaître le chemin d'accès à ce répertoire, il suffit de taper

php-config --extension-dir

qui devrait renvoyer quelque chose semblable à:

/usr/local/lib/php/extensions/no-debug-non-zts-20020429

Il se peut que les deux répertoires extensions et no-debug-non-zts-20020429 n'existent pas. Il faudra alors les créer. On pourra alors par exemple les créer en essayant les commandes suivantes -à adapter -

mkdir /usr/local/lib/php/extensions

mkdir `php-config --extension-dir`

Il nous faut maintenant copier la librairie php_mapscript.so dans ce répertoire:

cp /home/postgres/src/mapserver-4.4.2/mapscript/php3/php_mapscript.so `php-config --extension-dir`

Test 1: PhpInfo

En faisant un phpinfo() - fonction interne de PHP -, il va nous être possible de savoir si PHP a bien été configuré en tant que CGI et que PHPMapScript a été chargé-. Le mieux est de copier le contenu suivant dans un fichier /var/www/phpinfo.php:

<? dl("php_mapscript.so");phpinfo();>

sinon pour créer ce fichier à partir d'un terminal, on pourra essayer

echo \<? dl\(\"php_mapscript.so\"\)\;phpinfo\(\)\;?\> >> /var/www/phpinfo.php

On démarre ensuite le serveur Apache en faisant

apachectl start

On ouvre ensuite un navigateur (Mozilla...) en pointant vers l'URL suivante:

http://localhost/phpinfo.php

Vous devriez vous retrouver avec un des tabeaux apparaissant dans la page dont le contenu est

Tableau 2. MapScript

MapServer VersionMapServer version 4.4.2 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=PDF SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
PHP MapScript Version($Revision: 1.220.2.3 $ $Date: 2005/02/28 14:27:19 $)

La présene de ce tableau confirme bien que le chargement de PHPMapScript a réussi.

Test 2: Affichage de la carte d'Europe

Ici, nous allons afficher les données concernant une petite carte d'Europe. Les données seront importées dans la base de données testgis que nous avons créées - voir section "Initialisation de PostgreSQL et test de création d'une base avec PostGIS"-....

Chargement des données et visualisation

L'ensemble des données ainsi que les scripts php nécessaires se trouve dans un fichier compressé au format zip sur le site de 01map...;Commençons par le télécharger et le décompresser dans le répertoire /var/www. Les dernières lignes de commandes -chmod ....- nous permettront d'accorder les divers droits d'exécution (lecture et exécution) dans ce répertoire

cd /var/www

wget http://www.01map.net/download/sources/phpmapscript.zip

unzip phpmapscript.zip

chmod 777 /var/www/phpmapscript/

chmod 777 /var/www/phpmapscript/*.*

On s'assurera d'abord que le serveur PostgreSQL est bien démarré en faisant

su postgres
t 
pg_ctl -D /home/postgres/pgdata status

qui devrait renvoyer

pg_ctl: postmaster is running [....] 

Sinon démarrez-le et tapez la ligne de commande suivante qui va permettre d'importer les données du fichier europesvg.shp dans la base de données testgis. L'utilitaire de conversion shp2pgsql permet de convertir les données d'un fichier .shp en données PostGIS. Il s'agit ici pour nous d'importer les données dans une table que nous appelerons europe.

su postgres

shp2pgsql -D /var/www/phpmapscript/europesvg.shp europe | psql testgis

Vérifiez que Apache est lancé..;Sinon faites

apachectl start

Ouvrez ensuite un navigateur Web et rendez-vous à l'URL suivante

http://localhost/phpmapscript/

Saisissez comme nom d'utilisateur postgres. En cliquant sur 'Envoyer', la carte suivante devrait apparaître:

Figure 1. Carte de l'Europe

Carte de l'Europe