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.
==Vorkompilierte Binaries==
===Windows===
Für Windows sind augenblicklich die folgenden Pakete erhältlich:
ms4w
osgeo4w
==ms4w==
Ms4W steht für "MapServer 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.
Reihenfolge 	Bibliothek 	Version 	Optional (j/n) 	Link 	 	 	 	
1 zlib 1.2.3 n www.zlib.net	2 libpng 1.2.32 n www.libpng.org/pub/png	3 libJPEG 6 j www.ijg.org/files	4 Freetype 2.3.5 j www.freetype.org	5 GD 2.0.35 j www.libgd.org	6 Proj.4 4.5.0 j http://proj.maptools.org	7 GDAL 1.4.2 j www.gdal.org	8 shapelib 1.2.9 j http://shapelib.maptools.org	10. Mapserver 4.10.3 http://mapserver.gis.umn.edu
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:
 #define MS_SYMBOL_ALLOCSIZE 200
Zudem ändern Sie einmal die Datei mapserver.h
 #define MS_LAYER_ALLOCSIZE 200
 #define MS_CLASS_ALLOCSIZE 20
 #define MS_STYLE_ALLOCSIZE 4
 ...
 #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.
===Optionen===
Category:UMN MapServer Handbuch