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 :
- les divers outils à installer,
- le mode d'installation des outils.
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
- bzip2, zip et unzip;
- zlib1g et zlib1g-dev;
- mysql-server;
- apache et apache-ssl.
À 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 :
-
pour le démarrage:
su postgres -c "pg_ctl -o -i -D /home/postgres/pgdata start"
-
pour l'arrêt:
su postgres -c "pg_ctl -o -i -D /home/postgres/pgdata stop"
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