UMN MapServer Installationsanleitung von Kai Behncke

GISWiki - Das freie Portal für Geoinformatik (GIS)
Wechseln zu: Navigation, Suche

Installation des UMN-Mapservers

Quelle:
Vechta, Juni 2005
Dipl. Geogr. Kai Behncke
E-mail: Kai-Behncke@gmx.de
Ab 15. Juli: http://www.umn-mapserver-community.de.vu

Erste Schritte anhand eines Beispiels

Das hier publizierte "Installatonsknowhow" resultiert aus eigenen Erfahrungen aber auch, und insbesondere, aus dem ganz hervorragenden Buch "Praxishandbuch WebGIS mit Freier Software" (Gemeinschaftsprojekt von CCGIS und terrestris).

Die Beispielinstallation bezieht sich auf Windows-Betriebssysteme. Von den betriebssystembedingten Unterschieden abgesehen, gilt sie grundsätzlich aber auch für z.B. LINUX.

Das Itasca-Beispiel wurde von der Homepage http://mapserver.gis.umn.edu/doc40/doc.html heruntergeladen, original stammt es von Steve Lime, Minnesota DNR Einen ausgezeichneten Sammelpool zum UMN-Mapserver finden Sie unter:

http://www.umn-mapserver.de

Hervorragende Hilfen insbesondere zur Installation des Apache-Servers finden Sie unter:

All jenen Personen, welche sich an diesen Projekten beteiligen/beteiligt haben, soll an dieser Stelle gedankt werden.

1. Installation eines Apache-Webservers

Damit der Mapserver überhaupt läuft benötigen Sie vorab einen Webserver. Zu empfehlen ist dersehr weit verbreitete "Apache Webserver". Auf der Seite http://www.apache.org können Sie sich diesen herunterladen. Es spielt keine besondere Rolle, ob Sie die Version 1.3.x oder aber 2.x verwenden. Sollten Sie bislang noch nie mit dem Webserver gearbeitet haben, so kommen Sie um ein wenig Autodidaktik wohl kaum herum, aber nur keine Sorge, so schwierig ist das alles nicht und Sie werden schnell Erfolgserlebnisse vermelden können.

Gerne kann ich die Homepage http://www.apachefriends.de empfehlen. Dort gibt es auch ein sehr gutes Forum, in welchem Ihnen bei Installationsproblemen schnell geholfen wird, Fragen und Verständnisprobleme können hier geklärt werden.Eine ausgezeichnete Installationsanleitung des Apache-Servers finden Sie auch bei http://www.exine.de.

Für die Installation des UMN-Mapservers ist es nicht zu empfehlen, sich ein Apache-Komplettprodukt zu installieren (z.B. XAMPP), dieses zu konfigurieren gestaltet sich recht schwierig. Ich persönlich arbeite mit Apache 1.3.29. Sie können auch folgendes bei Google eingeben: "download apache_1.3.29-win32-x86-no_src_exe" und diese Datei dann bequem bei sich installieren.

Für Apacheneulinge: Um Skripte (z.B. PHP-Skripte) auf Ihrem Server auszuführen, müssen dies ein dem Ordner "htdocs" (oder einen Unterordner von "htdocs") des Servers gespeichert sein (z.B. Programme -> Apache Group -> Apache -> htdocs), nur dort können Sie gestartet werden.

So weit so gut. Nachdem Sie nun den Apache installiert haben beschäftigen Sie sich bitte mit der Konfigurationsdatei "httpd.conf" (im Ordner : Programme -> Apache Group -> Apache -> conf). Öffnen Sie diese Datei (z.B. mit einem Texteditor). Nun müssen Sie bitte einige Änderungen vornehmen. Schreiben Sie an das Ende der Datei folgendes:

LoadModule php4_module c:/php4/sapi/php4apache.dll (natürlich muss in diesem Verzeichnis
bei Ihnen auch wirklich diese Datei liegen!!)
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3 
AddType application/x-httpd-php .php4

Der UMN-Mapserver legt, wie Sie später sehen werden, temporäre Dateien in einem Verzeichnis ab; für die Ausgabe von Daten ist dieses elementar. Sie müssen dieses Verzeichnis in der "httpd.conf" definieren. Nennen Sie dieses z.B. "tmp" (und vergessen Sie nicht, es auch tatsächlich anzulegen) und schreiben Sie folgendes in die httpd.conf-Datei:

Alias /tmp/ "C:/Programme/Apache Group/Apache/htdocs/tmp"
<Directory "C:/Programme/Apache Group/Apache/htdocs/tmp"> 
  Options All 
  AllowOverride None 
  Order allow, deny
  Allow from all
</Directory>

In diesem Falle wird mit absoluten Pfaden gearbeitet, natürlich können Sie auch relative Angaben machen, aber um den Server zum Laufen zu bringen sind absolute erst einmal einfacher. Testen Sie nun, nach einem Neustart des Computers, ob Sie den Apache-Server starten können.

2. Installation von PHP/MySQL

Der Apache-Server ist installiert und die "httpd.conf"-Datei verändert. Nun müssen Sie eine PHP-Version installieren (PHPist eine serverorientierte Skriptsprache, wird u.a. für dynamischeWidergabe von Inhalten in einem Browser verwendet). Als sehr gute Hilfe sei hier noch einmal auf die Installationsanleitung bei http://www.exine.de (unter "Lokalen Apache-Server unter Windows installieren") verwiesen, dort wird Ihnen auch gezeigt,wie Sie testen, ob PHP tatsächlich auf Ihrem Server läuft. Laden Sie sich am besten den Windows Installer (z.B. Version 4.3.4 oder höher) herunter. Geben Sie dafür bei google "download php 4.3.4" ein oder gehen Sie direkt auf die Seite: http://de.php.net).Richten Sie ein Verzeichnis ein (z.B. C:/php4) und installieren Sie den Inhalt dort. Sollten Sie einanderes Verzeichnis wählen, müssen Sie natürlich aufpassen, dass der getätigte Eintrag in der httpd.conf ("LoadModule php4_module c:/php4/sapi/php4apache.dll") damit konform geht, diesen also gegebenenfalls verändern.

In dem php4-Verzeichnis finden Sie den Ordner "dlls".

  1. Der Inhalt dieses Ordner muß komplett nach C:/Windows/System32 gekopiert werden.
  2. Auch die Datei "php4ts.dll" (liegt direkt im php4-Verzeichnis) muß nach C:/Windows/System32 kopiert werden.
  3. Die Datei "php.ini-dist" muß nach C:/Windows kopiert werden. Dort nennen Sie diese bitte in php.ini um.
  4. Nun öffnen Sie bitte mit einem Texteditor die eben erstellte "php.ini"-Datei (diese ist die Konfigurationsdatei von php). Hier müssen Sie den Pfad zum Extensions-Verzeichnis angeben. sie werden in der Datei den Eintrag "Directory in which the loadable extensions (modules) reside" finden. Schreiben Sie darunter: extension_dir = "c:\php4\extensions"

Außerdem müssen Sie noch zwei Extensions einbinden. Entfernen Sie bitte das Semikolon am Anfang bei:

extension=php_gd2.dll 
extension=php_domxml.dll</code>

Gut, wieder ein Etappenziel erreicht. PHPp ist installiert, testen Sie mal ob es funktioniert.

Nun sollten Sie sich daran machen, mysql zu installieren (dieses ist ein komplexes Datenbanksystem mit eigener Abragesprache).Laden Sie sich dieses von http://www.mysql.com herunter. Für die Installation soll erneut auf http://www.exine.de verwiesen werden (das kennen Sie ja mitllerweile).

OK, nachdem Sie dieses erst einmal geschafft haben ein dickes Lob an Sie. Gute Arbeit. Sollte es noch Schwierigkeiten geben lassen Sie sich nicht beirren. Wie schon gesagt, es gibt sehr gute Hilfeforen im Internet:

Und nun kommen wir zum Mapserver:

3. Installation des Mapservers

Als erstes sollten Sie sich ein Mapserverpaket herunterladen. Probieren Sie dieses mal auf der Seite:

Nach dem Download entpacken Sie dieses bitte. Zusätzlich, und ganz wichtig, müssen Sie sich den "proj"-Ordner herunterladen (z.B. .PROJ 4.4.6 WIN32 Binary Release). Diesen gibt es z.B. auf der Homepage http://members.verizon.net/~vze2hc4d/proj4/ oder aber bei:http://www.remotesensing.org/proj/ (und bald auch unter http://www.umn-mapservercommunitiy.de.vu).

  1. Erstellen Sie nun ein Verzeichnis C:/proj. Dort wird der Inhalt aus diesem Ordner (dieser
    enthält die Ordner "bin" und "nad") hineinkopiert.
  2. Der entpackte Mapserver enthäkt die gezippten dlls xerces_dll.zip, pdfdll.zip, libpq.zip, libcurl7.10.7_dll.zip, gdal.zip, ECW_DLL.zip. Diese Dateien müssen nun entpackt und in das "cgi-bin"-Verzeicchnis des Webservers gelegtwerden (Programme->Apache Group->Apache->cgi-bin). Auch muss in dieses Verzeichnis die Datei "mapserv.exe" kopiert werden.
  3. Die Dateien "php_mapscript_4.0.1.dll" und "php_proj.dll" müssen nun in das Extensionsverzeichnis von php4 kopiert werden (C:\php4\extensions)

Ok, das Gröbste haben Sie hinter sich. Nun werden wir mal testen, ob der Mapserver auch funktioniert. Öffnen Sie Ihren Browser. Geben Sie ein: "http://localhost/cgi-bin/mapserv.exe" (unter "localhost" läuft Ihr persönlicher Apache-Webserver, die "mapserv.exe"-Datei haben Sie ja in das "cgi-bin"-Verzeichnis geladen. Wenn der UMN-Mapserver funktioniert erhalten Sie die Meldung: "No query information to decode. QUERY_STRING is set, but empty."(was ja auch ganz logisch ist, Sie haben dem Server ja keine zu verarbeitenden Parameter geschickt). Eine andere Möglichkeit diesen zu testen wäre die folgende: Gehen Sie in die MS-Dos-Kommandozeilenebene. Geben Sie dort in das Verzeichnis: C:\Programme\Apache Goup\Apache\cgi-bin und geben Sie nun den Befehl

mapserv -v

ein. Ist der Server funktionstüchtig, dann erhalten Sie eine Ausgabe derart:

"MapServer version 4.0.1. Output= gif, output=png etc. etc."

4. Das Itasca-Beispiel

Bevor Sie dieses auf Ihrem lokalen Rechner zum Laufen bringen, sollten Sie sich das Beispiel unbedingt unter folgender URL einmal ansehen (allein um sich etwas daran zu orientieren).

http://maps.dnr.state.mn.us/mapserver_demos/workshop/

Was nützt ein laufender Server, wenn man keine Daten zur Verfügung hat und nicht weiß, wie man als nächstes vorgehen soll? Damit werden wir uns nun auseinandersetzen. Auf der Seite "http://mapserver.gis.umn.edu/doc40/doc.html" können wir uns die ganz ausgezeichnete Itasca-Datensätze (angeboten von Steve Lime, Minnesota DNR) zum Testen herunterladen (sollte sich der Downloadpfad geändert haben, suche Sie bei Google mit den Stichworten "Steve Lime Itasca").

1. Erstellen Sie ein Verzeichnis, welches Sie z.B. "umntest" nennen, also C:/Programme/Apache Group/Apache/htdocs/umntest. In dieses nun laden Sie den entpackten Ordner "workshop". Schauen Sie sich die Daten bitte einmal im Explorer an. Die zentrale Datei, quasi das "Herz" der Anwendung, ist die Datei "Itasca.Map". Das Mapfile ist die zentrale Layout- und Konfugrationsdatei einer jeden MapServer-Anwendung.

Um eine Kartenausgabe darzustellen, bedarf es eines speziellen HTML-Files, dem sogenanntenTEMPLATE.Letztlich für die Ausgabe innerhalb dieses Beispiels zuständig ist die Datei "itasca_basic.html" (dazwischen ist, wie sie gleich sehen werden, noch die Datei "index.html" geschaltet). Die Daten, welche letztlich Grundlage für die Ausgabe sind (Shp-Datei), liegen in dem Ordner "Data". Ok, öffnen Sie doch bitte mal mittels eines Texteditors die Datei "Itasca.Map".

In Zeile 10 finden Sie den Eintrag SHAPEPATH. Dieser legt den Pfad zu den benötigtenGeodaten fest. Schreiben Sie dort:SHAPEPATH "C:/Programme/Apache Group/Apache/htdocs/umntest/workshop/data/"

In Zeile 64 wird der Pfad zur TEMPLATE-Datei angegeben, also jener Datei, welche die Abfragedarstellt, oder anders formuliert: das HTML-Script, welches an der entsprechenden Stelle dieElemtente der WebGis-Anwendung darstellt.

Schreiben Sie hier

TEMPLATE "C:/Programme/Apache Group/Apache/htdocs/umntest/workshop/index.html"

Nun muß nur in Zeile 68 bzw. 69 noch etwas hineingeschrieben werden. Sie erinnern sich doch, dass Sie bei der Konfiguration des Apache-Servers in der "httpd.conf" das Verzeichnis "tmp" erstellt haben (dort werden temporäre Rasterdaten angelegt). Dieses muss auch im Mapfile festgelegt werden. Schreiben Sie bitte in Zeile 68:

IMAGEPATH 'C:/Programme/Apache Group/Apache/htdocs/tmp'

In Zeile 69 tragen Sie ein:

IMAGEURL "/tmp/".

2. Gut, die Mapdatei ist somit fertig editiert. Nun müssen wir uns noch um die Datei "index.html" kümmern (welche ja von uns als TEMPLATE erstellt wurde). Wie schon gesagt, diese stellt letztlich eine Zwischendatei zur eigentlichen Ausgabe mittels "itasca_basic.html" dar. Mittels der "index.html" werden verschiedene Parameter an "itasca-basic.html" übertragen. Auch hier soll aber nicht ins Detail gegangen werden, sondern wir werden einfach nur einige Pfade ändern, und die Sache damit zum Laufen bringen.

Wichtig sind folgende Einträge:

<form name="demo" method="GET" action="/cgi-bin/mapserv" onSubmit="submit_form()">

(Dieser Eintrag bewirkt, dass verschiedene Parameter an die ausführende Datei "mapserv.exe" (welche wir ja bei der Installation des UMN-Servers ins "cgi-bin"-Verzeichnis kopiert haben) übertragen werden.

<input type="hidden" name="map" value="C:/Programme/Apache Group/Apache/htdocs/ umntest/workshop/itasca.map">

Dieses ist der Pfad, zu der Mapdatei, welche wir als Ausgangsbasis benutzen.

<input type="hidden" name="program" value="/cgi-bin/mapserv">

Der Pfad zur ausführenden "mapserv.exe"-Datei

<input type="hidden" name="root" value="C:/Programme/Apache Group/Apache/htdocs/ umntest/workshop">

Das Wurzelverzeichnis, in dem alle wichtigen Daten liegen.

<input type="hidden" name="map_web_imagepath" value="C:/Programme/Apache Group/ Apache/htdocs/tmp">

Das Verzeichnis für die temporären Ausgabedateien.

<input type="hidden" name="map_web_imageurl" value="/tmp/">

Verzeichnis für Verknüpfungen.

Ok, wenn Sie das alles soweit eingegeben haben, müsste es funktionieren, die restlichen Daten
können Sie so belassen.
Öffnen Sie einen Browser und geben Sie folgendes ein:

http://localhost/cgi-bin/mapserv?map=C:/Programme/Apache%20Group/Apache/htdocs/umntest/workshop/Itasca.map

Zur Erklärung: Ihren Mapserver starten Sie immer über die im cgi-bin Verzeichnis liegende Ausführungsdatei "mapserv.exe", also den Pfad http://localhost/cgi-bin/mapserv. Haben Sie vormals, ohne Übertragung von Parametern der Mapdatei noch die Ausgabe "No query information to decode. QUERY_STRING is set, but empty." erhalten, so wird diesesjetzt nicht mehr passieren, da Sie ja den Pfad angegeben haben, wo die zu verarbeitende Mapdatei liegt, eben jenen Eintrag: "http://localhost/cgi-bin/mapserv?map=C:/Programme/Apache%20Group/Apache/htdocs/umntest/workshop/Itasca.map".

In der Map-Datei wurde ja der Pfad zum TEMPLATE "index.html" definiert, dieses wird durch Verarbeitung der Map-Datei durch den UMN-Mapserver nun aufgerufen. Wählen wir nun im Browser als Beispiel "Basic Application" aus. Die in der "index.html" genannten Paramter werden an die "itasca_basic.html"-Datei übertragen; hier kann nun munter hin und hergezoomt werden oder aber man kann sich verschiedene Layer anzeigen, etc.

Das alles klingt wahrschienlich jetzt relativ kompliziert. Dieses Beispiel ist für den Anfang auchschon ein ganz klein wenig komplexer. Noch mal zur Veranschaulichung das Prinzip: An den UMN-Mapserver, also an die Datei mapserv.exe, wird als Parameter der Pfad zu einem Mapfile geschickt. Dieses wird verarbeitet und das TEMPLATE aufgerufen. Ohne Frage hätte in einem einfacheren Beispiel dieses auch direkt (und nicht wie hier über denUmweg der "index.html"-Datei) geschehen können.

Ich hoffe, mit dieser kleinen Anleitung ein wenig Licht ins Dunkle gebracht zu haben. Um wirklich zu verstehen wie der UMN Mapserver funktioniert und warum Sie verschiedeneDinge so wie in diesem Beispiel konfiguriert haben, empfiehlt es sich, sich auf denInternetseiten:http://www.umn-mapserver.de oder aber http://ms.gis.umn.edu weiterzubilden. Ein ebenfalls zu empfehlendes Buch ist "UMN MapServer 4.0" von Thorsten Fischer (MapMediaGmbh 2003, Berlin, ISBN 3-00-012616-3).

Für Fragen und Anregungen bin ich natürlich jederzeit offen (Kai-Behncke@gmx.de).

Mit freundlichen Grüßen, Dipl. Geogr. Kai Behncke

UMN Mapserver & PostgreSQL/PostGIS