Der UMN Mapserver kann nicht nur mit dem Apache httpd Webserver, sondern auch mit dem IIS zusammen betrieben werden. Die Anleitung in der Mapserver-Dokumentation bezieht sich aber auf den (steinalten) IIS 5 und setzt auf das MS4W-Paket was offensichtlich nicht mehr weiter gepflegt wird (Stand 26.08.2014).
Der folgende Leitfaden bezieht sich auf die Softwareversionen:
- Windows Server 2012 R2 (64bit)
- IIS 8.5 (64bit)
- UMN Mapserver 6.4.1 (64bit)
- PROJ.4 (64bit)
Das IIS CGI-Modul und IIS FastCGI-Modul installieren
Falls der IIS noch keine Unterstützung für CGI bzw. FastCGI bietet, müssen diese noch installiert werden. Falls diese bereits installiert sind, kann der Punkt komplett übersprungen werden.
- Den Server-Manager starten
Rollen und Features hinzufügen
auswählen- Seite Vorbereitung: mit
Weiter >
überspringen - Seite Installationstyp:
Rollenbasierte oder featurebasierte Installation
auswählen und mitWeiter >
zur nächsten Seite - Seite Serverauswahl: den IIS auswählen (wahrscheinlich ist nur einer in der Liste) und mit
Weiter >
zur nächsten Seite - Seite Serverrollen: unter
Webserver (IIS) > Webserver > Anwendungsentwicklung
den PunktCGI
auswählen - Alle folgenden Seiten mit
Weiter >
durchlaufen und die Installation abschließen - Im IIS-Manager stehen jetzt die Elemente CGI und FastCGI-Einstellungen zur Verfügung
Mapserver herunterladen
Als nächstes muss der Mapserver heruntergeladen werden. Dabei stehen je nach Server (32bit oder 64bit) und je nach Mapserver Version verschiedene Pakete zur Auswahl (verschiedene C++-Complier Versionen). Diese erfordern zusätzlich noch ein passendes Microsoft Visual C++ Redistribtable Package.
Für diese Anleitung wurde ein vorkompiliertes Mapserver Paket (Version 6.4.1, 64bit, MSVC 2010) von http://www.gisinternals.com/sdk/ aus dem Release Kanal heruntergeladen. Die ZIP-Datei wird im Folgenden mit [Mapserver-ZIP]
bezeichnet.
Dieses Paket liefert auch gleich die noch nötige Projektionsbibliothek PROJ.4 mit.
Mapserver installieren
- Anlegen eines Verzeichnisses für den Mapserver (im Folgenden
[Mapserver-Ordner]
genannt) Bsp:D:\Mapserver\v64x64
- Kopieren aller dll-Dateien aus dem Verzeichnis
[Mapserver-ZIP]\bin
, sowie aller Dateien aus dem Verzeichnis[Mapserver-ZIP]\bin\msapps
in das Verzeichnis[Mapserver-Ordner]
- Anlegen des Ordners
[Mapserver-Ordner]\logs
- Dem Nutzer
IUSR
die Rechte zum Lesen und Ausführen auf das Verzeichnis[Mapserver-Ordner]
geben. - Im Stammverzeichnis der Webseite (Standard:
C:\inetpub\wwwroot
) einen neuen Unterordnerimg
(im Folgenden[Bild-Ordner]
genannt) anlegen. In diesen speichert der Mapserver gerenderte Bilder temporär und liefert sie aus. Wenn dieser Ordner woanders liegen soll, muss sichergestellt sein, dass er über eine URL (im Folgenden[Bild-URL]
genannt) erreichbar ist.
Projektionsbibliothek installieren
Als nächster Schritt wird die Projektionsbibliothek PROJ installiert. Diese kann prinzipiell auch direkt im Mapserververzeichnis verbleiben. Sollte sie aber für andere Anwendungen ebenfalls genutzt werden oder sollen verschiedene Versionen genutzt werden, ist es sinnvoll, sie getrennt einzurichten.
- Anlegen eines Verzeichnisses für die Projektionsbibliothek (im Folgenden
[Proj-Ordner]
genantBsp:D:\Proj\v4x64
- Kopieren der Datei
proj.dll
aus dem Verzeichnis[Mapserver-ZIP]\bin
in das Verzeichnis
[Proj-Ordner]\bin
- Kopieren aller Dateien (
proj.exe
, etc.) aus dem Verzeichnis[Mapserver-ZIP]\bin\proj\apps
in das Verzeichnis[Proj-Ordner]\bin
- Kopieren der Koordinatendateinen aus dem Verzeichnis
[Mapserver-ZIP]\bin\proj\SHARE
in das Verzeichnis[Proj-Ordner]\nad
- Dem Nutzer
IUSR
die Rechte zum Lesen und Ausführen auf das Verzeichnis[Proj-Ordner]
geben. - Anlegen der Systemvariablen
PROJ_LIB
mit dem Wert[Proj-Ordner]\nad
- Hinzufügen des Ordners
[Proj-Ordner]\bin
zur SystemvariablePATH
Die letzten beiden Schritte sind nur notwendig, wenn die Projektionsbibliothek auch anderweitig genutzt werden soll.
Zusätliche Koordinatensysteme können hinzugefügt werden, in dem die entsprechenden Dateien in das Verzeichnis [Proj-Ordner]\nad
kopiert werden.
Mapserver als CGI einbinden
- Im IIS-Manager links den Server auswählen
ISAPI- und CGI-Einschränkungen
öffnen- Rechts auf
Hinzufügen...
klicken - Als
ISAPI- oder CGI-Pfad:
den Pfad zurmapserv.exe
angeben ([Mapserver-Ordner]\mapserv.exe
) - Als Beschreibung einen aussagekräftigen Namen vergeben
- Den Haken bei
Ausführung des Erweiterungspfads zulassen
setzen - Den Dialog mit
OK
schließen - Rechtsklick auf die Webseite (Bsp:
Default Web Site
)> Virtuelles Verzeichnis hinzufügen...
- Als
Alias
einen Namen vergeben (Bsp:ms1
)Dieser wird Bestandteil der URL unter der der Mapserver erreichbar ist - Als
Physischer Pfad:
das Verzeichnis des Mapservers ([Mapserver-Ordner]
) angeben - Den Dialog mit
OK
schließen - Links den neu angelegten virtuellen Ordner
ms1
auswählen Handlerzuordnungen
öffnen- Rechts auf
Featureberechtigungen bearbeiten...
klicken - Haken bei
Lesen
,Skript
undAusführen
setzen - Dialog mit
OK
schließen
Mapserver als FastCGI einbinden
Um den als CGI-Anwendung eingerichteten Mapserver als FastCGI auszuführen, muss er nur zu den FastCGI-Prozessen hinzugefügt werden.
- Im IIS-Manager links den Server auswählen
FastCGI-Einstellungen
öffnen- Rechts
Anwendung hinzufügen...
anklicken - Unter
Vollständiger Pfad:
den Pfad zurmapserv.exe
auswählen ([Mapserver-Ordner]\mapserv.exe
) - Gewünschte Parameter einstellen
- Dialog mit
OK
schließen
MapFiles anlegen
Die MapFiles können in einem beliebigen Ordner angelegt werden. Dieser muss vom IIS nicht ausgeliefert werden, aber der Nutzer IUSR
benötigt die Rechte zum Lesen und Ausführen.
Des Weiteren ist es sinnvoll, eventuell notwendige Schriftarten, Somboldefinitionen und HTML-Vorlagen die der Mapserver verwendet in entsprechende Unterordner zu den Mapfiles abzulegen.
Im MAP
-Abschnitt des Mapfiles müssen dann folgende Einstellungen getroffen werden:
DEBUG 1 CONFIG "MS_ERRORFILE" "[Mapserver-Ordner]/logs/error.log" CONFIG "PROJ_LIB" "[Proj-Ordner]/nad/"
Das Debug-Level kann natürlich angepasst werden.
Im WEB
-Abschnitt des Mapfiles muss noch der Bilderpfad gesetzt werden und die URL des Dienstes inkl. dem Verweis auf das angelegte Mapfile.
IMAGEPATH "[Bild-Ordner]/" IMAGEURL "[Bild-URL]/" ... WMS_ONLINERESOURCE "http://[server-name]/ms1/mapserv.exe?map=[Mapfiles-Ordner]/[Mapfile-Name]&"
Wichtig: Alle Pfadangaben im MapFile sollten mit / anstatt geschrieben werden, weil es sonst zu Fehlern kommen kann.