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


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 :

 Table des matières

Les divers outils à installer
Avant d'installer
Création de l'utilisateur postgres
Installaton des 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
À 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
Chargement des données et visualisation

Les divers outils à installer

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

Tableau 1. Les outils à installer

PROJ 4.4.9 ftp://ftp.remotesensing.org/proj/proj-4.4.9.tar.gz
GEOS 2.1.3 http://geos.refractions.net/geos-2.1.3.tar.bz2
POSTGRESQL 8.0.3 ftp://ftp3.fr.postgresql.org/pub/postgresql/source/v8.0.3/postgresql-8.0.3.tar.bz2
POSTGIS 1.0.3 http://postgis.refractions.net/download/postgis-1.0.3.tar.gz
GD 2.0.33 - par apt-get -
PDFLIB 5.0.3
PHP 4.3.11
CURL 7.10.5
GDAL 1.2.0
MAPSERVER 4.4.2

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

haut de la page | table des matières

Avant d'installer

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

haut de la page | table des matières

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.

haut de la page | table des matières

Installaton des 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

À l'aide des commandes suivantes :

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
haut de la page | table des matières

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.

haut de la page | table des matières

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.

haut de la page | table des matières

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

haut de la page | table des matières

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

haut de la page | table des matières

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
haut de la page | table des matières

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
haut de la page | table des matières

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.

haut de la page | table des matières

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

haut de la page | table des matières

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.

haut de la page | table des matières

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
haut de la page | table des matières

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

haut de la page | table des matières

Installation de MapServer

C'est ler dernier outil à installer. Avant tout, vous devez télécharger les sources de mapserver à partir cette page. Il n'y a pas de 'make install' avec MapServer

cd /home/postgres/src
tar xvzf mapserver-version.tar.gz
cd mapserver-version
./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

haut de la page | table des matières

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`

haut de la page | table des matières

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 Version MapServer 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.

haut de la page | table des matières

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"-....

haut de la page | table des matières

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.postgis.fr/download/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
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

haut de la page | table des matières