UMN Mapserver und IIS

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:

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.

  1. Den Server-Manager starten
    Servermanager
  2. Rollen und Features hinzufügen auswählen
  3. Seite Vorbereitung: mit Weiter > überspringen
  4. Seite Installationstyp: Rollenbasierte oder featurebasierte Installation auswählen und mit Weiter > zur nächsten Seite
  5. Seite Serverauswahl: den IIS auswählen (wahrscheinlich ist nur einer in der Liste) und mit Weiter > zur nächsten Seite
  6. Seite Serverrollen: unter Webserver (IIS) > Webserver > Anwendungsentwicklung den Punkt CGI auswählen
    Serverrollen
  7. Alle folgenden Seiten mit Weiter > durchlaufen und die Installation abschließen
  8. Im IIS-Manager stehen jetzt die Elemente CGI und FastCGI-Einstellungen zur Verfügung
    CGI

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

  1. Anlegen eines Verzeichnisses für den Mapserver (im Folgenden [Mapserver-Ordner] genannt) Bsp: D:\Mapserver\v64x64
  2. 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]
  3. Anlegen des Ordners [Mapserver-Ordner]\logs
  4. Dem Nutzer IUSR die Rechte zum Lesen und Ausführen auf das Verzeichnis [Mapserver-Ordner] geben.
  5. Im Stammverzeichnis der Webseite (Standard: C:\inetpub\wwwroot) einen neuen Unterordner img (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.

  1. Anlegen eines Verzeichnisses für die Projektionsbibliothek (im Folgenden [Proj-Ordner] genantBsp: D:\Proj\v4x64
  2. Kopieren der Datei proj.dll aus dem Verzeichnis [Mapserver-ZIP]\bin in das Verzeichnis [Proj-Ordner]\bin
  3. Kopieren aller Dateien (proj.exe, etc.) aus dem Verzeichnis [Mapserver-ZIP]\bin\proj\apps in das Verzeichnis [Proj-Ordner]\bin
  4. Kopieren der Koordinatendateinen aus dem Verzeichnis [Mapserver-ZIP]\bin\proj\SHARE in das Verzeichnis [Proj-Ordner]\nad
  5. Dem Nutzer IUSR die Rechte zum Lesen und Ausführen auf das Verzeichnis [Proj-Ordner] geben.
  6. Anlegen der Systemvariablen PROJ_LIB mit dem Wert [Proj-Ordner]\nad
  7. Hinzufügen des Ordners [Proj-Ordner]\bin zur Systemvariable PATH

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

  1. Im IIS-Manager links den Server auswählen
  2. ISAPI- und CGI-Einschränkungen öffnen
  3. Rechts auf Hinzufügen... klicken
  4. Als ISAPI- oder CGI-Pfad: den Pfad zur mapserv.exe angeben ([Mapserver-Ordner]\mapserv.exe)
  5. Als Beschreibung einen aussagekräftigen Namen vergeben
  6. Den Haken bei Ausführung des Erweiterungspfads zulassen setzen
  7. Den Dialog mit OK schließen
  8. Rechtsklick auf die Webseite (Bsp: Default Web Site) > Virtuelles Verzeichnis hinzufügen...
  9. Als Alias einen Namen vergeben (Bsp: ms1)Dieser wird Bestandteil der URL unter der der Mapserver erreichbar ist
  10. Als Physischer Pfad: das Verzeichnis des Mapservers ([Mapserver-Ordner]) angeben
  11. Den Dialog mit OK schließen
  12. Links den neu angelegten virtuellen Ordner ms1 auswählen
  13. Handlerzuordnungen öffnen
  14. Rechts auf Featureberechtigungen bearbeiten... klicken
  15. Haken bei Lesen, Skript und Ausführen setzen
  16. 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.

  1. Im IIS-Manager links den Server auswählen
  2. FastCGI-Einstellungen öffnen
  3. Rechts Anwendung hinzufügen... anklicken
  4. Unter Vollständiger Pfad: den Pfad zur mapserv.exe auswählen ([Mapserver-Ordner]\mapserv.exe)
  5. Gewünschte Parameter einstellen
  6. 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.