Table des matières
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
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
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 | http://www.01map.net/download/sources/PDFlib-Lite-5.0.3-Unix-src.tar.gz |
PHP | 4.3.11 | http://www.01map.net/download/sources/php-4.3.11.tar.bz2 |
CURL | 7.10.5 | http://www.01map.net/download/sources/curl-7.10.5.tar.gz |
GDAL | 1.2.0 | http://www.01map.net/download/sources/gdal-1.2.0.tar.gz |
MAPSERVER | 4.4.2 | http://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
Pour procéder aux installations, il faudra avoir le compte root de la machine.
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.
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
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
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
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
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
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
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
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
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
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-
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
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
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
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`
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.
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"-....
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: