HBUMNMapServer ger Capter Bezug

= Bezug und Installation (Florian Thürkow, Kai Behncke) (1)\index{Bezug}\index{Installation}

Die Installation des MapServers auf einem System kann zuweilen seine Tücken haben, insbesondere dann, wenn Sie die Quelltexte selber kompilieren möchten. Sie ist im folgenden Schritt für Schritt so beschrieben, dass Sie dennoch in kürzester Zeit zu einem laufenden System kommen können.

=Bezug=

Auf der Mapserver Website http://mapserver.org gibt es eine Download-Sektion, die in diverse Rubriken unterteilt ist:


 * Offizieller Release : Dieses Paket enthält den Quellcode für die aktuelle, stabile Version des MapServers. Zur Drucklegung dieses Buches ist das Version 5.2.1.


 * Ältere Releases : Alte Versionen. Unterstützt wird vor allen Dingen immer die aktuelle Version. Fragen auf der Mailingliste zur älteren Version werden gerne mit dem Hinweis beantwortet, man solle doch auch die aktuelle Version upgraden.
 * Interim Builds : Dies sind täglich (automatisch) vorgenommene Kompilierungen aus dem CVS-Verzeichnis; d.h. aus dem Verzeichnis, in dem die Entwickler den aktuellsten Quellcode lagern. Der Umgang mit diesen Paketen soll an dieser Stelle nicht behandelt werden, zumal nicht einmal sichergestellt ist, dass sie überhaupt funktionieren.
 * Windows : Für Windows gibt es spezielle Pakete, mehr dazu nachfolgend.

Windows
Für Windows sind augenblicklich die folgenden Pakete erhältlich:

ms4w

osgeo4w

ms4w
Ms4W steht für "Microsoft for Windows" und kann unter dieser URL http://maptools.org/ms4w/ bezogen werden. Das Ms4W-Paket enthält ein komplettes Webserver-Paket (inkl. PHP), den MapServer und auch verschiedene Mapscript-Variationen (PHP, C#, Python, Java). Auch Bibliotheken für den Oracle bzw. den ArcSDE-Support sind enthalten. Die Installation von Ms4W dauert nur wenige Minuten. Das Paket ist dann zu empfehlen wenn Sie sehr schnell zum Ziel kommen möchten und das Kompilieren eines "eigenen" MapServers umgehen wollen.

Eine Installation ist über eine setup.exe-Datei bzw. über das Zip-Paket möglich. Nehmen wir einmal das Zip-Paket. Laden Sie dieses herunter (hier: ms4w_2.3.1.zip), entpacken Sie dieses und kopieren Sie den entpackten Ordner "ms4w" (und zwar den, welcher eine Fülle von Unterordnern sowie z.B. die Datei "README_INSTALL.html" enthält z.B. nach C:.

Im Ordner C:/ms4w liegt nun auch die Datei "apache-install.bat". Klicken Sie doppelt auf diese und es folgt in einder DOS-Konsole die Meldung:

Installing the Apache MS4W Web Server service The Apache MS4W Web Server service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. The Apache MS4W Web Server service is starting. The Apache MS4W Web Server service was started successfully.

Sicherheitshalber noch ein Doppelklick auf die Datei "setenv.bat" und das wars.......

Geben Sie nun ein: http://localhost/cgi-bin/mapserv.exe

dann folgt die Meldung: No query information to decode. QUERY_STRING is set, but empty.

Der MapServer ist betriebsbereit!

OSGeo4W
OSGeo4W ist ein Gesamtpaket für eine Win32-Umgebung (Vista, XP, etc.). Es enthält z.B. GRASS-GIS, uDig (auch ein GIS), QGIS, den MapServer und eine ganze Fülle weiterer Pakete. Ein Download ist unter dieser URL möglich: http://trac.osgeo.org/osgeo4w/.

Der erste Schritt für die Installation sieht so aus von http://trac.osgeo.org/osgeo4w/ den Installer herunterzuladen (osgeo4w-setup.exe). Auf diesen dann ein Doppleklick, Express Install auwählen und anschließend die gewünschten Pakete anklicken (nehmen wir einmal MapServer, den Apache und die Gdal-Bibliothek für Raster- und Vektordaten). Anschließend ein bißchen Geduld haben........

Sofern Sie Desktop-Programme installiert haben finden Sie diese unter Start -> Alle Programme -> OSGeo4W

Die installierten Pakete liegen defaultmäßig unter C:/OSGeo4W. Aktivieren Sie als erstes den Apache WebServer indem Sie im Verzeichnis C:/OSGeo4w/apache/bin die Datei "httpd" aktivieren.

Wenn Sie dann im Browser eingeben http://localhost swo erhalten Sie zunächst einmal die Meldung,dass der WebServer funktioniert und das OSGEo-Logo erscheint.

Auch hier bringt ein http://localhost/cgi-bin/mapserv.exe die Meldung: No query information to decode. QUERY_STRING is set, but empty.

Alles roger, der MapServer funktioniert.

Linux
FGS & Co.

Quelltexte
Das herunterladen von Quelltexten und manuelle konfigurieren/kompilieren ist letztlich unter Linuxdistributionen die sauberste aber auch die langwierigste Form der Installation. Ihre Nerven sollten, zumal wenn Sie eine solche Installation erstmalig durchführen, schon ein klein wenig strapazierfähig sein. Aber keine Sorge, im Endeffekt wird der MapServer sicher laufen. Sie sollten aber mit einer Shell Ihrer Wahl umgehen können und mit der Installation von Software mittels =make= und ähnlichen Werkzeugen vertraut sein. Unter Umständen benötigen Sie auch einen Texteditor, um leichte Veränderungen in der einen oder anderen Datei vornehmen zu können

Die Installation des Mapservers ist nicht trivial, da diese in Abhängigkeit vom verwendeten Betriebssystem und der Erfahrung des Benutzers immer eine Individuelle ist. Die praktischen Tests ergaben folgendes Fazit: Die Reihenfolge, in der die einzelnen Pakete installiert werden, ist für die erfolgreiche Installation entscheidend. Tabelle 1 vermittelt einen Überblick über den in der Praxis evaluierten Installationsvorgang des Mapservers.

Legen Sie als erstes mehrere Verzeichnisse an um die einzelnen Bibliotheken, den Apache Webserver, PHP, den MapServer herunterzuladen und letztlich zu installieren. mkdir /opt/install mkdir /opt/install/zip

Unter dem Quelltext, auch Quellcode (engl. source code) oder Programmcode, versteht man in der Informatik den für Menschen lesbaren, in einer Programmiersprache geschriebenen Text eines Computerprogramms. In der Regel wird der entsprechende Code auf den jeweiligen Webseiten auch direkt als "Source-Code" angeboten. Die Dateien erkennen Sie oft an der Endung "tar.gz" bzw. "tar.bz2".

Um die Quelltexte zu kompilieren benötigen Sie zudem einige Entpackungsprogramme bzw. Kompiler. Oftmals sind diese schon vorinstalliert, wenn nicht so müssen sie nachintsalliert werden, z.B.

bison (ftp.gnu.org/gnu/bison) (Aktuell war 2.4) (C/C++ kompiler)

gcc (http://gcc.gnu.org) (aktuell war 4.3.3) (Eine Compiler Collection)

bzip2 (http://bzip.org/) (1.0.5) (Komprimierungs-/Dekomprimierungsprogramm)

---

Bibliotheken
Laden Sie dann folgende Quellcodes herunter:

freetype (http://www.freetype.org (Zum Zeitpunkt der Erstellung des Buches lag von freetype die Version 2.3.6 vor)). FreeType stellt eine Bibliothek dar um vektorisierte Schriftarten in Rastergrafiken umzuwandeln. Diese Bibliothek ist unbedingt zu empfehlen.

zlib (http://www.zlib.net) (aktuell war Version 1.2.3). Die Bibliothek zlib dient zum Komprimieren und Dekomprimieren von Daten mit dem sog. Deflate-Algorithmus.

libpng (http://www.libpng.org) (aktuell war Version 1.2.34). Diese Biliothek sollte unbedingt installiert werden. Die libpng-Bibliothek dient zum Bearbeiten/Darstellen von PNG-Bildern.

libgd (http://www.libgd.org (aktuell war 2.0.35). GD dient zur Erstellung/zum Rendering u.a. von PNG-, JPEG- and GIF-Bildern. Diese Bibliothek wird unbedingt vom MapServer benötigt.

Für den Fall, dass Sie internationale Zeichensätze integrieren wollen benötigen Sie noch die libiconv-Bibliothek. Die erhalten Sie von http://www.gnu.org/software/libiconv/.

Sehr zu empfehlen sind auch die folgenden Bibliotheken:

Proj (trac.osgeo.org/proj) (4.6.1), Bibliothek für kartographische Projektionen. Zwingend notwendig, um OGC-konforme Funktionialitäten zu erhalten. Und natürlich, wenn man Daten umprojizieren will. Generell eine Sache, die man haben möchte.

AGG (http://antigrain.com) (2.5) Dient ebenfalls zum Rendern von Grafiken, sorgt letztlich für ein etwas besseres Rendern als die GD-Bibliothek, ist aber auch etwas langsamer.

Gdal (http://gdal.org) (1.6.0), Bibliothek für ca. 40 Rasterformate, zugleich beinhaltet diese Bibliothek auch die OGR-Library mit Unterstützung für nahezu 20 Vektortypen (sollte möglichst installiert werden). Sollten Sie z.B. Arc SDE für Rasterdaten nutzen wollen, so benötigen Sie diese Bibliothek.

libcurl (http://curl.haxx.se/libcurl) (7.19.2)- Diese Bibliothek sorgt für OGC-(WFS/WMS/WCS)-Unterstützung (sehr wichtig!). Eine Bibliothek für den Dateitransfer über Protokolle wie HTTP, FTP und so weiter.

Optional:

FastCGI gehört in die Kategorie der höheren MapServer-Kunst und kann schon fast mit logischen Optimierungsaufgaben von CGI bzw. Webanwendungen betrachtet werden. FastCGI wurde entwickelt um das etwas "schwerfällige" (im Sinne der Performance) Verhalten von normalen CGI-Anwendungen zu verbessern. Wird der MapServer als normale CGI-Applikation http://localhost/cgi-bin/mapserv aufgerufen, dann wird bei jedem Aufruf ein Prozess gestartet und auch jedesmal der dazugehörige Interpreter der Skriptsprache geladen. Die notwendige Bibliothek kann hier heruntergeladen werden: http://www.fastcgi.com/ (aktuell: 2.4.0) Installtion wie immer: configure, make, make install Unter Verwendung mit dem Apache-Webserver wird das Modul "mod_fcgi" benötigt. Abschließend muss der MapServer dann mit den üblichen ./configure unter Angabe der FastCGI-Eigenschaft aufgerufen werden: ./configure [other options] --with-fastcgi=/usr

libtiff (http://www.libtiff.org) (aktuell: 3.8.2) Für Tiff-Dateien, wird für Geotiff benötigt

ligbeotiff (http://trac.osgeo.org/geotiff (aktuell: 1.2.5) LibGeoTIFF dient zum Lesen und Schreiben von GeoTIFF-Informationen.

Geos (http://trac.osgeo.org/geos/) (3.0.3). Letztlich eine Bibliothek zur geografischen Datenverarbeitung. Diese beinhaltet alle Operatoren der OGC- Spezifikation für SimpleFeatures (z.B. Funktionen wie touch, union, intersect etc.). Benötigt wird mindestens Version 4.10 des MapServers.

libreadline (ftp.gnu.org/gnu/readline/readline-5.2.tar.gz) (5.2), Bietet Funktionen an, um Kommandozeilen zu editieren. Wird von PostgreSQL genutzt für die psql-Eingabekonsole.

libjpeg (http://ijg.org) (6.0), Dient zum Erstellen/Bearbeiten von JPEG-Bildern.

libxml (ftp.xmlsoft.org/libxml2/). Dient zum Parsen von xml. Wird für den OGC SOS-Support benötigt.

pdflib (lite) (http://www.pdflib.com/products/pdflib-family/pdflib-lite): Für die Erstellung von PDF-Output, wird eher selten eingesetzt.

libming (http://www.libming.org): Für Macromedia Flash Output. (wird eher selten eingesetzt)

Flex (http://flex.sourceforge.net) (Version 2.5.35) (PostGIS benötigt diese Bibliothek)

libpg: Diese Bibliothek steht zur Verfügung wenn Sie PostgresSQL/PostGIS installieren. Den Quellcode finde Sie auf http://postgresql.org (8.3.5) bzw. auf http://postgis.refractions.net/download (1.3.5)

Proprietäre Bibliotheken

Arc SDE Client Bibliothek: Diese Bibliothek steht nicht frei zur Verfügung, sie ist Bestandteil von von der ESRI-Geodatenbak ArcSDE.

Oracle Spatial OCI: Aufsatz für die Oracle-Datenbank. Diese Bibliothek bekommen Sie von der Oracle-Seite.

Die heruntergeladenen Dateien sind noch "gepackt", diese müssen Sie "entpacken".

Eine .tar,gz Datei entpacken Sie mit:

tar xvfz freetype-2.3.8.tar.gz

Eine tar.bz2-Datei entpacken Sie mit:

tar xvfl geos-3.0.3.tar.bz2

Installation der Bibliotheken
Wenn Sie die Bibliotheken installieren wollen wechseln Sie bitte in das VErzeichnis der jeweilig entpackten Bibliothek. Dort führen Sie zunächst den Befehl

./configure

aus. Dieser bewirkt zunächst eine Konfiguration der entsprechenden Bibliothek. Nach Abschluss der Konfiguration wird ein sogenanntes Makefile erzeugt. Dieses beinhaltet die notwendigen Informationen um den Quellcode zu kompilieren. Führen Sie danach den Befehl make

und anschließend make install

aus und die Biliotheken sind installiert.

Folgende Schritte sollten Sie dann in den Ordnern der entpackten Bibliotheken ausführen:

readline (./configure,make, make install)

zlib (./configure, make, make test (um zu überprüfen) make install)

libpng (./configure, make, make install)

libjpeg (./configure --enable-shared, make, make test, make install) make install-lib (dieser Befehl damit libjpeg auch ordentlich von der GD-Bibliothek erkannt wird)

flex (./configure, make, make install)

curl (./configure, make, make install)

freetype (./configure, make, make install)

Sofern Sie verschiedene internationale Zeichensätze installieren möchten müssen Sie zunächst libiconv installieren: libiconv (./configure, make, make install)

gd (./configure --with-liconv (diese Option nur dann, wenn Sie internationale Zeichensätze benötigen), make, make install)

Sie können testen ob gd mit der libiconv kompiliert wurde indem Sie ein

gdlib-config --libs

eingeben. Im Output sollte dann ein "-liconv" erscheinen.

tiff (./configure/make/make install)

geotiff (./configure/make/make install)

geos (./configure, make, make install)

xml (./configure, make, make install)

gdal (./configure, make, make install)

proj (./configure, make, make install)

AGG (Bei dieser Bibliothek brauchen Sie nur im Ordner des entpackten Quellcodes den Befehl "make" ausführen.

.....sowie ggf. die weiteren Bibliotheken wie z.B. libming oder pdflib.

Apache Webserver
Als Webserver nutzen Sie am Besten den Apache (2.2.11) Den Quellcode bekommen Sie von httpd.apache.org/download.cgi

Anschließend installieren Sie bitte den Apache Webserver. Zunächst einmal führen Sie bitte im Ordner des entpackten Quellcodes (/opt/install/unzip/httpd-2.2.11) ein

./configure --enable-so --enable-mime-magic --enable-cgi --prefix=/usr/local/apache make make install

aus.

Achten Sie bitte unbedingt darauf, dass entweder der User des Apache (oder aber die Gruppe) Inhaber des Ordners /usr/local/apache (und seiner Unterverzeichnisse) ist. Wie der User/die Gruppe heissen steht in der Datei /usr/local/apache/httpd.conf. z.B.

User daemon Group daemon

Ein ls -l im Ordner /usr/local

zeigt, an, wem aktuell der Ordner /usr/local/apache gehört.

Sollte z.B. der User "root" und auch die Gruppe "root" Inhaber sein, so ändern Sie dieses bitte mit:

chown -R root:daemon (je nachdem wie die Gruppe des Apache heißt) /usr/local/apache

Anschließend starten Sie einmal bitte den Apache mittels

/usr/local/apache/bin/apachectl start

Sollte dann evtl eine Fehlermeldung kommen der Art von:

error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

so werden Bibliotheken nicht gefunden. Ändern Sie dann die Datei /etc/ld.co.conf und sorgen Sie dafür dass dort z.B. folgendes steht:

/lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib /usr/local/lib

Anschließend führen Sie auf Kommandozeile den Befehl ldconfig aus.

und geben in Ihrem Browser ein:

http://localhost

Es müßte eine Meldung der Art von "It works" kommen.

PostgreSQL/PostGIS
Als nächstes installieren Sie einmal die PostgreSQL-Datenbank mit PostGIS-Aufsatz. PostgreSQL können Sie von http://www.postgresql.org/download herunterladen (aktuell war 8.3.5). PostGIS erhalten Sie auf http://postgis.refractions.net/ (1.3.5)

./configure --without-readline (sofern es Schwierigkeiten gibt die libreadline zu finden) make make install

Für die PostGIS-Installation entpacken Sie bitte den PostGIS-Ordner und benennen Sie ihn in "postgis". Dieses funktioniert wie folgt:

mv postgis-1.3.5 postgis

Den umbenannten Ordner "postgis" kopieren Sie in den Ordner /opt/install/zip/postgresql-8.3.5/contrib.

cp -R postgis /opt/install/zip/postgresql-8.3.5/contrib/

In dem Ordner führen Sie aus:

./configure –with-pgsql=/usr/local/pgsql/bin/pg_config make make install

Anschließend führen Sie bitte aus:

adduser postgres

(Ein Standarduser mit dem Namen „postgres“ wird angelegt, Sie müssen hierfür auch ein Passwort festlegen)

mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data

(„postgres“ wird Besitzer des Verzeichnisses)

su – postgres

(Einloggen als user postgres)

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

(Datenbankschema wird initialisiert)

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start

(Start der Datenbank)

PHP
Sinnvoll ist es auf jeden Fall den Apache mit PHP zu nutzen, den aktuellen Quellcode bekommen Sie von http://php.net/downloads.php) (5.2.8)

Dann wechseln Sie bitte in den entpackten Ordner des PHP-Quellcodes:

./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-freetype-dir=/usr/lib --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --enable-shared --with-zlib -- enable-mbstring --with-gd --with-pgsql –prefix=/usr/local/php5

Anschließend ein

make

sowie ein

make install

Dann:

mkdir /usr/local/php5/extensions

(damit legen Sie ein Verzeichnis für PHP-Erweiterungen an, PHP/Mapscript wird hier später installiert)

cp /opt/install/unzip/php-5.2.8/php.ini-dist /usr/local/php5/lib/php.ini

Dann geben Sie in der php.ini ein:

extension_dir=/usr/local/php5/extensions

Um zu testen ob PHP funktioniert erstellen Sie eine Datei mit dem Inhalt

<? phpinfo; ?>

nennen Sie diese "test.php" und legen Sie diese in den Ordner /usr/local/apache/htdocs

Anschließend editieren Sie bitte die Konfigurationsdatei des Apache-Webserver /usr/local/apache/conf/httpd.conf. Geben Sie dort ein:

LoadModule php5_module modules/libphp5.so (sofern dieses bei der Installation von php nicht automatisch eingetragen wurde)

AddType application/x-httpd-php .php .phtml

Anschließend rufen Sie auf: http://localhost/test.php Wenn alles funktioniert erhalten Sie eine Ausgabe mit der aktuellen PHP-Version.

UMN MapServer
In den entpackten Quellen des UMN MapServers (http://www.mapserver.org) editieren Sie bitte die Datei mapsymbol.h Standardmäßig ist die Anzahl der integrierbaren Symbole relativ niedrig. Ändern Sie dieses z.B. wie folgt:


 * 1) define MS_SYMBOL_ALLOCSIZE 200

Zudem ändern Sie einmal die Datei mapserver.h

...
 * 1) define MS_LAYER_ALLOCSIZE 200
 * 2) define MS_CLASS_ALLOCSIZE 20
 * 3) define MS_STYLE_ALLOCSIZE 4
 * 1) define MS_MAXIMAGESIZE_DEFAULT 10000

Damit es keine Probleme mit dem dynamischen Linken der Bibliotheken gibt ändern Sie, sofern noch nicht getan, bitte noch die Datei

/etc/ld.so.conf

oder eine ähnliche Datei in /etc/ld.so.conf.d/ (je nach Distribution) Fügen Sie dort die Zeilen /usr/lib /usr/local/lib /usr/local/pgsql/lib

ein. Anschließend geben Sie den Befehl

ldconfig

ein.

Dann wechseln Sie in den Ordner des entpackten MapServers und geben z.B. ein:

./configure --with-ogr --with-gdal --with-wmsclient --with-wmsserver --with-wfsclient --with-wfs --with-tiff --with-jpeg --with-png --with-freetype --with-proj --with-geos --with-libiconv --with-agg=/opt/install/zip/agg-2.5 --with-postgis=/usr/local/pgsql/bin/pg_config --with-threads --with-php=/usr/local/php5

...und geben Sie dann ein make

ein. Wenn alles kompiliert wird geben Sie ein

./mapserv -v

und Sie erhalten Informationen über die Version.

MapServer version 5.2.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=THREADS SUPPORTS=GEOS INPUT=TIFF INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

Kopieren Sie das binary "mapserv" in den Ordner /usr/local/apache/cgi-bin und führen Sie aus.

http://localhost/cgi-bin/mapserv

Wenn dann die Meldung

No query information to decode. QUERY_STRING is set, but empty.

kommt ist alles wunderbar. Der MapServer ist einsatzbereit.