Microsoft Internetinformationsdienste (IIS) 7.0 – Die

Transcrição

Microsoft Internetinformationsdienste (IIS) 7.0 – Die
Mike Volodarsky
Olga Londer
Brett Hill
Bernard Cheah
Steve Schofield
Carlos Aguilar Mares
Kurt Meyer
Microsoft IIS Team
Microsoft
Internetinformationsdienste (IIS) 7.0 –
Die technische
Referenz
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Dieses Buch ist die deutsche Übersetzung von: Internet Information Services 7.0 Resource Kit
Microsoft Press, Redmond, Washington 98052-6399
Copyright 2009 Microsoft Corporation
Das in diesem Buch enthaltene Programmmaterial ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden.
Autor, Übersetzer und der Verlag übernehmen folglich keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programmmaterials oder Teilen davon entsteht.
Das Werk einschließlich aller Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des
Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.
Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei erfunden, soweit nichts anderes angegeben ist. Jede Ähnlichkeit mit
tatsächlichen Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen, E-Mail-Adressen und Logos
ist rein zufällig.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
10 09 08
ISBN 978-3-86645-5-924-3, auch Teilband von
Microsoft Windows Server 2008 – Die technische Referenz (ISBN 978-3-86645-919-9)
© Microsoft Press Deutschland
(ein Unternehmensbereich der Microsoft Deutschland GmbH)
Konrad-Zuse-Str. 1, D-85716 Unterschleißheim
Alle Rechte vorbehalten
Übertragung ins Deutsche: Detlef Johannis, Uwe Thiemann
Korrektorat: Karin Baeyens, Dorothee Klein, Siegen
Satz: Cordula Winkler, mediaService, Siegen (www.media-service.tv)
Umschlaggestaltung: Hommer Design GmbH, Haar (www.HommerDesign.com)
Herstellung, Druck und Bindung: Kösel, Krugzell (www.KoeselBuch.de)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
III
Inhaltsverzeichnis
Danksagung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XV
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XVII
Welche Neuerungen bietet IIS 7.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht über das Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Besondere Kennzeichnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lesehilfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einschübe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Befehlszeilenbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhalt der Begleit-CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Inhalte online finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Supportrichtlinie für die technische Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XVII
XIX
XIX
XIX
XX
XX
XX
XXI
XXI
Teil I Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Kapitel 1 Einführung in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Übersicht über IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Welche Neuerungen bietet IIS 7.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Webserverkern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungstools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagnose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows-Prozessaktivierungsdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungskompatibilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlegende Verwaltungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Websites erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Verzeichnisse erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspools erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einem Anwendungspool eine Anwendung zuweisen . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0 Features unter Windows Server 2008 und Windows Vista . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5
5
8
10
13
14
15
15
15
17
19
20
21
22
26
27
Kapitel 2 Grundlagen der IIS 7.0-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Übersicht über die IIS 7.0-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0-Kernkomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HTTP.sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WWW-Publishingdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows-Prozessaktivierungsdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
33
33
35
37
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IV Inhaltsverzeichnis
Konfigurationsspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anforderungsverarbeitung im Anwendungspool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Klassischer Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der integrierte .NET-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gültigkeitsbereiche von Modulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modulreihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verarbeitung von Nicht-HTTP-Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
40
42
43
45
50
51
52
54
55
Kapitel 3 Verstehen der modularen Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Ideen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modultypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Module und Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hauptvorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Leistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrierte Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
58
58
59
61
61
63
63
64
65
65
Kapitel 4 Verstehen des Konfigurationssystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
Übersicht über das Konfigurationssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsdateihierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsdateisyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das IIS 7.0-Konfigurationssystem und die IIS 6.0-Metabasis . . . . . . . . . . . . . . . . . . . .
IIS 7.0 und die .NET-Konfigurationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auswahl des Konfigurationsorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationen festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsfehler verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sichern der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit dem Konfigurationsverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exportieren und Importieren von Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsdelegierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine Konfiguration für mehrere Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
69
73
80
83
84
85
86
90
93
93
94
95
96
106
111
112
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Inhaltsverzeichnis
Teil II Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
V
113
Kapitel 5 Installieren von IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
Planen der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installationsszenarien für IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Möglichkeiten der Installation von IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit dem Server-Manager arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Paketmanager verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ServerManagerCMD verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Antwortdateien für unbeaufsichtigte Installationen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sysprep/Neues Setupsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatische Installationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows Server 2008-Setup für optionale Features . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nach der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ordner und Inhalte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Überprüfung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Behandlung von Installationsproblemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ereignisprotokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Andere Protokollierungsoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0 entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Benutzeroberfläche unter Windows Server 2008 und Windows Vista . . . . . . . . . .
Die Befehlszeilenmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
117
129
129
130
131
133
135
136
136
137
138
139
139
139
140
140
141
141
142
142
144
145
146
Teil III Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
147
Kapitel 6 Verwenden von IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
Übersicht über den IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den IIS-Manager starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Benutzeroberfläche des IIS-Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Navigationsleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Bereich Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Bereich Aktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Features verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Zuordnung von Features zu Modulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Speicherort der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gültigkeitsbereich der Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anpassung und Erweiterbarkeit des IIS 7.0-Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
152
153
155
155
158
171
171
172
174
176
177
180
181
182
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
VI Inhaltsverzeichnis
Kapitel 7 Verwenden von Befehlszeilentools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
183
Befehlszeilentools für die Verwaltung benutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appcmd.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erste Schritte mit Appcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Syntax von Appcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unterstützte Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Hilfe nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Ausgabe von Appcmd verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeine Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bereichsoperatoren verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Häufige Fehler bei der Arbeit mit Appcmd vermeiden . . . . . . . . . . . . . . . . . . . . . . . . .
Die Grundverben verwenden: List, Add, Set und Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objekte mit dem List-Befehl auflisten und auffinden . . . . . . . . . . . . . . . . . . . . . . . . . .
Objekte mit dem Add-Verb erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bereits vorhandene Objekte mit dem Set-Verb ändern . . . . . . . . . . . . . . . . . . . . . . . . .
Objekte mit dem Delete-Verb entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationen mit dem Befehl List Config betrachten . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationen mit dem Befehl Set Config festlegen . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Konfigurationsdelegierung verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationssicherungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Anwendungen, virtuellen Verzeichnissen und Anwendungspools arbeiten . . . . . . . . . .
Mit Webservermodulen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausgeführte Arbeitsprozesse und Anforderungen untersuchen . . . . . . . . . . . . . . . . . . . . . . .
Ausgeführte IIS-Arbeitsprozesse auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gegenwärtig ausgeführte Anforderungen auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit der Ablaufverfolgung für Anforderungsfehler arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Ablaufverfolgung für Anforderungsfehler aktivieren . . . . . . . . . . . . . . . . . . . . . . .
Ablaufverfolgungsregeln für Anforderungsfehler aufstellen . . . . . . . . . . . . . . . . . . . . .
Ablaufverfolgungsprotokolle für Anforderungsfehler durchsuchen . . . . . . . . . . . . . . .
Microsoft.Web.Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sites mit MWA erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspools mit MWA erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Konfiguration festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows PowerShell und IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WMI-Anbieter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
COM-Objekte für die IIS 7.0-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
183
185
186
187
188
189
191
194
195
196
196
196
198
198
199
200
201
202
206
206
207
208
208
208
209
210
210
211
213
215
215
216
217
218
219
219
220
220
Kapitel 8 Remoteverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
221
Der IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webverwaltungsdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WMSvc-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
222
222
223
224
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Inhaltsverzeichnis
VII
Die Remoteverwaltung verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit der Remoteverwaltung arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problembehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
232
240
243
245
248
248
Kapitel 9 Verwalten von Websites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools . . . . . . . . . . . . . .
Websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine neue Website hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Bindungen einer Website konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Websiteverwendung einschränken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Websiteprotokollierung und Ablaufverfolgung für Anforderungsfehler konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Websites starten und beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Verzeichnisse verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein neues virtuelles Verzeichnis hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Verzeichnisse konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nach virtuellen Verzeichnissen suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteinhalte verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungen für die Arbeit mit Remoteinhalten konfigurieren . . . . . . . . . . . . . . . . . .
Das Sicherheitsmodell für den Zugriff auf Remoteinhalte auswählen . . . . . . . . . . . . . .
Feste Anmeldeinformationen für den Zugriff auf Remoteinhalte konfigurieren . . . . . .
Den Zugriff auf Remoteinhalte gewähren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
250
252
254
254
256
256
259
262
264
265
266
266
268
271
272
273
274
276
276
277
278
Kapitel 10 Verwalten von Anwendungen und Anwendungspools . . . . . . . . . . . . . . . . . . . .
279
Webanwendungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webanwendungen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webanwendungen auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspools verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Überlegungen zu Anwendungspools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einen neuen Anwendungspool hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspoolidentitäten verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterte Anwendungspoolkonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsprozesse und Anforderungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsprozesse und Anforderungen überwachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
279
280
285
287
288
290
292
296
302
302
306
307
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
VIII Inhaltsverzeichnis
Kapitel 11 Hosting von Anwendungsentwicklungsframeworks . . . . . . . . . . . . . . . . . . . . .
309
IIS als Anwendungsentwicklungsplattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungsframeworks unterstützen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unterstützte Anwendungsframeworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den integrierten und den klassischen ASP.NET-Modus verstehen . . . . . . . . . . . . . . . .
Mehrere ASP.NET-Versionen gleichzeitig ausführen . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET-Anwendungen bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusätzliche Überlegungen zur Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP-Anwendungen bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusätzliche Überlegungen zur Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PHP-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PHP-Anwendungen bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusätzliche Überlegungen zur Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungsframeworks ermöglichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Verarbeitung von neuen statischen Dateien konfigurieren . . . . . . . . . . . . . . . . . . .
Frameworks basierend auf systemeigenen IIS 7.0-Modulen bereitstellen . . . . . . . . . . .
Frameworks basierend auf ASP.NET-Handlern bereitstellen . . . . . . . . . . . . . . . . . . . .
Frameworks basierend auf ISAPI-Erweiterungen bereitstellen . . . . . . . . . . . . . . . . . . .
Mit FastCGI arbeitende Frameworks bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit CGI arbeitende Frameworks bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
309
310
312
313
314
316
318
320
325
327
327
328
329
330
331
335
337
338
340
341
342
342
346
348
348
Kapitel 12 Verwalten von Webservermodulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
349
IIS 7.0-Erweiterbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die IIS 7.0-Erweiterbarkeitsarchitektur auf einen Blick . . . . . . . . . . . . . . . . . . . . . . . .
Die Erweiterbarkeit verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webservererweiterbarkeit zur Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Was ist ein Modul? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Module installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeine Modulverwaltungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltete Module mit dem IIS-Manager installieren und verwalten . . . . . . . . . . . . . .
Handlerzuordnungen mit dem IIS-Manager erstellen und verwalten . . . . . . . . . . . . . .
Verwaltete Module mit Appcmd installieren und verwalten . . . . . . . . . . . . . . . . . . . . .
Handlerzuordnungen erstellen und verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webservermodule sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
349
350
352
353
353
359
370
377
380
384
388
390
399
400
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Inhaltsverzeichnis
IX
Kapitel 13 Konfigurations- und Benutzeroberflächenerweiterungen verwalten . . . . . . . .
401
Übersicht über den Verwaltungsstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationserweiterungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsabschnittsschemata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsabschnitte deklarieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Neue Konfigurationsabschnitte installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsabschnitte sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungserweiterungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wie Verwaltungserweiterungen funktionieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungserweiterungen installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungserweiterungen sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS-Manager-Erweiterungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Funktionsweise von IIS-Manager-Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS-Manager-Erweiterungen installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS-Manager-Erweiterungen sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
401
403
405
407
410
411
415
417
418
418
419
420
422
422
425
425
Kapitel 14 Implementieren von Sicherheitsstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
427
Sicherheitsänderungen unter IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verkleinern der Angriffsfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Angriffsfläche der Anwendung verkleinern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungen für die Nutzung von geringstmöglichen Berechtigungen konfigurieren . . . .
Eine über wenige Berechtigungen verfügende Anwendungspoolidentität verwenden . . .
NTFS-Berechtigungen für den Mindestzugriff gewähren . . . . . . . . . . . . . . . . . . . . . . .
Einschränken der Vertrauenswürdigkeit von ASP.NET-Anwendungen . . . . . . . . . . . .
Anwendungen isolieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Zugriffssteuerung implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IP- und Domäneneinschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anforderungsfilterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf NTFS-ACLs basierende Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
URL-Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anonyme Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Standardauthentifzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Digestauthentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows-Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Authentifizierung über Clientzertifikatzuordnungen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Authentifizierung über IIS-Clientzertifikatzuordnungen . . . . . . . . . . . . . . . . . . . . . . . .
UNC-Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Authentifizierungsdelegierung verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sichern der Kommunikation mit SSL (Secure Sockets Layer) . . . . . . . . . . . . . . . . . . . . . . .
SSL konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSL voraussetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clientzertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
428
430
440
445
446
448
450
451
453
455
457
461
462
464
468
470
472
474
475
479
481
485
487
488
489
490
492
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
X Inhaltsverzeichnis
Sichern der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einschränken des Zugriffs auf die Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sensible Konfigurationen sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrollieren der Konfigurationsdelegierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die zu delegierende Konfiguration festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
493
494
498
503
503
507
507
Teil IV Problembehandlung und Leistungsoptimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
509
Kapitel 15 Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
511
Was ist neu? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Internetinformationsdienste-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das XML-Konfigurationsschema für die Protokollierung . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsoptionen für zentrale Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . .
Standardkonfiguration für neue Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsoptionen zum Deaktivieren der HTTP-Protokollierung . . . . . . . . . . . . .
Standardspeicherort der Protokolldateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UTF-8-Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Neue Statuscodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltungsdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Protokolldateiformate, die sich nicht verändert haben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zentrale Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
W3C-Format für die zentrale Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Binärformat für die zentrale Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteprotokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einrichten der Remoteprotokollierung mit dem Internetinformationsdienste-Manager . . .
Einrichten der Remoteprotokollierung mit Appcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteprotokollierung mit dem FTP-7.0-Publishingdienst . . . . . . . . . . . . . . . . . . . . .
Benutzerdefinierte Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurieren der IIS-Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internetinformationsdienste-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterte Appcmd-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Http.sys-Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungsprotokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Protokollierung der Prozesswiederverwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS-Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ordnerkomprimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Protokollanalyse mit Log Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
511
512
513
514
514
515
515
515
516
516
516
517
517
517
517
518
520
520
521
523
523
526
528
531
532
532
532
533
533
534
534
535
536
536
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Inhaltsverzeichnis
XI
Kapitel 16 Ablaufverfolgung und Problembehandlung. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
537
Problembehandlung mithilfe von Ablaufverfolgung und Diagnose . . . . . . . . . . . . . . . . . . . .
Installieren des FRT-Moduls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aktivieren und Konfigurieren der FRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lesen der FRT-Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrieren von Ablaufverfolgung und ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Leistungsaspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problembehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwenden eines Verfahrens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit Tools und Dienstprogrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problembehandlung für HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beseitigen häufig auftauchender Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 6.0-Verwaltungsprogramme sind nicht installiert . . . . . . . . . . . . . . . . . . . . . . . . . .
SSl ist nicht aktiviert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unerwartete Wiederverwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Abstürze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Website nicht erreichbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Authentifizierungsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Langsame Reaktion oder hängender Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
538
538
539
545
550
551
552
552
554
567
574
574
574
574
575
575
575
575
575
576
Kapitel 17 Optimieren der Leistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
577
Einen Kompromiss zwischen Sicherheit und Leistung finden . . . . . . . . . . . . . . . . . . . . . . . .
Messen der Belastung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Festplatten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Leistungsindikatoren für die Anwendungsebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64-Bit-Modus und 32-Bit-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimieren der Konfiguration unter Leistungsaspekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Serverebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimieren der Konfiguration für den Belastungstyp . . . . . . . . . . . . . . . . . . . . . . . . . .
Serverseitige Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Systemüberwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zuverlässigkeits- und Leistungsüberwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ereignisanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Center Operations Manager 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
577
578
582
583
584
588
591
593
596
600
601
602
603
603
604
613
615
615
615
616
616
616
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XII Inhaltsverzeichnis
Skalierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entwurfsphase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mehr Computer oder leistungsfähigere Computer? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
617
617
617
620
621
Teil V Anhänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
623
Anhang A HTTP-Fehlercodes in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
625
Anhang B IIS 7.0-Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
631
HTTP-Fehler in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurieren von <httpErrors> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unterstatuscodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beispiel für einen Unterstatuscode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Benutzerdefinierte Fehler in unterschiedlichen Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optionen für benutzerdefinierte Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausführen einer URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Umleiten der Anforderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
632
634
634
635
635
636
636
637
Anhang C Liste der IIS 7.0-Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
639
Native Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltete Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
639
647
Anhang D Reihenfolge der Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
651
Anhang E IIS 7.0-Standardeinstellungen und Zeitlimits/Schwellenwerte . . . . . . . . . . . . . .
655
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Standardeinstellungen für Anwendungspools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
655
661
680
682
Anhang F IIS 7.0 und 64-Bit-Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
685
Windows Server 2008 x64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurieren einer 32-Bit-Anwendung unter einer 64-Bit-Version von
Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
685
686
Anhang G Zuordnung von Internetinformationsdienste-Manager-Features
und Konfigurationsabschnitten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
689
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
689
690
692
Anhang H Zuordnung zwischen IIS 6.0-Metabasis und IIS 7.0-Konfiguration . . . . . . . . . .
693
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Inhaltsverzeichnis
XIII
Anhang I Shared Hosting mit IIS 7.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
707
Implementieren von Process Gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit der Befehlszeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsänderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aktivieren des Schwellenwerts für das dynamische Leerlaufzeitlimit . . . . . . . . . . . . . . . . . .
Arbeiten mit der Befehlszeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurationsänderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
707
708
709
709
711
712
Anhang J Durchführen von Administrationsaufgaben
im Internetinformationsdienste-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
713
Die Autoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
719
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
721
Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
735
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XV
Danksagung
Das Buch, das Sie gerade in den Händen halten, ist das Ergebnis einer kollektiven Anstrengung vieler
Menschen.
Wir möchten damit beginnen, Bill Staples, Mai-Lan Tomsen Bukovec und dem gesamten IIS-Produktteam für die Unterstützung zu danken. Einige von uns arbeiten für das IIS-Produktteam. Deshalb wissen
wir aus erster Hand, dass wir ohne die unschätzbare Hilfe des Teams einfach nicht dazu in der Lage
gewesen wären, an diesem Buch zu arbeiten.
Wir sind außerdem Martin DelRe von Microsoft Press sehr dankbar, und zwar für seine Vision, für seine
harte Arbeit, um dieses Projekt zu realisieren und für dessen erfolgreichen Abschluss zu sorgen, sowie
für seine nie endende Unterstützung und die vielen Ermutigungen.
Es braucht viele Personen und viel Arbeit, um ein Buch wie dieses ins Leben zu rufen. Es gibt einige
Menschen, denen wir speziell danken möchten. Ohne sie gäbe es dieses Buch nicht. Brett Hill initiierte
dieses Projekt und war bis zu dessen Abschluss dabei. Ein besonderer Dank geht an Mike Volodarsky, dem
Qualität und Vollständigkeit sehr wichtig sind, was dazu geführt hat, dass er zum Hauptautor wurde. Kurt
Meyer war als Projektmanager eine große Hilfe. Er koordinierte die Arbeit der Autoren und sorgte dafür,
dass die jeweiligen Projektetappen fast immer innerhalb des vorgegebenen Zeitrahmens erreicht wurden.
Viele unserer Kollegen im IIS-Produktteam lieferten wichtige Informationen, die in das Buch eingingen.
Jedes Kapitel wurde sogar von mindestens einem Mitglied des Produktteams überprüft. Andere Teammitglieder schrieben die »Direkt von der Quelle«-Einschübe, die im gesamten Buch verteilt sind und
Ihnen einen einmaligen Einblick in das Design und die Entwicklung von IIS 7.0 bieten. Unser aufrichtiger
Dank gilt auch den folgenden Mitgliedern des IIS-Produktteams, die mit uns an diesem Buch gearbeitet
haben. Sie sind, sortiert nach dem Vornamen, in alphabetischer Reihenfolge aufgeführt: Anil Ruia, Bill
Staples, Edmund Chou, Eric Deily, Fabio Yeon, Jaroslav Dunajsky, Kanwaljeet Singla, Nazim Lala,
Michael Brown, Thomas Marquardt, Tobin Titus, Ulad Malashanka und Wade Hilmo.
Wir möchten außerdem Tito Leverette für seinen Rat und Beitrag zum siebzehnten Kapitel, »Optimieren
der Leistung«, danken.
Viele andere Microsoft-Teams erklärten sich ebenfalls dazu bereit, eine fachliche Überprüfung durchzuführen und ihre Erfahrungen und Einblicke mit uns zu teilen. Wir danken besonders Tom Hawthorn
vom Windows Performance-Team und George Holman sowie dem gesamten Microsoft.com-Operations-Team. Nick McCollum von Quixtar Inc. half ebenfalls mit einem Fachlektorat und Vorschlägen
bezüglich der Kapitel 5, 15 und 17 aus.
Als Nächstes möchten wir dem hervorragenden Bearbeiter- und Redaktionsteam danken. Unser besonderer
Dank gilt den Projektbearbeitern Karen Szall und Victoria Thulman von Microsoft Press für ihren Professionalismus, ihre Betreuungstätigkeit, ihre außerordentliche redaktionelle Arbeit und vor allem für ihre
Geduld. Bob Hogan und Bob Dean waren für das Fachlektorat dieses Buches verantwortlich. Sie sorgten
für einen einheitlichen Schreibstil und für ein leichtes Verständnis der Texte. Jean Findley von Custom
Editorial Productions, Inc., leistete hervorragende Arbeit bei der Organisation der Buchproduktion, für die
ein enger Zeitrahmen gesetzt war.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XVI Danksagung
Wir danken außerdem Susan Chory und Isaac Roybal, die uns halfen, dieses Projekt auf die Beine zu
stellen. Ein weiterer Dank geht an Simon Brown und Arvindra Sehmi, die den nötigen Ansporn für
diese Arbeit lieferten.
Wir danken Euch allen!
Hochachtungsvoll,
Das Autorenteam: Mike, Olga, Brett, Bernard, Steve, Carlos und Kurt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XVII
Einführung
Inhalt dieses Kapitels:
Welche Neuerungen bietet IIS 7.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht über das Buch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Besondere Kennzeichnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhalt der Begleit-CD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Inhalte online finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XVII
XIX
XIX
XX
XXI
Willkommen zu IIS (Internetinformationsdienste) 7.0 – Die technische Referenz! Dieses Buch ist eine
fachliche Informationsquelle für die Einsatzplanung, Bereitstellung und den Betrieb von IIS 7.0 (Internetinformationsdienste), Microsofts nächster Generation von Webserverplattformen. Obwohl sich diese
technische Referenz vorwiegend an IT-Experten richtet, die bereits Erfahrungen mit früheren Versionen
von IIS gesammelt haben, wird das Buch auch für diejenigen sehr hilfreich sein, die lernen möchten, wie
IIS 7.0 bereitgestellt und betrieben wird.
In dieser technischen Referenz finden Sie detaillierte Informationen über die Verbesserungen, die an IIS
7.0 vorgenommen wurden, sowie die zugrunde liegenden Architekturkonzepte, mit deren Hilfe Sie das
Prinzip der Bereitstellung und Verwaltung von IIS 7.0-Webservern besser verstehen werden. Darüber
hinaus werden Sie Techniken untersuchen, die es Ihnen ermöglichen, die neuen IIS 7.0-Features und
-Fähigkeiten zu nutzen. Weiterhin erhalten Sie ausführliche Informationen und aufgabenbasierte
Anleitungen zu allen anderen Aspekten der IIS 7.0-Verwaltung, einschließlich der Bereitstellung
modularer Webserver, der Konfiguration von Websites und Webanwendungen und der Verbesserung
der Webserversicherheit, -zuverlässigkeit und -leistung. Sie werden außerdem von den Mitgliedern des
IIS-Produktteams unzählige Randbemerkungen finden, die einen tiefen Einblick in die Arbeitsweise
von IIS 7.0 gewähren und die empfohlene Vorgehensweisen für die Verwaltung der Webserverplattform
sowie unschätzbare Tipps zur Problembehebung vorstellen. Die Begleitmedien zu diesem Buch enthalten schließlich zusätzliche Tools und Dokumentationen, die Sie nutzen können, um IIS 7.0-Webserver zu verwalten und Probleme zu lösen.
Welche Neuerungen bietet IIS 7.0?
IIS 7.0 wurde von Grund auf neu errichtet, um eine modulare und erweiterbare Webserverplattform zur
Verfügung stellen zu können. Diese Plattform bildet die Grundlage für schlanke, leichte Webserver, die
auf verschiedene Auslastungen und unterschiedliche Webanwendungen abgestimmt werden können.
Die neue erweiterbare Architektur ermöglicht es Ihnen, einen maßgeschneiderten Webserver zu konfigurieren. Sie können die benötigten IIS-Features auswählen und sie mit neuen Webserverfeatures, welche die neuen funktionsreichen Erweiterbarkeits-APIs (Application Programming Interface) nutzen,
ergänzen oder durch diese ersetzen. Der Webserver bietet außerdem ein neues verteiltes Konfigurationssystem und Verwaltungstools an, die seine Bereitstellung und Verwaltung erleichtern. Die Kernfeatures von IIS 7.0 nutzen die auf Zuverlässigkeit und Sicherheit ausgerichtete Architektur, die bereits
vom Vorgänger, IIS 6.0, eingeführt wurde, und sie fügen zusätzliche Verbesserungen hinzu, um diese
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XVIII Einführung
Zuverlässigkeit und Sicherheit der Webserverplattform zu erweitern. IIS 7.0 enthält außerdem eine
erweiterte Unterstützung von Anwendungsframeworks, die z.B. mit FastCGI kompatibel sind und
eine engere Verflechtung mit ASP.NET bieten.
Zusätzlich zu den vielen Verbesserungen bietet IIS 7.0 die folgenden Besonderheiten:
Modulare Webserverachitektur Im Gegensatz zu seinen monolithischen Vorgängern ist IIS 7.0
ein vollständig modularer Webserver, der aus mehr als vierzig Komponenten besteht. Der Administrator kann diese Komponenten einzeln installieren, um leichte Webserver mit einer auf das Wesentliche beschränkten Benutzeroberfläche zu generieren, die innerhalb der Anwendungstopologie die
ihnen zugedachten Rollen spielen. Darüber hinaus ist es dank der neuen Erweiterbarkeitsarchitektur
möglich, jedes der integrierten modularen Features durch maßgeschneiderte Implementierungen zu
ersetzen, die von Microsoft oder Drittanbietern zur Verfügung gestellt werden.
.NET-Erweiterbarkeit über ASP.NET-Integration Die neue ASP.NET-Integration ermöglicht
es Ihnen, IIS 7.0-Features unter Verwendung von ASP.NET und dem .NET Framework zu entwickeln,
wodurch die Entwicklungs- und Wartungskosten für benutzerdefinierte Webserverlösungen verringert
werden. Sie können in diesem Fall bereits vorhandene ASP.NET-Dienste verwenden, um Anwendungstechnologien zu erweitern. Dies gilt auch für solche Technologien, die nicht im Hinblick auf
ASP.NET entwickelt wurden. Mit Hilfe dieser Möglichkeiten können IIS 7.0-Webanwendungen den
Webserver an die eigenen Bedürfnisse anpassen, ohne höhere Entwicklungskosten zu verursachen,
was sich bei der bisher verwendeten ISAPI-Lösung (Internet Server Application Programming Interface) nicht vermeiden ließ.
Erweiterte Unterstützung von Anwendungsframeworks Zusätzlich zur Erweiterung des Webservers durch eine verbesserte ASP.NET-Integration bietet IIS 7.0 weitere Optionen zur Unterstützung anderer Anwendungsframeworks. Dazu zählt auch das FastCGI-Protokoll, das von vielen
Open-Source-Anwendungsframeworks wie z.B. PHP (PHP Hypertext Preprocessor) eingesetzt
wird. Solche Frameworks werden nun aufgrund der Tatsache, dass IIS 7.0 mit FastCGI arbeiten
kann, in einer Windows-Umgebung problemlos unterstützt.
Verteiltes Konfigurationssystem mit der Möglichkeit zur Delegierung IIS 7.0 ersetzt den
zentralisierten Metabasis-Konfigurationsspeicher durch ein neues Konfigurationssystem, das auf
einer aus verteilten XML-Dateien bestehenden Hierarchie basiert. Dies ermöglicht es den Anwendungen, eigene Konfigurationen festzulegen. Mit dem neuen Konfigurationssystem ist eine vereinfachte Anwendungsentwicklung ohne administrative Einbindung möglich. Es bildet außerdem
die Grundlage für eine flexiblere Verwaltung der Webserverkonfiguration.
Verbesserte Verwaltungstools IIS 7.0 bietet eine Vielzahl verschiedener Verwaltungstools an,
die das neue Konfigurationssystem nutzen, um die Verwaltung der Webserverkonfiguration flexibler und einfacher zu gestalten. Dazu zählen ein brandneuer aufgabenbasierter IIS-Manager, der eine
delegierte Remoteverwaltung ermöglicht, ein neues Tool für die Verwaltung über die Befehlszeile
(Appcmd) und mehrere APIs zur Verwaltung der Webserverkonfiguration mit Hilfe von Skripts,
WMI (Windows Management Instrumentation) und .NET Framework-Programmen.
Erweiterte Diagnose und Problembehandlung IIS 7.0 stellt Diagnosefeatures zur Verfügung, die
Sie dabei unterstützen, Webserverfehler zu untersuchen und mit Hilfe einer Infrastruktur zur Ablaufverfolgung fehlgeschlagener Anforderungen Probleme zu lösen, deren Ursachen schwer nachvollziehbar sind. Die Ablaufverfolgungsfeatures sind in ASP.NET-Anwendungen integriert, damit eine vollständige Webanwendungsdiagnose von Endpunkt zu Endpunkt durchgeführt werden kann.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Einführung
XIX
Übersicht über das Buch
Die vier Teile dieses Buches behandeln die folgenden Themen:
Teil 1: Grundlagen Bietet eine Übersicht über die IIS 7.0-Features, beschreibt die mit IIS 7.0
eingeführten Verbesserungen und stellt die Kernarchitektur eines Webservers vor.
Teil 2: Bereitstellung Erklärt die für die Bereitstellung von IIS 7.0 wichtige modulare Installations-Architektur und hält Anleitungen zur Installation von IIS 7.0 für verschiedene übliche Webserverauslastungsszenarien bereit.
Teil 3: Verwaltung Erläutert die Schlüsselkonzepte der IIS 7.0-Verwaltung und beschreibt, wie
bestimmte Verwaltungsaufgaben mit Hilfe der von IIS 7.0 bereitgestellten Verwaltungstools gelöst
werden.
Teil 4: Problembehandlung und Leistung Erklärt, wie die Protokollierungs- und Ablaufverfolgungs-Infrastruktur verwendet wird, um für einen reibungslosen Betrieb des Webservers zu sorgen,
wie Fehlerursachen behandelt werden und wie die Leistung des Webservers überwacht und verbessert wird.
Das Buch enthält außerdem mehrere Anhänge zu verschiedenen Themen sowie ein Glossar zum
Nachschlagen.
Besondere Kennzeichnungen
In diesem Buch werden die folgenden Kennzeichnungen verwendet, um bestimmte Besonderheiten
hervorzuheben.
Lesehilfen
Die folgenden Lesehilfen werden im gesamten Buch eingesetzt, um auf nützliche Informationen
hinzuweisen.
Lesehilfe
Bedeutung
Hinweis
Unterstreicht die Wichtigkeit eines bestimmten Konzepts oder hebt einen bestimmten Fall hervor, der nicht
alltäglich ist
Wichtig
Lenkt die Aufmerksamkeit auf wichtige Informationen, die nicht ignoriert werden sollten
Vorsicht
Warnt Sie davor, dass eine Missachtung des beschriebenen Sachverhalts zu ernsthaften Problemen für die
Benutzer, das System, die Funktionsfähigkeit usw. führen kann
Auf CD
Lenkt die Aufmerksamkeit auf ein Skript, ein Tool, eine Vorlage oder eine Arbeitshilfe auf der beiliegenden
CD-ROM, das bzw. die Ihnen hilft, eine im Text beschriebene Aufgabe zu lösen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
XX Einführung
Einschübe
Im gesamten Buch werden die folgenden Einschübe verwendet, um zusätzliche Einblicke zu gewähren
und Tipps und Ratschläge zu geben, die sich auf die verschiedenen IIS 7.0-Features beziehen.
Einschub
Bedeutung
Direkt von der Quelle
Beiträge von Microsoft-Experten, also direkt von der Quelle, die Einblicke in die Arbeitsweise von IIS 7.0
bieten, empfohlene Vorgehensweisen zur IIS 7.0-Verwaltung erläutern sowie Tipps zur Problembehandlung geben
So funktioniert es
Vermittelt einen Eindruck von den IIS 7.0-Features und deren Arbeitsweise
Befehlszeilenbeispiele
In diesem Buch werden die folgenden Gestaltungsmerkmale für die Darstellung von Befehlszeilenbeispielen verwendet.
Stil
Bedeutung
Fettschrift
Kennzeichnet Benutzereingaben (Zeichenfolgen, die Sie genauso eingeben, wie sie im Text
abgedruckt sind)
Kursivschrift
Kennzeichnet Variablen, denen konkrete Werte zugewiesen werden müssen (name_datei steht zum
Beispiel für jeden gültigen Dateinamen)
Nichtproportionale Schrift
Kennzeichnet Codebeispiele und Befehlszeilenausgaben
%SystemRoot%
Schreibweise von Umgebungsvariablen
Inhalt der Begleit-CD
Die Begleit-CD ist eine nützliche Ergänzung zu diesem Buch und weist den folgenden Inhalt (in englischer Sprache) auf:
Elektronisches Buch Der gesamte Text des gedruckten Buches in einem durchsuchbaren PDFeBook
Skripts Skripts, die Ihnen helfen, IIS-Aufgaben zu automatisieren
Tools Links zu Tools für IIS, Windows PowerShell usw., die Sie direkt verwenden können
Produktinformationen Links zu Informationen über die Features und Möglichkeiten von IIA NS
Windows Server 2008 und anderen Produkten, die Ihnen helfen, Windows Server 2008 in Ihrem
Unternehmen zu optimieren
Ressourcen Links zu Anleitungen, technischen Ressourcen, Webcasts, Foren usw., die Ihnen zeigen, wie die Features von IIS, Windows Server 2008 und anderen Produkten richtig eingesetzt und
Probleme behoben werden
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Einführung
XXI
Weitere Inhalte online finden
Wenn neues oder aktualisiertes Material verfügbar ist, das eines Ihrer Bücher ergänzt, wird es auf den
Server- und Clientwebsites von Microsoft Press Online veröffentlicht. Bezogen auf die finale Version
von Windows Server 2008 kann es sich bei diesem Material um Buchaktualisierungen, Artikel, Links
zu zugehörigen Inhalten, Korrekturen, Beispielkapiteln usw. handeln. Diese Website ist unter der
folgenden Adresse verfügbar und wird regelmäßig aktualisiert: http://www.microsoft.com/learning/
books/online/serverclient. Beachten Sie bitte, dass die dort veröffentlichten Informationen in englischer
Sprache vorliegen.
Supportrichtlinie für die technische Referenz
Es wurde jede Anstrengung unternommen, um die Richtigkeit dieses Buches und der beiliegenden
Medien zu gewährleisten. Microsoft Press hält unter der folgenden Webadresse mögliche Korrekturen
zu seinen Büchern bereit: http://www.microsoft-press.de/support.asp.
Wenn Sie Kommentare, Fragen oder Ideen zu diesem Buch oder dem zugehörigen Inhalt haben oder
Ihre Fragen nach einem Besuch der zuvor aufgeführten Sites nicht beantwortet werden konnten, senden
Sie sie bitte an Microsoft Press.
Per E-Mail:
[email protected] (bitte verfassen Sie Ihr Schreiben in englischer Sprache)
Postalische Adresse:
Microsoft Press
Betrifft: IIS 7.0 – Die technische Referenz
Konrad-Zuse-Straße 1
85716 Unterschleißheim
Bitte beachten Sie, dass über diese Adressen kein Support für Microsoft-Produkte angeboten wird.
Um Supportinformationen zum Produkt zu erhalten, besuchen Sie bitte die Produktsupport-Website
von Microsoft unter der folgenden Adresse: http://support.microsoft.com.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
1
T E I L
I
Grundlagen
In diesem Teil:
Einführung in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Grundlagen der IIS 7.0-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Verstehen der modularen Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Verstehen des Konfigurationssystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
3
K A P I T E L
1
Einführung in IIS 7.0
Inhalt dieses Kapitels:
Übersicht über IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Welche Neuerungen bietet IIS 7.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlegende Verwaltungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0 Features unter Windows Server 2008 und Windows Vista . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5
15
22
26
27
Microsoft IIS 7.0 (Internet Information Services) in Verbindung mit Windows Server 2008 ist ein
Webserver, der eine sichere und einfach zu verwaltende Plattform für die Entwicklung und das Hosten
von Webanwendungen und Diensten zur Verfügung stellt. IIS 7.0 wurde vollständig überarbeitet und
weist gegenüber seinen Vorgängern wichtige Vorteile auf. Mit seiner neuen modularen und erweiterbaren Architektur sorgt IIS 7.0 dafür, dass die Entwicklung, Bereitstellung, Konfiguration und Verwaltung von Webanwendungen und der Webinfrastruktur einfacher und effizienter als jemals zuvor ist.
Kurz gesagt ist IIS 7.0 die bisher leistungsfähigste Microsoft-Webserverplattform. Es verfügt über neue
Fähigkeiten, die die Art und Weise, in der Webanwendungen und Dienste entwickelt, bereitgestellt und
verwaltet werden, vereinfachen. Aufgrund des modularen Designs von IIS 7.0 haben die Administratoren die volle Kontrolle über die Funktionalität ihrer Webserver. Dieses Design umfasst eine
erweiterbare Architektur, die es Administratoren und Entwicklern ermöglicht, angepasste und spezialisierte Webserver einzurichten. Die neuen Verwaltungsmöglichkeiten und das verteilte, auf XML
basierende Konfigurationssystem sorgen dafür, dass die Bereitstellung und Verwaltung von Webanwendungen mit IIS 7.0 einfacher und effizienter als bei jedem anderen Webserver sind. Darüber hinaus
können Administratoren und Entwickler mit Hilfe der neuen Funktionen für die Problemdiagnose und
-behebung die Systemausfallzeiten verringern.
Dieses Kapitel konzentriert sich auf die wichtigsten neuen Features und die neue Funktionalität von IIS
7.0 und beschreibt deren Vorteile gegenüber den vorherigen Versionen. Wir werfen außerdem einen
Blick auf die grundlegenden Verwaltungsaufgaben und erörtern die Unterschiede hinsichtlich der
Verfügbarkeit von IIS 7.0-Features unter Windows Server 2008 und Windows Vista.
Übersicht über IIS 7.0
Mit den Features und Funktionen von IIS 7.0 können Administratoren die Webinfrastruktur zuverlässig
und effektiv verwalten, Entwickler können Webanwendungen und -dienste schnell entwickeln und
Webhosting-Anbieter können einer größeren Zielgruppe ein kostengünstiges, skalierbares und verlässliches Webhosting anbieten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
4 Kapitel 1: Einführung in IIS 7.0
Für Administratoren hält IIS 7.0 eine sichere, zuverlässige und einfach zu verwaltende Webserverplattform
bereit. Die anpassbare Installation von IIS 7.0 gewährleistet, dass sie für ihre Webinfrastruktur die Größe
der Angriffsfläche, die Notwendigkeit zur Fehlerbehebung und den benötigten Speicher minimieren
können. Das IIS 7.0-Prozessmodell macht Websites und -anwendungen sicherer, indem es diese automatisch isoliert. Möglich wird dies durch eine abgeschirmte Konfiguration und eindeutige Prozesskennungen.
IIS 7.0 verringert die Verwaltungskomplexität, indem es eine Gruppe von Tools zur Verfügung stellt,
die die Verwaltung der Webinfrastruktur effizienter gestaltet. Der IIS-Manager besitzt eine neue
aufgabenorientierte, featurebezogene Verwaltungskonsole, die mit einer intuitiven Benutzeroberfläche
für administrative Tätigkeiten arbeitet. Zusätzlich zum IIS-Manager gibt es ein neues Befehlszeilenhilfsmittel für die Verwaltung, einen WMI-Anbieter (Windows Management Instrumentation) und eine
.NET-API (Application Programming Interface).
IIS 7.0 unterstützt die vereinfachte Verwaltung von Webfarmen, wobei die Webserverkonfiguration
zusammen mit dem Webanwendungscode und den Inhalten auf einem zentralisierten Dateiserver
gespeichert und von den Front-End-Webservern einer Farm gemeinsam genutzt werden kann.
IIS 7.0 ermöglicht es den Administratoren, die Kontrolle über die Site- und Anwendungsverwaltung sicher
an solche Entwickler und Besitzer von Inhalten zu delegieren, die auf dem Server über keine administrativen Rechte verfügen. Auf diese Weise werden die Verwaltungslast und die Betriebskosten verringert.
Wird der IIS-Manager unter Windows Vista, Windows XP, Windows Server 2003 oder Windows Server
2008 verwendet, können die Entwickler und Inhaltsbesitzer ihre Sites und Anwendungen von jedem
beliebigen Ort aus remote verwalten, sofern sie über HTTPS mit dem Server verbunden sind.
Weiterhin können Administratoren mit Hilfe der neuen IIS 7.0-Möglichkeiten zur Problemdiagnose
und -behandlung die Ausfallzeiten eines Webserver verringern.
Für Entwickler bietet IIS 7.0 eine flexible, erweiterbare Webserverplattform zur Entwicklung und
Bereitstellung von Webanwendungen unter Windows Server 2008 und Windows Vista an. In Verbindung
mit IIS 7.0 können Entwickler Anwendungen unter Verwendung eines Webframeworks ihrer Wahl
erstellen, z.B. mit ASP.NET, klassischem ASP, PHP, PERL, ColdFusion, Ruby und vielen anderen.
IIS 7.0 bietet eine noch nie da gewesene Erweiterbarkeit. Es verfügt über eine aus Komponenten
zusammengesetzte Architektur mit mehr als vierzig plugfähigen Modulen, die auf öffentlichen Erweiterbarkeits-APIs aufgebaut ist. Entwickler können neue Module oder Ersatzmodule in systemeigenem oder
verwaltetem Code schreiben, die IIS-Konfiguration erweitern und IIS-Manager-Erweiterungen erstellen,
die sich nahtlos in die Verwaltungskonsole integrieren lassen.
IIS 7.0 besitzt ein verteiltes, dateibasiertes Konfigurationssystem, mit dem es möglich ist, IIS-Einstellungen zusammen mit ASP.NET-Einstellungen in web.config-Dateien zu speichern. Dieses vereinheitlichte Konfigurationssystem vereinfacht die Entwicklung und ermöglicht auf IIS 7.0-Servern die
Bereitstellung von vorkonfigurierten Anwendungen per xcopy.
Darüber hinaus helfen neue Diagnosemöglichkeiten, wie z.B. der Zugriff auf Laufzeitinformationen
und die automatische Nachverfolgung fehlgeschlagener Anforderungen, den Entwicklern dabei, die
Problembehandlung schneller durchzuführen und die Ausfallzeiten von Websites zu verringern.
Webhostern bietet IIS 7.0 eine kostengünstige, skalierbare Webserverplattform, mit der es möglich ist,
eine größere Zielgruppe mit einem zuverlässigen Webhosting zu versorgen. IIS 7.0 senkt Kosten, indem
es eine neue, skalierbare und gemeinsam nutzbare Hostingarchitektur zur Verfügung stellt, die tausende
von Websites auf einem einzelnen IIS 7.0-Server hosten kann, ohne die Prozessisolation oder Betriebssicherheit opfern zu müssen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Welche Neuerungen bietet IIS 7.0?
5
IIS 7.0 ermöglicht es den Webhostern, mehr Kunden zu erreichen. Der Grund hierfür ist ein neues
FastCGI-Modul, das ein schnelles und zuverlässiges Hosting für PHP- und andere Webframeworks
bietet.
Darüber hinaus stellt IIS 7.0 einen FTP-Server (File Transfer Protocol) zur Verfügung, so dass
Webhoster ihren Kunden eine vollständig integrierte Web-/FTP-Plattform mit modernen Publishingmöglichkeiten, z.B. FTP über SSL (Secure Sockets Layer), und einer mitgliederbasierten Authentifizierung anbieten können.
Welche Neuerungen bietet IIS 7.0?
IIS 7.0 wurde von Grund auf neu gestaltet und aufgebaut. Die neuen Features und Funktionen bieten
Administratoren und Entwicklern viele neue Möglichkeiten:
Die genaue Kontrolle über die Installationsgröße des Webservers trägt dazu bei, dass weniger
Patches installiert werden müssen und das Sicherheitsrisiko sinkt.
Es ist möglich, neue Weblösungen mit Hilfe des Erweiterbarkeitsframeworks schnell zu
implementieren.
Durch die vereinfachte Bereitstellung und Anwendungskonfiguration kann eine schnellere
Veröffentlichung erzielt werden.
Die Administrationskosten werden dadurch verringert, dass Webinfrastrukturen nun effizienter
verwaltet werden können.
Die Ausfallzeiten von Websites können verringert werden, da es möglich ist, Anwendungsfehler
schneller zu beheben.
Diese Verbesserungen wurden durch wichtige Neuerungen in IIS 7.0 möglich, die nachfolgend
aufgeführt sind:
Ein modularer, erweiterbarer Webserverkern
Ein vereinheitlichtes, verteiltes und dateibasiertes Konfigurationssystem
Integrierte Systemzustandsüberwachung und Diagnose
Eine Gruppe neuer Verwaltungstools mit der Möglichkeit zur Delegierung
Darüber hinaus bietet IIS 7.0 einen neuen Dienst namens WAS (Windows Process Activation Service)
an, der das IIS 7.0-Prozessmodell für gewöhnliche und auf HTTP basierende Anwendungen und
Dienste offenlegt.
Lassen Sie uns einen genaueren Blick auf diese Neuerungen und deren Vorteile gegenüber den vorherigen IIS-Versionen werfen.
Der Webserverkern
Der IIS 7.0-Webserverkern wurde vollständig überarbeitet und weist, verglichen mit IIS 6.0, große
Unterschiede auf. Eine neue, komplett aus einzelnen Komponenten zusammengesetzte Architektur hält
zwei wichtige Erweiterungen bereit, die die Basis für viele Verbesserungen in den Bereichen Sicherheit,
Leistung, Skalierbarkeit, Verwaltbarkeit und Flexibilität bilden. Diese beiden fundamentalen Erweiterungen sind Modularität und Erweiterbarkeit.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
6 Kapitel 1: Einführung in IIS 7.0
Modularität
Bei den vorherigen IIS-Versionen war die gesamte Funktionalität standardmäßig in einem monolithischen
Server integriert. Es gab keine einfache Möglichkeit, um diese Funktionalität zu erweitern oder zu
ersetzen. Der Webserverkern von IIS 7.0 weist eine vollständig modulare Architektur auf. Alle Webserverfeatures werden nun als eigenständige Komponenten verwaltet. Der IIS 7.0-Webkern ist in mehr als
vierzig separate Komponenten unterteilt, die jeweils ein bestimmtes Feature oder eine bestimmte
Funktionalität implementieren. Diese Komponenten werden als Module bezeichnet. Sie können diese
Module abhängig von Ihren Anforderungen hinzufügen, entfernen und ersetzen.
IIS 7.0 integriert die ASP.NET-Laufzeit in den Webserverkern, wodurch eine vereinheitlichte Anforderungsverarbeitungspipeline entsteht. Sowohl systemeigener als auch verwalteter Code werden über
diese einzelne Anforderungspipeline verarbeitet. Alle Benachrichtigungsereignisse in der Anforderungspipeline werden sowohl für die systemeigenen als auch die verwalteten Module offen gelegt.
Diese Verflechtung führt dazu, dass bereits vorhandene ASP.NET-Features – z.B. die formularbasierte
Authentifizierung, die Mitgliedschaft, der Sitzungszustand usw. – für alle Inhaltstypen verwendet
werden können, so dass die gesamte Webanwendung ein einheitliches Arbeitsumfeld bietet.
Abbildung 1.1 zeigt verschiedene Phasen vom Beginn bis zum Ende der vereinheitlichten Anforderungsverarbeitungspipeline. In der Anforderungsauthentifizierungsphase zeigt Abbildung 1.1
Authentifizierungsmodule, die für alle Anforderungen zur Verfügung stehen. Die Standardauthentifizierung, Windows-Authentifizierung und anonyme Authentifizierung sind systemeigene Module. Die
Formularauthentifizierung ist ein verwaltetes Modul. Sowohl systemeigene als auch verwaltete
Authentifizierungsmodule bieten Dienste für alle Inhaltstypen an, z.B. für verwalteten Code,
systemeigenen Code und statische Dateien.
Abbildung 1.1 Die integrierte Anforderungsverarbeitung von IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Welche Neuerungen bietet IIS 7.0?
7
Hinweis Weitere Informationen zur Anforderungsverarbeitung finden Sie im zweiten Kapitel, »Grundlagen der
IIS 7.0-Architektur«.
Durch die IIS 7.0-Modularität ergeben sich die folgenden Möglichkeiten:
Sichern des Servers durch Verkleinern der Angriffsfläche Das Verkleinern der Angriffsfläche
ist einer der wichtigsten Schritte auf dem Weg zu einem sicheren System. Bei IIS 7.0 können nicht
benötigte Webserverfeatures ohne Auswirkung auf die Anwendungsfunktionalität sicher entfernt
werden, wodurch die Angriffsfläche verkleinert wird.
Verbessern der Leistung und Verringern des benötigten Arbeitsspeichers Wenn Sie nicht
benötigte Webserverfeatures entfernen, wird die Größe des vom Server beanspruchten Arbeitsspeichers verringert. Darüber hinaus wird die Menge des Codes, der für jede Anforderung ausgeführt werden muss, verringert, was zu einer verbesserten Leistung führt.
Erstellen von angepassten und spezialisierten Servern Wenn Sie einen bestimmten Satz
Serverfeatures auswählen und die nicht benötigten Features entfernen, können Sie angepasste
Server erstellen, die für bestimmte Funktionen, wie z.B. das Edge-Caching oder den Lastenausgleich, optimiert sind.
Hinweis Weitere Informationen zur Modularität des Servers finden Sie im dritten Kapitel, »Verstehen der modularen Basis«.
Erweiterbarkeit
Die modulare Architektur von IIS 7.0 ermöglicht es Ihnen, Serverkomponenten zu erstellen, die eine
bereits vorhandene Funktionalität erweitern oder ersetzen und die für die von IIS gehosteten Webanwendungen einen zusätzlichen Nutzen darstellen.
Der Webserverkern enthält eine neue Win32-API zur Erstellung von Serverkernmodulen. Sie können
benutzerdefinierte Features hinzufügen, um die bereits vorhandenen Webserverfeatures zu erweitern
oder zu ersetzen. Dies ist mit eigenem Code und Webserverkern-Erweiterungen von Drittanbietern
möglich. Sowohl der eigene Code als auch die Erweiterungen müssen dabei unter Verwendung dieser
neuen Erweiterbarkeits-API erstellt worden sein.
Die Webserverkernmodule stellen einen neuen und leistungsfähigeren Ersatz für ISAPI-Filter und
-Erweiterungen (Internet Server Application Programming Interface) dar, obwohl diese Filter und
Erweiterungen auch weiterhin von IIS 7.0 unterstützt werden. Das neue C++-Erweiterbarkeitsmodell
von IIS 7.0 verwendet eine vereinfachte objektorientierte API, mit der es möglich ist, stabilen Servercode zu schreiben, so dass weniger Probleme als bei der bisherigen ISAPI-Entwicklung auftreten.
IIS 7.0 unterstützt außerdem die Entwicklung von Webserverkern-Erweiterungen mit Hilfe des .NET
Frameworks. In IIS 7.0 ist die IHttpModule-API für ASP.NET integriert, weshalb Module, die aus benutzerdefiniertem verwalteten Code bestehen, auf alle Ereignis in der Anforderungspipeline zugreifen
können, und zwar für alle Anforderungen.
Die ASP.NET-Integration in IIS 7.0 erlaubt die schnelle Entwicklung von Servermodulen mit Hilfe der
Möglichkeiten, die ASP.NET und das .NET Framework bieten. Der Einsatz der maschinennahen C++IIS-API ist somit nicht mehr notwendig. Verwaltete ASP.NET-Module können den Server uneingeschränkt erweitern und Anforderungen bedienen, die sich auf alle möglichen Inhaltstypen beziehen,
z.B. ASP, CGI (Common Gateway Interface) und statische Dateien.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
8 Kapitel 1: Einführung in IIS 7.0
Wenn Entwickler ASP.NET oder die native C++-Erweiterbarkeit nutzen, können sie Lösungen
erstellen, die von allen Anwendungskomponenten, z.B. benutzerdefinierte Authentifizierungsschemata,
Überwachung und Protokollierung, Sicherheitsfilterung, Lastenausgleich, Inhaltsumleitung und
Zustandsverwaltung, genutzt werden können.
Hinweis Um weitere Informationen zur Erweiterbarkeit des Webserverkerns zu erhalten, lesen Sie bitte das
zwölfte Kapitel, »Verwalten von Webservermodulen«.
Konfiguration
Die frühen IIS-Versionen verfügten über nur wenige Konfigurationseinstellungen, die in der WindowsRegistrierung gespeichert wurden. IIS 5.0 führte einen binären Speicher zur Verwaltung der URLbasierten Konfiguration ein, der als Metabasis bezeichnet wurde. Bei IIS 6.0 wurde die binäre Metabasis durch eine auf XML basierende Metabasis ersetzt, um Konfigurationsdaten zu speichern. IIS 7.0
führt ein verteiltes, dateibasiertes XML-Konfigurationssystem ein, mit dem die Administratoren
Einstellungen für IIS und seine Features in XML-Klartextdateien vornehmen können, die zusammen
mit dem Code und den Inhalten gespeichert werden. Die XML-Dateien nehmen die Konfigurationseinstellungen für die gesamte Webserverplattform auf. Dazu zählen auch IIS, ASP.NET und andere
Komponenten. Die Dateien speichern Einstellungen der Server-, Site- und Anwendungsebene, und sie
können optional auf der Inhaltsverzeichnisebene gesetzt werden, wo sich auch die Webinhalte befinden,
so dass eine delegierte Verwaltung möglich wird.
Da Website- und Anwendungseinstellungen nicht länger an einen zentralisierten Konfigurationsspeicher auf dem lokalen Computer gebunden sind – wie dies bei älteren Versionen von IIS der Fall war
–, vereinfacht das verteilte dateibasierte Konfigurationssystem die Anwendungsentwicklung in hohem
Maße, indem es eine xcopy-Bereitstellung der Konfiguration in Verbindung mit dem Anwendungscode
und den Inhalten bietet. Darüber hinaus ermöglicht dieses Konfigurationssystem die gemeinsame
Nutzung einer Site- oder Anwendungskonfiguration innerhalb einer Webfarm.
Die IIS 7.0-Konfiguration basiert auf dem .NET Framework-Konfigurationsspeicher. Dieses gebräuchliche Format trägt dazu bei, dass IIS-Konfigurationseinstellungen zusammen mit der ASP.NETKonfiguration in einer aus web.config-Dateien bestehenden Hierarchie gespeichert werden können,
wodurch ein Konfigurationsspeicher für alle Webplattform-Konfigurationseinstellungen entsteht, auf
die über eine bestimmte Gruppe von APIs zugegriffen werden kann und die in einem einheitlichen
Format gespeichert werden.
Die verteilte Konfigurationshierarchie enthält die globalen, computerweit gültigen .NET FrameworkKonfigurationsdateien, machine.config und die web.config-Stammdatei, die globale IIS-Konfigurationsdatei applicationHost.config und die verteilten web.config-Konfigurationsdateien, die sich wie in
Abbildung 1.2 dargestellt in den Websites, Anwendungen und Verzeichnissen befinden.
Die globalen .NET Framework-Einstellungen für einen Servercomputer sind in der machine.configDatei gespeichert, die sich im Ordner %SystemRoot%\Microsoft .NET\Framework \<version>\config
befindet. Globale ASP.NET-Einstellungen für einen Webserver sind in der web.config-Stammdatei
gespeichert, die im selben Ordner des Servercomputers enthalten ist.
IIS 7.0 speichert die globale Konfiguration in der applicationHost.config-Datei, die sich im Ordner
%SystemRoot%\System32\Inetsrv\Config befindet. ApplicationHost.config besitzt zwei wichtige
Konfigurationsabschnitte: <system.applicationHost> und <system.webServer>.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Welche Neuerungen bietet IIS 7.0?
9
Abbildung 1.2 Dateibasierter verteilter Konfigurationsspeicher
Der Abschnitt <system.applicationHost> enthält Einstellungen für Sites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools. Der Abschnitt <system.webServer> enthält die Konfiguration aller anderen
Einstellungen, einschließlich der globalen Webstandards.
Die URL-spezifische Konfiguration wird mit Hilfe von <location>-Tags in applicationHost.config
gespeichert. Um die URL-spezifische Konfiguration für einzelne Sites, Anwendungen und Inhaltsverzeichnisse des Servers zu lesen und zu schreiben, verwendet IIS 7.0 die web.config-Dateihierarchie.
Dort befindet sich auch die ASP.NET-Konfiguration.
Abbildung 1.3 zeigt die Struktur der web.config-Datei einer Site. Sie sehen dort außerdem, wie diese
Datei von den globalen Konfigurationsdateien erbt.
Abbildung 1.3 Die web.config-Datei einer Site
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
10 Kapitel 1: Einführung in IIS 7.0
Der Serveradministrator kann verschiedene Ebenen der Konfigurationshierarchie an andere Benutzer
delegieren, z.B. an den Siteadministrator oder an die Anwendungsentwickler. Das Setzen von Konfigurationseinstellungen ist standardmäßig ausschließlich auf den Serveradministrator beschränkt. Der
Serveradministrator kann die Verwaltung bestimmter Konfigurationseinstellungen an Benutzer delegieren, die über keine administrativen Rechte für den Servercomputer verfügen.
Die dateibasierte Konfiguration für eine bestimmte Site oder Anwendung kann von einem Computer
auf einen anderen kopiert werden. Dies ist beispielsweise dann möglich, wenn die Anwendung von der
Entwicklungsphase in die Testphase übergeht und schließlich veröffentlicht wird. Aufgrund der
gemeinsamen Bereitstellung von Konfiguration, Code und Inhalten mit Hilfe von xcopy ist es sehr
einfach, Anwendungen in IIS 7.0-Systemen bereitzustellen.
Das verteilte Konfigurationssystem trägt außerdem dazu bei, dass innerhalb einer Webserverfarm die
Konfiguration einer Site oder Anwendung gemeinsam genutzt werden kann, so dass alle Server die
Konfigurationseinstellungen von einem einzelnen Server abrufen. Nachdem eine Website in Betrieb
genommen wurde, können die Administratoren die Konfigurationsinformationen über mehrere FrontEnd-Webserver hinweg gemeinsam nutzen, wodurch kostenintensive und fehleranfällige Replikationen
und Probleme mit der manuellen Synchronisierung vermieden werden.
Dass IIS 7.0-Konfigurationssystem ist uneingeschränkt erweiterbar und ermöglicht es Ihnen, den
Konfigurationsspeicher dahingehend zu erweitern, dass er benutzerdefinierte Konfigurationen aufnimmt. Auf der API-Ebene ist das System mit älteren Versionen von IIS abwärtskompatibel. Gleiches
gilt für ältere Versionen des .NET Frameworks und die XML-Ebene.
Hinweis Um weitere Informationen zum verteilten IIS 7.0-Konfigurationssystem zu erhalten, lesen Sie bitte das
vierte Kapitel, »Verstehen des Konfigurationssystems«.
Verwaltungstools
Die IIS 7.0-Verwaltungstools wurden vollständig neu entwickelt. Sie bieten unterschiedliche Schnittstellen an, um aus der aus Konfigurationsdateien bestehenden Hierarchie des Servers zu lesen und darin
zu schreiben. Zu diesen Dateien zählen beispielsweise applicationHost.config, die web.config-Stammdatei des .NET Frameworks und die web.config-Dateien für einzelne Sites, Anwendungen und
Verzeichnisse. Sie stellen aber auch Schnittstellen für die Arbeit mit Laufzeitinformationen und
verschiedenen Anbietern zur Verfügung.
IIS 7.0 hält die folgenden Verwaltungstools bereit:
Der IIS-Manager ist eine neue Verwaltungskonsole, die mit einer intuitiven, feature- und
aufgabenorientierten grafischen Benutzeroberfläche zur Verwaltung von IIS 7.0 und ASP.NET
arbeitet. Bei IIS 7.0 wird der IIS-Manager als Windows Forms-Anwendung implementiert, die das
MMC-Snap-In älterer IIS-Versionen ersetzt.
Das Befehlszeilentool Appcmd.exe ersetzt die Befehlszeilenskripts von IIS 6.0. Es erlaubt den
Zugriff auf die Konfigurationsdateienhierarchie und andere Servereinstellungen über die
Befehlszeile.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Welche Neuerungen bietet IIS 7.0?
11
Die Schnittstelle Microsoft.Web.Administration stellt eine streng typisierte verwaltete API zur
Verfügung, mit der verwalteter Code auf die Konfiguration und andere Servereinstellungen
zugreifen kann.
Ein neuer WMI-Anbieter ermöglicht den Skriptzugriff auf alle IIS- und ASP.NET-Konfigurationen.
Der alte WMI-Anbieter von IIS 6.0 ist auch weiterhin verfügbar, um die Abwärtskompatibilität mit
bereits vorhandenen Skripts zu gewährleisten.
Sie können ebenfalls Windows PowerShell für einen leistungsfähigen Skriptzugriff auf die verteilte
Konfigurationshierarchie benutzen.
Hinweis Um weitere Informationen zum Einsatz von PowerShell für die IIS 7.0-Verwaltung zu erhalten, lesen Sie
bitte das siebte Kapitel, »Verwenden von Befehlszeilentools«.
Windows Server 2008 stellt außerdem das IIS 6.0-MMC-Snap-In zur Verfügung, um die Remoteverwaltung sowie die Verwaltung von FTP-Sites zu ermöglichen.
Alle neuen Verwaltungstools unterstützen uneingeschränkt die neue verteilte IIS 7.0-Konfiguration,
und jedes dieser Tools ermöglicht das Delegieren des Zugriffs auf die Konfiguration einzelner Sites und
Anwendungen. Dieser Zugriff kann an Benutzer delegiert werden, die für den Servercomputer über
keine administrativen Rechte verfügen.
Hinweis Sie können die Verwaltungstools und die Webserverkomponenten unabhängig voneinander installieren.
Abbildung 1.4 zeigt die Benutzeroberfläche des neuen IIS-Managers, die der eines Browsers gleicht
und die wie der Windows-Explorer über eine Adressleiste verfügt. Der Hauptteil des IIS-ManagerFensters ist in drei Bereiche gegliedert:
Der Verbindungsbereich auf der linken Seite des IIS-Manager-Fensters ermöglicht es Ihnen,
Verbindungen zu Servern, Sites und Anwendungen herzustellen. Die Verbindungen werden in einer
hierarchischen Struktur dargestellt.
Ein zentraler Bereich, der als Arbeitsbereich bezeichnet wird, befindet sich in der Mitte des IISManager-Fensters. Der Arbeitsbereich besteht aus zwei Ansichten: Features und Inhalt.
In der Ansicht Features können Sie die Features des gegenwärtig ausgewählten Konfigurationspfades betrachten und konfigurieren. Jedes IIS-Manager-Feature ist in der Regel einem Konfigurationsabschnitt zugeordnet, der das entsprechende Webserverfeature kontrolliert.
Die Ansicht Inhalt stellt die Inhalte, die sich auf den gegenwärtig ausgewählten Konfigurationspfad beziehen, schreibgeschützt dar. Wenn Sie die Ansicht Inhalt aktiviert haben und in der
hierarchischen Struktur des Verbindungsbereichs einen Knoten auswählen, wird dessen Inhalt
im Arbeitsbereich aufgelistet.
Rechts im IIS-Manager-Fenster befindet sich der Bereich Aktionen. Die Einträge im Bereich
Aktionen beziehen sich auf bestimmte Aufgaben und sind vom jeweiligen Kontext abhängig.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
12 Kapitel 1: Einführung in IIS 7.0
Abbildung 1.4 Die grafische Benutzeroberfläche des IIS-Managers
Die Delegierung der Verwaltung ist wie bei den anderen Verwaltungstools eine der wichtigsten Fähigkeiten des IIS-Managers. Mit dieser Funktionalität können die Benutzer von gehosteten Diensten den
IIS-Manager auf dem eigenen Desktop ausführen und eine Remoteverbindung herstellen, um ihre Sites
und Anwendungen auf dem hostenden Server zu verwalten, ohne für diesen Servercomputer über
administrative Rechte zu verfügen. Zur Identifizierung von Benutzern kann der IIS-Manager WindowsAnmeldeinformationen, aber auch andere Anmeldeinformationsspeicher verwenden. IIS-ManagerAnmeldeinformationen sind besonders dann nützlich, wenn Sie nicht für alle Remotebenutzer
Windows-Konten erstellen möchten oder wenn die Anmeldeinformationen bereits in einem nicht von
Windows genutzten Authentifizierungssystem gespeichert sind und Sie nur diesen einen Speicher
verwenden möchten.
Der IIS-Manager unterstützt die Remoteverwaltung über HTTPS-Verbindungen, die von einer Firewall
nicht behindert werden. Dadurch wird eine lokale Verwaltung bzw. eine Remoteverwaltung möglich, die
nicht auf DCOM (Distributed Component Object Model) und auch nicht darauf angewiesen ist, dass
andere administrative Ports der Firewall geöffnet werden. Bei IIS 6.0 geschah der Remotezugriff auf die
Verwaltungskonsole über MMC und er war immer aktiv. Bei IIS 7.0 ist dies anders. Hier ist die Remoteverwaltung über den IIS-Manager standardmäßig deaktiviert und muss explizit aktiviert werden. Damit
die Remoteverwaltung von IIS 7.0 möglich ist, muss auf dem Servercomputer der Webverwaltungsdienst
(WMSvc, Web Management Service) installiert sein. Außerdem müssen die Remoteverbindungen zu
diesem Dienst aktiviert sein. WMSvc ist ein Windows-Dienst, der die Möglichkeit bietet, IIS 7.0-Sites
und -Anwendungen mit Hilfe des IIS-Managers remote zu verwalten. Die Remotearchitektur des IISManagers ist in Abbildung 1.5 dargestellt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Welche Neuerungen bietet IIS 7.0?
13
Abbildung 1.5 Die Remotearchitektur des IIS-Managers
Der IIS 7.0-Manager ist anpassbar und erweiterbar. Er besitzt eine eigene Konfigurationsdatei namens
administration.config, mit der es möglich ist, dem Tool eine benutzerdefinierte Funktionalität hinzuzufügen. Alle hinzugefügten Verwaltungs-Plug-Ins werden in das Tool integriert und zusammen mit
den IIS- und ASP.NET-Features aufgeführt.
Hinweis Um weitere Informationen zum IIS-Manager zu erhalten, lesen Sie bitte das sechste Kapitel, »Verwenden
von IIS-Manager«. Weitere Informationen zu Appcmd.exe, WMI und der Microsoft.Web.Administration-API gibt es im
siebten Kapitel.
Diagnose
IIS 7.0 führt wesentliche Verbesserungen der Diagnose und Behebung von Problemen ein, die durch
Websites und Anwendungen verursacht werden. Sie können Probleme schneller beheben und die Ausfallzeiten von Websites auf ein Mindestmaß reduzieren, wenn Sie die neuen leistungsfähigen Diagnosemöglichkeiten nutzen. Dazu zählen beispielsweise der Zugriff auf Laufzeitinformationen und die
automatische Nachverfolgung fehlgeschlagener Anforderungen. Die in IIS 7.0 neuen Diagnose- und
Problembehandlungsoptionen ermöglichen es Ihnen, Anforderungen, die auf dem Server verarbeitet
werden, in Echtzeit zu verfolgen, und Fehler mit Hilfe eines detaillierten Ablaufverfolgungsprotokolls
automatisch zu erfassen.
Zugriff auf Laufzeitinformationen
IIS 7.0 enthält eine neue API namens RSCA (Runtime State and Control API), die Echtzeitstatusinformationen über Anwendungspools, Arbeitsprozesse, Sites, Anwendungsdomänen und laufende
Anforderungen zur Verfügung stellt.
Die RSCA wurde entwickelt, damit die Administratoren einen tiefen Einblick in den aktuellen Zustand
der Laufzeitobjekte erhalten, zu denen auch die aktuellen Arbeitsprozesse und die gegenwärtig von
diesen Prozessen ausgeführten Anforderungen zählen. Außerdem soll den Administratoren mit RSCA
die Möglichkeit geboten werden, ein und dieselbe API zur Steuerung dieser Objekte zu verwenden. Mit
RSCA können die Administratoren detaillierte Laufzeitdaten abrufen, die früher nicht verfügbar waren.
Diese Informationen werden über eine native COM-API (Component Object Model) offen gelegt. Die
API selbst ist in einem Wrapper eingeschlossen und wird durch diesen zur Verfügung gestellt. Dabei
kann es sich um den neuen WMI-Provider von IIS 7.0, die Microsoft.Web.Administration-API, das
Befehlszeilenverwaltungstool Appcmd.exe und den IIS-Manager handeln.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
14 Kapitel 1: Einführung in IIS 7.0
Administratoren, die mit dem IIS-Manager arbeiten, können beispielsweise Laufzeitinformationen
abrufen, die Aufschluss darüber geben, welche Anforderungen gegenwärtig ausgeführt werden und wie
lange dies bereits geschieht, welche URLs von ihnen aufgerufen werden, welche Clients die
Anforderungen einreichten und wie ihr Status ist.
Ablaufverfolgung für Anforderungsfehler
IIS 7.0 produziert für den gesamten Anforderungs- und Antwortpfad detaillierte Ablaufverfolgungsereignisse, so dass Sie eine Anforderung auf ihrem Weg zu IIS, durch die IIS-Anforderungsverarbeitungspipeline, in den Seitencode hinein und aus diesem wieder heraus bis zur Antwort nachverfolgen
können. Mit Hilfe dieser ausführlichen Ablaufverfolgungsereignisse können Sie nicht nur den Verlauf
des Anforderungspfades und alle Informationen zu möglichen, durch eine Anforderung verursachten
Fehlern verstehen, sondern Sie erhalten ebenfalls Daten zur verstrichenen Zeit und zum Debuggen, die
Ihnen helfen, Fehler zu beheben und den Ursachen für ein nicht mehr reagierendes System nachzugehen.
Probleme, wie z.B. eine unzureichende Leistung bei einigen Anforderungen, Authentifizierungsfehler
bei anderen Anforderungen und der Serverfehler 500, sind oft nur schwer zu beheben, wenn Sie die
Spur des jeweiligen Problems nicht nachverfolgen. Hier kann die Ablaufverfolgung für Anforderungsfehler hilfreich sein. Sie wurde entwickelt, um die auf eine Anforderung bezogenen Ablaufverfolgungsereignisse zu puffern und im Falle eines Fehlers auf dem Datenträger in einem Ablaufverfolgungsprotokoll zu speichern. Um die Protokollierung der Ablaufverfolgungsereignisse zu aktivieren, können
Sie IIS 7.0 so konfigurieren, dass, abhängig von der verstrichenen Zeit oder den jeweiligen Antwortfehlercodes, für jede betroffene Anforderung vollständige Ablaufverfolgungsprotokolle im XMLFormat generiert werden.
Die Diagnosemöglichkeiten von IIS 7.0 können erweitert werden, indem beispielsweise neue Ablaufverfolgungsereignisse in benutzerdefinierten Modulen definiert werden.
Hinweis Weitere Informationen zur Diagnose und Problembehandlung erhalten Sie im sechzehnten Kapitel,
»Ablaufverfolgung und Problembehandlung«.
Windows-Prozessaktivierungsdienst
IIS 7.0 stellt einen neuen protokollunabhängigen Windows-Prozessaktivierungsdienst (WAS; Windows
Process Activation Service) zur Verfügung, der ein erweiterter und verallgemeinerter Nachfolger des
Windows-Aktivierungsdienstes von IIS 6.0 ist. Das HTTP-Prozessaktivierungsmodell wurde von IIS
6.0 zusammen mit den Anwendungspools eingeführt. Dieser Dienst wurde für IIS 7.0 erweitert, damit
er nicht mehr nur Webanwendungen zur Verfügung steht. Er kann Anforderungen und Nachrichten über
jedes beliebige Protokoll empfangen und unterstützt die Aktivierung von frei wählbaren ProtokollListenern während des Betriebs. WAS ist nicht nur protokollunabhängig, sondern versorgt auch alle
nachrichtenaktivierten Anwendungen mit einer intelligenten Ressourcenverwaltung, bedarfsorientierten Prozessaktivierung, Zustandsüberwachung und automatischen Fehlererkennung und Wiederherstellung. Die WCF (Windows Communication Foundation) wird mit Protokolladaptern ausgeliefert,
die die WAS-Fähigkeiten nutzen können. Das Nutzen dieser Fähigkeiten kann die Betriebssicherheit
und den Ressourcenverbrauch der WCF-Dienste drastisch verbessern.
Hinweis Weitere Informationen zu WAS und zur Nicht-HTTP-Unterstützung in IIS 7.0 finden Sie im zweiten
Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Grundlegende Verwaltungsaufgaben
15
Anwendungskompatibilität
IIS 7.0 ist kompatibel mit älteren IIS-Versionen. Die meisten bereits vorhandenen ASP-, ASP.NET 1.1und ASP.NET 2.0-Anwendungen sollten unter IIS 7.0 ohne Codeänderungen ausgeführt werden
können, wenn die ISAPI-Kompatibilitätsunterstützung genutzt wird.
Alle bereits vorhandenen ISAPI-Erweiterungen und die meisten ISAPI-Filter funktionieren ebenfalls
weiterhin. ISAPI-Filter, die mit der READ RAW DATA-Benachrichtigung arbeiten, werden jedoch von
IIS 7.0 nicht unterstützt.
Für bereits vorhandene Active Directory-Dienstschnittstellen und WMI-Skripts bietet IIS 7.0 die
gleichen Features wie ältere Versionen. Skripts können die alten Konfigurationsschnittstellen über die
Metabasiskompatibilitätsschicht nutzen.
Hinweis Weitere Informationen zur Anwendungskompatibilität finden Sie im elften Kapitel, »Hosting von
Anwendungsentwicklungsframeworks«.
Grundlegende Verwaltungsaufgaben
Damit ein Webserver beginnen kann, Inhalte bereitzustellen, muss er über eine Grundkonfiguration verfügen: eine Site, eine Anwendung, ein virtuelles Verzeichnis und ein Anwendungspool. IIS 7.0 stellt eine
Standardkonfiguration zur Verfügung. Diese Konfiguration besteht aus der Standardwebsite (Default Web
Site) mit einer Stammanwendung, die dem physikalischen Verzeichnis %SystemDrive%\Inetpub\Wwwroot
zugeordnet ist, und einem Standardanwendungspool namens DefaultAppPool, der die Stammanwendung
enthält.
Sie werden jedoch wahrscheinlich eine eigene Site erstellen, dieser eine Anwendung hinzufügen, der
Anwendung ein virtuelles Verzeichnis hinzufügen, einen neuen Anwendungspool erstellen und diesem
die Anwendung zuordnen wollen. Die folgenden Abschnitte beschreiben, wie diese grundlegenden
Verwaltungsaufgaben mit dem IIS-Manager gelöst werden.
Hinweis Informationen zur Durchführung anderer gebräuchlicher Verwaltungsaufgaben finden Sie in Anhang J,
»Den IIS-Manager für übliche Verwaltungsaufgaben verwenden«.
Um den IIS-Manager aus der Programmgruppe Verwaltung heraus zu starten, rufen Sie den Internetinformationsdienste-Manager auf.
Websites erstellen
Eine Site ist ein Container für Anwendungen und virtuelle Verzeichnisse. Der Zugriff auf eine Site
erfolgt über eindeutige Bindungen. Die Bindung besteht aus dem Bindungsprotokoll und den Bindungsinformationen. Das Bindungsprotokoll definiert das Protokoll, über das der IIS 7.0-Server und ein
Webclient, z.B. ein Browser, miteinander kommunizieren. Die Bindungsinformationen legen die Daten
fest, die für den Zugriff auf die Site verwendet werden. Das Bindungsprotokoll einer Website kann
beispielsweise HTTP oder HTTPs sein, und die Bindungsinformationen sind eine Kombination aus
IP-Adresse, Port und optionalem Hostheader.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
16 Kapitel 1: Einführung in IIS 7.0
Um mit dem IIS-Manager eine Website zu erstellen, gehen Sie wie folgt vor:
1. Erweitern Sie im Bereich Verbindungen den Serverknoten, klicken Sie mit der rechten Maustaste
auf den Knoten Sites, und wählen Sie anschließend Website hinzufügen aus. Das gleichnamige
Dialogfeld erscheint.
2. Geben Sie in das Feld Sitename einen Namen für Ihre Website ein, z.B. www.contoso.com.
3. Möchten Sie einen anderen als den vorgegebenen Anwendungspool zuweisen, klicken Sie auf Auswählen. Wählen Sie anschließend im Dialogfeld Anwendungspool auswählen und dort im Dropdown-Listenfeld Anwendungspool den gewünschten Anwendungspool und klicken Sie auf OK.
4. Geben Sie in das Feld Physikalischer Pfad den physikalischen Pfad des Websiteordners ein oder
wählen Sie diesen Ordner nach einem Klick auf die Durchsuchen-Schaltfläche (...) aus.
Wenn der von Ihnen eingegebene physikalische Pfad auf einen freigegebenen Remoteordner verweist, klicken Sie auf Verbinden als und legen die notwendigen Anmeldeinformationen fest. Wenn
für den Zugriff auf den Pfad keine Anmeldeinformationen erforderlich sind, wählen Sie im Dialogfeld Verbinden als die Option Anwendungsbenutzer (Pass-Through-Authentifizierung).
5. Klicken Sie optional auf Einstellungen testen, um die von Ihnen vorgenommenen Einstellungen zu
überprüfen.
6. Konfigurieren Sie die gewünschten Bindungen für Ihre neue Site:
Wenn Sie für den Websitezugriff HTTPS benutzen, ändern Sie im Dropdown-Listenfeld Typ das
Protokoll. Wählen Sie anstelle von HTTP den Eintrag HTTPS.
Wenn Sie der Site eine statische IP-Adresse fest zuordnen möchten, geben Sie diese in das Feld
IP-Adresse ein. Wenn Sie über keine statische IP-Adresse für die Site verfügen, lassen Sie den
Vorgabewert Keine zugewiesen unverändert.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Grundlegende Verwaltungsaufgaben
17
Wenn Ihre Site eine andere Portnummer als den Standardport 80 verwenden soll, geben Sie
diese Nummer in das Feld Port ein.
Soll Ihre Site einen Hostheader benutzen, geben Sie diesen Hostheadernamen in das Feld Hostname ein. Sie könnten beispielsweise www.contoso.com eingeben.
7. Soll die Website sofort verfügbar sein, aktivieren Sie das Kontrollkästchen Website sofort starten.
8. Klicken Sie auf OK. Die neue Website wird erstellt und erscheint im Bereich Verbindungen.
Anwendungen erstellen
Eine Anwendung ist eine Gruppe von Dateien, die Inhalte oder Dienste über Protokolle, wie z.B. HTTP,
bereitstellen. Bei Erstellung einer Anwendung wird der Anwendungspfad zu einem Teil des URLs.
Eine Site kann viele Anwendungen enthalten, einschließlich der Standardanwendung der Site, die als
Stammanwendung bezeichnet wird. Doch eine Anwendung ist nicht nur einer Site zugeordnet, sondern
auch einem Anwendungspool, der die Anwendung von anderen Anwendungen in anderen Anwendungspools des Servers isoliert.
Um mit dem IIS-Manager eine Anwendung zu erstellen, gehen Sie wie folgt vor:
1. Klicken Sie im Bereich Verbindungen mit der rechten Maustaste auf die Site, in der die neue
Anwendung ausgeführt werden soll. Wählen Sie anschließend Anwendung hinzufügen. Das Dialogfeld Anwendung hinzufügen erscheint.
2. Geben Sie in das Feld Alias einen Wert für den Anwendungs-URL ein, z.B. Werbung. Dieser Wert
wird benutzt, um über einen URL auf die Anwendung zuzugreifen.
3. Möchten Sie einen anderen als den vorgegebenen Anwendungspool zuweisen, klicken Sie auf Auswählen. Wählen Sie anschließend im Dialogfeld Anwendungspool auswählen und dort im Dropdown-Listenfeld Anwendungspool den gewünschten Anwendungspool und klicken Sie auf OK.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
18 Kapitel 1: Einführung in IIS 7.0
4. Geben Sie in das Feld Physikalischer Pfad den physikalischen Pfad des Websiteordners ein oder
wählen Sie diesen Ordner nach einem Klick auf die Durchsuchen-Schaltfläche (...) aus.
Wenn der von Ihnen eingegebene physikalische Pfad auf einen freigegebenen Remoteordner verweist, klicken Sie auf Verbinden als und legen die notwendigen Anmeldeinformationen fest. Wenn
für den Zugriff auf den Pfad keine Anmeldeinformationen erforderlich sind, wählen Sie im Dialogfeld Verbinden als die Option Anwendungsbenutzer (Pass-Through-Authentifizierung).
5. Klicken Sie optional auf Einstellungen testen, um die von Ihnen vorgenommenen Einstellungen zu
überprüfen.
6. Klicken Sie auf OK. Die neue Anwendung wird erstellt und erscheint im Bereich Verbindungen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Grundlegende Verwaltungsaufgaben
19
Virtuelle Verzeichnisse erstellen
Ein virtuelles Verzeichnis ist ein Verzeichnisname (der auch als Pfad bezeichnet wird). Dieses Verzeichnis ist auf dem lokalen Server oder auf einem Remoteserver einem physikalischen Verzeichnis
zugeordnet. Der Name wird zu einem Teil des URLs, und eine von einem Browser ausgehende Anforderung, die sich auf diesen URL bezieht, greift auf die Inhalte im physikalischen Verzeichnis zu, z.B.
auf eine Webseite oder eine Verzeichnisinhaltsliste.
Eine Anwendung kann viele virtuelle Verzeichnisse enthalten. Jede Anwendung muss über ein virtuelles Stammverzeichnis verfügen, das die Anwendung dem physikalischen Verzeichnis zuordnet, das
die Anwendungsinhalte enthält.
Um mit dem IIS-Manager ein virtuelles Verzeichnis zu erstellen, gehen Sie wie folgt vor:
1. Klicken Sie im Bereich Verbindungen mit der rechten Maustaste auf die Site, in der das virtuelle
Verzeichnis erscheinen soll. Wählen Sie anschließend Virtuelles Verzeichnis hinzufügen. Das
gleichnamige Dialogfeld erscheint.
2. Geben Sie in das Feld Alias einen Wert für den URL des virtuellen Verzeichnisses ein, z.B. Download. Dieser Wert wird benutzt, um über einen URL auf das virtuelle Verzeichnis zuzugreifen.
3. Geben Sie in das Feld Physikalischer Pfad den physikalischen Pfad des Websiteordners ein oder
wählen Sie diesen Ordner nach einem Klick auf die Durchsuchen-Schaltfläche (...) aus.
Wenn der von Ihnen eingegebene physikalische Pfad auf einen freigegebenen Remoteordner verweist, klicken Sie auf Verbinden als und legen die notwendigen Anmeldeinformationen fest. Wenn
für den Zugriff auf den Pfad keine Anmeldeinformationen erforderlich sind, wählen Sie im Dialogfeld Verbinden als die Option Anwendungsbenutzer (Pass-Through-Authentifizierung).
4. Klicken Sie optional auf Einstellungen testen, um die von Ihnen vorgenommenen Einstellungen zu
überprüfen.
5. Klicken Sie auf OK. Das neue virtuelle Verzeichnis wird erstellt und erscheint im Bereich Verbindungen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
20 Kapitel 1: Einführung in IIS 7.0
Anwendungspools erstellen
Ein Anwendungspool ist eine Gruppe von Anwendungen, für die ein Arbeitsprozess oder eine Gruppe
von Arbeitsprozessen zuständig ist. Anwendungspools legen Grenzen für die in ihnen enthaltenen
Anwendungen fest, so dass Anwendungen, die in verschiedenen Anwendungspools ausgeführt werden,
voneinander isoliert sind.
Bei IIS 7.0 können ASP.NET-Anforderungen innerhalb von Anwendungspools in einem von zwei
verwalteten Pipelinemodi ausgeführt werden: Integriert oder Klassisch. Im integrierten Modus verwendet der Server die vereinheitlichte (oder integrierte) Anforderungsverarbeitungspipeline, um eine
Anforderung zu verarbeiten. Im klassischen Modus verarbeitet der Server die ASP.NET-Anforderungen
mit Hilfe von zwei unterschiedlichen IIS- und ASP.NET-Pipelines, und zwar so, als würde die entsprechende Anwendung unter IIS 6.0 ausgeführt werden.
Um mit dem IIS-Manager einen Anwendungspool zu erstellen, gehen Sie wie folgt vor:
1. Erweitern Sie im Bereich Verbindungen den Serverknoten und klicken Sie mit der rechten Maustaste auf den Knoten Anwendungspools. Wählen Sie anschließend Anwendungspool hinzufügen
aus. Das gleichnamige Dialogfeld erscheint.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Grundlegende Verwaltungsaufgaben
21
2. Geben Sie in das Feld Name einen beschreibenden Namen für den Anwendungspool ein, z.B.
Werbung.
3. Wählen Sie im Dropdown-Listenfeld .NET Framework-Version die Version des .NET Frameworks,
die von Ihren verwalteten Anwendungen, Modulen und Handlern benötigt wird. Wenn die Anwendungen, die innerhalb dieses Anwendungspools ausgeführt werden, auf das .NET Framework nicht
angewiesen sind, wählen Sie Kein verwalteter Code.
4. Im Dropdown-Listenfeld Verwalteter Pipelinemodus können Sie eine der folgenden Optionen auswählen:
Integriert
Wählen Sie diese Option, wenn Sie die integrierte IIS- und ASP.NET-Anforderungsverarbeitungspipeline verwenden möchten. Dies ist der Standardmodus.
Klassisch
Wählen Sie diese Option, wenn Sie die IIS- und ASP.NET-Anforderungsverarbeitungsmodi separat verwenden möchten.
5. Das Kontrollkästchen Anwendungspool sofort starten ist standardmäßig aktiviert. Wenn Sie nicht
möchten, dass der Anwendungspool gestartet wird, deaktivieren Sie das Kontrollkästchen.
6. Klicken Sie auf OK. Der neue Anwendungspool wird erstellt und erscheint in der Anwendungspoolliste.
Einem Anwendungspool eine Anwendung zuweisen
Sie können eine Anwendung einem eigenen Anwendungspool zuweisen, wenn Sie diese Anwendung
von anderen auf dem Server ausgeführten Anwendungen isolieren möchten. Sie können einem Anwendungspool mehrere Anwendungen zuweisen, wenn diese dieselben Laufzeitkonfigurationseinstellungen
verwenden, z.B. dieselben Arbeitsprozesseinstellungen oder dieselbe ASP.NET-Version.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
22 Kapitel 1: Einführung in IIS 7.0
Um mit dem IIS-Manager eine Anwendung einem Anwendungspool zuzuweisen, gehen Sie wie folgt
vor:
1. Klicken Sie im Bereich Verbindungen mit der rechten Maustaste auf die Anwendung, die Sie einem
anderen Anwendungspool zuordnen möchten und wählen Sie Anwendung verwalten und dann
Erweiterte Einstellungen.
2. Markieren Sie auf der Seite Erweiterte Einstellungen den Eintrag Anwendungspool und klicken Sie
auf die Durchsuchen-Schaltfläche (...). Das Dialogfeld Anwendungspool auswählen erscheint.
3. Wählen Sie den Anwendungspool, in dem die Anwendung ausgeführt werden soll.
4. Klicken Sie auf OK. Die Anwendung wird daraufhin dem Anwendungspool zugeordnet.
IIS 7.0 Features unter Windows Server 2008
und Windows Vista
IIS 7.0 ist ein Bestandteil von Windows Server 2008 und Windows Vista. Die Verfügbarkeit der IIS 7.0Features variiert jedoch zwischen Windows Server 2008 und den verschiedenen Editionen von
Windows Vista.
Windows Server 2008 enthält alle IIS 7.0-Features. IIS 7.0 ist in allen Editionen von Windows Server
2008 verfügbar. Zwischen diesen Editionen gibt es keine Unterschiede hinsichtlich der IIS-Funktionalität. IIS 7.0 steht sowohl auf der 32-Bit- als auch auf der 64-Bit-Plattform zur Verfügung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0 Features unter Windows Server 2008 und Windows Vista
23
IIS 7.0 wird auch von Windows Server 2008-Grund- oder Kerninstallationen unterstützt. Wenn Sie IIS
7.0 in Verbindung mit solch einem Kernserver verwenden, erhalten Sie einen Webserver, der auf ein
Serverbetriebssystem aufsetzt, das nur die grundlegendsten Funktionen bietet. Es beansprucht weniger
Festplattenkapazität und weniger Arbeitsspeicher, bietet eine kleinere Angriffsfläche und verursacht
einen geringeren Wartungsaufwand. Wird IIS 7.0 auf einem Windows Server 2008-Kernserver installiert,
weist es Unterschiede zu einer IIS 7.0-Installation auf einem gewöhnlichen Windows Server 2008-Server
auf. Beim Kernserver gibt es keine Windows-Shell und auch kein .NET Framework. Dies bedeutet, dass
beim Kernserver der IIS-Manager nicht verfügbar ist und Sie ASP.NET-Module, -Handler und -Anwendungen nicht ausführen lassen können. Sie können jedoch ASP-, PHP-, CGI- und andere nicht verwaltete
Anwendungen ausführen lassen, wenn IIS 7.0 auf einem Kernserver installiert ist.
Hinweis Weitere Informationen zur Installation von IIS 7.0 auf einem Kernserver erhalten Sie im fünften Kapitel,
»Installieren von IIS 7.0«.
Bei den Windows Vista-Editionen hält IIS 7.0 für die Webentwickler eine Webplattform zum
Entwickeln und Testen von IIS 7.0-Webanwendungen bereit. Es ermöglicht außerdem die Prozessaktivierung und stellt WCF-Anwendungen (Microsoft Windows Communication Foundation) eine
Verwaltungsinfrastruktur zur Verfügung. Diese Infrastruktur wird vom Windows-Prozessaktivierungsdienst bereitgestellt.
Die in den Windows Vista-Installationen verfügbaren IIS 7.0-Features sind wie folgt von der jeweiligen
Windows Vista-Edition abhängig:
Bei der Windows Vista-Edition Home Basic richten die IIS 7.0-Komponenten lediglich eine
unterstützende Infrastruktur für WCF ein, stellen aber keinen Webserver zur Verfügung, der mit
statischen Inhalten, klassischem ASP oder ASP.NET umgehen kann.
Bei Windows Vista Home Premium sind die meisten IIS 7.0-Webserverfeatures verfügbar, die für
die Websiteentwicklung benötigt werden. Der FTP-Server, die erweiterte Webauthentifizierung und
-autorisierung sowie die Remoteverwaltung sind jedoch nicht verfügbar.
Bei den Windows Vista-Editionen Business, Enterprise und Ultimate sind alle IIS 7.0-Features mit
Ausnahme der Remoteverwaltung verfügbar.
Tabelle 1.1 listet die in Windows Server 2008 und den Editionen von Windows Vista enthaltenen
Features auf. Innerhalb der Tabelle sind die Features in die folgenden Kategorien unterteilt:
Allgemeine HTTP-Features
Anwendungsentwicklungsfeatures
Statusüberwachungs- und Diagnosefeatures
Sicherheitsfeatures
Leistungsfeatures
Verwaltungstools
Windows-Prozessaktivierungsdienst
FTP-Publishingdienstfeatures (File Transfer Protocol)
Maximale Anzahl gleichzeitiger Verbindungen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
24 Kapitel 1: Einführung in IIS 7.0
Innerhalb jeder Kategorie ist die Featureverfügbarkeit wie folgt beschrieben:
Standard Das Feature ist während der Installation von IIS 7.0 standardmäßig ausgewählt. Sie
können entscheiden, das Feature nicht zu installieren, wenn Sie es nicht benötigen.
Verfügbar Das Feature ist während der Installation von IIS 7.0 verfügbar, aber nicht
standardmäßig ausgewählt. Sie können das Feature installieren, wenn Sie es benötigen.
Nicht verfügbar Das Feature ist während der Installation von IIS 7.0 nicht verfügbar und kann
somit nicht installiert werden.
Tabelle 1.1 IIS 7.0 Features unter Windows Server 2008 und Windows Vista
Featurename
Windows Server
2008-Editionen
Windows Vista-Editionen
Ultimate, Business
und Enterprise
Home Premium Home Basic
Allgemeine HTTP-Features
Statischer Inhalt
Standard
Standard
Standard
Nicht verfügbar
Standarddokument
Standard
Standard
Standard
Nicht verfügbar
Verzeichnis durchsuchen
Standard
Standard
Standard
Nicht verfügbar
HTTP-Fehler
Standard
Standard
Standard
Standard
HTTP-Umleitung
Standard
Standard
Standard
Standard
ASP.NET
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
.NET-Erweiterbarkeit
Standard
Standard
Standard
Standard
ASP
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
CGI
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
ISAPI-Erweiterungen
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
ISAPI-Filter
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
Serverseitiges Include
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
Anwendungsentwicklungsfeatures
Statusüberwachungs- und Diagnosefeatures
HTTP-Protokollierung
Standard
Standard
Standard
Standard
Protokollierungstools
Standard
Standard
Standard
Standard
Anforderungsüberwachung
Standard
Standard
Standard
Standard
Ablaufverfolgung
Standard
Standard
Standard
Standard
Benutzerdefinierte Protokollierung
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
ODBC-Protokollierung
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0 Features unter Windows Server 2008 und Windows Vista
25
Tabelle 1.1 IIS 7.0 Features unter Windows Server 2008 und Windows Vista (Fortsetzung)
Featurename
Windows Server
2008-Editionen
Windows Vista-Editionen
Ultimate, Business
und Enterprise
Home Premium Home Basic
Sicherheitsfeatures
Standardauthentifizierung
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
Windows-Authentifizierung
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
Digest Authentication
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
Authentifizierung über Clientzertifikatzuordnung
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
Authentifizierung über IIS-Clientzertifikatzuordnung
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
URL-Autorisierung
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Anforderungsfilterung
Verfügbar
Verfügbar
Verfügbar
Verfügbar
IP- und Domäneneinschränkungen
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Komprimierung statischer Inhalte
Standard
Standard
Standard
Standard
Komprimierung dynamischer Inhalte
Verfügbar
Verfügbar
Verfügbar
Verfügbar
IIS-Verwaltungskonsole (IIS-Manager)
Standard
Standard
Standard
Nicht verfügbar
IIS-Verwaltungsskripts und -tools
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Verwaltungsdienst
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
Kompatibilität mit der IIS 6.0-Verwaltung
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Kompatibilität mit der IIS-Metabasis
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Kompatibilität mit WMI für IIS 6.0
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
IIS 6.0-Skripttools
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
IIS 6.0-Verwaltungskonsole
Verfügbar
Verfügbar
Verfügbar
Nicht verfügbar
Performance Features
Verwaltungstools
Windows-Prozessaktivierungsdienstfeatures
Prozessmodell
Standard
Standard
Standard
Standard
.NET-Umgebung
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Konfigurations-APIs
Verfügbar
Verfügbar
Verfügbar
Verfügbar
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
26 Kapitel 1: Einführung in IIS 7.0
Tabelle 1.1 IIS 7.0 Features unter Windows Server 2008 und Windows Vista (Fortsetzung)
Featurename
Windows Server
2008-Editionen
Windows Vista-Editionen
Ultimate, Business
und Enterprise
Home Premium Home Basic
FTP-Publishingdienstfeatures (File Transfer Protocol)
FTP-Server
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
FTP-Verwaltungskonsole
Verfügbar
Verfügbar
Nicht verfügbar
Nicht verfügbar
10
3
3
Maximale Anzahl gleichzeitiger Verbindungen
Maximale Anzahl gleichzeitiger
Verbindungen
Unbegrenzt
Zusammenfassung
IIS 7.0 wurde von Grund auf neu gestaltet und aufgebaut. IIS 7.0 bietet gegenüber seinen Vorgängern
wesentliche Vorteile und sorgt dafür, dass die Entwicklung, Bereitstellung, Konfiguration und Verwaltung von Webanwendungen und der Webinfrastruktur einfacher und effizienter als jemals zuvor ist.
IIS 7.0 bietet viele neue leistungsfähige Features und Funktionen an, die im Folgenden aufgeführt sind:
Modularität Die IIS 7.0-Architektur ist vollständig aus einzelnen Komponenten
zusammengesetzt. Auf diese Weise können die Administratoren festlegen, welche Features auf dem
Webserver installiert und ausgeführt werden sollen. Mit den mehr als vierzig Featuremodulen, die
unabhängig voneinander installiert werden können, ist es den Administratoren möglich, die potentielle Angriffsfläche zu verkleinern und die Speicheranforderungen des Servers zu verringern.
Erweiterbarkeit Die grundlegenden Webserverfeatures von IIS 7.0 wurden mit einem neuen Satz
reichhaltiger öffentlicher APIs erstellt, die auch von Entwicklern verwendet werden können, um
einem Webserver Funktionalität hinzuzufügen oder diese zu erweitern bzw. zu ersetzen. Diese APIs
sind als native Win32-APIs sowie als verwaltete .NET Framework-APIs verfügbar. Entwickler
können außerdem die IIS-Konfiguration erweitern und IIS-Manager-Erweiterungen erstellen, die
sich nahtlos in die Verwaltungskonsole einfügen lassen.
Vereinheitlichtes verteiltes Konfigurationssystem IIS 7.0 bietet ein vereinheitlichtes, verteiltes
und dateibasiertes Konfigurationssystem zum Speichern aller IIS- und ASP.NET-Einstellungen an.
Das Speichern geschieht in einem XML-Klartextformat und innerhalb einer Konfigurationsdateihierarchie, wo die Konfigurationsdateien zusammen mit den Website- und Anwendungsinhalten
verwahrt werden. Dieses Konfigurationssystem ermöglicht die gemeinsame xcopy-Bereitstellung
von Konfigurationen, Anwendungscode und Inhalten, und es vereinfacht die gemeinsame Nutzung
der Konfiguration innerhalb einer Webfarm.
Neue Verwaltungstools IIS 7.0 bietet Verwaltungstools an, die die Verwaltung der Webinfrastruktur vereinfachen und mit denen die Administratoren die administrative Kontrolle über Sites
und Anwendungen an Entwickler und Inhaltsbesitzer delegieren können. IIS 7.0 enthält eine neue
Verwaltungskonsole mit einer grafischen Oberfläche, den IIS-Manager, ein neues Befehlszeilentool, Appcmd.exe, einen neuen WMI-Anbieter für die Automatisierung von Verwaltungsaufgaben
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Weitere Informationen
27
und eine neue verwaltete API. All diese Tools unterstützen die einheitliche und gemeinsame Verwaltung von IIS- und ASP.NET-Einstellungen. Administratoren und Entwickler können ebenfalls
Windows PowerShell für den Skriptzugriff auf Konfigurationsinformationen verwenden. Dieser
Zugriff ist auf der gesamten Webplattform möglich.
Integrierte Diagnose Mit IIS 7.0 können Administratoren und Entwickler Ausfallzeiten verringern, wenn sie die neuen Möglichkeiten zur Diagnose und Problembehandlung nutzen. IIS 7.0
legt Laufzeitdiagnoseinformationen offen, wie z.B. Daten über die gegenwärtig ausgeführten
Anforderungen. IIS 7.0 kann außerdem so konfiguriert werden, dass es automatisch detaillierte
Ablaufverfolgungsereignisse für fehlgeschlagene Anforderungen protokolliert, die sich auf
fehlerhafte Websites und Anwendungen beziehen.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Weitere Informationen zur IIS 7.0-Anforderungsverarbeitung finden Sie im zweiten Kapitel,
»Grundlagen der IIS 7.0-Architektur«.
Weitere Informationen zur Modularität finden Sie im dritten Kapitel, »Verstehen der modularen
Basis«.
Weitere Informationen zur IIS 7.0-Erweiterbarkeit finden Sie im zwölften Kapitel, »Verwalten von
Webservermodulen«, sowie im dreizehnten Kapitel, »Konfigurations- und Benutzeroberflächenerweiterungen verwalten«.
Um weitere Informationen zum vereinheitlichten, verteilten Konfigurationssystem zu erhalten,
lesen Sie bitte das vierte Kapitel, »Verstehen des Konfigurationssystems«.
Weitere Informationen zu den Verwaltungstools finden Sie im sechsten Kapitel, »Verwenden von
IIS-Manager«, und im siebten Kapitel, »Verwenden von Befehlszeilentools«.
Weitere Informationen zu den Problembehandlungsmöglichkeiten von IIS 7.0 und deren Verwendung finden Sie im sechzehnten Kapitel, »Ablaufverfolgung und Problembehandlung«, und im
siebzehnten Kapitel, »Optimieren der Leistung«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
29
K A P I T E L
2
Grundlagen der IIS 7.0-Architektur
Inhalt dieses Kapitels:
Übersicht über die IIS 7.0-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0-Kernkomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anforderungsverarbeitung im Anwendungspool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verarbeitung von Nicht-HTTP-Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
33
42
52
54
55
Dieses Kapitel wirft einen Blick auf die gesamte Anforderungsverarbeitungsarchitektur von IIS 7.0.
Verglichen mit seinen Vorgängern wurde IIS 7.0 komplett überarbeitet. Wie bereits im vorherigen
Kapitel erwähnt wurde, gibt es grundlegende, auf die Architektur bezogene Neuerungen, die nachfolgend beschrieben sind:
Modularität Die Grundfunktionalität des IIS 7.0-Webservers ist mit Hilfe von mehr als vierzig
integrierten systemeigenen und verwalteten Modulen implementiert. Da die ASP.NET-Laufzeit in
IIS integriert ist, können sowohl systemeigene als auch verwaltete Module Anforderungen
bedienen, die sich auf jeden beliebigen Inhaltstypen beziehen. Wir werden uns später in diesem
Kapitel mit der integrierten Anforderungsverarbeitungspipeline von IIS 7.0 beschäftigen.
Erweiterbarkeit IIS 7.0 ist vollständig erweiterbar und stellt einen Satz öffentlicher APIs zur
Verfügung, mit deren Hilfe Entwickler die Features und Funktionalität von IIS erweitern können.
Die Kernwebservermodule von IIS 7.0 wurden unter Verwendung neuer öffentlicher APIs erstellt,
die als native Win32-APIs und als verwaltete .NET-APIs verfügbar sind. Doch die Entwickler
können nicht nur den Webserver, sondern auch die IIS-Konfiguration erweitern. Darüber hinaus
können sie Erweiterungen für den IIS-Manager erstellen. Die gesamte IIS 7.0-Erweiterbarkeit ist im
zwölften Kapitel, »Verwalten von Webservermodulen«, sowie im dreizehnten Kapitel,
»Konfigurations- und Benutzeroberflächenerweiterungen verwalten«, beschrieben.
Konfigurationssystem Bei IIS 7 sind die IIS- und ASP.NET-Konfiguration vereinheitlicht. IIS 7.0
speichert alle IIS- und ASP.NET-Einstellungen gemeinsam in XML-Dateien, die zusammen eine
verteilte Konfigurationshierarchie bilden und auch als Konfigurationsspeicher bezeichnet werden.
Die Einstellungen selbst werden im Klartextformat gespeichert. Diese Hierarchie ersetzt den alten
Konfigurationsspeicher, die Metabasis. Später in diesem Kapitel werden wir einen Blick darauf
werfen, wie der Konfigurationsspeicher im Rahmen der Anforderungsverarbeitung genutzt wird.
Die IIS 7.0-Konfigurationshierarchie, das Konfigurationsschema und die Konfigurationseinstellungen werden außerdem ausführlich im vierten Kapitel, »Verstehen des Konfigurationssystems.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
30 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Verwaltungshilfsmittel IIS 7.0 stellt verschiedene Verwaltungstools zur Verfügung, mit denen es
möglich ist, IIS- und ASP.NET-Einstellungen gemeinsam zu verwalten. Sie ermöglichen außerdem
das Delegieren der administrativen Kontrolle an Benutzer, die für den Servercomputer über keine
administrativen Rechte verfügen. IIS 7.0 enthält eine neue Verwaltungskonsole mit einer grafischen
Oberfläche, den IIS-Manager, ein neues Befehlszeilentool, Appcmd.exe, einen neuen WMIAnbieter für die Automatisierung von Verwaltungsaufgaben und eine neue verwaltete API. Die
Verwaltungstools sind ausführlich im sechsten Kapitel, »Verwenden von IIS-Manager«, und im
siebten Kapitel, »Verwenden von Befehlszeilentools«, beschrieben.
Diagnose und Problembehandlung Die Diagnose- und Problembehandlungsmöglichkeiten von
IIS 7.0 tragen dazu bei, dass Administratoren und Entwickler die Effizienz verbessern und die
Ausfallzeiten verringern können. Da IIS 7.0 außerdem sein Prozessmodell für Nicht-HTTPAnwendungen und -Dienste offen legt, können auch diese die Diagnosemöglichkeiten nutzen. Wir
werden uns später in diesem Kapitel mit der Verarbeitung von Nicht-HTTP-Anforderungen in IIS
7.0 beschäftigen. Die Diagnose- und Problembehandlungsmöglichkeiten von IIS 7.0 werden im
sechzehnten Kapitel, »Ablaufverfolgung und Problembehandlung«, ausführlich erläutert.
Um die Auswirkungen dieser und anderer Architekturänderungen zu verstehen, müssen wir wissen, wie
IIS 7.0 Anforderungen verarbeitet. Der Schwerpunkt dieses Kapitels ist deshalb die gesamte Anforderungsverarbeitungsarchitektur von IIS 7.0. Wir werden mit den IIS 7.0-Kernkomponenten beginnen
und uns mit deren Rolle bei der Verarbeitung einer HTTP-Anforderung beschäftigen. Danach werfen
wir einen Blick darauf, wie eine Anforderung ausgeführt wird, wobei wir uns auf die integrierte Anforderungsverarbeitungspipeline und die Modularität des Kernwebservers konzentrieren. Schließlich
erörtern wir die Nicht-HTTP-Anforderungsverarbeitung in IIS 7.0.
Übersicht über die IIS 7.0-Architektur
IIS 7.0 besteht aus mehreren Kernkomponenten, die zusammenarbeiten, um HTTP-Clientanforderungen zu verarbeiten. Bei der Anforderungsverarbeitung hat jede Komponente bestimmte Aufgaben,
wie z.B. das Entgegennehmen von an den Server gerichteten Anforderungen, die Aktivierung und
Verwaltung von Prozessen und das Ausführen von Anforderungen. Abbildung 2.1 zeigt die IIS 7.0Architektur und -Kernkomponenten.
Die in Abbildung 2.1 dargestellten Kernkomponenten sind nachfolgend beschrieben:
HTTP-Protokollstapel (HTTP.sys) HTTP.sys ist der im Kernelmodus arbeitende Protokolllistener, der darauf achtet, ob HTTP- und HTTPS-Anforderungen eingehen.
W3SVC (World Wide Web Service Publishing Service) W3SVC ist ein HTTP-ListenerAdapter. Er kommuniziert mit HTTP.sys und dem Windows-Prozessaktivierungsdienst und versorgt
HTTP.sys mit Konfigurationsinformationen.
Windows-Prozessaktivierungsdienst (WAS oder WPAS; Windows Process Activation Service)
Der WAS-Dienst ermöglicht die Verwaltung von Arbeitsprozessen. Er startet und beendet Anwendungspools und sorgt für deren Wiederverwendung. Darüber hinaus überwacht er zur Laufzeit den
Zustand von Arbeitsprozessen. Außerdem ruft er Konfigurationsinformationen aus dem Konfigurationsspeicher ab.
Konfigurationsspeicher Der Konfigurationsspeicher ist eine aus verteilten XML-Dateien
bestehende Hierarchie, die sowohl IIS- als auch ASP.NET-Einstellungen speichert. Serverweit
gültige IIS-Konfigurationsinformationen sind in der globalen IIS-Konfigurationsdatei
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über die IIS 7.0-Architektur
31
applicationHost.config enthalten, die sich an oberster Stelle der Hierarchie befindet. Die globalen
.NET Framework-Konfigurationsdateien, machine.config und die web.config-Stammdatei, befinden
sich ebenfalls ganz oben in der Hierarchie.
Arbeitsprozess (w3wp.exe) W3wp.exe ist ein dauerhaft ausgeführter Prozess, der Anforderungen
verarbeitet und Antworten generiert. Die Anforderungen werden innerhalb eines Arbeitsprozesses
ausgeführt. Mehrere Arbeitsprozesse können gleichzeitig laufen. Für die Ausführung von Arbeitsprozessen stehen zwei Modi zur Verfügung: der integrierte .NET-Modus, bei dem die integrierte
IIS- und ASP.NET-Anforderungsverarbeitungspipeline verwendet wird, und der klassische Modus
(der von IIS 6.0 verwendet wird), bei dem die IIS- und die ASP.NET-Anforderungsverarbeitung
nicht miteinander verflochten sind. Diese Modi werden später in diesem Kapitel im Abschnitt
»Anforderungsverarbeitung im Anwendungspool« erörtert.
Abbildung 2.1 IIS 7.0-Architektur
Die IIS 7.0-Kernkomponenten haben wichtige Funktionen bei der Verarbeitung von HTTP-Anforderungen. Bevor wir uns jedoch damit beschäftigen, welche Rolle die IIS 7.0-Kernkomponenten in der
Anforderungsverarbeitung spielen, müssen wir wissen, wie der Server bestimmt, welcher Arbeitsprozess die jeweilige Anforderung ausführen soll.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
32 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Wenn beim Server eine von einem Client stammende HTTP-Anforderung eingeht, wird der Pfad im
Anforderungs-URL geparst, um die Site und Anwendung zu ermitteln, auf die sich die Anforderung
bezieht. Jede Anwendung wird innerhalb eines Anwendungspools ausgeführt. Für einen Anwendungspool können mehrere Arbeitsprozesse zuständig sein.
Wenn IIS 7.0 eine auf eine Anwendung bezogene Anforderung empfängt, ordnet IIS diese einem
Arbeitsprozess zu, der für den Anwendungspool, in dem sich die Anwendung befindet, verantwortlich
ist. Wenn es sich um die erste Anforderung für diesen Anwendungspool handelt, wird der Arbeitsprozess gestartet, und die Serverfunktionalität wird in den Prozess geladen. Danach wird die Anforderung an den Arbeitsprozess übergeben. Der Arbeitsprozess führt die Anforderung aus, und die
resultierende HTTP-Antwort wird an den Client zurückgegeben.
Abbildung 2.2 zeigt die gesamte HTTP-Anforderungsverarbeitung und die Interaktion zwischen den
IIS 7.0-Komponenten.
Abbildung 2.2 HTTP-Anforderungsverarbeitung unter IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Kernkomponenten
33
Bei IIS 7.0 setzt sich die HTTP-Anforderungsverarbeitung, wie in Abbildung 2.2 gezeigt, aus den
folgenden Schritten zusammen:
1. Eine von einem Client stammende HTTP-Anforderung geht beim Server ein. HTTP.sys fängt die
Anforderung ab.
2. HTTP.sys prüft, ob es über die Konfigurationsinformationen verfügt, die für die Anwendung gelten,
an die die Anforderung gerichtet ist.
Wenn HTTP.sys über diese Konfigurationsinformationen verfügt, leitet es die Anforderung an
den entsprechenden Arbeitsprozess weiter (siehe Schritt 7).
Ist HTTP.sys nicht im Besitz der Konfigurationsinformationen, kontaktiert es den Dienst
W3SVC, der die Informationsanforderung an WAS weiterleitet.
3. WAS ruft die Konfigurationsinformationen von der globalen IIS-Konfigurationsdatei applicationHost.config ab.
4. WAS prüft innerhalb des Anwendungspools, an den sich die Anforderung richtet, ob der Arbeitsprozess vorhanden ist. Ist der Arbeitsprozess nicht vorhanden, startet WAS diesen für den Anwendungspool.
5. WAS übergibt die Konfiguration, die in Form von Anwendungspool- und Anwendungskonfigurationseinstellungen vorliegt, an W3SVC.
6. W3SVC verwendet die von WAS empfangene Konfiguration, um HTTP.sys zu konfigurieren und zu
aktualisieren.
7. HTTP.sys leitet die Anforderung an den Arbeitsprozess weiter.
8. Der Arbeitsprozess initiiert eine Anforderungsverarbeitungspipeline für die Ausführung der
Anforderung. Eine Anforderungsverarbeitungspipeline ist eine feste Folge von Komponenten, die
bestimmte Aufgaben bei der Verarbeitung einer Anforderung haben. Am Ende dieser Verarbeitung
wird eine Antwort generiert und an HTTP.sys zurückgegeben. Wir werden die Anforderungsverarbeitungspipeline später in diesem Kapitel im Abschnitt »Anforderungsverarbeitung im Anwendungspool« erörtern.
9. HTTP.sys sendet eine Antwort zum Client.
IIS 7.0-Kernkomponenten
In diesem Abschnitt untersuchen wir die IIS 7.0-Kernkomponenten und deren Aufgaben bei der
Prozessaktivierung und Anforderungsverarbeitung.
HTTP.sys
HTTP.sys ist der Protokolllistener, der darauf achtet, ob HTTP- und HTTPS-Anforderungen eingehen.
HTTP.sys wurde mit IIS 6.0 eingeführt und diente dort als spezifischer Protokolllistener für HTTPAnforderungen. Bei IIS 7.0 unterstützt HTTP.sys ebenfalls SSL (Secure Sockets Layer). Bei IIS 6.0 war
Lsass.exe dafür zuständig.
HTTP.sys ist ein im Kernelmodus arbeitender Gerätetreiber für den HTTP-Protokollstapel. Er ist
Bestandteil des Netzwerksubsystems von Windows-Betriebssystemen. Seit IIS 6.0 ersetzt dieser
Kernelmodustreiber die Windows Sockets-API (Winsock). Dabei handelte es sich um eine im Benutzermodus arbeitende Komponente, die von älteren IIS-Versionen verwendet wurde, um HTTP-Anforderungen zu empfangen und HTTP-Antworten zu versenden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
34 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Wenn ein Clientbrowser eine Webseite von einer Site anfordert, die sich auf einem IIS 7.0-Server
befindet, fängt HTTP.sys die Anforderung über die entsprechende Sitebindung des Servercomputers ab
und übergibt sie dem Arbeitsprozess zur Verarbeitung. Nachdem die Anforderung verarbeitet wurde,
gibt HTTP.sys eine Antwort an den Clientbrowser zurück.
Abgesehen vom Abfangen und Zurückgeben von HTTP-Anforderungen ist HTTP.sys auch für die
folgenden Aufgaben verantwortlich:
Vorverarbeitung und Sicherheitsfilterung der eingehenden HTTP-Anforderungen
Einreihen der HTTP-Anforderungen in Warteschlangen (für die Anwendungspools)
Zwischenspeichern der ausgehenden HTTP-Antworten
Abbildung 2.3 zeigt die Anforderungswarteschlangen und den Antwortcache von HTTP.sys.
Abbildung 2.3 HTTP-Anforderungswarteschlange und -Antwortcache
Eine Anforderungswarteschlange und ein Antwortcache, die von einem kernelbasierten HTTP-Listener
verwaltet werden, verringern den Overhead, der mit einem Kontextwechsel zum Benutzermodus
einhergeht, und führen wie folgt zu Leistungsverbesserungen:
Anforderungs-Queuing im Kernelmodus Anforderungen führen zu einem geringeren Overhead
beim Kontextwechsel, da der Kernel Anforderungen direkt an den richtigen Arbeitsprozess
weiterleitet. Wenn kein Arbeitsprozess verfügbar ist, um eine Anforderung entgegenzunehmen,
verwahrt die Kernelmodus-Anforderungswarteschlange die Anforderung, bis ein Arbeitsprozess
diese aufnimmt.
Caching im Kernelmodus Anforderungen, die sich auf zwischengespeicherte Antworten
beziehen, werden ohne Wechsel zum Benutzermodus bedient.
HTTP.sys verwaltet eine Anforderungswarteschlange pro Arbeitsprozess. Es sendet die empfangenen
HTTP-Anforderungen zu der Warteschlange des Arbeitsprozesses, der für den Anwendungspool
zuständig ist, in dem sich die jeweils angeforderte Anwendung befindet. HTTP.sys legt für jede
Anwendung einen Eintrag in der Routingtabelle des URI-Namespace an. Mit den Daten der Routingtabelle wird ermittelt, welcher Anwendungspool auf Anforderungen aus welchen Teilen des Namespace antwortet. Jede Anforderungswarteschlange ist einem Anwendungspool zugeordnet. Innerhalb
von HTTP.sys ist jeder Anwendungspool einer Anforderungswarteschlange sowie einem oder mehreren
Arbeitsprozessen zugeordnet.
Wenn eine fehlerhafte Anwendung einen Arbeitsprozessfehler verursacht, erfolgt keine Unterbrechung
der Verarbeitung. Der Fehler ist für den Endnutzer auch nicht erkennbar, da der Kernel die Anforderungen in Warteschlangen einreiht, während der WAS-Dienst einen neuen Arbeitsprozess für diesen
Anwendungspool startet. Wenn der WAS-Dienst einen fehlerhaften Arbeitsprozess entdeckt, startet er
einen neuen Arbeitsprozess, sofern ausstehende Anforderungen darauf warten, bedient zu werden.
Obwohl die im Benutzermodus stattfindende Anforderungsverarbeitung temporär unterbrochen wird,
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Kernkomponenten
35
bemerkt der Benutzer den Fehler nicht, da die TCP/IP-Verbindungen aufrecht erhalten und Anforderungen auch weiterhin in den Warteschlangen abgelegt und verarbeitet werden. Nur die Anforderungen,
die in einem Arbeitsprozess ausgeführt werden, wenn bei diesem ein Fehler auftritt, führen dazu, dass
die entsprechenden Benutzer eine Fehlermeldung erhalten. Die Anforderungen, die bis zu diesem
Zeitpunkt noch nicht verarbeitet wurden, werden an den neuen Arbeitsprozess weitergeleitet.
HTTP.sys verarbeitet empfangene Anforderungen ausschließlich, indem es eine gespeicherte Antwort
aus seinem internen Zwischenspeicher abruft. Deshalb wird anwendungsspezifischer Code niemals im
Kernelmodus geladen, sondern innerhalb eines Arbeitsprozesses verarbeitet, der im Benutzermodus
ausgeführt wird. Dadurch ist es unmöglich, dass Fehler im Anwendungscode den Kernel beeinflussen
oder zu Systemausfällen führen.
WWW-Publishingdienst
Verglichen mit IIS 6.0 hat sich der WWW-Publishingdienst (World Wide Web Publishing Service,
W3SVC) von IIS 7.0 wesentlich verändert.
Bei IIS 6.0 war der W3SVC-Dienst für die Verwaltung von HTTP.sys, die Konfiguration und die
Verarbeitung sowie für die Leistungsüberwachung verantwortlich, wie Abbildung 2.4 zeigt.
Abbildung 2.4 W3SVC in IIS 6.0
Bei IIS 7.0 teilen sich zwei Dienste diese Funktionalität: W3SVC und ein Dienst, der in IIS 7.0 neu ist
und den Namen WAS trägt. Diese beiden Dienste werden im selben Svchost.exe-Prozess unter der
LocalSystem-Identität ausgeführt und nutzen dieselben Binärdateien. Die IIS 7.0-Dienste W3SVC und
WAS sind in Abbildung 2.5 dargestellt.
Abbildung 2.5 W3SVC und WAS bei IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
36 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Bei IIS 7.0 agiert W3SVC als Listeneradapter für den HTTP-Listener HTTP.sys. Listeneradapter sind
Komponenten, die die Kommunikation zwischen WAS und Protokolllistenern einrichten. WAS enthält
eine Listeneradapterschnittstelle, die eine Kommunikation mit Listeneradaptern ermöglicht.
W3SVC ist dafür verantwortlich, HTTP.sys zu konfigurieren sowie im Falle einer Konfigurationsänderung zu aktualisieren und WAS zu benachrichtigen, wenn eine Anforderung in die Warteschlange
eingestellt wird. Darüber hinaus erfasst W3SVC auch weiterhin die Websiteindikatoren. Es liest jedoch
nicht mehr Konfigurationsinformationen aus dem Konfigurationsspeicher und es verwaltet auch nicht
mehr Anwendungspools und Arbeitsprozesse. Stattdessen ist nun WAS für das Lesen der Konfiguration
und die Prozessaktivierung und -verwaltung verantwortlich.
Die folgende Liste fasst zusammen, welche Unterschiede es zwischen den W3SVC-Diensten von IIS
7.0 und IIS 6.0 hinsichtlich der Funktionalität gibt:
Konfigurationsverwaltung
In IIS 6.0 liest W3SVC die Konfigurationsinformationen aus dem IIS 6.0-Konfigurationsspeicher, der Metabasis.
Bei IIS 7.0 liest W3SVC die Konfigurationsinformationen nicht mehr aus dem Konfigurationsspeicher. Stattdessen liest WAS die Konfigurationsinformationen aus dem IIS 7.0-Konfigurationsspeicher, applicationHost.config, und übergibt sie W3SVC.
Verwaltung von HTTP.sys
Bei IIS 6.0 konfiguriert und aktualisiert W3SVC den Listener HTTP.sys. Der Dienst verwendet
dazu die aus der Metabasis eingelesenen Konfigurationsinformationen.
Bei IIS 7.0 konfiguriert und aktualisiert W3SVC den Listener HTTP.sys unter Verwendung der
von WAS entgegengenommenen Konfigurationsinformationen. Als Listeneradapter für das
HTTP-Protokoll kontrolliert W3SVC die Kommunikation zwischen WAS und HTTP.sys.
Prozessverwaltung
Bei IIS 6.0 verwaltet W3SVC die Anwendungspools und Arbeitsprozesse, und der Dienst ist
auch für das Starten, Beenden und die Wiederverwendung von Arbeitsprozessen zuständig.
Darüber hinaus überwacht W3SVC den Zustand der Arbeitsprozesse und initiiert den Schutz
vor schnellen Fehlerfolgen, um den Start neuer Prozesse zu verhindern, falls mehrere Arbeitsprozesse innerhalb einer bestimmten Zeit fehlschlagen.
Bei IIS 7.0 ist W3SVC nicht mehr für die Verwaltung von Arbeitsprozessen verantwortlich.
WAS ist nun hierfür zuständig.
Leistungsüberwachung
Bei IIS 6.0 überwacht W3SVC die Leistung und stellt Leistungsindikatoren für Websites und
den IIS-Cache zur Verfügung.
Auch bei IIS 7.0 erfasst W3SVC weiterhin die Websiteindikatoren.
Hinweis Da Leistungsindikatoren ein Bestandteil von W3SVC bleiben, sind sie HTTP-spezifisch und gelten somit
nicht für WAS.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Kernkomponenten
37
Windows-Prozessaktivierungsdienst
Das HTTP-Prozessaktivierungsmodell wurde von IIS 6.0 zusammen mit den Anwendungspools
eingeführt. Für IIS 7.0 wurde dieser Dienst erweitert und wird nun Windows-Prozessaktivierungsdienst
(Windows Process Activation Service, WAS) genannt. Er kann Anforderungen und Nachrichten über
jedes beliebige Protokoll empfangen und unterstützt die Aktivierung von während des Betriebs frei
wählbaren Protokolllistenern.
Bei IIS 7.0 verwaltet WAS die Anwendungspoolkonfiguration und Arbeitsprozesse. In IIS 6.0 ist
W3SVC hierfür zuständig. Wie in Abbildung 2.5 dargestellt, besteht WAS aus den folgenden
Komponenten:
Ein Konfigurationsmanager, der die Anwendungs- und Anwendungspoolkonfiguration aus dem
Konfigurationsspeicher liest
Ein Prozessmanager, der bereits vorhandenen Arbeitsprozessen Anwendungspools zuordnet und
dafür verantwortlich ist, neue Instanzen von W3wp.exe zu starten, um neue Anwendungspools als
Reaktion auf Aktivierungsanforderungen zu hosten
Eine Listeneradapterschnittstelle, die definiert, wie externe Listener die von ihnen empfangenen
Aktivierungsanforderungen dem WAS-Dienst mitteilen. Der W3SVC-Dienst kontrolliert beispielsweise die Kommunikation mit HTTP.sys und teilt dem WAS-Dienst über die Listeneradapterschnittstelle die HTTP-Aktivierungsanforderungen mit.
Beim Start liest der WAS-Konfigurationsmanager Informationen aus dem Konfigurationsspeicher und
übergibt sie dem HTTP-Listeneradpater, W3SVC, der für die Kommunikation mit dem HTTP-Listener
HTTP.sys verantwortlich ist. Nachdem W3SVC die Konfigurationsinformationen empfangen hat,
konfiguriert der Dienst den Listener HTTP.sys und bereitet ihn darauf vor, den Anforderungseingang zu
überwachen.
Der WAS-Konfigurationsmanager ruft die folgenden Informationen aus dem Konfigurationsspeicher ab:
Globale Konfigurationsinformationen
Protokollkonfigurationsinformationen
Die Anwendungspoolkonfiguration, z.B. Informationen zum Verarbeitungskonto
Die Sitekonfiguration, z.B. Bindungen und Anwendungen
Die Anwendungskonfiguration, z.B. die aktivierten Protokolle und die Anwendungspools, denen
die Anwendung zugeordnet ist
Wenn sich die Konfiguration ändert, erhält der WAS-Konfigurationsmanager eine entsprechende
Benachrichtigung, woraufhin er W3SVC unter Verwendung der neuen Informationen aktualisiert.
Nachdem W3SVC mit der neuen Konfiguration ausgestattet wurde, aktualisiert und konfiguriert der
Dienst den Listener HTTP.sys. Wenn Sie beispielsweise einen Anwendungspool hinzufügen, verarbeitet
der Konfigurationsmanager die Konfigurationsänderungen und teilt diese dem Dienst W3SVC mit, der
dann HTTP.sys aktualisiert, um die Anwendungspoolwarteschlange hinzuzufügen oder zu löschen.
Der WAS-Prozessmanager ist für die Verwaltung von Arbeitsprozessen verantwortlich. Zu den Verwaltungsaufgaben zählen beispielsweise das Starten von Arbeitsprozessen und die Verwaltung von
Informationen über die ausgeführten Arbeitsprozesse. Er ermittelt außerdem, wann ein Arbeitsprozess
gestartet und wiederverwendet werden kann und wann ein Arbeitsprozess neu gestartet werden sollte,
weil er nicht mehr reagiert und keine weiteren Anforderungen verarbeiten kann.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
38 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Wenn HTTP.sys eine Clientanforderung abfängt, stellt der WAS-Prozessmanager fest, ob bereits ein
Arbeitsprozess ausgeführt wird. Wenn ein Anwendungspool bereits über einen Arbeitsprozess, der
Anforderungen bedient, verfügt, übergibt HTTP.sys die Anforderung zur Verarbeitung an den Arbeitsprozess. Wenn dem Anwendungspool kein Arbeitsprozess zugeordnet ist, startet der Prozessmanager
einen neuen Arbeitsprozess, so dass HTTP.sys die Anforderung zur Verarbeitung an diesen Prozess
übergeben kann.
WAS unterstützt zusätzlich zu HTTP auch andere Protokolle. Das für HTTP verwendete Konfigurations- und Prozessmodell steht auch Nicht-HTTP-Anwendungen und -Diensten zur Verfügung. Wir
werden später in diesem Kapitel im Abschnitt »Verarbeitung von Nicht-HTTP-Anforderungen« einen
Blick auf diese Möglichkeit werfen.
Konfigurationsspeicher
Bei IIS 6.0 werden die Konfigurationsdaten in der XML-basierten Metabasis gespeichert. IIS 7.0 nutzt
diese Metabasis nicht mehr. Stattdessen werden die Konfigurationseinstellungen in einem verteilten,
aus XML-Dateien bestehenden Konfigurationssystem gespeichert, das IIS- und ASP.NETEinstellungen kombiniert.
Die verteilte Konfigurationshierarchie enthält die globalen, computerweit gültigen .NET FrameworkKonfigurationsdateien, machine.config und die web.config-Stammdatei, die globale IIS-Konfigurationsdatei applicationHost.config und die verteilten web.config-Konfigurationsdateien, die sich wie in
Abbildung 2.6 dargestellt in den Websites, Anwendungen und Verzeichnissen befinden.
Abbildung 2.6 Der verteilte Konfigurationsspeicher von IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Kernkomponenten
39
Da Konfigurationsdateien zusammen mit Website- und Anwendungsinhalten gespeichert werden,
erlaubt dieses Konfigurationssystem die gemeinsame xcopy-Bereitstellung von Konfigurationen,
Anwendungscode und Inhalten. Serveradministratoren können deshalb die Site- und Anwendungsverwaltung an Benutzer delegieren, die auf dem Servercomputer über keine administrativen Rechte
verfügen. Auch die gemeinsame Nutzung von Konfigurationen innerhalb einer Webfarm wird auf diese
Weise vereinfacht.
IIS speichert die serverweit gültige Konfiguration in der applicationHost.config-Datei, die sich im
Ordner %SystemRoot%\System32\Inetsrv\Config befindet. Der WAS-Dienst ruft aus dieser Datei
Konfigurationsinformationen zu Anwendungspools und Anwendungen ab.
IIS 7.0 bietet mehrere Verwaltungstools und APIs (Application Programming Interface) an, die innerhalb des Konfigurationssystems von IIS 7.0 Konfigurationen lesen und schreiben. Die Konfigurationsdateien sind XML-Dateien, deren Inhalt im Klartext vorliegt, so dass Sie den Windows-Editor benutzen
könnten, um mit einer IIS 7.0-Konfiguration zu arbeiten, sofern Sie dies wünschen. Doch selbst bei
einfachen web.config-Dateien würde eine solche Vorgehensweise schnell zu Fehlern führen, weshalb
sie möglichst vermieden werden sollte.
Um die Verwaltung zu vereinfachen, bietet IIS 7.0 einen überarbeiteten, aufgabenbasierten und featureorientierten IIS-Manager mit einer grafischen Benutzeroberfläche sowie ein Befehlszeilentool namens
Appcmd.exe für die Webserverwaltung an. Für den programmgesteuerten Zugriff gibt es eine COMAPI, mit der die Konfiguration von einem C++-Programm aus verwaltet werden kann, und eine .NETAPI (Microsoft.Web.Administration) für .NET-Programme. Die meisten Features des IIS-Managers wurden
unter Verwendung dieser neuen .NET-API implementiert. Ein IIS 7.0-WMI-Anbieter (Windows
Management Instrumentation) für das Scripting wird ebenfalls angeboten, und zwar zu-sammen mit
dem alten IIS 6.0-WMI-Anbieter, der aus Gründen der Abwärtskompatibilität zu bereits vorhandenen
Skripts zur Verfügung gestellt wird.
Die Microsoft.Web.Administration-API, Appcmd.exe und der WMI-Anbieter setzen auf die COM-API
auf. Dieser neue Verwaltungsstack ist in Abbildung 2.7 dargestellt.
Abbildung 2.7 Der IIS 7.0-Verwaltungsstack
Hinweis Weitere Informationen zum IIS 7.0-Konfigurationssystem und zur globalen applicationHost.config-Datei
finden Sie im vierten Kapitel, »Verstehen des Konfigurationssystems«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
40 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Der alte Konfigurationsspeicher, die Metabasis, ist nicht mehr Bestandteil von IIS 7.0. IIS 7.0 bietet
jedoch aus Gründen der Abwärtskompatibilität ein optionales Feature für die Kompatibilität mit der
Metabasis an, das den Dienst IISADMIN installiert (IIS Administration Service, IIS-Verwaltungsdienst), der bei IIS 6.0 die Metabasis schreibt und liest. Das Feature für die Kompatibilität mit der
Metabasis installiert außerdem den Prozess Inetinfo.exe, der den Dienst IISADMIN hostet. Diese
beiden Komponenten bilden die Translationsschicht, die als ABO-Mapper bezeichnet wird (Admin
Base Objects). Der ABO-Mapper verwendet die alten ABO-APIs für die Arbeit mit der Metabasis,
wobei die Konfigurationseinstellungen jedoch direkt in den IIS 7.0-Konfigurationsdateien gespeichert
werden. Wenn Sie das Feature für die Kompatibilität mit der Metabasis nicht installieren, setzt IIS 7.0
den Dienst IISADMIN oder den Prozess Inetinfo.exe nicht ein.
Arbeitsprozesse
Die Aufgabe eines Arbeitsprozesses besteht darin, Anforderungen zu verarbeiten. Ein Arbeitsprozess
ist ein in sich geschlossener, dauerhaft ausgeführter Benutzermodusprozess, der in Form einer ausführbaren Datei namens w3wp.exe vorliegt.
Jeder Arbeitsprozess stellt die grundlegende Webserverfunktionalität zur Verfügung. Das Ergebnis der
Anforderungsverarbeitung innerhalb des Arbeitsprozesses besteht darin, dass eine Antwort generiert
und an den Client zurückgegeben wird. Jeder Arbeitsprozess benutzt HTTP.sys, um Anforderungen zu
empfangen und Antworten zu versenden.
Ein Arbeitsprozess bedient einen Anwendungspool. Ein Anwendungspool gruppiert eine oder mehrere
Anwendungen. Aus diesem Grund können Sie bestimmte Konfigurationseinstellungen auf Anwendungsgruppen und auf die Arbeitsprozesse anwenden, die diese Anwendungen bedienen.
Jede Anwendung wird innerhalb eines Anwendungspools ausgeführt. Für einen Anwendungspool können
mehrere Arbeitsprozesse zuständig sein. Ein Arbeitsprozess kann aber immer nur einen Anwendungspool
bedienen. Mehrere Arbeitsprozesse, die für verschiedene Anwendungspools zuständig sind, können wie
in Abbildung 2.8 dargestellt gleichzeitig ausgeführt werden.
Abbildung 2.8 Prozess- und Anwendungsisolation
Die Arbeitsprozessgrenzen trennen die Anwendungspools voneinander, so dass jeder Anwendungscode
innerhalb einer isolierten Umgebung arbeiten kann. Einzelne Anwendungen können dann in einem in
sich geschlossenen Arbeitsprozess ausgeführt werden. Das Arbeitsprozessisolationsmodell wurde
erstmals mit IIS 6.0 eingeführt. Dieses Modell verhindert, dass Anwendungen, die innerhalb eines
Anwendungspools ausgeführt werden, auf Anwendungen in anderen Anwendungspools des Servers
einwirken. Auf diese Weise wird eine Abschirmung von Anwendungen erreicht.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Kernkomponenten
41
Innerhalb eines Arbeitsprozesses stellen Anwendungsdomänen Anwendungsgrenzen für .NETAnwendungen dar. Jede .NET-Anwendung wird in einer eigenen Anwendungsdomäne (AppDomain)
ausgeführt, wie Abbildung 2.8 zeigt. Eine Anwendungsdomäne lädt den Code der Anwendung bei
deren Start. Für die virtuellen Verzeichnisse innerhalb einer Anwendung ist dieselbe AppDomain
zuständig, der auch die Anwendung zugeordnet ist.
Direkt von der Quelle: Anwendungspoolisolierung bei IIS 7.0
Das mit IIS 6.0 eingeführte Anwendungspooldesign bildete die Grundlage für eine höhere Sicherheit, die dadurch erzielt wurde, dass mehrere Anwendungen voneinander isoliert wurden. Es war
aber auch die Basis für die Verbesserung der Fehlertoleranz des Webservers. Auch IIS 7.0 nutzt
dieses Konzept und unterstützt nicht mehr das alte IIS 5.0-Isolationsmodell. Die meisten Features,
die schon bei IIS 6.0 für den Erfolg von Anwendungspools verantwortlich waren, wurden beibehalten, darunter die Möglichkeit, jeden Anwendungspool mit verschiedenen Anmeldeinformationen
auszuführen und intelligente Zustandsüberwachungs- und Wiederverwendungseinstellungen zur
Aufrechterhaltung der Anwendungszuverlässigkeit zu konfigurieren.
IIS 7.0 geht jedoch noch einen Schritt weiter, indem es eine automatisierte Anwendungspoolisolation über automatisch generierte SIDs (Security Identifiers, Sicherheits-IDs) bietet. Außerdem
isoliert es automatisch die Konfiguration auf der Serverebene, so dass diese nur von dem Anwendungspool gelesen werden kann, auf den sich die Konfiguration auswirkt. Dies führt dazu, dass die
Konfiguration vollständig isolierter Webanwendungen durch den Einsatz von Anwendungspools
einfacher als jemals zuvor ist.
Darüber hinaus bietet IIS 7.0 unter Windows Server 2008 eine Vielzahl von Leistungsverbesserungen, die eine größere Anzahl von auf einem einzelnen Webserver konfigurierten und aktiven
Anwendungspools ermöglichen. Erreicht wird dies über Arbeitsprozesse, die weniger Ressourcen
verbrauchen, und eine intelligentere Arbeitsprozessverwaltung. Diese Verbesserungen führen dazu,
dass Webhostinganbieter jede einzelne Anwendung einfach in einem separaten Anwendungspool
ablegen können, um für die betroffenen Anwendungen die maximale Sicherheits- und Fehlerisolation zu erzielen.
Achten Sie darauf, die von der Anwendungspoolisolation gebotenen Möglichkeiten voll auszuschöpfen,
wenn Sie die Infrastruktur Ihrer Webanwendungen planen.
Mike Volodarsky
IIS-Kernserver Program Manager
Für die Ausführung von Anforderungen innerhalb eines Arbeitsprozesses stehen zwei Modi zur
Verfügung: der integrierte .NET-Modus, in dem IIS- und ASP.NET-Anforderungen dieselbe integrierte
Anforderungsverarbeitungspipeline verwenden, und der klassische Modus, in dem zwei separate
Pipelines für die IIS- und die ASP.NET-Verarbeitung genutzt werden. Sie können einen Anwendungspool konfigurieren, um festzulegen, in welchem der beiden Modi ASP.NET-Anforderungen ausgeführt
werden sollen. Im nächsten Abschnitt konzentrieren wir uns auf die Anforderungsverarbeitungsarchitektur innerhalb der Arbeitsprozesse, die die Anwendungspools bedienen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
42 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Anforderungsverarbeitung im Anwendungspool
Bei IIS 7.0 sind zwei Modi für einen Anwendungspool verfügbar: der integrierte Modus und der
klassische Modus. Wenn Sie einen Anwendungspool für den integrierten Modus konfigurieren, verarbeitete IIS 7.0 die ASP.NET-Anforderungen unter Verwendung der integrierten IIS- und ASP.NETAnforderungsverarbeitungspipeline. Wenn Sie einen Anwendungspool für den klassischen Modus
konfigurieren, verarbeitete IIS 7.0 die ASP.NET-Anforderungen unter Verwendung separater IIS- und
ASP.NET-Anforderungsverarbeitungspipelines, wie dies bei IIS 6.0 der Fall ist.
Auf demselben Servercomputer können mehrere Anwendungspools ausgeführt werden, die für verschiedene Modi konfiguriert wurden. Sie können den Modus für einen Anwendungspool festlegen,
indem Sie im IIS-Manager die Einstellung Verwalteter Pipelinemodus konfigurieren.
Um mit dem IIS-Manager den ASP.NET-Verarbeitungsmodus für einen Anwendungspool zu konfigurieren, gehen Sie wie folgt vor:
1. Erweitern Sie im IIS-Manager den Serverknoten und markieren Sie im Bereich Verbindungen den
Knoten Anwendungspools.
2. Markieren Sie auf der Seite Anwendungspools den Anwendungspool, den Sie konfigurieren möchten.
3. Klicken Sie im Bereich Aktionen unter Anwendungspool bearbeiten auf Grundeinstellungen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anforderungsverarbeitung im Anwendungspool
43
4. Wählen Sie im Dialogfeld Anwendungspool bearbeiten und dort im Dropdown-Listenfeld Verwalteter Pipelinemodus den gewünschten Modus (Integriert oder Klassisch) und klicken Sie auf OK.
Klassischer Modus
Der klassische Modus dient bei IIS 7.0 der Abwärtskompatibilität mit IIS 6.0. Wenn Sie einen Anwendungspool für den klassischen Modus konfigurieren, verarbeitete IIS 7.0 die ASP.NET-Anforderungen
unter Verwendung von zwei separaten IIS- und ASP.NET-Anforderungsverarbeitungspipelines, wie
dies bei IIS 6.0 der Fall ist. Um den klassischen Modus von IIS 7.0 zu verstehen, werfen wir zunächst
einen Blick darauf, wie ASP.NET-Anforderungen in IIS 6.0 verarbeitet werden.
Abbildung 2.9 zeigt die ASP.NET-Anforderungsverarbeitung bei IIS 6.0. Bei allen IIS-Versionen bis
zur Versionsnummer 6.0 stellt ASP.NET als eigenständiges Anwendungsframework eine Verbindung
zum Webserver her. Bei diesen IIS-Versionen ist ASP.NET in Form einer ISAPI-Erweiterung (Internet
Server Application Programming Interface) implementiert.
Abbildung 2.9 ASP.NET-Anforderungsverarbeitung unter IIS 6.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
44 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Bei IIS 6.0 ist die ASP.NET-ISAPI-Erweiterung (aspnet_isapi.dll) für die Verarbeitung der Inhaltstypen
verantwortlich, die für diese Erweiterung registriert sind, z.B. ASPX und ASMX. Für diese Anforderungen bietet es leistungsfähige Features an, wie z.B. die Formularauthentifizierung und die Ausgabezwischenspeicherung von Antworten. Doch nur Inhaltstypen, die für ASP.NET registriert sind, können
diese Dienste nutzen. Andere Inhaltstypen – einschließlich ASP-Seiten, statische Dateien, Bilder und
CGI-Anwendungen (Common Gateway Interface) – können nicht auf diese Features zugreifen.
Eine Anforderung, die sich auf einen ASP.NET-Inhaltstypen bezieht, wird zunächst von IIS verarbeitet
und dann an aspnet_isapi.dll weitergeleitet. Aspnet_isapi.dll hostet die ASP.NET-Anwendung und das
Anforderungsverarbeitungsmodell. Dadurch ergeben sich gewissermaßen zwei separate Serverpipelines, eine für native ISAPI-Filter- und -Erweiterungskomponenten und eine weitere für verwaltete
Anwendungskomponenten. ASP.NET-Komponenten werden vollständig innerhalb der ASP.NETISAPI-Erweiterung und ausschließlich für solche Anforderungen ausgeführt, die in der IIS-Skriptzuordnungskonfiguration ASP.NET zugeordnet sind. Anforderungen, die sich auf Nicht-ASP.NETInhalte beziehen, wie z.B. ASP-Seiten oder statische Dateien, werden von IIS oder anderen ISAPIErweiterungen verarbeitet und sind für ASP.NET nicht sichtbar.
Darüber hinaus sind bestimmte Funktionen für ASP.NET selbst dann nicht verfügbar, wenn sie sich auf
ASP.NET-Ressourcen beziehen. Grund hierfür sind Laufzeitbeschränkungen. Es ist beispielsweise
nicht möglich, den Satz ausgehender HTTP-Anforderungsheader vor der Übermittlung zum Client zu
modifizieren, da dies hinter dem ASP.NET-Ausführungspfad geschehen müsste.
Abbildung 2.10 ASP.NET-Anforderungsverarbeitung im klassischen Modus unter IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anforderungsverarbeitung im Anwendungspool
45
Beim klassischen Modus von IIS 7.0 werden ASP.NET-Anforderungen ebenfalls mithilfe der
ASP.NET-ISAPI-Erweiterung verarbeitet, wie Abbildung 2.10 zeigt. Der Kernwebserver besteht bei IIS
7.0 vollständig aus einzelnen Komponenten, wohingegen er bei IIS 6.0 monolithisch ist. Die ASP.NETAnforderungen werden im klassischen Modus jedoch genauso von asnet_isapi.dll verarbeitet, wie dies
bei IIS 6.0 der Fall ist. Nachdem die Anforderung von asnet_isapi.dll verarbeitet wurde, wird sie durch
IIS hindurch zurückgeleitet, um die Antwort zu senden.
Der klassische Modus von IIS 7.0 weist dieselben grundlegenden Einschränkungen auf wie die
ASP.NET-Verarbeitung unter IIS 6.0. Diese Einschränkungen sind nachfolgend aufgeführt:
Die von ASP.NET-Modulen bereitgestellten Dienste sind für Nicht-ASP.NET-Anforderungen nicht
verfügbar.
Einige Verarbeitungsschritte werden doppelt ausgeführt, z.B. die Authentifizierung.
Einige Einstellungen müssen an zwei Orten verwaltet werden, z.B. die Autorisierung, die Ablaufverfolgung und die Ausgabezwischenspeicherung.
ASP.NET-Anwendungen haben keinen Einfluss auf bestimmte Abschnitte der IIS-Anforderungsverarbeitung, die vor und hinter dem ASP.NET-Ausführungspfad liegen. Grund hierfür ist die
Position der ASP.NET-ISAPI-Erweiterung innerhalb der Serverpipeline.
Der klassische Modus wird nur aus Gründen der Abwärtskompatibilität mit IIS 6.0 angeboten. Kurz
gesagt sollten Sie eine Anwendung nur dann einem im klassischen Modus arbeitenden Anwendungspool hinzufügen, wenn sie im integrierten Modus nicht funktioniert.
Hinweis Weitere Informationen zur Anwendungskompatibilität unter IIS 7.0 finden Sie im elften Kapitel, »Hosting
von Anwendungsentwicklungsframeworks«.
Der integrierte .NET-Modus
Wenn ein Anwendungspool für den integrierten .NET-Modus konfiguriert ist, können Sie die Vorzüge
der integrierten Anforderungsverarbeitungsarchitektur von IIS 7.0 und ASP.NET nutzen.
Bei IIS 7.0 ist die ASP.NET-Laufzeit im Kernwebserver integriert. Die IIS- und ASP.NET-Anforderungspipelines sind kombiniert, wodurch eine vereinheitlichte (also integrierte) Anforderungsverarbeitungspipeline zur Verfügung gestellt wird, auf die sowohl systemeigene als auch verwaltete Module zugreifen
können.
Die IIS 7.0-Anforderungsverarbeitungspipeline wird von der Engine des Kernwebservers implementiert. Durch sie ist es möglich, dass mehrere voneinander unabhängige Module Dienste für dieselbe
Anforderung bereitstellen können. Alle Webserverfeatures werden als eigenständige Module implementiert. Es gibt über vierzig separate systemeigene und verwaltete Module. Jedes Modul implementiert ein bestimmtes Webserverfeature oder eine bestimmte Webserverfunktionalität wie z.B. die
Protokollierung oder Ausgabezwischenspeicherung.
Hinweis Eine vollständige Liste der integrierten systemeigenen und verwalteten IIS 7.0-Module finden Sie in
Anhang C, »Liste der IIS 7.0-Module«.
Systemeigene Module werden als DLLs (Dynamic Link Library) implementiert, die auf öffentlichen
und in C++ geschriebenen IIS 7.0-Erweiterbarkeits-APIs basieren. Verwaltete Module werden in IIS
7.0 als verwaltete Frameworkklassen implementiert, die auf dem ASP.NET-Integrationsmodell
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
46 Kapitel 2: Grundlagen der IIS 7.0-Architektur
basieren. (IIS 7.0 hat die bereits vorhandenen HttpModule-API für ASP.NET integriert.) Beide dieser
APIs ermöglichen es den Modulen, an der IIS 7.0-Anforderungsverarbeitungspipeline teilzuhaben und
auf alle Ereignisse aller Anforderungen zuzugreifen.
Eine integrierte IIS 7.0-Anforderungsverarbeitungspipeline ist in Abbildung 2.11 dargestellt. Eine
Pipeline ist eine geordnete Folge von systemeigenen und verwalteten Modulen, die als Reaktion auf
Anforderungen bestimmte Aufgaben ausführen. Wenn ein Arbeitsprozess in einem Anwendungspool
eine Anforderung von HTTP.sys empfängt, durchläuft die Anforderung mehrere Phasen in einer
bestimmten Reihenfolge. Das Ergebnis der Verarbeitung besteht darin, dass eine Antwort generiert und
an HTTP.sys zurückgesendet wird.
Jede Phase der Pipeline löst ein Ereignis aus. Systemeigene und verwaltete Module abonnieren die
Ereignisse der Pipelinephasen, die für sie relevant sind. Wenn das Ereignis ausgelöst wird, werden die
systemeigenen und verwalteten Module, die das jeweilige Ereignis abonniert haben, benachrichtigt und
erledigen ihren Teil der Arbeit, um die Anforderung zu verarbeiten. Das Pipelineereignismodell
ermöglicht die Ausführung mehrerer Module während der Anforderungsverarbeitung.
Abbildung 2.11 Die integrierte Verarbeitungspipeline von IIS 7.0
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anforderungsverarbeitung im Anwendungspool
47
Die meisten Pipelineereignisse sind für bestimmte Aufgabentypen vorgesehen, wie z.B. für die
Authentifizierung, Autorisierung, Zwischenspeicherung und Protokollierung. Die folgende Liste
beschreibt die Phasen und zugehörigen Ereignisse der Anforderungsverarbeitungspipeline:
Anforderungsbeginn In dieser Phase beginnt die Anforderungsverarbeitung. Das Ereignis
BeginRequest wird ausgelöst.
Anforderungsauthentifizierung In dieser Phase wird der anfordernde Benutzer authentifiziert.
Das Ereignis AuthenticateRequest wird ausgelöst.
Anforderungsautorisierung In dieser Phase wird das Ereignis AuthorizeRequest ausgelöst. Zu
diesem Zeitpunkt wird geprüft, ob der authentifizierte Benutzer auf die angeforderte Ressource
zugreifen darf. Wenn der Zugriff verweigert wird, erfolgt die Zurückweisung der Anforderung.
Auflösen des Caches In dieser Phase wird das Ereignis ResolveRequestCache ausgelöst. Es wird
geprüft, ob die Antwort auf die Anforderung aus dem Cache abgerufen werden kann.
Handlerzuordnung In dieser Phase wird das Ereignis MapRequestHandler ausgelöst. Es wird der für
die Anforderung benötigte Handler ermittelt.
Zustandsabruf In dieser Phase wird das Ereignis AcquireRequestState ausgelöst. Es wird der für die
Anforderung benötigte Handler abgerufen.
Vor der Handlerausführung In dieser Phase wird das Ereignis PreExecuteRequestHandler ausgelöst.
Diese Stufe signalisiert, dass der Handler kurz vor der Ausführung steht. Zu diesem Zeitpunkt
erfolgt die Vorverarbeitung, sofern erforderlich.
Handlerausführung In dieser Phase wird das Ereignis ExecuteRequestHandler ausgelöst. Der Handler
wird ausgeführt und generiert die Antwort.
Zustandsfreigabe In dieser Phase wird das Ereignis ReleaseRequestState ausgelöst. Der Anforderungszustand wird wieder freigegeben.
Cacheaktualisierung In dieser Phase wird der Cache aktualisiert. Das Ereignis UpdateRequestCache
wird ausgelöst.
Anforderungsprotokollierung In dieser Phase wird die Anforderung protokolliert. Das Ereignis
LogRequest wird ausgelöst.
Anforderungsende In dieser Phase wird das Ereignis EndRequest ausgelöst, was darauf hindeutet,
dass die Anforderungsverarbeitung abgeschlossen wird.
Module, die ein Ereignis abonnieren, stellen bestimmte Dienste zur Verfügung, die sich auf die
jeweilige Phase der Pipeline beziehen. Abbildung 2.12 zeigt beispielsweise mehrere systemeigene und
verwaltete Module, die das Ereignis AuthenticateRequest für die Anforderungsauthentifizierungsphase
abonnieren. Dazu zählen die Module für die Standardauthentifizierung, Windows-Authentifizierung,
ASP.NET-Formularauthentifizierung und anonyme Authentifizierung. Die Module für die Standard-,
Windows- und anonyme Authentifizierung sind systemeigene Module, wohingegen die Formularauthentifizierung von einem verwalteten Modul bereitgestellt wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
48 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Abbildung 2.12 Systemeigene und verwaltete Module in der integrierten Verarbeitungspipeline
Die integrierte .NET-Pipeline bietet gegenüber den älteren IIS-Versionen besondere Vorteile, die
nachfolgend aufgeführt sind:
Dienste, die sowohl von systemeigenen als auch von verwalteten Modulen zur Verfügung gestellt
werden, können auf alle Anforderungen angewendet werden.
Alle Dateitypen können Features nutzen, die bei IIS 6.0 ausschließlich verwaltetem Code zur Verfügung standen. Sie können nun beispielsweise die ASP.NET-Formularauthentifizierung und die
URL-Autorisierung (Uniform Resource Locator) für statische Dateien, ASP-Dateien, statische
CGI-Dateien und alle anderen Dateitypen in Ihren Sites und Anwendungen verwenden.
Doppelt vorhandene Features für IIS und ASP.NET gibt es nicht mehr.
Wenn ein Client beispielsweise eine verwaltete Datei anfordert, ruft der Server das entsprechende
Authentifizierungsmodul in der integrierten Pipeline auf, um den Client zu authentifizieren. Bei früheren IIS-Versionen durchlief dieselbe Anforderung sowohl die IIS- als auch die ASP.NET-Pipeline, um authentifiziert zu werden. Weitere vereinheitlichte IIS- und ASP.NET-Funktionen sind die
URL-Autorisierung, die Ablaufverfolgung, benutzerdefinierte Fehler und die Ausgabezwischenspeicherung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anforderungsverarbeitung im Anwendungspool
49
Alle Module werden an einem Ort verwaltet, wodurch auf dem Server die Site- und Anwendungsverwaltung vereinfacht wird.
Anstatt einige Features unter IIS und andere in der ASP.NET-Konfiguration zu verwalten, gibt es
nun nur noch einen Ort, um Serverfeatures zu implementieren, zu konfigurieren, zu überwachen
und zu nutzen. Beispielsweise können IIS und ASP.NET aufgrund ihres zur Laufzeit wirksamen
Zusammenschlusses dieselbe Konfiguration verwenden, um Servermodule zu aktivieren und zu
nutzen und Handlerzuordnungen zu konfigurieren.
IIS kann mit verwaltetem ASP.NET-Modulen erweitert werden.
Durch IIS 7.0 wird es möglich, dass ASP.NET-Module während des Betriebs direkt an die Serverpipeline angeschlossen werden können. Dies ist vergleichbar mit der Modulentwicklung unter
Verwendung der nativen C++-IIS-API. ASP.NET-Module können in allen Laufzeitphasen der
Anforderungsverarbeitungspipeline und – unter Berücksichtigung der systemeigenen Module – in
jeder beliebigen Reihenfolge ausgeführt werden. Die ASP.NET-API wurde außerdem erweitert, um
eine größere Kontrolle über die Anforderungsverarbeitung als bisher zu bieten.
Hinweis Um weitere Informationen zum Erweitern von IIS 7.0 zu erhalten, lesen Sie bitte das zwölfte Kapitel, »Verwalten von Webservermodulen«.
Implementierung der ASP.NET-Integration
Obwohl systemeigene und verwaltete Module dasselbe Konzept implementieren, wenn es um logische
Module geht, verwenden sie zwei unterschiedliche APIs. Um ein integriertes Pipelinemodell für
systemeigene und verwaltete Module zu ermöglichen, stellt IIS 7.0 ein spezielles systemeigenes Modul
namens Managed-Engine zur Verfügung. Das Modul Managed-Engine ist eigentlich ein IntegrationsWrapper für ASP.NET-Module. Mithilfe dieses Wrappers können verwaltete Module so agieren, als
würde es sich um systemeigene IIS-Module und -Handler handeln. Es dient als Proxy für Ereignisbenachrichtigungen und leitet den benötigten Anforderungszustand an die verwalteten Module weiter.
Zusammen mit der ASP.NET-Engine richtet es die integrierte Pipeline ein. Es ist außerdem dafür
verantwortlich, die Konfiguration der verwalteten Module und Handler zu lesen.
Wenn eine Anforderung ein verwaltetes Modul benötigt, erzeugt das Modul Managed-Engine eine
AppDomain, in der das verwaltete Modul die notwendige Verarbeitung durchführen kann, z.B. das
Authentifizieren eines Benutzers mithilfe der Formularauthentifizierung. Abbildung 2.13 zeigt das
Modul Managed-Engine mit dem verwalteten Modul für die Formularauthentifizierung, das innerhalb
einer AppDomain ausgeführt wird.
Alle verwalteten Module sind vom Modul Managed-Engine abhängig und können ohne dieses nicht
ausgeführt werden. Damit die integrierte Pipeline und ASP.NET-Anwendungen unter IIS 7.0 funktionieren können, muss das Modul Managed-Engine installiert und aktiviert sein.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
50 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Abbildung 2.13 Das Modul Managed-Engine
Unter Windows Server 2008 wird das Modul Managed-Engine als Bestandteil der Komponenten
Rollendienst und .NET-Erweiterbarkeit installiert. Unter Windows Vista wird es als Bestandteil der
Komponente .NET-Erweiterbarkeit installiert.
Hinweis Um weitere Informationen zur ASP.NET-Integration zu erhalten, lesen Sie bitte das zwölfte Kapitel.
Gültigkeitsbereiche von Modulen
Module können auf verschiedenen Ebenen installiert und aktiviert werden. Auf der Serverebene
aktivierte Module stellen einen Satz Standardfeatures für alle Anwendungen auf dem Server zur Verfügung. Der globale IIS-Konfigurationsspeicher applicationHost.config hält eine gemeinsame Liste
systemeigener und verwalteter Modul bereit. Immer dann, wenn WAS einen Arbeitsprozess aktiviert,
ruft der Dienst die Konfiguration aus dem Konfigurationsspeicher ab, und der Arbeitsprozess lädt alle
global gelisteten Module.
Native Module können nur auf der Serverebene installiert werden. Eine Installation auf der Anwendungsebene ist nicht möglich. Auf der Anwendungsebene können jedoch die globalen systemeigenen
Module, die auf der Serverebene aktiviert sind, entfernt werden, und die Module, die installiert, aber
nicht global aktiviert sind, können für die jeweilige Anwendung aktiviert werden.
Verwaltete Module können auf der Server-, Site- und Anwendungsebene hinzugefügt werden.
Anwendungsspezifische Module werden bei der ersten an die Anwendung gerichteten Anforderung
geladen. Verwaltete Anwendungsmodule können zusammen mit anderen Anwendungsdateien mithilfe
von xcopy bereitgestellt werden.
Sie können im IIS-Manager sowohl systemeigene als auch verwaltete Module mithilfe des ModuleFeatures verwalten.
Hinweis Weitere Informationen zur Verwaltung von Modulen finden Sie im zwölften Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anforderungsverarbeitung im Anwendungspool
51
Modulreihenfolge
Das Pipelinemodell gewährleistet, dass der Webserver die typischen Verarbeitungsaufgaben in der
richtigen Reihenfolge ausführt. Die Authentifizierung muss beispielsweise vor der Autorisierung
erfolgen: das Authentifizieren des mit einer Anforderung verknüpften Benutzers in der Anforderungsauthentifizierungsphase muss geschehen, bevor in der Anforderungsautorisierungsphase überprüft
wird, ob der Benutzer auf die angeforderte Ressource zugreifen darf.
Der Server verwendet die Modulsequenzliste im Konfigurationsabschnitt <modules>, um die richtige
Reihenfolge für die Modulausführung in den einzelnen Phasen der Anforderungsverarbeitung
festzulegen. Da die Module nur in den für sie relevanten Phasen ausgeführt werden, entstehen keine
Probleme mit der Reihenfolge. Mehrere Module, die in derselben Phase ausgeführt werden, können
jedoch untereinander Abhängigkeiten bezüglich der Priorität aufweisen. Die integrierten Authentifizierungsmodule, die in der Anforderungsauthentifizierungsphase ausgeführt werden, sollten beispielsweise so zum Einsatz kommen, dass zunächst die stärksten und dann die jeweils schwächeren
Anmeldeinformationen versuchsweise verwendet werden, so dass die Anforderung immer mit den
stärksten verfügbaren Anmeldeinformationen authentifiziert wird.
Um Abhängigkeiten hinsichtlich der Priorität zu verwalten, kann der Administrator die Modulreihenfolge kontrollieren, indem er im Abschnitt <modules> die Reihenfolge ändert, in der die Module
aufgelistet sind. Dies kann beispielsweise mit dem Module-Feature des IIS-Managers geschehen.
Um die Modulreihenfolge eines Servers einzusehen und optional zu ändern, gehen Sie wie folgt vor:
1. Markieren Sie im IIS-Manager und dort im Bereich Verbindungen den Serverknoten.
2. Öffnen Sie auf der Startseite des Servers das Feature Module.
3. Klicken Sie im Bereich Aktionen auf Sortierte Liste anzeigen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
52 Kapitel 2: Grundlagen der IIS 7.0-Architektur
4. Sie können die Position eines Moduls innerhalb der Verarbeitungssequenz ändern, indem Sie das
Modul markieren und im Bereich Aktionen die Optionen Nach oben und Nach unten benutzen, um
es innerhalb der Liste an die gewünschte Position zu verschieben.
Hinweis Informationen über die Standardreihenfolge der integrierten Module erhalten Sie im Anhang D, »Reihenfolge der Module«.
Verarbeitung von Nicht-HTTP-Anforderungen
Bei IIS 7.0 unterstützt WAS Nicht-HTTP-Protokolle, so dass Sie IIS verwenden können, um Anwendungen und Dienste zu hosten, die nicht auf HTTP basieren. Das WAS-Prozessmodell verallgemeinert
das Prozessmodell für den HTTP-Server, indem es die HTTP-Abhängigkeit ausräumt. Da WAS unter
IIS 7.0 die Anwendungspoolkonfiguration und Arbeitsprozesse verwaltet, kann dasselbe, für HTTP
verwendete Konfigurations- und Prozessmodell auch für Anwendungen genutzt werden, die nicht auf
HTTP basieren. Alle IIS-Prozessverwaltungfeatures, wie z.B. die bedarfsorientierte Aktivierung, die
Überwachung des Prozesszustands, eine unternehmensfreundliche Verwaltung und der Schutz vor
schnellen Fehlerfolgen, sind bei IIS 7.0 auch für Nicht-HTTP-Anwendungen verfügbar.
Um Dienste und Anwendungen zu unterstützen, die andere Protokolle als HTTP und HTTPS nutzen,
können Sie auf Technologien wie WCF (Windows Communication Foundation) zurückgreifen. Das
WAS-Prozessmodell ermöglicht es Anwendungen und Diensten, die auf WCF basieren, HTTP- und
Nicht-HTTP-Protokolle in einer Hostingumgebung zu verwenden, die eine nachrichtenbasierte Aktivierung unterstützt und die Möglichkeit bietet, auf nur einem Computer eine große Anzahl von Anwendungen zu hosten. WCF (Windows Communication Foundation) wird mit Protokolladaptern ausgeliefert, die die WAS-Fähigkeiten nutzen können, was zu einer Verbesserung der Zuverlässigkeit und des
Ressourcenverbrauchs von WCF-Diensten führt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verarbeitung von Nicht-HTTP-Anforderungen
53
WAS kann Anforderungen und Nachrichten über jedes beliebige Protokoll empfangen und unterstützt
während des Betriebs die Aktivierung von frei wählbaren Protokolllistenern. Protokolllistener empfangen
protokollspezifische Anforderungen, übergeben diese zur Verarbeitung an IIS und senden schließlich die
entsprechenden Antworten an die Anforderer zurück. Bei WCF weist ein Listeneradapter die Funktionalität eines Protokolllisteners auf. Abbildung 2.14 zeigt WAS bei Listeneradaptern für Nicht-HTTPProtokolle.
Abbildung 2.14 Unterstützung von Nicht-HTTP-Protokollen bei WAS
Listeneradapter sind Windows-Dienste, die über bestimmte Netzwerkprotokolle Nachrichten empfangen und mit WAS kommunizieren, um eingehende Anforderungen an den richtigen Arbeitsprozess weiterzuleiten. Die Listeneradapterschnittstelle wird verwendet, um den Eingang von Aktivierungsanforderungen mitzuteilen, die über die unterstützten Nicht-HTTP-Protokolle empfangen werden. Es gibt
die folgenden Nicht-HTTP-Listeneradapter:
NetTcpActivator für das TCP-Protokoll
NetPipeActivator für Named Pipes
NetMsmqActivator für das Message-Queuing (auch bekannt als MSMQ)
Wenn Sie die HTTP-Funktionalität nicht benötigen, können Sie WAS auch ohne W3SVC ausführen
lassen. Sie können beispielsweise einen Webdienst über einen WCF-Listeneradapter wie NetTcpActivator
verwalten. W3SVC muss dann nicht ausgeführt werden, sofern Sie nicht mit HTTP.sys eingehende
HTTP-Anforderungen abfangen müssen.
Der globale IIS-Konfigurationsspeicher applicationHost.config kann die Konfiguration von NichtHTTP-Protokollen enthalten. Der TCP-Listeneradapter NetTcpActivator kann beispielsweise basierend
auf Informationen konfiguriert werden, die WAS aus dem Konfigurationsspeicher liest. Nachdem
NetTcpActivator konfiguriert wurde, wartet es auf den Eingang von Anforderungen, die das TCP-Protokoll
verwenden. Wenn ein Listeneradapter eine Anforderung empfängt, startet WAS einen Arbeitsprozess,
dem der Listeneradapter die Anforderung zur Verarbeitung übergibt. Diese Architektur ist in Abbildung 2.15 dargestellt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
54 Kapitel 2: Grundlagen der IIS 7.0-Architektur
Abbildung 2.15 Verarbeitung von Nicht-HTTP-Anforderungen unter IIS 7.0
Da WAS die Prozesse sowohl für HTTP- als auch für Nicht-HTTP-Protokolle verwaltet, können Sie
Anwendungen, die unterschiedliche Protokolle nutzen, im selben Anwendungspool ausführen. Sie
können eine Anwendung beispielsweise gleichzeitig über das HTTP- und über das TCP-Protokoll
hosten.
Das WAS-Prozessmodell von IIS 7.0 ist nicht nur protokollunabhängig, sondern versorgt auch alle
Arten von nachrichtenaktivierten Anwendungen mit einer intelligenten Ressourcenverwaltung, einer
bedarfsorientierten Prozessaktivierung, einer Zustandsüberwachung und einer automatischen Fehlererkennung und Wiederherstellung. Dadurch können diese Anwendungen das IIS-Prozessmodell
nutzen, ohne denselben Ressourcenbedarf wie eine vollständige IIS-Installation aufzuweisen.
Hinweis Weitere Informationen zu Listeneradaptern finden Sie im Artikel »WAS-Aktivierungsarchitektur« unter
http://msdn2.microsoft.com/de-de/library/ms789006.aspx.
Zusammenfassung
In diesem Kapitel haben wir einen Blick auf die gesamte Anforderungsverarbeitungsarchitektur von IIS
7.0 geworfen. IIS 7.0 besteht aus mehreren Kernkomponenten, die zusammenarbeiten, um HTTPAnforderungen zu verarbeiten. Zu diesen Komponenten zählen:
HTTP.sys, der HTTP-Protokolllistener der Kernelebene
W3SVC (World Wide Web Service Publishing Service), der HTTP-Listeneradapter
WAS (Windows Process Activation Service, Windows-Prozessaktivierungsdienst), ein Dienst, der
die Prozessaktivierung und -verwaltung ermöglicht
Konfigurationsspeicher, eine aus verteilten XML-Dateien bestehende Konfigurationshierarchie, die
sowohl IIS- als auch ASP.NET-Einstellungen speichert
Arbeitsprozess, w3wp.exe, der in sich geschlossene Benutzermodusprozess, der HTTPAnforderungen ausführt und Antworten generiert
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Weitere Informationen
55
Jeder Arbeitsprozess bedient einen Anwendungspool. Ein Anwendungspool kann für einen von zwei
verwalteten Pipelinemodi konfiguriert sein: den integrierten und den klassischen Modus. Abhängig von
dieser Konfigurationseinstellung gibt es für eine ASP.NET-Anforderung zwei Möglichkeiten, um
innerhalb des Arbeitsprozesses, der für den Anwendungspool zuständig ist, ausgeführt zu werden:
Im integrierten Modus: Die IIS- und ASP.NET-Verarbeitung ist vereinheitlicht und erfolgt in einer
integrierten Verarbeitungspipeline.
Im klassischen Modus: Die IIS- und ASP.NET-Pipelines sind wie bei IIS 6.0 voneinander getrennt.
Die integrierte Verarbeitungspipeline bildet die Basis für die modulare IIS 7.0-Architektur. Sie sorgt
dafür, dass mehr als vierzig integrierte, in sich geschlossene systemeigene und verwaltete Module, die
die Webserverfunktionalität implementieren, auf die eingehenden Anforderungen zugreifen können.
Die wichtigsten Vorzüge der integrierten Verarbeitungspipeline sind nachfolgend genannt:
Dienste, die sowohl von systemeigenen als auch von verwalteten Modulen zur Verfügung gestellt
werden, können auf alle Anforderungen angewendet werden.
Doppelt vorhandene Features für IIS und ASP.NET gibt es nicht mehr.
Alle Module werden an einem Ort verwaltet, wodurch auf dem Server die Site- und Anwendungsverwaltung vereinfacht wird.
IIS kann mit verwaltetem ASP.NET-Modulen erweitert werden.
Zusätzlich zur Ausführung von HTTP-Anforderungen unterstützt IIS 7.0 das Hosting von Nicht-HTTPAnwendungen und -Diensten, die das Prozessmodell ebenfalls nutzen können.
Auf der Begleit-CD
Auf der CD finden Sie weitere Tools und Ressourcen.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Um weitere Informationen zum IIS 7.0-Konfigurationssystem zu erhalten, lesen Sie bitte das vierte
Kapitel, »Verstehen des Konfigurationssystems«.
Weitere Informationen zur Anwendungskompatibilität finden Sie im elften Kapitel, »Hosting von
Anwendungsentwicklungsframeworks«.
Um weitere Informationen zur integrierten Verarbeitungspipeline und zur Verwaltung von Webservermodulen zu erhalten, lesen Sie bitte das zwölfte Kapitel, »Verwalten von
Webservermodulen«.
Eine vollständige Liste der integrierten systemeigenen und verwalteten IIS 7.0-Module finden Sie
in Anhang C, »Liste der IIS 7.0-Module«.
Informationen über die Standardreihenfolge der integrierten IIS 7.0-Module erhalten Sie im
Anhang D, »Reihenfolge der Module«.
Weitere Informationen zu Listeneradaptern finden Sie im Artikel »WAS-Aktivierungsarchitektur«
unter http://msdn2.microsoft.com/de-de/library/ms789006.aspx.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
57
K A P I T E L
3
Verstehen der modularen Basis
Inhalt dieses Kapitels:
Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hauptvorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrierte Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
61
64
65
65
Welche Bedeutung hat der modulare Webserverkern für IIS 7.0 (Microsoft Internet Information
Services)? Wie sorgt er dafür, dass IIS 7.0 der bisher leistungsfähigste Microsoft-Webserver ist? Und
was sind die integrierten Module, die mit IIS 7.0 ausgeliefert werden? Keine Sorge – am Ende dieses
Kapitels werden Sie die Antworten auf all diese Fragen kennen und eine genaue Vorstellung vom
Designkonzept haben, das sich hinter IIS 7.0 verbirgt. Sie werden einen Blick auf das Komponentendesign von IIS 7.0 werfen und die Gründe für die Überarbeitung der Architektur sowie die Vorzüge des
neuen Designs kennen lernen. Sie erhalten außerdem detaillierte Informationen zu den mit IIS 7.0
ausgelieferten integrierten Modulen.
Konzepte
Die komponentenbasierte Architektur ist eine der wichtigsten Änderungen, die an IIS 7.0 vorgenommen wurden. Basis für diese Änderung waren Erfahrungen mit IIS 6.0 und das Feedback von
Kunden. IIS 7.0 wartet mit einer vollständig überarbeiteten Architektur auf. Der Webserverkern ist nun
in separate Komponenten unterteilt, die als Module bezeichnet werden. Als Webadministrator verfügen
Sie jetzt erstmals über die Möglichkeit, einen IIS-Server aufzubauen, den Sie an Ihre Bedürfnisse
anpassen können. Sie können integrierte Module einfach hinzufügen, wenn diese benötigt werden,
oder, was noch besser ist, Sie fügen Funktionalität hinzu oder ersetzen diese, indem Sie Module
verwenden, die Sie selbst entwickelt haben, die von kommerziellen Anbietern stammen oder die von
der IIS.net-Entwicklergemeinschaft zur Verfügung gestellt werden. Auf diese Weise erhalten Sie
mithilfe der modularen Engine genau die Funktionalität, die Sie vom Webserver benötigen, aber auch
die Flexibilität, die es Ihnen ermöglicht, nicht gewünschte Module zu entfernen, um den Webserver
besser zu sichern.
Wenngleich der Webserver das Zentrum der IIS 7.0-Modularität ist, werden die Features der gesamten
Plattform in Form von Modulen implementiert. Der Verwaltungsstack ist beispielsweise modular. Um
ausführliche Informationen über die Erweiterbarkeit des IIS 7.0-Webservers und Verwaltungsstacks zu
erhalten, lesen Sie bitte das zwölfte Kapitel, »Verwalten von Webservermodulen«, und das dreizehnte
Kapitel, »Konfigurations- und Benutzeroberflächenerweiterungen verwalten«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
58 Kapitel 3: Verstehen der modularen Basis
Die Ideen
Ein Modul gleicht einem Baustein in einem LEGO-Kasten eines Kindes. Dieser Kasten enthält viele
Steine in vielen verschiedenen Farben und Formen. Wenn diese mit Bausteinen aus anderen Kästen
kombiniert werden, können viele verschiedene Strukturen mit unterschiedlichen Formen zusammengesetzt werden. IIS 7.0 greift für das Design seines Frameworkfundaments auf die gleiche Idee zurück.
Diese aus zusammensteckbaren Komponenten bestehende Architektur wird mit einem flexiblen
Konfigurationssystem und einer erweiterbaren Benutzeroberfläche kombiniert. Sie ermöglicht durch
den Einsatz von Modulen und Bausteinen das Hinzufügen und Entfernen von beliebigen Funktionalitäten, so dass Sie einen Webserver aufbauen können, der an die speziellen Bedürfnisse Ihres Unternehmens angepasst ist. Dieses neue und offene Design ist revolutionär für Microsoft und öffnet der
Webplattform ganz neue Türen.
So funktioniert es: Das modulare Design
IIS 7.0 wird mit vielen verschiedenen Modulen ausgeliefert. Jedes Modul ist eine Komponente (aber
nicht im Sinne von COM [Component Object Model]), die bestimmte Dienste für die HTTP-Anforderungsverarbeitungspipeline des Webservers zur Verfügung stellt. StaticFileModule ist beispielsweise das
Modul, das alle statischen Inhalte behandelt, wie zum Beispiel HTML-Seiten, Bilddateien usw. Andere
Module ermöglichen die dynamische Komprimierung, die Standardauthentifizierung und all die anderen
Features, die Sie in der Regel mit IIS verbinden. Module werden bei IIS 7.0 separat verwaltet. Sie können
auf einfache Weise mithilfe des neuen Konfigurationssystems der Kernengine hinzugefügt oder aus
dieser entfernt werden.
Intern stellt der IIS-Webserverkern die Anforderungsverarbeitungspipeline für auszuführende
Module bereit. Er stellt außerdem Anforderungsverarbeitungsdienste zur Verfügung, wobei die für
die Verarbeitungspipeline registrierten Module basierend auf registrierten Ereignisbenachrichtigungen aufgerufen werden, um Anforderungen zu verarbeiten. Als Administrator können Sie nicht
kontrollieren, für welche Ereignisse die Module programmiert wurden. Dies ist innerhalb des
Moduls im Code festgelegt. Sie können jedoch kontrollieren, welche Module global geladen werden,
und Sie können sogar kontrollieren, welche Module für eine bestimmte Site oder Anwendung
geladen werden. Genaue Informationen zum Laden von Modulen finden Sie im zwölften Kapitel.
Immer dann, wenn der IIS 7.0-Arbeitsprozess gestartet wird, liest er die Serverkonfigurationsdatei
und lädt alle global gelisteten Module. Anwendungsmodule werden geladen, sobald zum ersten Mal
eine an die Anwendung gerichtete Anforderung eingeht. Es sind dieses modulare Design und dieses
Konfigurationssystem, die dafür sorgen, dass Sie während des Betriebs Module zur Anforderungspipeline hinzufügen, in dieser ersetzen oder aus dieser entfernen können, wodurch die uneingeschränkte Erweiterbarkeit des IIS 7.0-Webservers gewährleistet ist.
Modultypen
IIS 7.0 wird mit ca. vierzig Modulen ausgeliefert, zu denen auch sicherheitsrelevante Authentifizierungsmodule und Module für die Komprimierung von Inhalten zählen. Module stellen die Features
eines Webservers zur Verfügung und eine Webanwendung setzt sich aus vielen Modulen zusammen, die
Anforderungen bedienen. Hinsichtlich des Aufgabenbereichs können Module in zwei Kategorien
unterteilt werden. Es gibt Module, die Anforderungsdienste bereitstellen, z.B. die Komprimierung und
die Authentifizierung, sowie Module, die für die Anforderungsbehandlung zuständig sind. Dazu zählt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konzepte
59
beispielsweise die Bereitstellung von statischen Dateien, ASP.NET-Seiten usw. Ungeachtet ihrer Aufgabenbereiche sind Module die wichtigsten Zutaten für IIS 7.0. Entwickler können zwei Arten von IISModulen erstellen:
Verwaltete Module Ein verwaltetes Modul ist eine .NET Framework-Komponente, die auf dem
ASP.NET-Erweiterbarkeitsmodell basiert. Die integrierte Verarbeitungsarchitektur von IIS 7.0 trägt
dazu bei, dass ASP.NET-Anwendungsdienste nicht mehr ausschließlich auf Anforderungen beschränkt
sind, die sich auf .ASPX-Seiten oder andere ASP.NET-Inhalte beziehen. Die verwalteten Module
werden bei IIS 7.0 direkt an der Anforderungsverarbeitungspipeline des Webservers angeschlossen,
weshalb sie genauso leistungsfähig wie die unter Berücksichtigung der nativen Erweiterbarkeitsschicht
entwickelten Module sind. Um die von den ASP.NET-Modulen angebotenen Dienste für alle Anforderungen nutzen zu können, muss Ihre Anwendung in einem Anwendungspool ausgeführt werden, der
im integrierten Modus arbeitet. Diese Integration ist mithilfe des ManagedEngine-Moduls möglich, das
innerhalb der Anforderungsverarbeitungspipeline die .NET-Integration bereitstellt. Verwaltete Module
werden nur dann global geladen, wenn der Anwendungspool ein integrierter Pool ist. Weitere
Informationen zum neuen integrierten Pipelineverarbeitungsmodus finden Sie im zwölften Kapitel.
Systemeigene Module Ein systemeigenes Modul ist eine in C++ geschriebene Microsoft
Windows-DLL (Dynamic Link Library), die Anforderungsverarbeitungsdienste zur Verfügung
stellt. Bei IIS 7.0 hat ein neuer Satz nativer (C++) Server-APIs (Application Programming Interface) die APIs für ISAPI-Filter und -Erweiterungen (Internet Server Application Programming
Interface) ersetzt, die von früheren IIS-Versionen angeboten wurden. Diese neuen APIs wurden
unter Verwendung eines objektorientierten Modells entwickelt und sind mit vielen leistungsfähigen
Schnittstellen ausgestattet, so dass Sie die Anforderungsverarbeitung und Antwortbehandlung
besser kontrollieren können. Viele Entwickler, die mit ISAPI und den neuen nativen Modul-APIs
vertraut sind, berichten davon, dass es nun im Vergleich zu früheren IIS-Versionen sehr viel
einfacher sei, mit nativem Code zu entwickeln.
Hinweis Ausführliche Informationen zur Entwicklung systemeigener Module finden Sie im englischen Artikel »How
to Build a Native Code IIS7 Module Using C++« unter http://www.iis.net/go/938.
Entwickler können unter IIS 7.0 systemeigene und verwaltete Module auf dieselbe Art und Weise
verwalten und konfigurieren. Lediglich bei der Bereitstellung von Modulen gibt es Unterschiede.
Systemeigene Module werden global auf dem Server installiert und können für jede Anwendung
aktiviert oder deaktiviert werden. Verwaltete Module können global aktiviert oder von jeder Anwendung zur Verfügung gestellt werden. Weitere Informationen zur Bereitstellung von Modulen erhalten
Sie im zwölften Kapitel.
Module und Konfiguration
Damit die Module IIS 7.0 bestimmte Features oder Dienste zur Verfügung stellen können, müssen
sie im Konfigurationssystem registriert sein. Dieser Abschnitt des Buches wirft einen Blick auf die
Beziehungen zwischen den Modulen und den verschiedenen Abschnitten in der Konfigurationsdatei
und er bietet eine allgemeine Übersicht über die Moduleinstellungen im Konfigurationsspeicher.
Weitere Informationen zum IIS 7.0-Konfigurationssystem, das auf XML basiert (Extensible Markup
Language), finden Sie im vierten Kapitel, »Verstehen des Konfigurationssystems«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
60 Kapitel 3: Verstehen der modularen Basis
Innerhalb des <system.webServer>-Abschnitts der Datei applicationHost.config (dies ist die Hauptdatei für
die Serverkonfiguration) gibt es drei verschiedene Abschnitte, die sich auf Module beziehen:
<globalModules> Dieser Abschnitt kann nur auf der Serverebene konfiguriert werden und
definiert alle aus nativem Code bestehenden Module, die Dienste für Anforderungen bereitstellen.
Die Moduldeklaration im Konfigurationsabschnitt legt ebenfalls die zugehörige DLL-Datei fest, die
die Modulfeatures zur Verfügung stellt. Alle systemeigenen Module müssen – wie unter <modules>
festgelegt – in diesem Abschnitt definiert oder registriert werden, bevor sie für die Nutzung durch
die Anwendungen eingeschaltet oder aktiviert werden können.
// Beispiel für den Konfigurationsabschnitt <globalModules>
<globalModules>
...
<add name="StaticCompressionModule" image="%windir%\...\compstat.dll" />
<add name="DefaultDocumentModule" image="%windir%\...\defdoc.dll" />
<add name="DirectoryListingModule" image="%windir%\...\dirlist.dll" />
...
</globalModules>
<modules> Dieser Abschnitt kann auf der Server- und Anwendungsebene konfiguriert werden
und definiert die für eine Anwendung aktivierten Module. Native Module sind zwar im Abschnitt
<globalModules> registriert, müssen aber im Abschnitt <modules> aktiviert werden, bevor sie den Anwendungen ihre Anforderungsdienste zur Verfügung stellen können. Module, die aus verwaltetem Code
bestehen, können jedoch direkt dem Abschnitt <modules> hinzugefügt werden. Sie können beispielsweise der web.config-Datei einer Anwendung ein benutzerdefiniertes verwaltetes Modul für die
Standardauthentifizierung hinzufügen. Sie können aber auch die applicationHost.config-Datei auf
der Serverebene bereitstellen.
// Beispiel für den Konfigurationsabschnitt <modules>
<modules>
...
<add name="BasicAuthenticationModule" />
<add name="WindowsAuthenticationModule" />
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule"
preCondition="managedHandler" />
<add name="Session" type="System.Web.SessionState.SessionStateModule"
preCondition="managedHandler" />
...
</modules>
<handlers> Dieser Abschnitt kann auf der Server-, Anwendungs- und URL-Ebene (Uniform
Resource Locator) konfiguriert werden und definiert, wie Anforderungen behandelt werden. Er
führt auch basierend auf dem URL und den HTTP-Verben die Handlerzuordnungen durch. Dazu
wird das jeweilige Modul angegeben, das den entsprechenden Handler unterstützt. IIS 7.0 parst die
Handlerzuordnungskonfiguration, um zu ermitteln, welche Module aufgerufen werden müssen,
wenn eine bestimmte Anforderung eingeht.
// Beispiel für den Konfigurationsabschnitt <handlers>
<handlers accessPolicy="Script, Read">
...
<add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST"
modules="IsapiModule" scriptProcessor="...\asp.dll" resourceType="File" />
<add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST"
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Hauptvorteile
61
modules="IsapiModule" scriptProcessor="...\asp.dll" resourceType="File" />
<add name="SSINC-stm" path="*.stm" verb="GET,POST"
modules="ServerSideIncludeModule" resourceType="File" />
...
</handlers>
Hauptvorteile
Die modulare IIS 7.0-Architektur bietet viele Vorteile gegenüber früheren IIS-Versionen. Dieser
Abschnitt nennt die Vorteile, die sich aus diesem Design ergeben. Er beschreibt außerdem Szenarien,
die verdeutlichen, wie ein Webadministrator diese Vorzüge nutzen kann, um einen stabilen Webserver
aufzubauen.
Sicherheit
Für die heutigen Webanwendungen ist die Sicherheit einer der wichtigsten Aspekte. IIS 6.0 wird nur bei
der Webserveredition von Windows Server 2003 standardmäßig installiert. Diese IIS 6.0-Standardinstallation stellt ausschließlich statische Inhalte bereit. Jede andere Funktionalität ist deaktiviert. IIS
7.0 spiegelt die modulare Natur des Webservers wider und ermöglicht es dem Benutzer, nur die Module
zu installieren, die für die jeweilige Anwendung notwendig sind. Binärdateien, die die anderen Features
enthalten, werden nicht installiert, sondern in einem geschützten Installationscache des Betriebssystems verwahrt. Dies bedeutet, dass Sie nicht dazu aufgefordert werden, eine CD einzulegen oder
einen Zielort anzugeben, wenn Sie neue Updates installieren oder Features hinzufügen. Die Binärdateien, die Sie nicht verwenden, werden auch nicht von den IIS-Arbeitsprozessen geladen. Sie werden
stattdessen unter Quarantäne gestellt, so dass ein Zugriff darauf nicht möglich ist. Wenn Sicherheitsupdates von Microsoft verfügbar sind, werden die nicht installierten Features im Installationscache
ebenfalls vollständig aktualisiert. Dies trägt dazu bei, dass Service Packs nicht erneut angewendet
werden müssen, wenn Sie nachträglich neue Features installieren.
Hinsichtlich der Sicherheit bietet das modulare Design mehrere wichtige Vorteile, von denen einige
nachfolgend genannt sind:
Minimale Angriffsfläche Dadurch, dass IIS 7.0 Ihnen die Möglichkeit bietet, nur die benötigten
Komponenten zu installieren, wird die mögliche Angriffsfläche stark verkleinert. Die Angriffspunkte sind auf die installierten Komponenten begrenzt, weil es nur für diese Komponenten
Binärdateien gibt. Da nur die installierten Komponenten Ziel potentieller Exploits sein können, ist
dies die beste Verteidigung. Bei der IIS 7.0-Standardinstallation werden beispielsweise nur ca. zehn
Komponenten installiert, die die interne IIS-Protokollierung und -Verwaltung sowie die Bearbeitung solcher Anforderungen ermöglichen, die sich auf statische Inhalte beziehen. Genau genommen
sind dies die einzigen Punkte, die für potentielle Angriffe genutzt werden können.
Geringerer Wartungsaufwand Das modulare Design bietet nicht nur eine neue Flexibilität beim
Hinzufügen, Entfernen und Ersetzen von Komponenten, es hält mittels des selektiven Patchings auch
ganz neue Wartungsmöglichkeiten bereit. Sie müssen Fixes oder Patches nur auf die benötigten oder
installierten Komponenten anwenden. Nicht verwendete Komponenten oder Module, die nicht installiert wurden, erfordern keine sofortige Zuwendung. Außerdem gibt es keine Ausfallzeiten durch das
Patching nicht installierter Komponenten. Dies bedeutet auch, dass weniger Verwaltungsarbeit für die
routinemäßige Wartung und für Upgrades erforderlich ist. Wenn ein IIS 7.0-Server beispielsweise nur
die Windows-Authentifizierung für seine Anwendungen nutzt, werden auf dem Server nur solche
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
62 Kapitel 3: Verstehen der modularen Basis
Patches angewendet, die sich auf das Windows-Authentifizierungsmodul beziehen. Wenn dann das
Modul für die Standardauthentifizierung Ziel eines bekannten Exploits ist, ist ein sofortiges Patching
nicht notwendig, da dieses Modul nicht verwendet wird. Beachten Sie jedoch, dass Microsoft empfiehlt,
immer alle Patches anzuwenden, um sicherzustellen, dass die nicht benutzten Module und Features stets
auf dem neuesten Stand sind, so dass sie bedenkenlos nachträglich installiert werden können.
Wichtig Microsoft empfiehlt, dass Sie auf dem Server alle Patches installieren. Wenn Sie Patches auf Komponenten anwenden, die nicht genutzt werden, wird der Server nicht mit Ausfallzeiten konfrontiert. Wenn dann die
Komponenten später installiert werden, werden automatisch die neuesten Versionen der entsprechenden Binärdateien verwendet, so dass es nicht notwendig ist, die Patches neu anzuwenden.
Vereinheitlichtes Sicherheitsmodell ASP.NET ist nun besser in IIS 7.0 integriert. Dadurch, dass
systemeigene IIS 7.0-Module und verwaltete ASP.NET-Module an derselben Anforderungspipeline
beteiligt sind, ergeben sich viele Vorteile, z.B. ein einheitliches Konfigurationssystem und einheitliche Sicherheitsmodelle für IIS und ASP.NET. Hinsichtlich der Sicherheit können erweiterte
ASP.NET-Sicherheitsdienste direkt an die IIS-Hauptpipeline für die Anforderungsverarbeitung
angeschlossen und zusammen mit den IIS-Sicherheitsfeatures verwendet werden. Kurz gesagt ist es
mit IIS 7.0 nun möglich, ASP.NET-Sicherheitsdienste für Nicht-ASP.NET-Anforderungen zu konfigurieren. Wenn beispielsweise bei älteren IIS-Versionen eine Anwendung sowohl aus PHP- als
auch aus ASP.NET-Ressourcen bestand, konnte die ASP.NET-Formularauthentifizierung nur für die
ASP.NET-Ressourcen genutzt werden. Das integrierte IIS 7.0-Prozessmodell ermöglicht nun die
Formularauthentifizierung für PHP-, ASP.NET- und andere Arten von Ressourcen, wie zum
Beispiel statische Inhalte (HTML, Bilder) und ASP-Seiten.
Direkt von der Quelle: Der sicherste Webserver der Welt
Als wir während der TechEd 2005 IIS 7.0 einem großen Publikum präsentierten, war das auch
mein erster TechEd-Auftritt. Meine erste Präsentation zeigte die Möglichkeiten, die sich aus der
komponentenbasierten Architektur von IIS 7.0 ergaben. Wir nannten diese Präsentation scherzhaft
»Der sicherste Webserver der Welt«.
Ein Teil der Demonstration bestand darin, dass ich zeigte, wie die Konfiguration in der Datei
applicationHost.config bearbeitet wird. Ich entfernte alle Module und Handlerzuordnungen. Nach
dem Speichern der Datei übernahm IIS die Änderungen und führte einen Neustart durch, wobei
natürlich keine Module geladen wurden. Nachdem ich eine Anforderung der Standardwebsite
eingereicht hatte, erhielt ich sofort eine leere Antwort vom Typ 200 zurück (diese Konfiguration gibt
gegenwärtig einen Fehler aufgrund einer fehlenden Autorisierung vom Typ 401 zurück, weil keine
Authentifizierungsmodule vorhanden sind). Der Server hatte keine Module geladen und führte
deshalb nahezu keine Verarbeitung der Anforderung durch, weshalb auch keine Inhalte zurückgegeben wurden. Der Server war somit zum sichersten Webserver der Welt geworden. Nach einer
kurzen Pause wies ich daraufhin, dass dieser Server zwar sicher, aber völlig nutzlos sei, und dann
ging ich dazu über, die Funktionalität wieder hinzuzufügen, die ich für meine Anwendung benötigte.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Hauptvorteile
63
Ich hatte diese Demonstration schon früher einem ausgesuchten Publikum präsentiert und Beifall
dafür erhalten, aber ich werde nie vergessen, wie das Publikum während der TechEd-Vorführung
reagierte. Die Menschen im Publikum gerieten außer Rand und Band und ließen sich teilweise sogar
zu stehenden Ovationen hinreißen. Das war eine überwältigende Bestätigung unserer Bemühungen,
Administratoren die Möglichkeit zu bieten, einen Server von Grund auf neu und nur mit den wirklich
benötigten Features aufzubauen, so dass ein einfach zu verwaltender Webserver mit der geringstmöglichen Angriffsfläche entsteht.
Mike Volodarsky
IIS-Kernserver Program Manager
Leistung
Aufgrund der aus Komponenten bestehenden Architektur können Sie mit IIS 7.0 den Speicherverbrauch des Webservers genau kontrollieren. Module werden nur dann in den Speicher geladen, wenn sie
installiert und aktiviert sind. Durch das Entfernen nicht benötigter IIS 7.0-Features werden weniger
Komponenten geladen, um an die Verarbeitungspipeline angeschlossen zu werden – somit sind weniger
Schritte notwendig, um eingehende Anforderungen zu verarbeiten. Dies führt insgesamt zu einer
besseren Serverleistung. Gleichzeitig steht mehr freier Speicherplatz für Webanwendungen und das
Betriebssystem zur Verfügung, wenn der Speicherverbrauch des IIS 7.0-Servers verringert wird. Bei IIS
6.0 wurden beispielsweise alle Authentifizierungsanbieter (Anonyme, Windows-, Digestauthentifizierung usw.) in den Arbeitsprozess geladen. Bei IIS 7.0 werden nur die benötigten Authentifizierungsmodule geladen und in die Anforderungsverarbeitung eingebunden. Weitere Informationen zum
Entfernen von nicht benötigten Modulen finden Sie im zwölften Kapitel.
Erweiterbarkeit
Bei älteren IIS-Versionen ist das Erweitern oder Hinzufügen von IIS-Features nicht einfach, weil dies nur
mithilfe der ISAPI-Programmierung, einer eingeschränkten API-Unterstützung und einem eingeschränkten
Zugriff auf die Informationen in der Anforderungsverarbeitungspipeline möglich ist. Mit der neuen auf
Modulen basierenden Engine und der engen Verflechtung zwischen ASP.NET und IIS ist das Erweitern von
IIS 7.0 sehr viel einfacher. IIS 7.0-Module können mit der neuen nativen C++-Webserver-API oder unter
Verwendung der ASP.NET-Schnittstellen und der Funktionalität des .NET Frameworks entwickelt werden.
Sie können nicht nur entscheiden, welche Features in den Webserver eingebunden werden sollen, sondern
Sie können den Webserver auch erweitern, indem Sie Ihre eigenen benutzerdefinierten Komponenten
hinzufügen, um eine bestimmte Funktionalität zur Verfügung zu stellen.
Sie könnten beispielsweise ein ASP.NET-Standardauthentifizierungsmodul entwickeln, das den
Mitgliedschaftsdienst und eine SQL Server-Benutzerdatenbank anstelle des integrierten IIS-Standardauthentifizierungsfeatures verwendet, das ausschließlich mit Windows-Konten arbeitet. Kurz gesagt
können Sie Ihren eigenen benutzerdefinierten Server aufbauen, der die Features bereitstellt, die Ihre
Anwendungen benötigen. Sie können beispielsweise eine Gruppe von IIS 7.0-Servern ausschließlich für
das Caching benutzen, oder Sie setzen ein benutzerdefiniertes Modul ein, das innerhalb einer Anwendung
einen bestimmten Zweck erfüllt, wie z.B. die Implementierung eines eigenen Lastenausgleichsalgorithmus für ASP.NET-Anwendungen, der sich nach den Anforderungen der Kunden richtet. Weitere
Informationen zu benutzerdefinierten Modulen unter IIS 7.0 finden Sie im zwölften Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
64 Kapitel 3: Verstehen der modularen Basis
Integrierte Module
Module, die mit IIS 7.0 ausgeliefert werden, sind in verschiedene Kategorien unterteilt, die sich nach
den jeweiligen geleisteten Diensten richten. Tabelle 3.1 führt die verschiedenen Dienstkategorien auf
und nennt einige integrierte Beispielmodule zu den Kategorien. Eine vollständige Modulliste finden Sie
in Anhang C, »Liste der IIS 7.0-Module«.
Tabelle 3.1 Modulkategorien
Kategorie
Modul
Anwendungsentwicklung
CgiModule (%windir%\system32\inetsrv\cgi.dll)
Ermöglicht die Unterstützung von CGI-Programmen (Common Gateway Interface)
FastCgiModule (%windir%\system32\inetsrv\iisfcgi.dll)
Unterstützt FastCGI, eine leistungsfähige Alternative zu den alten CGI-Programmen
System.Web.SessionState.SessionStateModule (ManagedEngine)
Ermöglicht die Sitzungszustandsverwaltung, bei der spezifische Daten eines einzelnen Clients
von einer Anwendung auf dem Server gespeichert werden
Systemzustand und Diagnose
FailedRequestsTracingModule (%windir%\system32\inetsrv\iisfreb.dll)
Besser bekannt als Anforderungsfehler-Ereignispufferung (Failed Request Event Buffering,
FREB). Dieses Modul unterstützt die Nachverfolgung fehlgeschlagener Anforderungen. Die Definitionen und Regeln, die eine fehlgeschlagene Anforderung beschreiben, können konfiguriert
werden.
RequestMonitorModule (%windir%\system32\inetsrv\iisreqs.dll)
Implementiert RSCA (Run-time State and Control API), eine API, mit der es möglich ist, Laufzeitinformationen abzufragen. Dazu zählen beispielsweise die gegenwärtig ausgeführten Anforderungen, der Ausführungsstatus einer Website (gestartet oder beendet) oder die gegenwärtig
ausgeführten Anwendungsdomänen.
HTTP-Features
ProtocolSupportModule (%windir%\system32\inetsrv\protsup.dll)
Implementiert benutzerdefinierte Header oder Umleitungsantwortheader, behandelt HTTP TRACEund OPTIONS-Verben und unterstützt die Keep-Alive-Konfiguration
Leistung
TokenCacheModule (%windir%\system32\inetsrv\cachtokn.dll)
Speichert im Cache Windows-Sicherheitstokens für auf Kennwörtern basierende Authentifizierungschemata (anonyme Authentifizierung, Standardauthentifizierung und IIS-Clientzertifikatauthentifizierung)
System.Web.Caching.OutputCacheModule (ManagedEngine)
Definiert die Ausgabezwischenspeicherungsrichtlinien einer ASP.NET-Seite oder eines Benutzersteuerelements, das in einer Seite enthalten ist
Sicherheit
RequestFilteringModule (%windir%\system32\inetsrv\modrqflt.dll)
Stellt unter IIS 7.0 eine ähnliche Funktionalität wie URLSCAN zur Verfügung. Dazu wird ein leistungsfähiger Satz Sicherheitsregeln implementiert, um verdächtige Anforderungen in einer sehr
frühen Phase abzuweisen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Weitere Informationen
65
Tabelle 3.1 Modulkategorien (Fortsetzung)
Kategorie
Modul
UrlAuthorizationModule (%windir%\system32\inetsrv\urlauthz.dll)
Unterstützt auf Regeln basierende Konfigurationen für die Autorisierung von Inhalten
System.Web.Security.FormsAuthenticationModule (ManagedEngine)
Implementiert die ASP.NET-Formularauthentifizierung für angeforderte Ressourcen
Serverkomponenten
ConfigurationValidationModule (%windir%\system32\inetsrv\validcfg.dll)
Verantwortlich für die Verifizierung der IIS 7.0-Konfiguration. Dies ist beispielsweise notwendig,
wenn eine Anwendung im integrierten Modus ausgeführt wird, aber über Handler oder Module
verfügt, die im Abschnitt <system.web> deklariert sind.
ManagedEngine/ManagedEngine64 (webengine.dll)
Die Managed-Engine nimmt unter allen Modulen eine besondere Stellung ein, da sie dafür
verantwortlich ist, die ASP.NET-Laufzeit in IIS zu integrieren
Weitere Informationen zum Modulkonfigurationsspeicher sowie zu Modulabhängigkeiten und potentiellen Problemen beim Entfernen eines Moduls finden Sie in Anhang C.
Zusammenfassung
Die wichtigsten von IIS 7.0 angebotenen Features stammen aus seinem modularen Design. Webadministratoren haben zum ersten Mal die volle Kontrolle über den IIS-Server. Es ist außerdem die erste IISVersion, die vollständig erweiterbar ist. Sie definiert ein vereinheitlichtes Anforderungsverarbeitungsmodell, das ASP.NET in IIS integriert. Module sind die grundlegenden Bausteine eines IIS 7.0-Servers.
IIS 7.0 bietet eine Vielzahl von Möglichkeiten zur Verwaltung von Modulen (die grundlegenden
Elemente des IIS-Featuresatzes) an, so dass Sie effiziente Webserver mit einem geringen Speicherverbrauch implementieren können, die für bestimmte Aufgaben optimiert sind. Wenn Sie viele Module
auswählen, erhalten Sie auf Ihrem Server eine umfassende Funktionalität. Oder Sie entfernen nicht
benötigte Features, um die Angriffsfläche zu verkleinern und die Leistung zu verbessern. Im zwölften
Kapitel erfahren Sie mehr über die verschiedenen von IIS 7.0 unterstützten Module und deren Funktionsweise. Sie erfahren außerdem, wie Sie diese innerhalb der IIS-Umgebung richtig einsetzen und
verwalten.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Kapitel 4, »Verstehen des Konfigurationssystems«, enthält Informationen zum neuen auf XML
basierenden Konfigurationssystem und zu wichtigen IIS 7.0-Konfigurationsdateien.
Kapitel 12, »Verwalten von Webservermodulen«, enthält Informationen zum Laden und Verwalten
von Modulen unter IIS 7.0.
Kapitel 13, »Konfigurations- und Benutzeroberflächenerweiterungen verwalten«, enthält
Informationen zur Erweiterung des IIS 7.0-Konfigurationssystems.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
66 Kapitel 3: Verstehen der modularen Basis
Kapitel 14, »Implementieren von Sicherheitsstrategien«, enthält Informationen zu
Sicherheitsstrategien.
Anhang C, »Liste der IIS 7.0-Module«, enthält ausführliche Informationen zu jedem mit IIS 7.0
ausgelieferten integrierten Modul.
Der englische Artikel »Develop a Native C/C++ Modules for IIS 7.0« auf der Web Resource-Seite
unter http://www.iis.net/go/938 enthält wertvolle Informationen für Entwickler.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
67
K A P I T E L
4
Verstehen des Konfigurationssystems
Inhalt dieses Kapitels:
Übersicht über das Konfigurationssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
Konfigurationsbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Konfigurationsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Auf der Begleit-CD
Auf der CD finden Sie weitere Tools und Ressourcen.
Viele der neuen Features und Möglichkeiten von IIS 7.0 (Internet Information Services) sind auf dessen
Konfigurationssystem zurückzuführen, das gänzlich überarbeitet wurde. Die Metabasis von früher
wurde in ein an .NET angelehntes Konfigurationssystem verwandelt, das in vielerlei Hinsicht einfacher
zu handhaben ist. Das neue Design bildet die Grundlage für die delegierte und zentralisierte Konfiguration, die ASP.NET-Integration, die xcopy-Bereitstellung der Konfiguration und viele andere Leistungsmerkmale.
Das IIS 7.0-Konfigurationssystem arbeitet meistens von Ihnen unbemerkt, und in diesen Fällen müssen
Sie auch nicht wissen, was hinter den Kulissen geschieht. Wenn man jedoch dafür sorgt, dass ein System
flexibler wird, führt dies oft zu einer größeren Komplexität, was auch für das IIS 7.0-Konfigurationssystem gilt. Dieses Kapitel beschreibt ausführlich die Funktion der Konfiguration, so dass Sie eine genaue
Vorstellung hiervon erhalten.
Abbildung 4.1 Das IIS 7.0-Konfigurationssystem
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
68 Kapitel 4: Verstehen des Konfigurationssystems
Wie Abbildung 4.1 zeigt, ist die gesamte IIS 7.0-Konfiguration aus mehreren Systemen zusammengesetzt, die sowohl zusammen als auch unabhängig voneinander arbeiten. Administratoren, die die
.NET-Konfigurationsdateien und deren Arbeitsweise kennen, werden mit der IIS 7.0-Konfiguration
schnell vertraut sein. Wenn Ihr bisheriger Kontakt mit der IIS-Konfiguration ausschließlich darin
bestand, über ein Tool wie den Metabasis-Explorer darauf zuzugreifen, werden Sie sich etwas
intensiver damit beschäftigen müssen, aber es lohnt sich.
Übersicht über das Konfigurationssystem
Das IIS 7.0-Konfigurationssystem weist in vielerlei Hinsicht große Unterschiede zum Konfigurationsmodell älterer IIS-Versionen – die Metabasis – auf. Die neue Architektur berücksichtigt die Anforderungen, die verlangen, dass das IIS 7.0-Konfigurationssystem besser verwaltbar sein und wichtige
Bereitstellungsszenarien flexibler unterstützen sollte.
IIS 7.0-Konfigurationssystem basiert auf einer aus XML-Konfigurationsdateien bestehenden Hierarchie. Die
Dateien enthalten strukturierte XML-Daten, die die Konfigurationsinformationen für IIS und seine Features
beschreiben. Diese Hierarchie umfasst die .NET Framework-Konfigurationsdateien, machine.config und die
web.config-Stammdatei, die IIS-Hauptkonfigurationsdatei namens applicationHost.config und verteilte
web.config-Konfigurationsdateien, die sich innerhalb der Verzeichnisstruktur der Website befinden. Ein
wichtiger Vorteil dieser Hierarchie ist die Fähigkeit, IIS- und ASP.NET-Konfigurationsinformationen
zusammen an einem Ort zu speichern. Ein weiterer Vorteil ist die Fähigkeit, die IIS-Konfiguration zusammen
mit den Inhalten der Website zu verwahren, so dass die Website portabel wird und weniger administrative
Rechte notwendig sind, um die Website bereitzustellen.
Die Konfigurationsdateien in der Hierarchie enthalten Konfigurationsabschnitte, bei denen es sich um
strukturierte XML-Elemente handelt, die Konfigurationseinstellungen für bestimmte IIS-Features
beschreiben. Im Gegensatz zu dem von der Metabasis verwendeten Eigenschaft/Wert-Modell trägt das
strukturierte XML-Format der IIS 7.0-Konfigurationsabschnitte dazu bei, dass die Konfiguration
übersichtlicher wird und einfacher zu verstehen ist. Die Konfiguration wird dadurch selbsterklärend, so
dass Sie sie einfach manuell bearbeiten können. Der Anwendungsentwickler kann beispielsweise die
folgende Konfiguration in der web.config-Datei des Websitestammverzeichnisses platzieren, um das
IIS-Standarddokumentfeature zu aktivieren und ein bestimmtes zu verwendendes Standarddokument
zu konfigurieren.
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="home.aspx" />
</files>
</defaultDocument>
</system.webServer>
Da das IIS 7.0-Konfigurationssystem dieselben web.config-Dateien wie das ASP.NET-Konfigurationssystem verwendet, kann Ihre Anwendung ASP.NET- und IIS-Konfigurationseinstellungen Seite an Seite
innerhalb derselben Datei zur Verfügung stellen. Da sich diese Datei inmitten Ihrer Anwendungsinhalte
befindet, kann die Anwendung auf einem IIS-Server bereitgestellt werden, indem einfach ihre Inhalte
kopiert werden. Eine zentrale Konfiguration muss hierzu nicht modifiziert werden.
Gleichzeitig kann der Serveradministrator die IIS-Konfiguration der Serverebene, z.B. die Website- und
Anwendungspooldefinitionen, in der applicationHost.config-Datei der Serverebene ablegen. Diese Datei
kann ebenfalls die Standardkonfiguration für andere IIS-Abschnitte enthalten, die standardmäßig von
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
69
allen Websites des Servers geerbt werden. Im Gegensatz zu den web.config-Dateien einer Website, auf die
der Website- oder Anwendungsadministrator zugreifen kann, ist ein Zugriff auf applicationHost.config
nur durch den Serveradministrator möglich. Mithilfe der vom Konfigurationssystem angebotenen
Konfigurationssperrmechanismen kann der Administrator festlegen, welche Konfiguration durch die
Anwendungen unter Verwendung der verteilten web.config-Dateien modifiziert werden kann.
Insgesamt betrachtet bietet die neue Konfigurationsdateihierarchie sehr viel mehr Flexibilität als die IIS
6.0-Metabasis. Außerdem unterstützte sie wichtige Bereitstellungs- und Verwaltungsszenarien. Wir
werden nun einen Blick auf die Arbeitsweise der Konfigurationsdateihierarchie und die Syntax der
Konfigurationsabschnitte werfen.
Konfigurationsdateihierarchie
Die Metabasis von früheren IIS-Versionen bestand aus einer einzelnen Konfigurationsdatei, Metabase.xml,
die eine auf URLs basierende hierarchische Konfigurationsstruktur enthielt. Die Knoten dieser Struktur
entsprachen URLs auf dem Server, und jeder Knoten enthielt einen Satz Eigenschaften, der zusammen mit
den von den übergeordneten Knoten geerbten Eigenschaften die Konfiguration dieses URLs festlegte.
Wenn Sie mit der IIS 6.0-Metabasis vertraut sind, wissen Sie vielleicht noch, dass diese Knoten über Pfade
referenziert wurden, die ein ähnliches Erscheinungsbild wie das folgende aufwiesen: LM\W3SVC\1\ROOT
(damit ist das Stammverzeichnis der Website mit der ID 1 gemeint).
Bei IIS 7.0 umfasst die Konfigurationsdateihierarchie mehrere Konfigurationsdateien. Anstatt also die
gesamte URL-Hierarchie in einer einzelnen Datei abzubilden, stellt die Konfigurationsdateihierarchie
die URL-Hierarchie dar. Jede Datei definiert eine Konfiguration, die, ausgehend von der Position
dieser Datei in der Konfigurationshierarchie, implizit mit einer bestimmten URL-Ebene verknüpft ist.
ApplicationHost.config enthält beispielsweise globale Einstellungen, die auf alle Sites des Servers
angewendet werden, und die web.config-Datei im Stammverzeichnis der Website ist sitespezifisch – wenn
sie sich in einem Anwendungsverzeichnis befindet, ist sie verzeichnisspezifisch. Web.config ist in der
Regel einem URL wie http://www.contoso.com/appfolder zugeordnet. Beachten Sie, dass web.config
optional verteilte Konfigurationsinformationen enthalten kann (für bestimmte Einstellungen ist dies
standardmäßig der Fall). ApplicationHost.config kann site- und anwendungsspezifische Einstellungen
enthalten, und dies ist auch oft so. Es gibt weitere Konfigurationsdateien, die ebenfalls mit IIS 7.0 zu tun
haben und die wir später in diesem Kapitel behandeln werden. Aus Gründen der Einfachheit werden wir
uns jedoch auf die Dateien konzentrieren, die zum Konfigurieren von Sites und Anwendungen eingesetzt
werden und die in Tabelle 4.1 aufgeführt sind.
Tabelle 4.1
IIS 7.0-Konfigurationsdateien
Datei
Speicherort
Konfigurationspfad
machine.config
%windir%\Microsoft .NET\Framework \
<version>\config
MACHINE
web.config-Stammdatei
%windir%\Microsoft .NET\Framework \
<version>\config
MACHINE/WEBROOT
applicationHost.config
%windir%\system32\
inetsrv\config
MACHINE/WEBROOT/APPHOST
Verteilte web.config-Dateien
Websiteverzeichnisstruktur
MACHINE/WEBROOT/APPHOST
/<SiteName>/<VirtualPath>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
70 Kapitel 4: Verstehen des Konfigurationssystems
Wie die Metabasis verwendet auch das IIS 7.0-Konfigurationssystem einen Konfigurationspfad, um die
Ebene der Konfigurationshierarchie anzugeben, auf der eine bestimmte Konfigurationseinstellung
vorgenommen werden soll. Diese Ebene entspricht sowohl dem URL-Namespace, für den die Konfiguration gilt, als auch einem Konfigurationspfad, der in Verbindung mit Befehlen (z.B. Appcmd) benutzt
wird, um den richtigen Konfigurationsspeicher zu referenzieren. Auf diese Weise ist die IIS 7.0-Konfigurationsdateihierarchie dem URL-Namespace zugeordnet und verweist gleichzeitig auf die jeweilige
Konfigurationsdatei, in der die entsprechende Konfiguration gespeichert ist.
Wenn das Konfigurationssystem die Konfiguration für einen bestimmten Konfigurationspfad abruft,
verbindet es die Inhalte aller Konfigurationsdateien, die den jeweiligen Abschnitten des Pfades zugeordnet sind, zu einer Einheit, so dass für diesen Pfad ein gültiger Konfigurationssatz entsteht. Deshalb
ist es möglich, web.config-Dateien anzugeben, die sich verteilt in der Verzeichnisstruktur der Website
befinden. Auf diese Weise kann jeder Teil der Website eine bestimmte Konfiguration für seinen URLNamespace festlegen, indem diese Konfiguration in einer web.config-Datei des entsprechenden
Verzeichnisses abgelegt wird.
In diesem System lautet der Konfigurationspfad eines bestimmten URLs MACHINE/WEBROOT/
APPHOST/<SiteName>/<VirtualPath>, wobei <SiteName> der Name der Site und <VirtualPath> der
virtuelle Pfad des URLs ist. Wenn der Server die Konfiguration für diesen Pfad liest, verbindet er die
Konfigurationen in machine.config, der web.config-Stammdatei, applicationHost.config und allen
verteilten web.config-Dateien, die sich, ausgehend vom Stammverzeichnis der Site, in den physikalischen Verzeichnissen befinden, die den jeweiligen Abschnitten des virtuellen Pfades entsprechen.
Wichtig Die web.config-Stammdatei, die innerhalb des Konfigurationssystems WEBROOT entspricht, befindet
sich in %windir%\Microsoft .NET\Framework \<version>\config. Sie sollte nicht mit einer web.config-Datei verwechselt werden, die im Stammverzeichnis einer Website angeordnet ist und oft als Webstamm bezeichnet wird. Im ersten Fall ist die web.config-Datei gemeint, die von .NET verwendet wird und der Parent oder Stamm der web.configDateien aller Websites ist. Im zweiten Fall ist die web.config-Datei gemeint, die sich im Stammordner einer Website
befindet. Die web.config-Datei im Stammverzeichnis einer Website erbt die Konfigurationseinstellungen, die sich in
der von .NET verwendeten web.config-Stammdatei befinden.
Die für die IIS-Features geltenden Konfigurationen der Serverebene sind in der Datei applicationHost.config gespeichert. Diese Datei speichert nur die Konfigurationen solcher Abschnitte, die global
auf den gesamten Server angewendet werden können, sowie Konfigurationsstandards für andere Abschnitte, die von allen URLs auf dem Server geerbt werden, sofern nicht eine andere Datei, die sich
innerhalb der Konfigurationshierarchie auf einer niedrigeren Ebene befindet, die Einstellungen dieser
Abschnitte außer Kraft setzt.
Wollen Sie beispielsweise den Server so konfigurieren, dass das Durchsuchen von Verzeichnissen
standardmäßig deaktiviert ist, platzieren Sie diese Konfiguration in der Datei applicationHost.config.
Soll dann das Durchsuchen von Verzeichnissen für eine Anwendung namens /App1, die sich in der
Standardwebsite befindet, erlaubt werden, legen Sie im physikalischen Stammverzeichnis der Anwendung eine web.config-Datei mit einer Konfiguration ab, die dieses Durchsuchen zulässt. Wenn eine
Anforderung eingeht, die sich auf den Stamm der Standardwebsite bezieht, liest der Server die
Konfiguration für den Pfad MACHINE/WEBROOT/APPHOST/Default Web Site/ und wendet die von
applicationHost.config geerbte Konfiguration an, die das Durchsuchen von Verzeichnissen deaktiviert.
Wenn jedoch eine auf die Anwendung bezogene HTTP-Anforderung eingeht, liest der Server die
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
71
Konfiguration für MACHINE/WEBROOT/APPHOST/Default Web Site/App1/, so dass auch der
Konfigurationssatz einbezogen wird, der sich in der web.config-Datei der Anwendung befindet und der
das Durchsuchen von Verzeichnissen für diesen URL aktiviert.
machine.config und die web.config-Stammdatei
Obwohl machine.config und die web.config-Stammdatei .NET Framework-Konfigurationsdateien sind,
werden sie im IIS-Konfigurationssystem abgebildet und von diesem gelesen. IIS 7.0 verfügt deshalb
über die folgenden Möglichkeiten: Es kann seine Konfiguration zusammen mit der ASP.NET-Konfiguration in den web.config-Dateien der Sites und Anwendungen verwahren, es kann innerhalb der
verwalteten Pipeline .NET-Module nutzen, und es kann die .NET-Konfiguration in den IIS-Manager
integrieren. Wie bereits erwähnt wurde, enthält machine.config computerweit gültige .NET Framework-Konfigurationseinstellungen, die von allen .NET-Anwendungen des Computers geladen werden,
und die web.config-Stammdatei enthält spezifische ASP.NET-Konfigurationseinstellungen, die von
allen ASP.NET-Anwendungen geladen werden. Diese Dateien können nur von Computeradministratoren modifiziert werden.
Diese Dateien befinden sich in %windir%\Microsoft .NET\.NET Framework \<version>\config, wo
<version> von der managedRuntimeVersion-Einstellung für den Anwendungspool festgelegt wird, in
dem die Konfiguration gelesen wird. Deshalb enthalten IIS-Anwendungspools, die so eingerichtet sind,
dass sie verschiedene Versionen des .NET Frameworks verwenden, automatisch die Konfigurationsdateien für die jeweils richtige .NET Framework-Version. Beachten Sie, dass ein Anwendungspool,
genauso wie bei IIS 6.0, nicht mehr als eine Version des .NET Frameworks hosten kann.
applicationHost.config
Die IIS-Hauptkonfigurationsdatei ist applicationHost.config, die sich im Verzeichnis %windir%\system32\inetsrv\config befindet. Sie kann nur von Computeradministratoren modifiziert werden.
ApplicationHost.config enthält nur solche Konfigurationsabschnitte und Einstellungen, die global für
den gesamten Server sinnvoll sind. Sie enthält beispielsweise im Abschnitt <sites> die Definitionen der
Sites, Anwendungen und virtuellen Verzeichnisse und im Abschnitt <applicationPools> die Anwendungspooldefinitionen. Andere globale Einstellungen finden sich im Konfigurationsabschnitt <globalModules>,
der eine Liste der von allen IIS-Arbeitsprozessen geladenen systemeigenen Module enthält, und im
Abschnitt <httpCompression>, der aktivierte Komprimierungsschemata und komprimierbare Inhaltstypen
auflistet. Diese Abschnitte können auf den unteren Ebenen nicht überschrieben werden. Der Server liest
sie nur auf der Ebene MACHINE/WEBROOT/APPHOST.
ApplicationHost.config speichert außerdem alle Standardeinstellungen für die IIS-Konfigurationsabschnitte, die von allen anderen URLs geerbt werden, bis andere Konfigurationsdateien, die sich
innerhalb der Konfigurationshierarchie weiter unten befinden, diese Einstellungen außer Kraft setzen.
Wenn Sie die Inhalte von applicationHost.config untersuchen, werden Sie feststellen, dass diese Datei
in Wirklichkeit sogar alle IIS-Konfigurationsabschnitte deklariert.
<configSections>
<sectionGroup name="system.applicationHost">
<section name="applicationPools" allowDefinition="AppHostOnly"
overrideModeDefault="Deny" />
<section name="sites" allowDefinition="AppHostOnly"
overrideModeDefault="Deny" />
<section name="webLimits" allowDefinition="AppHostOnly"
overrideModeDefault="Deny" />
…
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
72 Kapitel 4: Verstehen des Konfigurationssystems
</sectionGroup>
<sectionGroup name="system.webServer">
<section name="asp" overrideModeDefault="Deny" />
<section name="caching" overrideModeDefault="Allow" />
<section name="cgi" overrideModeDefault="Deny" />
<section name="defaultDocument" overrideModeDefault="Allow" />
<section name="directoryBrowse" overrideModeDefault="Allow" />
…
</sectionGroup>
</configSections>
Sie haben vielleicht bemerkt, dass diese Abschnittsdefinitionen ein Element namens allowDefinition
enthalten, das in unserem Beispiel auf AppHostOnly gesetzt wird. Die Einstellung allowDefinition weist dem
Abschnitt einen Gültigkeitsbereich zu, der festlegt, wo der Abschnitt verwendet werden kann. In
diesem Fall kann der Abschnitt Sites nur in applicationHost.config benutzt werden und ist an anderen
Orten nicht zulässig. Sie sollten die allowDefinition-Standardeinstellungen auf keinen Fall ändern.
Schließlich enthält diese Datei ebenfalls Informationen darüber, welche Konfigurationsabschnitte auf
niedrigeren Konfigurationsebenen außer Kraft gesetzt werden dürfen. Die Außerkraftsetzung auf untergeordneten Ebenen (Childebenen) wird wie im vorherigen Beispiel gezeigt mit dem overrideModeDefaultAttribut der Konfigurationsabschnittsdeklaration gesteuert. Der Serveradministrator kann dieses Attribut
benutzen, um das Delegieren von IIS-Features an Siteadministratoren zu kontrollieren. Wir werden uns mit
dem Delegieren von Abschnitten später in diesem Kapitel im Abschnitt »Konfigurationsdelegierung«
beschäftigen.
Verteilte web.config-Dateien
Die IIS 7.0-Konfigurationshierarchie trägt dazu bei, dass die Siteverzeichnisstruktur web.configKonfigurationsdateien enthalten kann. Diese Dateien können neue Konfigurationseinstellungen
festlegen oder solche Konfigurationseinstellungen außer Kraft setzen, die auf der Serverebene für
den URL-Namespace gesetzt sind, der dem Verzeichnis entspricht, in dem sich die Dateien befinden
(vorausgesetzt, die verwendeten Konfigurationsabschnitte wurden vom Administrator nicht gesperrt).
Dies ist die Grundlage für das Delegierungskonfigurationsszenario, bei dem Anwendungen die
erforderlichen IIS-Einstellungen zusammen mit den Anwendungsinhalten verwahren können und
das die einfache xcopy-Bereitstellung ermöglicht.
Da außerdem das ASP.NET-Konfigurationssystem diese Dateien ebenfalls liest, können sie sowohl IISals auch ASP.NET-Konfigurationseinstellungen enthalten.
redirection.config
Sie finden im Verzeichnis %windir%\system32\ inetsrv\config ebenfalls redirection.config. Die Datei
wird benutzt, um Konfigurationseinstellungen für die freigegebene Konfiguration zu speichern. Sie ist
nicht Teil der IIS 7.0-Konfigurationshierarchie, aber das Konfigurationssystem verwendet sie, um für
die Datei applicationHost.config Umleitungen einzurichten.
Wenn sie benutzt wird, legt sie die Positions- und Zugriffsinformationen fest, die von IIS 7.0 benötigt
werden, um applicationHost.config von einem Remoteort im Netzwerk aus zu laden, anstatt das lokale
Verzeichnis inetsrv\config zu verwenden. Auf diese Weise können mehrere IIS 7.0-Server eine zentrale
Konfigurationsdatei gemeinsam nutzen, was die Verwaltung vereinfacht. Weitere Informationen zur
freigegebenen Konfiguration finden Sie später in diesem Kapitel im Abschnitt »Eine Konfiguration für
mehrere Server«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
73
administration.config
Nur der IIS-Manager nutzt administration.config (ebenfalls nicht Bestandteil der IIS 7.0-Konfigurationshierarchie), um seine eigene Konfiguration festzulegen. Auch diese Datei befindet sich im
Verzeichnis %windir%\system32\ inetsrv\config.
Zusätzlich zu anderen Informationen enthält administration.config die Liste der zu ladenden IISManager-Erweiterungen. Diese Erweiterungen stellen die Features zur Verfügung, die Sie im IISManager sehen. Wie IIS ist auch der IIS-Manager vollständig erweiterbar. Sie erfahren im zwölften
Kapitel, »Verwalten von Webservermodulen«, mehr über das Erweiterbarkeitsmodell und die
Konfiguration der Erweiterungen des IIS-Managers.
Temporäre .config-Dateien für Anwendungspools
Eines der neuen IIS 7.0-Features ist die erweiterte Anwendungspoolisolation. IIS 7.0 liest zur Laufzeit
die applicationHost.config-Konfiguration und erzeugt daraus jeweils eine gefilterte Kopie für jeden
Anwendungspool, die wie folgt gespeichert wird:
%systemdrive%\inetpub\temp\appPools\<ApplicationPoolName>.config
Die gefilterten Konfigurationsdateien enthalten nur die Anwendungspooldefinitionen für den jeweiligen Anwendungspool (andere Anwendungspooldefinitionen, auch solche für benutzerdefinierte
Anwendungspools, werden aussortiert). Weiterhin werden alle Sitedefinitionen und sitespezifischen
Konfigurationen entfernt, die sich in den location-Tags solcher Sites befinden, die im jeweiligen
Anwendungspool über keine Anwendungen verfügen.
Die für jeden Anwendungspool erzeugte temporäre Konfigurationsdatei ist dahingehend geschützt,
dass sie nur von dem Anwendungspool gelesen werden kann, für den sie angelegt wurde. Dies
gewährleistet, dass kein Arbeitsprozess (Anwendungspool) die Konfigurationseinstellungen eines
anderen Arbeitsprozesses lesen kann.
Die Anwendungspoolkonfigurationsdateien sind nicht für die Verwendung im Rahmen von Updates
vorgesehen, und weder Administratoren noch Entwickler sollten sie direkt oder indirekt bearbeiten. Ihr
Einsatz bleibt vollständig transparent, ist aber Teil des Konfigurationssystems, weshalb wir sie an dieser
Stelle erwähnt haben. Weitere Informationen erhalten Sie im vierzehnten Kapitel, »Implementieren von
Sicherheitsstrategien«.
Konfigurationsdateisyntax
Jede Konfigurationsdatei verwendet spezielle XML-Elemente, um Konfigurationsinformationen
anzugeben. Diese Elemente werden als Konfigurationsabschnitte bezeichnet. Ein Konfigurationsabschnitt ist die grundlegende Konfigurationseinheit, die in der Regel das Verhalten eines bestimmten
Teils oder Features des Webservers definiert.
Nachfolgend ist ein Beispiel für eine Konfigurationsdatei aufgeführt, die mehrere Konfigurationsabschnitte angibt:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<asp>
<cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\
ASP Compiled Templates" />
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
74 Kapitel 4: Verstehen des Konfigurationssystems
</asp>
<defaultDocument enabled="true">
<files>
<add value="index.html" />
<add value="default.aspx" />
</files>
</defaultDocument>
<directoryBrowse enabled="false" />
</system.webServer>
<configuration>
Wie Sie sehen, handelt es sich hierbei um eine wohlgeformte XML-Datei mit einem zwingend
erforderlichen <configuration>-Stammelement, das mehrere Unterelemente enthält. Diese Unterelemente
sind entweder direkte Konfigurationsabschnittselemente oder Abschnittsgruppenelemente, wie z.B.
<system.webServer>. Abschnittsgruppenelemente legen keine Einstellungen fest. Sie fassen lediglich
verwandte Abschnittselemente zu einer Gruppe zusammen. Alle IIS-Webserverfeatures befinden sich
beispielsweise in der Abschnittsgruppe <system.webServer>. Abschnitte sind die Elemente, die bestimmte
Konfigurationseinstellungen enthalten (und in Fettschrift dargestellt sind).
Jedes Konfigurationsabschnittselement richtet sich nach einer bestimmten Struktur, die von seinem
jeweiligen Schema definiert wird. Dieses Schema kontrolliert die Attribute, Childelemente und
Datentypen, die innerhalb der Abschnitte zulässig sind, sowie verschiedene andere Beschränkungen der
Konfigurationssyntax. Die Schemainformationen befinden sich in Konfigurationsschemadateien, die
beim IIS 7.0-Konfigurationssystem registriert sind. Im Gegensatz zum ASP.NET-Konfigurationssystem, das Code benutzt, um die Struktur seiner Konfiguration zu definieren, basiert das IIS 7.0Konfigurationssystem vollständig auf deklarativen Schemainformationen. Wir werden diesen
Schemamechanismus später in diesem Kapitel untersuchen.
Zusätzlich zu Abschnittsgruppen und den Konfigurationsabschnitten selbst können Konfigurationsdateien auch Abschnittsdeklarationen und location-Tags enthalten. Abschnittsdeklarationen sind
notwendig, weil sie einen bestimmten Abschnitt deklarieren, bevor er verwendet werden kann. Sie
zeigen außerdem an, zu welcher Abschnittsgruppe ein Abschnitt gehört. location-Tags tragen dazu bei,
dass die Gültigkeit einer Konfiguration auf einen bestimmten Konfigurationspfad beschränkt werden
kann, anstatt für den gesamten Namespace, dem die aktuelle Konfigurationsdatei entspricht, zu gelten.
Direkt von der Quelle: Beschränkungen der Größe von web.config-Dateien umgehen
Das IIS 7.0-Konfigurationssystem legt standardmäßig eine Grenze von 100 KB für die Größe von
web.config-Dateien fest. Dies geschieht aus Sicherheitsgründen, um eventuelle DoS-Angriffe
(Denial-of-Service) auf den Server zu unterbinden, die durch die Bereitstellung sehr großer
Konfigurationsdateien ermöglicht werden.
In den meisten Fällen und Situationen sollte diese Größe genügen, doch wie gehen Sie vor, wenn Ihre
Konfigurationsdatei größer als 100 KB ist? Dies kann bei Anwendungen geschehen, die web.configDateien intensiv nutzen, um benutzerdefinierte Konfigurationen zu speichern. Um derart große
Dateien zuzulassen, können Sie die Begrenzung außer Kraft setzen, indem Sie der WindowsRegistrierung einen Schlüssel hinzufügen. Erzeugen Sie den folgenden Schlüssel:
HKLM\Software\Microsoft\InetStp\Configuration
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
75
Erstellen Sie anschließend den folgenden DWORD-Wert:
MaxWebConfigFileSizeInKB
Setzen Sie den Wert auf die gewünschte Dateigröße in Kilobyte (achten Sie darauf, dass Sie für die
Eingabe des Wertes die Option Dezimal wählen), damit dies die neue computerweit gültige Grenze
für die web.config-Dateigröße wird.
Abschnittsdeklarationen
Jeder in einer Konfigurationsdatei verwendete Abschnitt wird in applicationHost.config mit einer
Abschnittsdeklaration deklariert. Abschnittsdeklarationen werden im Allgemeinen während der
Installation des jeweiligen Features generiert und müssen normalerweise nicht manuell hinzugefügt
werden. Nachfolgend ist beispielsweise ein Auszug aus der applicationHost.config-Konfigurationsdatei aufgeführt, der alle IIS-Konfigurationsabschnitte deklariert:
<configSections>
<sectionGroup name="system.applicationHost">
<section name="applicationPools" allowDefinition="AppHostOnly"
overrideModeDefault="Deny" />
<section name="sites" allowDefinition="AppHostOnly"
overrideModeDefault="Deny" />
</sectionGroup>
<sectionGroup name="system.webServer">
<section name="asp" overrideModeDefault="Deny" />
<section name="defaultDocument" overrideModeDefault="Allow" />
<section name="directoryBrowse" overrideModeDefault="Allow" />
<sectionGroup name="security">
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
<section name="basicAuthentication" overrideModeDefault="Deny" />
</sectionGroup>
<section name="authorization" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
Dieses Fragment definiert mehrere IIS-Konfigurationsabschnitte, einschließlich der Abschnitte <sites>
und <applicationPools>, die von WAS gelesen werden, und verschiedene Abschnitte für die Webserverfeatures, zu denen auch <asp> und <anonymousAuthentication> zählen. Wie Sie sehen, sind diese Abschnitte in
den entsprechenden Abschnittsgruppen verschachtelt. Abschnittsdeklarationen können verschiedene
Eigenschaften festlegen, die kontrollieren, wo der Abschnitt verfügbar ist. Zu diesen Eigenschaften
zählen auch allowDefinition, die bestimmt, auf welcher Ebene der Konfigurationshierarchie der Abschnitt
verwendet werden kann, und overrideModeDefault, die festlegt, ob untere Konfigurationsebenen den
Abschnitt standardmäßig verwenden können. Nachdem der Abschnitt deklariert wurde, kann er in der
aktuellen Konfigurationsdatei oder auf den Konfigurationsdateiebenen darunter verwendet werden, so
dass er dort nicht neu deklariert werden muss (eine erneute Deklaration des Abschnitts würde sogar zu
einem Konfigurationsfehler führen). Tatsächlich sind alle IIS-Konfigurationsabschnitte in applicationHost.config deklariert und somit in jeder web.config-Konfigurationsdatei einer Website verfügbar.
Die Attribute allowDefinition und overrideModeDefault kontrollieren die Möglichkeit, diese Konfigurationsabschnitte auf den unteren Ebenen zu verwenden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
76 Kapitel 4: Verstehen des Konfigurationssystems
Abschnittsgruppen
Sie benutzen Abschnittsgruppenelemente, um verwandte Konfigurationsabschnitte in Gruppen
zusammenzufassen. Wenn Sie einen Abschnitt deklarieren, geben Sie an, welcher Abschnittsgruppe er
zugeordnet ist, indem Sie sein <section>-Element innerhalb des entsprechenden <sectionGroup>-Elements
anordnen. Auf diese Weise wird die Abschnittsgruppe selbst implizit deklariert. Abschnittsgruppen
können keine Attribute definieren und enthalten somit keine eigenen Konfigurationsinformationen.
Abschnittsgruppen können ineinander verschachtelt sein, Abschnitte nicht. Stellen Sie sich Abschnittsgruppen als eine Namespacekennung für Abschnitte vor.
Wenn Sie die Konfigurationsabschnitte angeben, müssen Sie sie der jeweiligen Deklaration gemäß
innerhalb des entsprechenden Abschnittsgruppenelements anordnen. Wenn Sie beispielsweise die
Konfiguration für den Abschnitt <authorization> festlegen, der in der Abschnittsgruppe <system.webServer>/
<security> deklariert ist, muss der Konfigurationsabschnitt wie folgt in den entsprechenden Abschnittsgruppenelementen verschachtelt sein:
<configuration>
<system.webServer>
<security>
<authorization bypassLoginPages="true" />
</security>
</system.webServer>
</configuration>
Tabelle 4.2 führt die meisten Abschnittsgruppen auf, die Sie standardmäßig im IIS 7.0-Konfigurationssystem finden. Sie gibt außerdem Aufschluss darüber, welche Konfigurationen die Abschnittsgruppen
enthalten und wo deren Deklaration erfolgt.
Tabelle 4.2 Abschnittsgruppen
Abschnittsgruppen
Beschreibung
Deklariert in
system.applicationHost
Enthält globale protokollneutrale IIS-Konfigurationen, die vom
applicationHost.config
Windows-Prozessaktivierungsdienst verwendet werden, einschließlich <sites>, <applicationPools>, <listenerAdapters> usw.
system.webServer
Enthält alle Konfigurationen für die IIS-Webserverengine und
-features, einschließlich <modules>, <handlers>, <serverRuntime>, <asp>, <defaultDocument> und viele weitere; enthält
außerdem mehrere untergeordnete (Child) Abschnittsgruppen
system.webServer /security
Enthält sicherheitsbezogene Webserverkonfigurationen, einapplicationHost.config
schließlich <authorization>, <isapiCgiRestriction>, <requestFiltering> und weitere
system.webServer /security /
authentication
Enthält Konfigurationen für alle Webserverfeatures, die sich
auf die Authentifizierung beziehen, einschließlich <anonymousAuthentication>, <windowsAuthentication> und weitere
applicationHost.config
applicationHost.config
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
77
Tabelle 4.2 Abschnittsgruppen (Fortsetzung)
Abschnittsgruppen
Beschreibung
Deklariert in
system.webServer /tracing
Enthält Konfigurationen für Webserverfeatures, die sich auf
die Ablaufverfolgung beziehen, einschließlich <traceFailedRequests> und <traceProviderDefinitions>
applicationHost.config
system.web
Enthält alle ASP.NET-Konfigurationen
Framework machine.config
Die in der machine.config-Datei von .NET deklarierten Abschnittsgruppen sind aus Platzgründen in
Tabelle 4.2 nicht aufgeführt. Diese Abschnitte steuern verschiedene Aspekte des .NET FrameworkVerhaltens. Zu ihnen zählen system.net, system.xml.serialization usw.
Abschnitte
Der Abschnitt configuration ist der Mittelpunkt des IIS 7.0-Konfigurationssystems, da er die grundlegende Konfigurationseinheit darstellt. Jeder Konfigurationsabschnitt besitzt eine bestimmte Struktur,
die durch sein Schema definiert wird und verschiedene Attribute, Elemente und Elementauflistungen
enthält, die notwendig sind, um die für das entsprechende IIS-Feature erforderliche Konfiguration zu
beschreiben.
Ein Konfigurationsabschnitt kann (abhängig vom Schema) keines oder mehrere der in Tabelle 4.3
aufgeführten Elemente enthalten.
Tabelle 4.3 Konfigurationsabschnittselemente
Element
Beschreibung
Attribute
Ein benanntes XML-Attribut, das einen im Schema spezifizierten Typ verwendet. Zu den unterstützten Typen
zählen int, string, timespan, enumerations und andere. Attribute können mit Validierungsregeln verknüpft
sein, die die zulässigen Werte eingrenzen. Sie können außerdem über zusätzliche Metadaten verfügen,
z.B. Standardwerte, oder sie legen fest, ob das Attribut angegeben werden muss, wenn der Abschnitt
verwendet wird.
Childelemente
Untergeordnete (Child) XML-Elemente, die wiederum andere Attribute und Childelemente enthalten
können
Auflistungen
Eine Auflistung ist ein Childelement, das andere Childelemente enthält (in der Regel <add>, <remove> und
<clear>), die dazu verwendet werden können, Konfigurationselementlisten zu erstellen. Auflistungselemente
sind mit Metadaten verknüpft, die das Verhalten der Elemente definieren. Dazu zählen auch Informationen
darüber, welche Attribute als Auflistungselementschlüssel dienen, in welcher Reihenfolge Auflistungselemente hinzugefügt werden, wenn die Auflistungen verschiedener Konfigurationsdateien miteinander verbunden werden usw.
Die meisten Konfigurationsabschnitte geben Standardwerte für alle Attribute an, die in ihrem Schema
definiert sind. Diese Werte bilden die Standardkonfiguration des jeweiligen Abschnitts, sofern sie in
einer Konfigurationsdatei nicht anders definiert sind (Auflistungen sind standardmäßig immer leer).
Jede Konfigurationsdatei kann ein Abschnittselement angeben, um den Wert der entsprechenden
Attribute explizit zu setzen oder die Auflistungen im Abschnitt zu modifizieren. Der Abschnitt kann in
mehreren Konfigurationsdateien angegeben werden, so dass das Konfigurationssystem die Inhalte aller
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
78 Kapitel 4: Verstehen des Konfigurationssystems
Instanzen dieses Abschnitts zusammenfügt, wenn es diesen Abschnitt für einen bestimmten Konfigurationspfad abruft. Das Zusammenfügen von Attributen führt dazu, dass die in den höheren Konfigurationsebenen festgelegten Werte außer Kraft gesetzt werden. Und das Zusammenfügen von Auflistungen
führt dazu, dass Auflistungselemente abhängig von der Auflistungsverwendung hinzugefügt oder
entfernt werden.
Nachfolgend ist beispielsweise der Inhalt einer web.config-Datei aufgeführt, die Sie im Stammverzeichnis einer PHP-Anwendung ablegen könnten. Die Datei enthält die Konfiguration für den
Abschnitt <defaultDocument> und legt index.php als Standarddokument fest.
<configuration>
<system.webServer>
<defaultDocument enabled="true">
<files>
<add value="index.php" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Diese Konfiguration setzt das in applicationHost.config oder in einer web.config-Datei einer höheren
Ebene festgelegte globale enabled-Attribut außer Kraft, indem sie seinen Wert auf true setzt. Sie fügt der
<files>-Auflistung außerdem einen neuen Eintrag hinzu, damit index.php als Standarddokument dienen
kann. Wenn Konfigurationsdateien früher in der Hierarchie andere Standarddokumenttypen in der
<files>-Auflistung definiert hätten, würde die für Ihre Anwendung geltende Auflistung diese Einträge
sowie den Eintrag enthalten, den wir soeben innerhalb unseres Gültigkeitsbereichs hinzugefügt haben.
Wenn die übergeordneten (Parent) Konfigurationsdateien das Standarddokumentfeature durch Setzen
seines enabled-Attributs auf false deaktiviert hätten, würde unsere Konfiguration diesen Wert für die
Anwendung außer Kraft setzen.
Der Abschnitt »Konfigurationsbearbeitung«, den Sie später in diesem Kapitel finden, beschreibt das
Festlegen der Konfiguration mithilfe von Konfigurationsabschnitten.
Konfigurationsabschnittsschema
Alle IIS-Konfigurationsabschnitte sind in der Schemadatei IIS_Schema.xml definiert, die sich im
Verzeichnis %windir%\system32\inetsrv\config\schema directory befindet. Um mehr über die Syntax
eines Konfigurationsabschnitts zu erfahren, können Sie dessen Schema untersuchen. Nachfolgend
finden Sie beispielsweise einen Auszug aus der Schemadefinition für den Konfigurationsabschnitt
<defaultDocument>:
<sectionSchema name="system.webServer/defaultDocument">
<attribute name="enabled" type="bool" defaultValue="true" />
<element name="files">
<collection addElement="add" clearElement="clear" removeElement="remove"
mergeAppend="false">
<attribute name="value" type="string" isUniqueKey="true"/>
</collection>
</element>
</sectionSchema>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
79
Das Schema enthält die Definitionen für das enabled-Attribut und die <files>-Auflistung, die wir zuvor
verwendet haben, um die Standarddokumentkonfiguration festzulegen. Wie Sie sehen, enthält dieses
Schema weitaus mehr Informationen, als nur die Struktur des configuration-Abschnitts – es enthält auch
verschiedene Metadaten über das Format und das Verhalten von Attributen und Auflistungen, wie z.B.
Informationen über die möglichen Attributtypen und darüber, welche Attribute eindeutige Schlüssel für
Auflistungen sind. <defaultDocument> ist ein recht einfacher Abschnitt, weshalb er die Flexibilität von
Abschnittsschemainformationen nicht gänzlich verdeutlicht. Er ist jedoch ein gutes Beispiel dafür, wie
Sie die Schemainformationen nutzen können, um Konfigurationsabschnitte zu definieren und deren
Verhalten zu kontrollieren.
Hinweis Wenn Sie mit der IIS-Konfiguration arbeiten, müssen Sie wahrscheinlich nie mit einem Abschnittsschema
arbeiten. Wenn Sie jedoch eine Referenz für die Struktur und die Semantik von IIS-Konfigurationsabschnitten benötigen, sollten Sie wissen, wo sich die Schemainformationen befinden. Sie sollten niemals versuchen, die IIS-Schemadateien zu modifizieren. Wenn Sie aber neue IIS-Features entwickeln, können Sie benutzerdefinierte Konfigurationsschemadateien im Verzeichnis inetsrv\config\schema veröffentlichen, um im IIS-Konfigurationssystem neue
Konfigurationsabschnitte zu verwenden.
Sie finden im Verzeichnis schema ebenfalls die Dateien FX_schema.xml und ASPNET_schema.xml, die
die Schemadefinitionen für die .NET Framework- und ASP.NET-Konfigurationsabschnitte enthalten.
Das IIS 7.0-Konfigurationssystem ist vollständig erweiterbar. Benutzerdefinierte
Konfigurationsabschnitte, die für das IIS 7.0-Konfigurationsschema registriert sind, verfügen über
eigene Schemadateien, die im Verzeichnis schema veröffentlicht sind.
location-Tags
Eine in einer bestimmten Konfigurationsdatei festgelegte Konfiguration wird standardmäßig auf den
gesamten URL-Namespace angewendet, der dieser Datei entspricht. Die in applicationHost.config
enthaltene Konfiguration wird beispielsweise auf den gesamten Server angewendet, und die Konfiguration, die in der web.config-Stammdatei einer Site festgelegt ist, gilt für die gesamte Site (sofern sie
nicht von spezifischeren web.config-Dateien außer Kraft gesetzt wird). Meistens funktioniert das auch.
Manchmal ist es jedoch notwendig, eine Konfiguration auf eine bestimmte Untermenge eines URLNamespace oder auf einen bestimmten URL anzuwenden. Tags für Konfigurationsorte (location-Tags)
sind der Mechanismus, der dies ermöglicht. Dazu wird ein Konfigurationspfad angegeben, für den die
gesamte Konfiguration gilt, die innerhalb eines location-Tags angegeben ist.
Hier ist ein Beispiel für den Einsatz eines location-Tags, mit dem die Gültigkeit einer Konfiguration auf
eine bestimmte Website beschränkt wird:
<location path="Default Web Site">
<system.webServer>
<directoryBrowse enabled="true" />
</system.webServer>
</location>
Wenn dieses location-Tag in applicationHost.config angegeben ist, wendet es den <directoryBrowse>Konfigurationsabschnitt auf den Konfigurationspfad MACHINE/WEBHOST/APPHOST/Default Web
Site/ an.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
80 Kapitel 4: Verstehen des Konfigurationssystems
Bei IIS 7.0 werden location-Tags für drei übliche Szenarien verwendet:
1. Definieren sitespezifischer Verzeichnis- oder Dateikonfigurationen in applicationHost.config. Dies
ist notwendig, um eine spezifische Konfiguration für einen bestimmten Inhalt einer Website zu verwenden, ohne diese Konfiguration in der web.config-Datei der Site zu definieren. Dies ist beispielsweise das Verfahren, das üblicherweise von Shared-Hostingsservern genutzt wird, um sitespezifische Konfigurationen festzulegen, über die der Siteadministrator keine Kontrolle haben soll. Wenn
im IIS-Manager oder mit einer der programmgesteuerten Schnittstellen Änderungen an der Konfiguration vorgenommen werden, werden nicht delegierte Einstellungen mithilfe von location-Tags in
applicationHost.config geschrieben.
2. Sperren oder Entsperren eines bestimmten Konfigurationsabschnitts für einen bestimmten Konfigurationspfad. Wenn Sie einen Konfigurationsabschnitt innerhalb eines location-Tags für einen
bestimmten Pfad platzieren, können Sie das overrideMode-Attribut des location-Tags benutzen, um diesen Konfigurationsabschnitt für diesen Pfad zu sperren oder wieder freizugeben. Dies ist beispielsweise für Konfigurationsabschnitte erforderlich, die mit overrideModeDefault = Deny deklariert wurden,
um in web.config-Dateien die delegierte Konfiguration wieder zuzulassen.
3. Festlegen der Konfiguration eines bestimmten nicht physikalischen URLs. Wenn Sie eine
bestimmte Konfiguration auf einen URL anwenden möchten, der keinem physikalischen Verzeichnis entspricht (eine Datei oder ein virtueller URL), müssen Sie die Konfiguration innerhalb eines
physikalischen übergeordneten Verzeichnisses mithilfe eines location-Tags definieren.
Sie können ein location-Tag verwenden, um die gesamte Konfiguration für eine Site oder Anwendung in nur einer web.config-Datei zu verwahren, anstatt Teile davon auf viele verschiedene
web.config-Dateien in verschiedenen Unterverzeichnissen zu verteilen.
Wir werden später in diesem Kapitel location-Tags ausführlicher erörtern.
Das IIS 7.0-Konfigurationssystem und die IIS 6.0-Metabasis
Bisher haben wir uns bis zu einem gewissen Grad mit den Inhalten und der Funktionsweise des
Konfigurationssystems beschäftigt. Wir sollten jedoch noch einmal ein wenig zurückgehen und
applicationHost.config selbst betrachten, anstatt uns auf die Inhalte dieser Datei zu konzentrieren.
Unterschiede zwischen dem IIS 7.0-Konfigurationssystem und der IIS 6.0-Metabasis
Der IIS 6.0-Konfigurationsspeicher ist Metabase.xml. Er befindet sich in %windir%\system32\inetsrv.
Für IIS 7.0 wurde Metabase.xml in applicationHost.config umgewandelt. Diese Datei befindet sich in
%windir%\system32\inetsrv\config.
Weshalb hat das IIS-Team derart viel Zeit und Aufwand in solch eine groß angelegte Änderung der
Struktur und Funktionsweise des Konfigurationssystems investiert? Primär, um einen Durchbruch bei
der Leistung, Skalierbarkeit und Verwaltbarkeit zu erzielen. Das IIS 6.0-Konfigurationssystem basiert
auf einem System, das für IIS 4.0 entworfen und implementiert wurde. IIS 4.0 ist Teil von Windows NT.
Es war also Zeit für einen Neuentwurf mit neuen Designkriterien.
Das resultierende System ist etwas komplexer, da es sehr anspruchsvoll ist. Gleichzeitig ist es jedoch
besser verwaltbar, skalierbar und flexibler. Tabelle 4.4 führt einige wichtige Unterschiede zwischen der
IIS 6.0-Metabasis und den IIS 7.0-Konfigurationsdateien auf.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
81
Tabelle 4.4 Metabase.xml im Vergleich mit dem IIS 7.0-Konfigurationssystem
Feature
Metabase.xml von IIS 6.0
IIS 7.0-Konfigurationssystem
Bedeutung
Delegierte Konfiguration
Nicht möglich – die gesamte
Konfiguration ist zentral
gespeichert und erfordert
administrative Rechte, wenn
Änderungen vorgenommen
werden sollen
Sowohl die durch den Administrator kontrollierte Konfiguration
in applicationHost.config als auch
die delegierte Konfiguration in
web.config-Dateien sind möglich
Administratoren können Konfigurationsaufgaben an Anwendungsbesitzer delegieren; Anwendungen
können zusammen mit der gesamten
Konfiguration per xcopy bereitgestellt
werden
Struktureller Aufbau
Eigenschaften sind nicht
gruppiert
Stellt eine aus Abschnittsgruppen,
Abschnitten, Elementen und
Unterelementen bestehende
Hierarchie zur Verfügung
Einfach zu lesen, zu durchsuchen
und zu verwalten; Ermöglicht die Verwendung kürzerer Elementnamen,
da alle Einträge in Abschnitten
logisch gruppiert sind und nicht
einfach nur aufgelistet werden
Vereinfachte Beschreibung Verwendet Multi-SZSchlüsseltypen und Bitvon Eigenschaften mit
masken, um mit mehreren
mehreren Werten
Elementwerten, wie z.B.
AuthenticationProviders
(NT) umgehen zu können
Verwendet Auflistungen mit einer
einfachen add/remove/clear-Syntax, die auf der .NET FrameworkKonfigurationssyntax und -verwendung basiert
Die Einstellungen können einfacher
gelesen, bearbeitet und abgefragt
werden und über mehrere Werte
verfügen
Arbeitsspeicherbasierte
Konfiguration im Vergleich
mit dateibasierter
Konfiguration
Die Metabasis ist ein
Speicherkonstrukt, das in
Metabase.xml geschrieben
wird; Synchronisierungsprobleme können auftreten
Die Konfiguration ist dateibasiert; Die IIS-Konfiguration ist immer vollKonfigurationsänderungen werden ständig in .config-Dateien abgebildet
direkt in die Konfigurationsdateien
übernommen
Schemaerweiterbarkeit
Für benutzerdefinierte
Anwendungen schwierig
zu erweitern; verhindert
Innovationen von Seiten
der Community
Basiert auf IIS_Schema.xml;
Anwendungsentwickler können
das Schema kann einfach mithilfe Anwendungseinstellungen einfacher
von XML erweitert werden
in IIS 7.0 integrieren
Kompatibilität mit der IIS 6.0-Metabasis
Trotz der umfassenden Überarbeitung des Konfigurationssystems ist IIS 7.0 auch weiterhin abwärtskompatibel mit älteren, bereits vorhandenen und auf die Metabasis bezogenen Konfigurationsskripts
und -tools, die der Konfiguration des Servers dienen.
Dies wird durch die Bereitstellung einer Metabasisemulationsschicht erreicht, die die über die ABOSchnittstellen (Active Base Objects) offen gelegten Metabasis-APIs ermöglicht, auf denen alle anderen
Metabasistools und -Scripting-APIs basieren. Die Metabasisemulationsschicht, die auch als ABOMapper bezeichnet wird, führt eine sofortige Übersetzung der Metabasiskonfigurationsstruktur und der
von den Aufrufern initiierten Metabasisaktionen durch, so dass diese im neuen Konfigurationssystem
abgebildet werden. Alle auf die Metabasis bezogenen Schreib- und Lesevorgänge werden somit der
entsprechenden IIS 7.0-Konfiguration zugeordnet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
82 Kapitel 4: Verstehen des Konfigurationssystems
Diese Dienstleistung bleibt für den Aufrufer transparent, so dass die bereits vorhandenen Installer,
Konfigurationsskripts und -tools auch weiterhin so arbeiten, als würden sie unter IIS 6.0 ausgeführt. Der
ABO-Mapper unternimmt jede Anstrengung, um alle IIS 6.0-Metabasiseigenschaften den entsprechenden IIS 7.0-Konfigurationseigenschaften zuzuordnen. Letztendlich können fast alle Metabasiseigenschaften der IIS 7.0-Konfiguration zugeordnet werden. Es gibt nur sehr wenige Ausnahmen.
Hinweis Sie finden unter der folgenden Adresse eine Dokumentation, die beschreibt, wie IIS 6.0-Metabasiseigenschaften dem neuen IIS 7.0-Konfigurationsschema zugeordnet werden: http://msdn2.microsoft.com/en-us/library/
aa347565.aspx.
Die Kompatibilität mit der Metabasis ist standardmäßig nicht aktiviert, und Sie benötigen sie auch
nicht, wenn Sie keine alten IIS 6.0-Konfigurationsskripts ausführen oder Installer von Drittanbietern
verwenden möchten, die ABO erfordern. Ist dies jedoch Ihr Wunsch, müssen Sie die Komponente für
die Kompatibilität mit der IIS 6.0-Metabasis installieren. Sie wählen sie unter Windows Vista über die
Systemsteuerung und die Gruppe Programme und Funktionen und schließlich auf der Seite WindowsFunktionen ein- oder ausschalten aus. Dort befindet sie sich in der Kategorie IIS/Metabasiskompatibilität. Wenn Sie mit Windows Server 2008 arbeiten, wählen Sie die Komponente im Server-Manager
und dort in der IIS-Rolle aus, wie in Abbildung 4.2 dargestellt.
Abbildung 4.2 Installieren der IIS 6.0-Metabasiskompatiblität mit dem Server-Manager
Sie können auch die alten IIS 6.0-Konfigurationsskripts aus der Kategorie IIS 6.0-Metabasiskompatibilität heraus installieren. Sie erhalten dann Skripts wie adsutil.vbs und iisweb.vbs. Wir empfehlen
Ihnen jedoch, die neuen, vom IIS 7.0-Konfigurationssystem angebotenen Konfigurationstools und
-APIs für Ihre Konfigurationsskripts und Programme zu benutzen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über das Konfigurationssystem
83
IIS 7.0 und die .NET-Konfigurationssysteme
Die .NET-Konfigurationsdateien (machine.config, die web.config-Stammdatei und die web.config-Dateien
von Anwendungen) verhalten sich unter IIS 7.0 genauso wie unter IIS 6.0. Eigentlich weiß das .NETKonfigurationssystem gar nicht, dass es unter IIS 7.0 ausgeführt wird, und es liest auch keine der IIS 7.0Konfigurationseinstellungen. IIS 7.0 hingegen ist sich der Anwesenheit von .NET bewusst. Die IIS 7.0Konfigurationshierarchie enthält die .NET-Konfigurationsdateien der Serverebene, machine.config und
die web.config-Stammdatei (zusätzlich zu applicationHost.config), aber das .NET-Konfigurationssystem
berücksichtigt nicht die in applicationHost.config gespeicherte IIS-Konfiguration.
Einer der primären Vorteile dieses Designs ist, dass IIS 7.0-Konfigurationseinstellungen in denselben
verteilten web.config-Konfigurationsdateien wie die ASP.NET-Konfigurationseinstellungen gespeichert werden können. Dadurch wird es möglich, dass Anwendungen in den web.config-Dateien die
Konfigurationen verwahren können, die sie benötigen, um auf der IIS-Plattform ausgeführt zu werden.
Außerdem wird die einfache xcopy-Bereitstellung möglich.
Aus der Entwicklerperspektive betrachtet ist es außerdem möglich, dass die für IIS 7.0 entwickelten
verwalteten Module unter Verwendung der IIS 7.0-Klasse Microsoft.Web.Administration und anderer .NETKlassen genauso auf die .NET-Konfiguration zugreifen, wie sie dies mit den IIS 7.0-Konfigurationsabschnitten tun. Ähnlich hierzu können die IIS 7.0-Konfigurations-APIs verwendet werden, um in
Szenarien, in denen die automatisierte Bereitstellung und Verwaltung zum Einsatz kommt, die .NETKonfigurationsabschnitte zu verwalten.
Darüber hinaus bietet das IIS-Manager-Tool viele ASP.NET-Konfigurationsfeatures an. Sie können
beispielsweise im IIS-Manager Datenbankverbindungszeichenfolgen konfigurieren und müssen dazu
nicht die entsprechende .config-Datei öffnen. Der IIS-Manager ermöglicht es Ihnen außerdem,
Benutzer und Rollen mithilfe des .NET-Rollen- und -Mitgliedschaftsanbieters zu verwalten. Dies ist
sehr nützlich, wenn Benutzerinformationen für Features wie die Formularauthentifizierung verwaltet
und IIS-Manager-Benutzer gespeichert werden müssen. Im sechsten Kapitel, »Verwenden von IISManager«, erfahren Sie mehr über die Unterstützung von ASP.NET-Features im IIS-Manager.
Die Vereinheitlichung der .NET- und IIS 7.0-Konfigurationshierarchien führt zu einigen wenigen
Problemen, deren Ursache darin besteht, dass die beiden Konfigurationssysteme unterschiedlich
implementiert sind, aber mit derselben Konfigurationshierarchie und denselben Konfigurationsabschnitten arbeiten. Die Tatsache, dass das ASP.NET-Konfigurationssystem keine IIS 7.0-Konfigurationsabschnitte liest, schließt viele potentielle Probleme mit Verhaltensunterschieden aus. Einige
Probleme bleiben jedoch auch weiterhin bestehen.
Die Ursache für eine der wichtigsten Einschränkungen sind die unterschiedlichen Verschlüsselungsverfahren der beiden Konfigurationssysteme. Die .NET-Konfigurationsdateien können Benutzernamen
und Kennwörter enthalten, die der Entwickler verschlüsselt hat. Wenn Sie eine solche .config-Datei
betrachten, sehen Sie eine verschlüsselte Zeichenfolge anstelle von Klartext. Das Problem ergibt sich,
weil IIS 7.0 und das .NET-Konfigurationssystem verschiedene Verfahren zur Verschlüsselung von
Informationen verwenden. Das .NET-Konfigurationssystem unterstützt die Verschlüsselung auf der
Abschnittsebene, so dass der gesamte Inhalt eines Konfigurationsabschnitts verschlüsselt wird. Das IIS
7.0-Konfigurationssystem unterstützt lediglich die Verschlüsselung auf der Attributebene, so dass nur
bestimmte Attribute verschlüsselt werden. Deshalb erhalten Sie einen Fehler, wenn Sie versuchen,
einen verschlüsselten ASP.NET-Konfigurationsabschnitt über das IIS 7.0-Konfigurationssystem oder
eine der APIs zu lesen, die dieses System nutzen. Dies geschieht beispielsweise, wenn Sie einen der
Konfigurationsabschnitte verschlüsseln, die der IIS-Manager benutzt, um die ASP.NET-Funktionalität
zu verwalten. Ähnlich hierzu können Sie mit der IIS 7.0-Konfigurationsverschlüsselung keine
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
84 Kapitel 4: Verstehen des Konfigurationssystems
ASP.NET-Konfigurationsabschnitte verschlüsseln, da ASP.NET deren Inhalte nicht lesen könnte.
Weitere Informationen zu diesem Problem und dessen Lösung erhalten Sie im vierzehnten Kapitel.
Die Ursache einer weiteren Einschränkung ist ein Versionsproblem mit den .NET-Konfigurationsschemadateien, die vom IIS 7.0-Konfigurationssystem zur Verfügung gestellt werden. Zur Drucklegung
dieses Buches bot das IIS 7.0-Konfigurationssystem lediglich Schemadateien für die .NET Framework
2.0-Konfiguration an, weshalb IIS 7.0 mit Problemen konfrontiert werden kann, wenn es eine Konfiguration in eine Konfigurationsdatei für das .NET Framework 1.1 oder zukünftige Versionen des .NET
Frameworks schreibt. Darüber hinaus können einige Tools des IIS 7.0-Konfigurationstacks nur dann in
.NET Framework-Konfigurationsdateien schreiben, wenn es sich um die Framework-Version 2.0
handelt. Dazu zählt auch Appcmd.exe. Zukünftige IIS-Versionen werden dieses Problem möglicherweise lösen.
Der Einsatz der IIS 7.0-Konfiguration in web.config-Dateien für ASP.NET kann ebenfalls zu einem
Problem für solche ASP.NET-Anwendungen führen, die das .NET Framework 1.1 nutzen. Der Grund
hierfür besteht darin, dass sich das ASP.NET-Konfigurationssystem nicht der IIS 7.0-Konfigurationsabschnitte bewusst ist, die sich in der Abschnittsgruppe <system.webServer> befinden (oder in benutzerdefinierten Konfigurationsabschnitten, die Sie mithilfe der IIS 7.0- Abschnittserweiterung erstellt
haben). Das Konfigurationssystem generiert einen Fehler, wenn es in web.config-Dateien auf diese
Abschnitte trifft. ASP.NET 2.0 verwendet in machine.config eine spezielle Konfigurationsdeklaration,
die <system.webServer> einem speziellen Konfigurationsabschnittshandlertyp zuordnet, der die Abschnitte
ignoriert, wenn sie gefunden werden.
<section name="system.webServer" type="System.Configuration.IgnoreSection,
System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
ASP.NET 1.1 enthält diese spezielle Konfigurationsdeklaration jedoch nicht, weil es veröffentlicht
wurde, lange bevor die IIS 7.0-Entwicklung begann. Deshalb müssen Sie die Abschnittsdeklaration für
<system.webServer> und andere benutzerdefinierte IIS 7.0-Abschnitte/-Abschnittsgruppen möglicherweise
manuell hinzufügen, so dass Sie sie in web.config-Dateien verwenden können.
Konfigurationsbearbeitung
Das IIS 7.0-Konfigurationssystem ist sehr flexibel, wenn es um die Bearbeitung der Serverkonfiguration geht. Da die Konfiguration im Klartext und in XML-Dateien gespeichert wird und eine gut
strukturierte und für Menschen lesbare Syntax verwendet, können Sie sie mit Notepad oder Ihrem
Lieblings-Texteditor manuell bearbeiten. Viele Menschen bevorzugen diese Vorgehensweise bei der
Bearbeitung von Konfigurationen in verteilten web.config-Dateien, die sich innerhalb der Verzeichnisstruktur einer Site befinden.
Zusätzlich zur manuellen Konfigurationsbearbeitung bietet IIS 7.0 einen vollständigen Verwaltungsstack an, der Tools und APIs für die Bearbeitung von Konfigurationen bereithält. Dazu zählt der IISManager, ein gänzlich überarbeitetes, aufgabenbasiertes Programm mit einer grafischen Benutzeroberfläche für die Verwaltung des größten Teils der IIS 7.0-Konfiguration. Dazu zählt ebenfalls das
Befehlszeilentool Appcmd, mit dem Sie die Konfiguration schnell von der Befehlszeile aus bearbeiten
können. Und dazu zählen auch mehrere administrative Skripts und APIs für die programmgesteuerte
Konfigurationsbearbeitung, einschließlich der COM-Konfigurationsobjekte von IIS 7.0, auf die von
nativen C++-Programmen aus zugegriffen werden kann (sie werden als Anwendungshostverwaltungsobjekte oder AHADMIN [Application Host Administration] bezeichnet), Windows-Skripts, eines
WMI-Anbieters und neuer APIs für die von .NET-Programmen ausgehende Verwaltung der
Konfiguration.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsbearbeitung
85
Hinweis Sie sollten wenn möglich Tools zur Bearbeitung der IIS 7.0-Konfiguration verwenden und diese nicht
manuell ändern. Dies ist sehr viel einfacher und schützt davor, eine falsche Konfiguration zu erstellen.
Sie sollten auch für die Bearbeitung der Serverkonfiguration Tools verwenden, da dies gewährleistet,
dass Sie mit dem zugrunde liegenden komplexen Konfigurationssystem auf die richtige Art und Weise
interagieren und dass die Konfiguration unter Verwendung der richtigen Syntax geschrieben wird.
Hierfür bietet sich der IIS-Manager an, da er eine vereinfachte aufgabenbasierte Ansicht vieler IIS 7.0Features zur Verfügung stellt, so dass Sie deren Konfigurationsstruktur nicht verstehen müssen. Das
Verwalten von IIS 7.0 mit dem IIS-Manager ist im sechsten Kapitel beschrieben.
Es gibt jedoch Situationen, in denen Sie eine Konfiguration manuell oder unter Verwendung
maschinennaher Tools angeben müssen. Zu diesen Tools zählen Appcmd und programmgesteuerte
Schnittstellen wie der von .NET zur Verfügung gestellte Namespace Microsoft.Web.Administration. In diesen
Fällen müssen Sie die Struktur der Konfigurationsabschnitte und die Vererbung innerhalb der
Konfigurationshierarchie verstehen, um auf die richtige Art und Weise vorgehen zu können. Der
verbleibende Abschnitt beschäftigt sich mit den Grundlagen der IIS 7.0-Konfigurationsbearbeitung,
damit Ihnen hierbei keine Fehler unterlaufen.
Hinweis Benutzen Sie in solchen Situationen, in denen der IIS-Manager die gewünschte Konfigurationsfunktionalität nicht anbietet, Appcmd zur Konfigurationsbearbeitung. Appcmd beherrscht die meisten Konfigurationsaufgaben, die Sie auch durch eine manuelle Konfigurationsbearbeitung ausführen lassen können. Darüber hinaus
bietet es den Vorteil einer zusätzlichen Validierung. Es erlaubt Ihnen außerdem, Konfigurationsaufgaben auf anderen Computern automatisch ausführen zu lassen, sofern Sie dies wünschen. Weitere Informationen zum Einsatz
von Appcmd finden Sie im siebten Kapitel, »Verwenden von Befehlszeilentools«.
Vorsicht Bevor Sie die Konfiguration modifizieren, sollten Sie darauf achten, dass Sie den aktuellen Zustand
gesichert haben, so dass Sie später gegebenenfalls zu diesem Zustand zurückkehren können. Lesen Sie später in
diesem Kapitel den Abschnitt »Sichern der Konfiguration«, um weitere Informationen zum einfachen Sichern und
Wiederherstellen der IIS-Konfiguration zu erhalten.
Auswahl des Konfigurationsorts
In diesem Kapitel wurde bereits die IIS 7.0-Konfigurationshierarchie beschrieben. Diese Hierarchie
besteht aus mehreren Konfigurationsdateien, zu denen die .NET-Konfigurationsdateien, applicationHost.config und die in der Verzeichnisstruktur Ihrer Site verteilten web.config-Dateien zählen.
Diese Hierarchie ermöglicht es Ihnen, eine Konfiguration einem URL-Namespace auf Ihrem Server
zuzuordnen, indem Sie sie in der richtigen Konfigurationsdatei platzieren. Wenn der Server die Konfiguration für eine bestimmte Website oder einen bestimmten URL liest, fügt er alle Konfigurationsdateien entlang des Konfigurationspfades zusammen. Dadurch werden die in den Dateien festgelegten
Konfigurationen miteinander verbunden, um den für den gegebenen Pfad geltenden Konfigurationssatz
zu erhalten.
Das Zusammenfügen der Konfigurationen führt dazu, dass eine am Anfang des Konfigurationspfades
festgelegte Konfiguration immer an alle folgenden Pfade vererbt wird, sofern sie dort nicht außer Kraft
gesetzt wird. Die in applicationHost.config festgelegte Konfiguration wird beispielsweise an alle Sites
und URLs des Servers vererbt, bis sie in den entsprechenden web.config-Dateien außer Kraft gesetzt
wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
86 Kapitel 4: Verstehen des Konfigurationssystems
Tabelle 4.5 gibt Aufschluss darüber, wo Sie eine Konfiguration ablegen können, damit sie auf den
gewünschten Gültigkeitsbereich angewendet wird.
Tabelle 4.5 Ablageorte für Konfigurationen
Konfiguration für
Ablegen in
den gesamten Server
applicationHost.config
eine bestimmte Site
web.config-Datei im physikalischen Stammverzeichnis der Site
eine bestimmte Anwendung
web.config-Datei im physikalischen Stammverzeichnis der Anwendung
ein bestimmtes virtuelles Verzeichnis
web.config-Datei im physikalischen Stammverzeichnis des virtuellen Verzeichnisses
einen bestimmten URL
Wenn der URL einem physikalischen Verzeichnis entspricht, in der web.config-Datei
dieses Verzeichnisses; andernfalls in einer beliebigen übergeordneten web.config-Datei
mit einem location-Tag für den URL
Wenn Sie eine Konfiguration für eine bestimmte Site oder einen bestimmten URL angeben, können Sie
wählen, ob Sie die Konfigurationen dem URL entsprechend in einer verteilten web.config-Datei oder
aber in einer Konfigurationsdatei ablegen, die sich auf einer höheren Hierarchieebene befindet (z.B.
applicationHost.config). Im zweiten Fall wenden Sie die Konfiguration mithilfe von location-Tags auf
den gewünschten URL an. Beide Vorgehensweisen gehen mit Vor- und Nachteilen einher, die Sie
überdenken sollten.
Wenn Sie mit location-Tags arbeiten, können Sie die gesamte Konfiguration an nur einem Ort verwahren, anstatt mehrere web.config-Konfigurationsdateien zu verwenden, die schwieriger aufzuspüren
und zu verwalten sind. Wenn außerdem die Konfiguration an einer bestimmten Stelle des Konfigurationspfades gesperrt ist (Konfigurationen, die nur von Administratoren bearbeitet werden sollen,
werden beispielsweise in der Regel in applicationHost.config gesperrt), sind Sie gezwungen, an dieser
Stelle location-Tags zu benutzen, um Konfigurationen auf untergeordnete Pfade anzuwenden. Das
Platzieren von Konfigurationen in verteilten web.config-Dateien hingegen trägt dazu bei, dass eine Site,
Anwendung oder ein Verzeichnis portierbar wird und mithilfe von xcopy auf anderen Servern oder
an anderen Orten innerhalb der Sitestruktur bereitgestellt werden kann, ohne an anderer Stelle eine
Konfiguration ändern oder auf dem Server über administrative Rechte verfügen zu müssen. Dies ist eine
sehr nützliche Option.
Zuletzt ein Hinweis zur Konfigurationsdelegierung – nicht alle Konfigurationsabschnitte dürfen standardmäßig in verteilten web.config-Dateien angegeben werden. Der Serveradministrator bestimmt, welche
Konfigurationsabschnitte delegiert werden dürfen, indem er sie in applicationHost.config freigibt. Dies
kann negative Auswirkungen haben, wenn Sie Anwendungen ausführen lassen möchten, deren Konfiguration sich in verteilten web.config-Dateien befindet. Würde in diesem Fall eine gesperrte Konfiguration
angegeben, führte dies zu Fehlern. Wir werden uns mit der Verwaltung der Konfigurationsdelegierung
später in diesem Kapitel im Abschnitt »Konfigurationsdelegierung« beschäftigen.
Konfigurationen festlegen
Um eine Konfiguration festzulegen, benötigen Sie drei Informationen: den Namen des Abschnitts, der
die gewünschte Konfigurationseinstellung enthält, die gewünschte Eigenschaft dieses Abschnitts und
den Konfigurationspfad, auf den Sie die Einstellung anwenden möchten (wie im vorherigen Abschnitt
beschrieben). Die ersten beiden Daten erhalten Sie in der Regel aus der Dokumentation zu dem Feature, das
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsbearbeitung
87
Sie konfigurieren möchten. Weitere Informationen zu den verfügbaren Konfigurationsabschnitten und
deren Format finden Sie in den Schemadateien im Verzeichnis %windir%\system32\inetsrv\config\schema.
Wenn Sie diese Informationen kennen, können Sie in der Konfigurationsdatei das entsprechende
Abschnittselement angeben.
<configuration>
<system.webServer>
<defaultDocument … />
</system.webServer>
<configuration>
Beachten Sie das Element <configuration> – dies muss immer das Stammelement jeder Konfigurationsdatei sein. Beachten Sie ebenfalls das Element <system.webServer> – dies ist das Abschnittsgruppenelement
des hier konfigurierten <defaultDocument>-Abschnitts (und aller anderen IIS 7.0-Konfigurationseinstellungen).
Konfigurationsabschnitte enthalten die Eigenschaften, die Sie konfigurieren können, wie z.B.
defaultDocument. Das bloße Angeben eines Namens genügt jedoch nicht. Sie schalten das Standarddokumentfeature ein oder aus und geben die Liste der Standarddokumente mithilfe der Attribute oder
Auflistungselemente an, die dem Abschnitt zugeordnet sind.
Abschnittsattribute festlegen
Die meisten Konfigurationseinstellungen werden mit Attributen ausgedrückt, die entweder vom
Auflistungselement selbst oder von einem der untergeordneten Auflistungselemente zur Verfügung
gestellt werden.
Um einen Wert für das Attribut anzugeben, setzen Sie diesen einfach. Dadurch wird ein möglicherweise
vorhandener Standardwert oder ein Wert, auf den das Attribut früher im Konfigurationspfad gesetzt
wurde, außer Kraft gesetzt. Nachfolgend ist ein Beispiel aufgeführt, das den enabled-Wert des
<defaultDocument>-Abschnitts setzt.
<defaultDocument enabled="true" />
Jedes Attribut ist von einem bestimmten Typ und kann mit zusätzlichen Validierungsregeln verknüpft
sein, die in der Schemadefinition des Abschnitts definiert sind. Darüber hinaus können Attributen
Standardwerte zugewiesen sein, die verwendet werden, wenn die Attribute in der Konfiguration nicht
explizit auf andere Werte gesetzt werden. Dies ist für jeden Abschnitt dokumentiert, um Sie dabei zu
unterstützen, die Attributwerte zu setzen.
Arbeiten mit Konfigurationsauflistungen
Zusätzlich zu Attributen können Konfigurationsabschnitte ebenfalls Auflistungen enthalten. Auflistungen tragen dazu bei, dass ganze Elementlisten in einer Konfiguration verwendet werden können.
Sie bieten außerdem zusätzliche Funktionen, wie z.B. das Hinzufügen oder Entfernen von Elementen
auf mehreren Konfigurationsebenen. Darüber hinaus verhindern sie, dass Elemente doppelt hinzugefügt
werden.
Auflistungen werden in der Regel mithilfe von drei verschiedenen Operationen konfiguriert: Hinzufügen
von Auflistungselementen, Entfernen von Auflistungselementen und Löschen der gesamten Auflistung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
88 Kapitel 4: Verstehen des Konfigurationssystems
Hinzufügen von Elementen zu einer Auflistung mit <add />
Um einer Auflistung Elemente hinzuzufügen, verwenden Sie normalerweise das Element <add /> und
geben darin die gewünschten Attributwerte an. Nachfolgend ist beispielsweise ein Auszug aus der
<files>-Auflistung des <defaultDocument>-Abschnitts von applicationHost.config aufgeführt, wie er sich
nach der Installation präsentiert:
<defaultDocument enabled="true">
<files>
<add value="Default.htm" />
<add value="Default.asp" />
…
</files>
</defaultDocument>
In diesem Fall verwenden die Elemente in der <files>-Auflistung nur ein einzelnes Attribut namens value.
Auflistungselemente sind jedoch nicht auf nur ein Attribut beschränkt – sie können beliebig viele
Attribute, untergeordnete Elemente und selbst Unterauflistungen definieren. Tatsächlich verfügt jedes
Auflistungselement sogar über dieselbe Schemaflexibilität wie jedes andere Konfigurationselement
oder der Abschnitt selbst. Nachfolgend ist ein Beispiel aus dem <sites>-Abschnitt aufgeführt:
<sites>
<site name="Default Web Site" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
</bindings>
<traceFailedRequestsLogging enabled="true" />
</site>
</sites>
Der Abschnitt <sites> ist eine Auflistung von <site>-Elementen (beachten Sie, dass er <site> als Namen
für sein <add>-Element verwendet – dies ist eine vom IIS-Konfigurationsschema angebotene
Möglichkeit, die aus Gründen der besseren Lesbarkeit von einigen Abschnitten genutzt wird). Jedes
<site>-Element wiederum ist eine aus <application>-Elementen bestehende Auflistung, die ebenfalls eine
aus <virtualDirectory>-Elementen bestehende Auflistung enthält. Jedes <site>-Element verfügt außerdem
über ein untergeordnetes <bindings>-Element, das selbst eine aus Sitebindungen bestehende Auflistung
ist. Im neunten Kapitel, »Verwalten von Websites«, finden Sie eine detaillierte Beschreibung der neuen
Struktur von Sites, Anwendungen und virtuellen Verzeichnissen.
Glücklicherweise ist der <sites>-Abschnitt einer der kompliziertesten Abschnitte des gesamten IIS 7.0Konfigurationsschemas. Die meisten anderen Abschnitte sind sehr viel einfacher.
Die meisten Auflistungen lassen nur eindeutige Elemente zu, um zu vermeiden, dass Elemente doppelt
hinzugefügt werden. Dazu wird eines oder werden einige der Attribute des <add>-Auflistungselements
als Auflistungsschlüssel gekennzeichnet. Wenn ein Eintrag mit einem Schlüssel angegeben wird, der
bereits vorhanden ist, löst die Auflistung einen Konfigurationsfehler aus, sobald der Zugriff darauf
erfolgt.
Wenn Sie auf einer bestimmten Konfigurationsebene Auflistungselemente hinzufügen, werden diese
den bereits vorhandenen, von einer übergeordneten Ebene geerbten Elementen hinzugefügt. Der
<defaultDocument>-Abschnitt kann dies beispielsweise nutzen, um in applicationHost.config einen
Basissatz Standarddokumente anzugeben und dann auf der Ebene der Site oder des virtuellen Verzeichnisses spezifische Standarddokumente hinzuzufügen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsbearbeitung
89
Die Reihenfolge der Auflistungselemente innerhalb einer Auflistung wird durch die Reihenfolge
bestimmt, in der die Elemente hinzugefügt werden. Wenn Auflistungselemente von übergeordneten
Konfigurationsebenen geerbt werden, werden sie vor den Auflistungselementen angeordnet, die auf der
aktuellen Ebene angegeben sind. Dies gilt für die meisten Auflistungen, außer für diejenigen, die mit
einer Stackreihenfolge arbeiten – diese Auflistungen platzieren die auf der aktuellen Ebene deklarierten
Elemente vor den Elementen, die von übergeordneten Ebenen geerbt wurden. Dazu zählen z.B. der IISAbschnitt <handlers> und der ASP.NET-Abschnitt <authorization>.
Entfernen von Elementen aus einer Auflistung mit <remove />
Aufgrund der Auflistungsvererbung ist es manchmal notwendig, Elemente zu entfernen, die auf einer
höheren Konfigurationsebene deklariert wurden. Sie könnten beispielsweise für eine bestimmte
Anwendung ein bestimmtes Modul aus der Konfigurationsauflistung <mdoules> entfernen, wenn die
Ausführung dieses Moduls nicht notwendig ist. Weitere Informationen zur Verwaltung von Modulen
finden Sie im zwölften Kapitel.
Hinweis Wenn Sie ein Auflistungselement entfernen möchten, das auf der aktuellen Konfigurationsebene hinzugefügt wurde, können Sie einfach das entsprechende <add>-Element löschen. Benutzen Sie <remove>, um Elemente
zu entfernen, die auf höheren Konfigurationsebenen angegeben wurden.
Um dies zu tun können Sie das <remove>-Element benutzen. Jedes <remove>-Element gibt die Attribute an,
die zusammen den Auflistungsschlüssel beschreiben, der das zu entfernende Element eindeutig identifiziert. Nachfolgend ist beispielsweise die Konfiguration aufgeführt, die Sie benutzen können, um
Default.asp aus der <files>-Auflistung des <defaultDocument>-Abschnitts zu entfernen:
<defaultDocument>
<files>
<remove value="Default.asp" />
</files>
</defaultDocument>
Löschen von Auflistungen mit <clear />
Manchmal möchten Sie die auf den übergeordneten Konfigurationsebenen definierten Auflistungselemente vollständig löschen und nur die benötigten Elemente angeben. Dies ist oft der Fall, wenn die
aktuelle Konfigurationsebene die vollständige Kontrolle über die Inhalte der Auflistung benötigt und
übergeordnete Elemente nicht erben darf.
Dies wird mit dem Element <clear/> erreicht. Das <clear/>-Element entfernt alle geerbten Auflistungselemente, so dass nur die Elemente übrig bleiben, die auf der aktuellen Ebene hinter dem <clear/>Element hinzugefügt werden. Das folgende Beispiel löscht die Standarddokumentauflistung und fügt
dann ein einzelnes Element hinzu, um sicherzustellen, dass nur Default.aspx als Standarddokument
behandelt wird:
<defaultDocument>
<files>
<clear/>
<add value="Default.aspx" />
</files>
</defaultDocument>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
90 Kapitel 4: Verstehen des Konfigurationssystems
Wichtig Lassen Sie bei der Arbeit mit dem <clear/>-Element Vorsicht walten, da es die Vererbung von übergeordneten Auflistungselementen an die aktuelle Konfigurationsebene oder deren untergeordneten Ebenen vollständig
unterbindet. Dies bedeutet, dass, wenn der Administrator auf der Serverebene neue Auflistungselemente hinzufügt,
diese nicht an die aktuelle Ebene weitergegeben werden. Benutzen Sie <clear/> deshalb nur dann, wenn Sie die
vollständige Kontrolle über die Inhalte der Auflistung benötigen.
Konfigurationsfehler verstehen
Im Gegensatz zu IIS 6.0 stellen die zugrunde liegenden Konfigurationssystem-APIs sicher, dass sich in die
Konfiguration keine Fehler einschleichen, wenn sie mit Tools wie dem IIS-Manager und Appcmd oder
programmgesteuert mit APIs wie Microsoft.Web.Administration bearbeitet wird. Versuche, eine fehlerhafte
Konfiguration zu erzeugen, wie z.B. die Verwendung von Daten des falschen Typs für Attributwerte, der
Versuch, nicht existierende Attribute zu setzen, oder der Einsatz von Daten, die außerhalb des zulässigen
Wertebereichs liegen, werden somit abgefangen. Sogar das erneute Hinzufügen eines bereits vorhandenen
Auflistungselements und der Versuch, eine auf einer übergeordneten Konfigurationsebene gesperrte
Konfiguration anzugeben, werden verhindert. Aus diesem Grund sollten Sie immer die angebotenen Tools
nutzen und nicht den manuellen Weg gehen, um eine Konfiguration anzugeben.
Hinweis Benutzen Sie die Tools, um Konfigurationen festzulegen – die meisten Fehler werden dadurch abgefangen, so dass Sie keine fehlerhafte Konfiguration generieren können.
Dennoch werden Sie manchmal in Situationen geraten, die zu einer fehlerhaften Konfiguration führen.
Dies ist besonders dann möglich, wenn Sie die Konfiguration manuell bearbeiten und Ihnen bei der
Abschnittsyntax Fehler unterlaufen oder Sie Attribute auf nicht unterstützte Werte setzen. Es ist jedoch
auch in anderen Fällen möglich – z.B. wenn eine Anwendung, die eine Konfiguration definiert, auf
einem Server bereitgestellt wird, der einige der verwendeten Abschnitte auf der Serverebene sperrt, was
zu einer Sperrverletzung führen würde.
Deshalb ist es wichtig, die Ursachen für verschiedene Konfigurationsfehler zu verstehen und die daraus
resultierenden Konfigurationsfehlerinformationen zu nutzen, um die Probleme zu lösen.
Vorsicht Führen Sie immer eine Sicherung der Konfiguration durch, bevor Sie Änderungen daran vornehmen.
Später in diesem Kapitel im Abschnitt »Sichern der Konfiguration« erfahren Sie mehr über die Konfigurationssicherung.
Es gibt verschiedene Arten von Konfigurationsfehlern, die vom Konfigurationssystem unterschiedlich
behandelt werden und unterschiedliche Auswirkungen auf IIS haben. Tabelle 4.6 fasst einige der
üblichen Fehlerursachen und die Auswirkungen dieser Fehler auf den Server zusammen.
Um die Ursachen für diese Fehler verstehen zu können, müssen Sie wissen, wie das Konfigurationssystem Fehler behandelt. Fehler, die dazu führen, dass die gesamte Konfigurationsdatei nicht verfügbar
ist, weil sie nicht gelesen werden kann oder unzulässigen XML-Code enthält (wie in Abbildung 4.3
dargestellt), unterbinden alle Versuche, eine Konfiguration aus dieser Datei zu lesen. Aus diesem Grund
würden alle Operationen, für die ein Lesen der Datei notwendig wäre, fehlschlagen. Wenn es sich bei
der Datei um applicationHost.config handelt, die von der IIS-Komponente für die IIS-Arbeitsprozessverwaltung (der Windows-Prozessaktivierungsdienst) gelesen wird, wird der gesamte Server in den
Offline-Zustand versetzt. In diesem Fall erhalten Sie keine detaillierte Anforderungsfehlermeldung, die
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsbearbeitung
91
die Fehlerursache beschreibt, da der Server keine IIS-Arbeitsprozesse zur Bedienung der Anforderung
starten kann. In diesem Fall werden die Fehlerinformationen von WPAS im EventLog-Protokoll des
Systems protokolliert.
Tabelle 4.6 Übliche Fehlerbedingungen
Fehler
Auswirkung
Konfigurationsdatei enthält unzulässigen
XML-Code
Wenn es sich um die machine.config-Datei des Frameworks, die web.configStammdatei oder die applicationHost.config-Datei von IIS 7.0 handelt: Der
gesamte Server wird in den Offline-Zustand versetzt.
Andernfalls: Alle URLs, die der Konfigurationsdatei und den Ebenen
darunter entsprechen, geben Konfigurationsfehler zurück.
Zugriff auf Konfigurationsdatei ist nicht möglich:
Die Datei wird von einem anderen Prozess blockiert,
Zugriffsverweigerung, keine Netzwerkkonnektivität
für UNC-Pfade
Wenn es sich um die machine.config-Datei des Frameworks, die web.configStammdatei oder die applicationHost.config-Datei handelt: Der gesamte
Server wird in den Offline-Zustand versetzt.
Andernfalls: Alle URLs, die der Konfigurationsdatei und den Ebenen
darunter entsprechen, geben Konfigurationsfehler zurück.
Syntaxfehler im Konfigurationsabschnitt:
Der Konfigurationsabschnitt enthält unerwartete
Elemente oder Attribute, oder es fehlen Attribute,
die angegeben werden müssen
Wenn sich der Fehler in einem der von WPAS gelesenen system.applicationHost-Konfigurationsabschnitte befindet, kann der Server in den OfflineZustand versetzt werden.
Wenn sich der Fehler in einem der Kernwebserverabschnitte befindet, geben
alle Anforderungen, die sich auf die von den Fehlern betroffenen URLs
beziehen, Konfigurationsfehler zurück.
Andernfalls geben Anforderungen, die solche Features nutzen, die den
jeweiligen Konfigurationsabschnitt lesen, Konfigurationsfehler zurück.
Attributvalidierungsfehler: Es gibt einen unzulässigen Datentypen; die Überprüfung eines Werts
anhand der Validierungsregeln schlägt fehl
Wie oben
Auflistungsvalidierungsfehler: Es gibt doppelt
vorhandener Auflistungselemente.
Wie oben
Sperrverletzung: Angeben der Konfiguration eines
Abschnitts oder Attributs, der/das auf einer übergeordneten Ebene gesperrt ist
Wie oben
Wenn die Datei eine verteilte web.config-Datei ist, die einem bestimmten URL-Namespace entspricht,
ist dieser Namespace nicht verfügbar. Die IIS-Arbeitsprozesse können jedoch gestartet werden und eine
detaillierte Konfigurationsanforderungsfehlermeldung generieren, die die Ursache beschreibt und
manchmal sogar die Position innerhalb der Datei nennt, an der der Fehler auftrat.
Bei allen anderen Fehlern in Konfigurationsabschnitten, die zulässigen XML-Code enthalten, schlagen
nur die Zugriffe auf die betroffenen Abschnitte fehl. Wenn sich der Fehler in einem der von WPAS
gelesenen system.applicationHost-Konfigurationsabschnitte befindet, z.B. in <sites> oder <applicationPools>,
kann WPAS möglicherweise auch in diesem Fall keinen IIS-Arbeitsprozess starten, so dass der gesamte
Server in den Offline-Zustand versetzt wird und Fehler im EventLog-Protokoll des Systems protokolliert werden. Wenn sich der Fehler in einem der bei jeder Anforderung gelesenen IIS-Kernkonfigurationsabschnitte befindet, z.B. <serverRuntime>, <modules> und <handlers>, geben alle Anforderungen, die sich
auf den der unzulässigen Konfiguration entsprechenden URL-Namespace beziehen, Konfigurations-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
92 Kapitel 4: Verstehen des Konfigurationssystems
fehler zurück. Diese Fehler geben exakt Aufschluss über den Grund für den fehlgeschlagenen Konfigurationszugriff. Dazu zählen auch Details wie die Zeilennummer und das Element oder Attribut, das
die fehlerhafte Konfiguration aufweist, wie in Abbildung 4.4 dargestellt. Sie können diese Informationen nutzen, um den Ort des Konfigurationssyntaxfehlers schnell ausfindig zu machen und das
Problem zu lösen.
Abbildung 4.3 EventLog-Fehler, dessen Ursache unzulässiger XML-Code in applicationHost.config ist
Abbildung 4.4 IIS 7.0-Konfigurationsfehlermeldung
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
93
Hinweis Um die ausführliche Konfigurationsfehlermeldung zu sehen, müssen Sie dem Server entweder eine
lokale Anforderung übergeben oder ausführliche Fehlermeldungen aktivieren.
Für alle anderen Abschnitte gilt, dass nur die Anforderungen, die das Feature mit der fehlerhaften
Konfiguration nutzen, Anforderungsfehler auslösen. Dies bedeutet ebenfalls, dass, wenn Ihnen ein
Fehler in der Konfiguration eines nicht genutzten Features unterläuft (das Modul ist beispielsweise
deaktiviert), keine Fehlermeldung ausgegeben und die unzulässige Konfiguration ignoriert wird.
Wenn sich der Fehler schließlich in einem ASP.NET-Konfigurationsabschnitt befindet, der von
ASP.NET unter Verwendung des .NET-Konfigurationssystems gelesen wird, wird wahrscheinlich
eine ASP.NET-Ausnahmefehlerseite angezeigt, die die Details zum Konfigurationsfehler enthält.
Hinweis Um ausführliche Informationen zu einer ASP.NET-Konfigurationsausnahme zu erhalten, müssen Sie dem
Server entweder eine lokale Anforderung übergeben oder ausführliche ASP.NET-Fehlermeldungen aktivieren.
Konfigurationsverwaltung
Je länger Sie mit der IIS-Konfiguration arbeiten, desto wahrscheinlicher ist es, dass Sie viele verschiedene Verwaltungsaufgaben lösen und die Konfiguration selbst bearbeiten müssen. Sie müssen
deshalb insbesondere die Konfiguration sichern und wiederherstellen können, um bei unbeabsichtigten
Änderungen oder beschädigten Konfigurationsdateien in der Lage zu sein, wieder zum ursprünglichen
Zustand zurückzukehren. Dies ist sehr wichtig, da die Einfachheit, die mit der Bearbeitung der XMLKonfigurationsdateien von IIS einhergeht, dazu führt, dass sich schnell unerwünschte Änderungen
einschleichen.
Wenn Sie mit der IIS-Konfiguration arbeiten, sollten Sie immer darauf achten, eine Sicherung zu
erstellen, die Sie benutzen können, um zu dem Zustand vor den Änderungen zurückzukehren. Glücklicherweise sorgt IIS dafür, dass dies sehr einfach ist.
In diesem Abschnitt untersuchen wir die Verwaltungsaufgaben, die sich auf das Sichern und Wiederherstellen der IIS-Konfiguration beziehen. Wir beschäftigen uns außerdem mit der Einrichtung einer
von mehreren Servern gemeinsam genutzten Konfiguration und der Konfigurationsdelegierung, mit der
es möglich ist, einen Teil der Konfiguration in verteilten web.config-Konfigurationsdateien anzugeben.
Sichern der Konfiguration
Bevor Sie Änderungen an den IIS-Konfigurationsdateien vornehmen, sollten Sie diese sichern. Sie
können sie dann später wiederherstellen, falls Ihre Änderungen die Konfiguration beschädigt oder zu
falschen Serveroperationen geführt haben. Der zweite Grund ist sehr wichtig – der Server scheint
zunächst richtig zu arbeiten und erst später treten Probleme auf. Dann möchten Sie in der Regel zum
vorherigen Konfigurationszustand zurückkehren.
Gewöhnlich ist es nicht notwendig, spezielle Vorkehrungen zu treffen, um eine delegierte Konfiguration
zu sichern, die sich in den web.config-Dateien Ihrer Websitestruktur befindet. Diese Dateien werden
schließlich zusammen mit Ihren Siteinhalten gesichert (dazu müssen Sie natürlich Sicherungen von
Ihren Siteinhalten anfertigen).
Wenn Sie jedoch Änderungen an den Konfigurationsdateien der Serverebene vornehmen, sollten Sie die
Serverkonfiguration sichern. IIS 7.0 sorgt glücklicherweise dafür, dass dies mit dem Befehlszeilenhilfsmittel Appcmd sehr einfach ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
94 Kapitel 4: Verstehen des Konfigurationssystems
Geben Sie Folgendes an einer administrativen Eingabeaufforderung ein:
%windir%\system32\inetsrv\ AppCmd Add Backup MyBackup
Daraufhin wird eine Sicherung der IIS-Konfigurationsdateien erzeugt, zu denen applicationHost.config,
redirection.config und administration.config sowie benutzerdefinierte Schemadateien zählen, sofern
vorhanden. Die Sicherung wird als benanntes Verzeichnis unter %windir%\system32\inetsrv\backup
erstellt. Dazu wird der Name verwendet, den Sie dem Befehl Add Backup übergeben haben. Dieses
Verzeichnis wird die gesicherten Dateien enthalten.
Hinweis Wenn Sie keinen Sicherungsnamen angeben, generiert Appcmd diesen automatisch unter Verwendung
des aktuellen Datums und der aktuellen Zeit.
Sie können die auf Ihrem System durchgeführten Sicherungen mithilfe des Befehls List Backups auflisten.
%windir%\system32\inetsrv\AppCmd List Backups
Danach können Sie jede der aufgelisteten Sicherungen wiederherstellen, indem Sie den Befehl Restore
Backup benutzen.
%windir%\system32\inetsrv\AppCmd Restore Backup "MyBackup"
Der Restore-Befehl stellt alle im Sicherungsordner enthaltenen Dateien wieder her, wobei die aktuelle
Serverkonfiguration von diesen Dateien überschrieben wird. Ein Bestätigungsdialogfeld gibt es nicht,
so dass Sie immer zunächst die aktuelle Konfiguration sichern sollten, bevor Sie einen anderen
Sicherungssatz wiederherstellen.
Ein Hinweis zur Sicherheit und Verschlüsselung von Konfigurationsdateien: Die Sicherung kopiert
die Serverkonfigurationsdateien einfach in das Verzeichnis inetsrv\backup, das standardmäßig mit
denselben NTFS-Berechtigungen wie das die Originaldateien enthaltene Verzeichnis inetsrv\config
gesichert ist. Wenn die Dateien verschlüsselte Konfigurationen enthalten, bleiben diese Informationen
in den gesicherten Kopien ebenfalls verschlüsselt. Während der Sicherung wird somit keine zusätzliche
Verschlüsselung durchgeführt. Die Dateien sind deshalb nur dann geschützt, wenn sie sich im Sicherungsverzeichnis befinden. Es ist nicht sicher, sie ohne zusätzlichen Schutz an einem anderen Ort
abzulegen.
Arbeiten mit dem Konfigurationsverlauf
IIS 7.0 prüft über den Dienst AppHostSvc in Abständen von zwei Minuten, ob applicationHost.config
verändert wurde. In diesem Fall wird eine Sicherung dieser Datei angelegt. Sie finden die gesicherten
Konfigurationsdateien standardmäßig im Ordner Inetpub\history. Sie können im Konfigurationsabschnitt <configHistory> sowohl den Verwahrungsort der Sicherungen als auch andere konfigurierbare
Parameter ändern, wie Tabelle 4.7 zeigt.
Tabelle 4.7 <configHistory>-Attribute
Attribut
Standardeinstellung
Definition
Enabled
True
Dieser Wert gibt an, ob der Konfigurationsverlauf aktiviert oder deaktiviert ist
Path
%systemdrive%\
inetpub\history
Der Pfad, wo Verlaufsverzeichnisse erstellt und gespeichert werden
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
95
Tabelle 4.7 <configHistory>-Attribute (Fortsetzung)
Attribut
Standardeinstellung
Definition
maxHistories
10
Die maximale Anzahl von Verzeichnissen, die von IIS 7.0 angelegt werden
Period
00:02:00
Die Zeit zwischen den Überprüfungen, die von IIS 7.0 durchgeführt werden,
um zu ermitteln, ob Änderungen durchgeführt wurden
Wenn Sie nichts anderes angeben, werden die in Tabelle 4.7 aufgeführten Werte für Sie vorkonfiguriert.
Um diese Werte zu modifizieren, müssen Sie dies manuell tun, da der IIS-Manager über keine Benutzeroberfläche zur Konfiguration des entsprechenden applicationHost.config-Abschnitts verfügt.
Sie können Appcmd hierfür verwenden. Der folgende Befehl ändert beispielsweise den Pfad zum
Speichern von Sicherungen in %systemdrive%\MyWebHistory. Beachten Sie, dass der Pfad bereits
vorhanden sein muss, da der Dienst andernfalls nicht funktioniert.
%windir%\system32\inetsrv\Appcmd set config /section:configHistory
"/path:%systemdrive%\MyWebHistory"
Sie können den Appcmd-Befehl Restore Backup benutzen, um eine Konfigurationsverlaufssicherung
wiederherzustellen. Dies geschieht in derselben Weise wie die Wiederherstellung von Sicherungen,
die mit dem Appcmd-Befehl Add Backup manuell durchgeführt wurden. Sie können alle verfügbaren
Sicherungen (sowohl manuelle als auch Konfigurationsverlaufssicherungen) wie folgt auflisten:
%windir%\system32\inetsrv\AppCmd List Backups
Weitere Informationen zu configHistory finden Sie in dem englischen Artikel »Using IIS7 Configuration
History« unter http://learn.iis.net/page.aspx/129/using-iis-7-configuration-history/.
Exportieren und Importieren von Konfigurationen
Die IIS 7.0-Konfiguration speichert standardmäßig keine verschlüsselten Daten und ist somit nicht
wie in früheren Versionen an einen bestimmten Server gebunden. Die IIS 6.0-Metabasis war an einen
lokalen Server gebunden und geschützt. Der Grund hierfür bestand darin, dass sie standardmäßig
die Kennwörter für den anonymen und den IWAM-Benutzer enthielt. Wären diese Kennwörter in den
Besitz Außenstehender gelangt, wäre es für diese möglich gewesen, sich an den Server anzumelden.
Sie waren jedoch nach dem Zufallsprinzip gewählt und sehr komplex, wodurch ein hoher Grad an
Sicherheit gewährleistet war.
Bei IIS 7.0 ist der anonyme Benutzer (IUSR) ein integriertes und kein lokales Konto, so dass ein
Kennwort nicht erforderlich ist. Doch keine Sorge. Obwohl es kein Kennwort gibt, können Sie dieses
integrierte Konto für die Anmeldung an den Server nutzen. Es gibt keine Möglichkeit, das Konto zu
benutzen, um sich lokal oder remote anzumelden. Dies ist nur über IIS möglich. Es gibt auch kein
IWAM-Konto mehr, weil der IIS 5-Anwendungsisolationsmodus kein Bestandteil von IIS 7.0 ist. Da es
in applicationHost.config verschlüsselte Daten standardmäßig nicht mehr gibt, ist auch eine Bindung an
einen einzelnen Server nicht mehr notwendig.
Dies bedeutet, dass Sie applicationHost.config von einem Server auf einen anderen kopieren können,
aber nur, wenn Sie auch die Verschlüsselungsschlüssel der Server synchronisiert haben und der Zielserver über dieselbe Inhalts- und Verzeichnisstruktur wie der ursprüngliche Server verfügt. Sind diese
Voraussetzungen erfüllt, ist es sehr einfach, Konfigurationen zwischen Servern zu importieren und zu
exportieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
96 Kapitel 4: Verstehen des Konfigurationssystems
Hinweis Um die applicationHost.config-Datei eines Servers auf einem anderen Server zu verwenden, müssen Sie
sicherstellen, dass die Server dieselben Konfigurationsverschlüsselungsschlüssel benutzen. Der Grund hierfür
besteht darin, dass applicationHost.config Verschlüsselungssitzungsschlüssel enthält, die selbst unter Verwendung
des RSA-Konfigurationsschlüssels des Servers verschlüsselt wurden. Später in diesem Kapitel im Abschnitt »Eine
Konfiguration für mehrere Server« erfahren Sie mehr über das Exportieren und Importieren von Serververschlüsselungsschlüsseln.
Wenn Ihre Konfigurationsdateien verschlüsselte Informationen enthalten, zum Beispiel AnwendungspoolIDs, sind sie an den Server gebunden, auf dem die Verschlüsselung generiert wurde. Sie können die Konfigurationsschlüssel jedoch exportieren und importieren, damit mehrere Server dieselben verschlüsselten
Konfigurationen gemeinsam nutzen können – dies ist eine der Voraussetzungen, die für das von IIS 7.0
unterstützte Feature erfüllt sein muss, das die Arbeit mit freigegebenen Konfigurationen ermöglicht. Später
in diesem Kapitel erhalten Sie weitere Informationen zum Einrichten freigegebener Konfigurationen. Eine
ausführliche Erläuterung der Konfigurationsverschlüsselung hält das vierzehnte Kapitel bereit.
Im Gegensatz zu IIS 6.0 bietet IIS 7.0 keinen integrierten Mechanismus zum Exportieren einzelner
Sitekonfigurationen an. Dieser Mechanismus existiert lediglich für die gesamte Serverkonfiguration. In
den meisten Fällen kann eine Sitekonfiguration exportiert werden, indem die Sitedefinition auf dem
Zielserver neu generiert wird. Dann werden die Siteinhalte einfach kopiert. Die einzelnen Konfigurationen befinden sich in den web.config-Dateien, die wiederum in der Verzeichnisstruktur der Site
enthalten sind.
Wenn sich die Sitekonfiguration jedoch innerhalb der location-Tags von applicationHost.config
befindet, gibt es für deren Export keinen automatisierten Mechanismus. Sie können natürlich die
Inhalte des configuration-Tags (einschließlich aller location-Tags) einfach kopieren und am Ende einer
anderen applicationHost.config-Datei einfügen. Ein automatisierter Mechanismus wird vielleicht in
Zukunft verfügbar sein.
Konfigurationsdelegierung
Das neue IIS 7.0-Konfigurationssystem wurde entwickelt, um eine umfassende Unterstützung der
Featuredelegierung zu bieten. Dieser Begriff hat bei IIS 7.0 eine besondere Bedeutung – die Möglichkeit, Features so zu kennzeichnen, dass sie auf der Site- oder Anwendungsebene von solchen Benutzern
kontrolliert werden können, die keine Serveradministratoren sind, z.B. Websiteadministratoren oder
Anwendungsmanager. Wie Sie noch sehen werden, arbeitet die Featuredelegierung Hand in Hand mit
der Remoteverwaltung. Sie ist außerdem in den IIS-Manager integriert, so dass Sie sie konfigurieren
können und gleichzeitig die Delegierungseinstellungen berücksichtigt werden, so dass der Zugriff auf
gesperrte oder eingeschränkte Features nicht oder nur bedingt möglich ist.
Es gibt zwei Möglichkeiten für die Implementierung der Featuredelegierung. Erstens ermöglicht es die
Konfigurationshierarchie selbst, Konfigurationen in verteilten web.config-Dateien anzugeben. Kontrolliert
werden diese in der Regel vom Siteadministrator oder Anwendungsentwickler, der kein Serveradministrator sein muss, um die in den Dateien enthaltenen Konfigurationen festzulegen oder zu ändern. Der
Serveradministrator kontrolliert, welche Konfigurationen aufgrund der Delegierung in web.config-Dateien
angegeben und welche Konfigurationen nur vom Serveradministrator in applicationHost.config festgelegt werden können. Diese Kontrolle wird mithilfe der Konfigurationssperrung erreicht, die auf der
Abschnittsebene möglich ist, indem in applicationHost.config ein Abschnitt gesperrt wird, die aber auch
feiner abgestuft erfolgen kann, indem bestimmte Konfigurationseinstellungen innerhalb eines bestimmten
Konfigurationsabschnitts gesperrt werden. Die feiner abgestufte Konfigurationssperrung ist später in
diesem Kapitel im Abschnitt »Spezifische Konfigurationssperrung« ausführlich beschrieben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
97
Die zweite Möglichkeit wird vom IIS-Manager implementiert, der ebenfalls Konfigurationsabschnitte
sperren kann und die Möglichkeit bietet, die Delegierung der zugrunde liegenden Konfiguration zu
verwalten. Er stellt außerdem die entsprechenden IIS-Manager-Benutzeroberflächenfeatures zur Verfügung, die notwendig sind, um die Remoteverwaltung nahtlos in dieses Tool zu integrieren. Die Verwaltung der Featuredelegierung mithilfe des IIS-Managers hat den Vorteil, dass die korrekte Konfiguration der Delegierung immer gewährleistet ist. Der IIS-Manager berücksichtigt die Delegierungseinstellungen, so dass ein Remotebenutzer versteckte Features (die im IIS-Manager mit Nicht delegiert
gekennzeichnet sind) nicht sehen kann. Er kann außerdem keine Änderungen an Features vornehmen,
die im IIS-Manager mit Schreibgeschützt gekennzeichnet sind.
Wichtig Jeder Benutzer, der web.config-Dateien hochladen kann, kann die darin enthaltenen IIS 7.0- und ASP.NETEinstellungen außer Kraft setzen. Wenn Sie den IIS-Manager benutzen, um eine Konfiguration anzugeben, werden die
damit verbundenen Einstellungen richtig gespeichert, und die Benutzer können nur die Konfiguration ändern, für die sie
Zugriffsrechte besitzen. Wenn eine web.config-Datei außerhalb des IIS-Managers erstellt und dann in die Site hochgeladen wird, kann sie Konfigurationseinstellungen enthalten, die von den Delegierungseinstellungen nicht akzeptiert
werden. In diesem Fall präsentiert IIS 7.0 einen auf die Konfigurationssperrung bezogenen Fehler, und vorherige,
korrekte web.config-Daten können verlorengehen, da die ursprüngliche web.config-Datei außer Kraft gesetzt wurde.
Wenn Sie die Kontrolle an andere Benutzer delegieren, wird für diese der Anreiz groß sein, ihre Siteoder Anwendungskonfiguration mithilfe des IIS-Managers zu kontrollieren, da er nur die Features
zeigt, die die Benutzer einsehen und verwenden dürfen.
Die IIS 7.0-Features beziehen sich im Allgemeinen auf die Konfigurationsabschnitte in applicationHost.config. Dies wurde bereits früher in diesem Kapitel erläutert, als es um Abschnittsdefinitionen und
den mit jedem Abschnitt verknüpften Wert von overrideModeDefault ging. Der IIS-Manager ist natürlich
das Haupttool für die Verwaltung der Konfigurationsabschnitte, und die Delegierung ist sehr viel
einfacher zu verstehen und zu verwalten, wenn der IIS-Manager verwendet wird.
Delegieren von Einstellungen mit dem IIS-Manager
Lassen Sie uns die verschiedenen Einstellungen im IIS-Manager untersuchen, die sich auf die Delegierung beziehen. Abbildung 4.5 zeigt, was Sie sehen, wenn Sie im Hierarchielistenfeld den Serverknoten markieren und im Featurebereich Delegierung von Features auswählen.
Abbildung 4.5 Delegierung von Features im IIS-Manager
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
98 Kapitel 4: Verstehen des Konfigurationssystems
Die Spalte Delegierung listet die aktuellen Delegierungseinstellungen für jedes Feature auf. Die Namen
der verschiedenen Delegierungszustände sind nicht besonders aufschlussreich, weshalb Sie sie auch
nicht deuten sollten:
Nicht delegiert Wenn ein Feature mit Nicht delegiert gekennzeichnet ist, wird der entsprechende
Konfigurationsabschnitt in applicationHost.config gesperrt, indem er innerhalb eines <location>-Tags
angeordnet wird, dessen overrideMode-Wert auf Deny gesetzt ist. Wenn ein Feature mit Nicht delegiert
gekennzeichnet ist, werden Änderungen, die Sie auf der Serverebene (wenn also im Hierarchielistenfeld das Serversymbol markiert ist) an dem Feature vornehmen, in applicationHost.config
gespeichert. Änderungen auf der Site- oder Anwendungsebene können nur vom Serveradministrator durchgeführt werden und werden in applicationHost.config mithilfe eines <location>-Tags
gespeichert, um sie auf den richtigen Pfad anzuwenden. Wenn Remotebenutzer den IIS-Manager
verwenden, um eine Verbindung zu einer Site oder Anwendung herzustellen, können Sie das
Symbol eines solchen Features nicht sehen und seine Einstellungen nicht ändern. Wenn eine
web.config-Datei hochgeladen wird, die Einstellungen für ein Nicht delegiert-Feature enthält, tritt
ein Konfigurationsfehler auf.
Schreibgeschützt Dasselbe wie Nicht delegiert. Jedoch können die Remotebenutzer das jeweilige
Feature sehen. Das Ändern von Werten ist aber nicht möglich. Dies ist eine nützliche Einstellung,
wenn Sie die Benutzer beispielsweise wissen lassen möchten, welche Authentifizierungsverfahren
zur Verfügung stehen, aber das Aktivieren bzw. Deaktivieren dieser Verfahren durch die Benutzer
soll nicht möglich sein.
Lesen/Schreiben Wenn ein Feature mit Lesen/Schreiben gekennzeichnet ist, wird der entsprechende Konfigurationsabschnitt für verteilte web.config-Dateien freigegeben. Dazu wird der
Konfigurationsabschnitt innerhalb eines <location>-Tags platziert, dessen overrideMode-Wert auf Allow
gesetzt wurde. Alle Änderungen, die Sie auf der Serverebene an diesem Feature vornehmen,
werden in applicationHost.config gespeichert. Änderungen, die Sie auf der Site- oder Anwendungsebene vornehmen, werden in der entsprechenden web.config-Datei gespeichert. (Eine Referenzierung der Siteebene bezieht sich auf die web.config-Datei des Stammverzeichnisses der Site. Die
Anwendungsebene bezieht sich auf die web.config-Datei, die sich innerhalb der Site in einem
Ordner befindet, der als Anwendung gekennzeichnet wurde.) Wenn Sie den IIS-Manager benutzen,
um eine Verbindung zu einer Site oder Anwendung herzustellen, können Remotebenutzer die
Einstellungen sehen und ändern.
Wenn Sie mit Erweiterungen von Drittanbietern arbeiten, kann der IIS-Manager zusätzliche Delegierungswerte anzeigen, die für die jeweilige Erweiterung eine spezielle Bedeutung haben.
Im achten Kapitel, »Remoteverwaltung«, erhalten Sie weitere Informationen zur Konfiguration der
Featuredelegierung des IIS-Managers. Sie erfahren außerdem, wie Sie ermitteln, welche Benutzer über
das Recht verfügen, die Webserverkonfigurationen remote zu verwalten.
Standardeinstellungen für die delegierte Konfiguration
Wie bereits erwähnt wurde, werden bei IIS 7.0 einige Einstellungen standardmäßig delegiert, wohingegen andere ausdrücklich gesperrt sind. Tabelle 4.8 stammt aus einer vorab veröffentlichten Version
des IIS 7.0 Hosting Deployment Guide, den Sie bei IIS.net finden. Die Informationen in der Tabelle
verraten, welche Features aus welchem Grund delegiert sind. Sie werden hinsichtlich dieser Standardeinstellungen vielleicht zu anderen Entscheidungen als das IIS-Team gelangen. Die globalen Einstellungen sind jedoch gut durchdacht, weshalb Sie daran keine Änderungen vornehmen sollten, sofern Sie
nicht einen guten Grund hierfür haben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
99
Tabelle 4.8 Feature- und Delegierungseinstellungen
Feature
Delegierte Einstellung
Grund
.NET-Kompilierung
Schreibgeschützt
(wurde geändert,
war zunächst Lesen/
Schreiben)
Legt Einstellungen für die Verarbeitungsdirektiven der ASP.NETKompilierung fest, wie z.B. das temporäre Kompilierungsverzeichnis
Verhindert, dass Benutzer das temporäre Kompilierungsverzeichnis
manuell festlegen
.NET-Globalisierung
Lesen/Schreiben
Legt Einstellungen für die Standardkultur und Globalisierungseigenschaften für Webanforderungen fest
.NET-Profil
Lesen/Schreiben
Gibt Einstellungen für die Optionen an, die in ASP.NET-Anwendungen
von Benutzern ausgewählt werden
.NET-Rollen
Lesen/Schreiben
Gibt Einstellungen für Gruppen an, die in Verbindung mit .NET-Benutzern und der Formularauthentifizierung verwendet werden
.NET-Vertrauensebenen
Schreibgeschützt
(wurde geändert,
war zunächst Lesen/
Schreiben)
Legt die Vertrauensebene fest. Wenn Sie die Vertrauensebene, wie in
der ASP.NET-Anleitung des Hosting Deployment Guide-Dokuments
beschrieben, sperren, setzen Sie dieses Feature auf Schreibgeschützt,
so dass es für den gesamten Server gesperrt ist.
Verhindert, dass Websitebesitzer die Vertrauensebene höher als der
Serveradministrator ansetzen. Wenn beispielsweise vom Administrator
eine benutzerdefinierte Vertrauensebene festgelegt wurde, sollte diese
Einstellung auf Schreibgeschützt gesetzt werden, damit sie nicht außer
Kraft gesetzt werden kann.
.NET-Benutzer
Konfiguration
Lesen/Schreiben
Legt Einstellungen für die Verwaltung solcher Benutzer fest, die Rollen
zugeordnet sind und die Formularauthentifizierung nutzen
Anwendungseinstellungen
Lesen/Schreiben
Legt Einstellungen zum Speichern von Daten (Name/Wert-Paare) fest,
die zur Laufzeit von aus verwaltetem Code bestehenden Anwendungen
benutzt werden
ASP
Schreibgeschützt
Legt klassische ASP-Einstellungen fest
ASP.NET-Identitätswechsel
Lesen/Schreiben
Legt Einstellungen für den Identitätswechsel fest. Sitebesitzer können
diese Funktionalität nutzen, um ihre Site unter einem anderen Sicherheitskontext ausführen zu lassen.
Anonyme Authentifizierung
Schreibgeschützt
Legt Einstellungen für die anonyme Authentifizierung fest
Formularauthentifizierung
Lesen/Schreiben
Legt Einstellungen für die Formularauthentifizierung fest
Windows-Authentifizierung
Schreibgeschützt
Legt Einstellungen für die Windows-Authentifizierung fest
Autorisierungsregeln
Lesen/Schreiben
Bestimmt die Liste der Allow- (Zulassen) und Deny- (Verweigern)
Regeln, die den Zugriff auf Inhalte kontrollieren
CGI
Schreibgeschützt
Legt Eigenschaften für CGI-Anwendungen fest
Sollte auf Schreibgeschützt gesetzt bleiben, um zu verhindern, dass die
Benutzer Einstellungen ändern
Komprimierung
Lesen/Schreiben
Legt Einstellungen für die Konfiguration der Komprimierung fest
Verbindungszeichenfolgen
Lesen/Schreiben
Legt Verbindungszeichenfolgen fest, die von Anwendungen benutzt
werden können
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
100 Kapitel 4: Verstehen des Konfigurationssystems
Tabelle 4.8 Feature- und Delegierungseinstellungen (Fortsetzung)
Feature
Delegierte Einstellung
Grund
Standarddokument
Lesen/Schreiben
Legt die Standarddokumente einer Website fest
Wenn diese Einstellung auf Lesen/Schreiben gesetzt bleibt, können
die Benutzer ein benutzerdefiniertes Standarddokument für ihre Site
angeben, ohne den Serveradministrator kontaktieren zu müssen
Verzeichnis durchsuchen
Lesen/Schreiben
Legt Einstellungen für das Durchsuchen von Verzeichnissen fest
Fehlerseiten
Schreibgeschützt
Legt fest, welche HTTP-Fehlerantworten zurückgegeben werden
Ablaufverfolgung für
Anforderungsfehler
Lesen/Schreiben
Legt Einstellungen für die Ablaufverfolgung fehlgeschlagener Anforderungen fest. Ermöglicht es den Benutzern, Regeln für die Ablaufverfolgung von Anforderungen zu definieren, die auf bestimmten Parametern
basieren. Zu diesen Parametern zählen z.B. die benötigte Zeit oder der
Statuscode. Außerdem können die Benutzer Probleme mit ihrer Site
diagnostizieren.
Delegierung von Features
Nicht delegiert
(wurde geändert,
war zunächst Lesen/
Schreiben)
Legt Einstellungen für das Delegieren von Features an Anwendungen
fest
Kann deaktiviert werden, sofern die Serveradministratoren dieses
Feature für Sitebesitzer nicht aktivieren möchten
Handlerzuordnungen
Lesen/Schreiben
HTTP-Antwortheader
Lesen/Schreiben
Gibt die HTTP-Header an, die den Antworten des Webservers hinzugefügt werden
ISAPI-Filter
Schreibgeschützt
Gibt ISAPI-Filter an, die die an die Site oder den Server gerichteten
Anforderungen, z.B. ASP.NET-Anforderungen, verarbeiten
Protokollierung
Nicht delegiert
Computerschlüssel
Lesen/Schreiben
Legt Hashing- und Verschlüsselungseinstellungen für Anwendungsdienste fest, wie z.B. für den Anzeigezustand, die Formularauthentifizierung und den Dienst Mitgliedschaft und Rollen
MIME-Typen
Schreibgeschützt
Gibt an, welche Dateitypen als statische Dateien bereitgestellt werden
können
Module
Lesen/Schreiben
Gibt systemeigene und verwaltete Codemodule an, die die an die Site
oder den Server gerichteten Anforderungen verarbeiten
Ausgabezwischenspeicherung
Lesen/Schreiben
Legt Regeln für die Ausgabezwischenspeicherung fest
Seiten und Steuerelemente
Lesen/Schreiben
Legt Seiten- und Steuerelementeinstellungen für Anwendungen fest
Umleitungsregeln
Lesen/Schreiben
Legt Einstellungen für die Umleitung von Anforderungen zu anderen
Dateien oder URLs fest
Sitzungszustand
Lesen/Schreiben
Legt Einstellungen für den Sitzungszustand und Formularauthentifizierungscookies fest
SMTP-E-Mail
Lesen/Schreiben
Gibt E-Mail-Adressen und Übermittlungsoptionen für E-Mails an, die
von einer Site versendet werden
SSL-Einstellungen
Schreibgeschützt
Legt Einstellungen für SSL fest
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
101
Direkte Konfiguration der Delegierung
Mit dem IIS-Manager können Sie die Delegierung vieler IIS-Features verwalten. Die zugrunde liegende
Konfigurationsdelegierung können Sie aber nur für solche Features verwalten, die im IIS-Manager über
entsprechende Benutzeroberflächenseiten verfügen. Wenn Sie für diese Features den IIS-ManagerDelegierungsstatus auswählen, werden ebenfalls die erforderlichen Konfigurationsdelegierungseinstellungen generiert, die kontrollieren, ob die entsprechenden Konfigurationsabschnitte auf der Siteoder Anwendungsebene verwendet werden können.
Es gibt jedoch Situationen, in denen Sie die Konfigurationsdelegierung direkt verwalten möchten.
Dieses ist beispielsweise der Fall, wenn es für einen Konfigurationsabschnitt kein entsprechendes IISManager-Feature gibt. Für das IIS 7.0-Feature URL-Filterung gab es beispielsweise zur Drucklegung
dieses Buches keine Benutzeroberflächenkomponente. In diesen Fällen können Sie direkt mit dem
Konfigurationssystem arbeiten oder das Befehlszeilentool Appcmd verwenden, um die gewünschte
Konfigurationsdelegierung zu konfigurieren.
Die erste Möglichkeit, einen bestimmten Konfigurationsabschnitt zu delegieren, ergibt sich bei dessen
Deklaration. Dort kann das Attribut overrideModeDefault verwendet werden (lesen Sie dazu auch früher
in diesem Kapitel den Abschnitt »Abschnittsdeklarationen«). Einige der integrierten IIS 7.0-Konfigurationsabschnitte, wie z.B. <defaultDocument>, lassen die Delegierung standardmäßig zu, indem Sie in
ihren Deklarationen das Attribut auf Allow (Zulassen) setzen, während andere, wie z.B. <serverRuntime>,
dies nicht tun und stattdessen Deny (Verweigern) verwenden. Diese Entscheidung wird in der Regel vom
Entwickler des Features getroffen, das den jeweiligen Konfigurationsabschnitt liest. Sie basiert auf der
Frage, ob die Featurekonfiguration standardmäßig an Benutzer delegiert werden soll, die keine
Serveradministratoren sind.
Vorsicht Ändern Sie die overrideModeDefault-Einstellung nicht in Abschnittsdeklarationen, um die entsprechenden
Abschnitte zu sperren. Die Empfehlungen des IIS-Teams für die Delegierungsstandardeinstellungen sind gut durchdacht. Wenn Sie eine Standardeinstellung global außer Kraft setzen möchten, sollten Sie location-Tags benutzen,
die den "*"-Pfad (oder den Null-Pfad "") referenzieren.
Die overrideModeDefault-Einstellung in den Abschnittsdeklarationen von applicationHost.config legt den
Standardwert für die Delegierung fest. Sie können den Delegierungsstatus eines jeden Konfigurationsabschnitts modifizieren, indem Sie ihn sperren oder entsperren. Das Entsperren von Abschnitten ist oft
notwendig, um in den web.config-Dateien Ihrer Website bestimmte Konfigurationen für bestimmte
Abschnitte festlegen zu können. Oder Sie möchten bestimmte andere Abschnitte sperren, wenn die
Websites auf Ihrem Server die dazugehörigen Einstellungen in applicationHost.config nicht außer Kraft
setzen sollen.
Um einen Abschnitt zu entsperren, können Sie das Befehlszeilentool Appcmd.exe wie folgt verwenden:
%windir%\system32\inetsrv\AppCmd Unlock Config /section:<SectionName>
Dabei ist <SectionName> der Name des Abschnitts, z.B. system.webServer/serverRuntime.
Um einen Abschnitt zu sperren, der gegenwärtig entsperrt ist, können Sie den folgenden Befehl
benutzen:
%windir%\system32\inetsrv\AppCmd Lock Config /section:<SectionName>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
102 Kapitel 4: Verstehen des Konfigurationssystems
Das Sperren oder Entsperren eines Abschnitts generiert in applicationHost.config ein location-Tag, das
den Delegierungsstatus des Konfigurationsabschnitts festlegt, indem es das overrideMode-Attribut auf Allow
oder Deny setzt. Wenn wir beispielsweise den zuvor gezeigten Befehl benutzen, um den Abschnitt
<serverRuntime> zu entsperren, erzeugen wir in applicationHost.config den folgenden Code:
<location path="" overrideMode="Allow">
<system.webServer>
<serverRuntime />
</system.webServer>
</location>
Desgleichen können Sie Konfigurationsabschnitte nur für einen bestimmten Konfigurationspfad
sperren oder entsperren, indem Sie diesen Pfad im Befehl angeben. Auf diese Weise könnten Sie
beispielsweise einen Konfigurationsabschnitt für den gesamten Server sperren, aber einer einzelnen
Site die Möglichkeit bieten, die Einstellungen dieses Abschnitts außer Kraft zu setzen.
%windir%\system32\inetsrv\AppCmd Unlock Config "Default Web Site/"
/section:system.webServer/serverRuntime /commit:apphost
In diesem Beispiel entsperren wir den Abschnitt <serverRuntime> nur für Default Web Site und übernehmen
(/commit) die Änderungen in applicationHost.config (dies ist erforderlich). Dadurch wird in applicationHost.config ein location-Tag generiert, der das path-Attribut verwendet, um sich selbst nur auf
Default Web Site/ anzuwenden.
Auf diese Weise können Sie die Konfigurationsdelegierung für eine Abschnittsebene verwalten, ohne
hierfür viel Zeit investieren zu müssen. Manchmal ist es jedoch notwendig, die Delegierung eines
Abschnitts zuzulassen, aber die Kontrolle über eine bestimmte Einstellung innerhalb des Abschnitts
nicht abzugeben. Dies ist mithilfe einer feiner abgestuften Konfigurationssperrung möglich, die später
in diesem Kapitel im Abschnitt »Spezifische Konfigurationssperrung« beschrieben wird.
Weitere Konfigurationsmöglichkeiten für die Remoteverwaltung
Damit ein Benutzer eine Site oder Anwendung mithilfe des IIS-Managers remote verwalten kann,
müssen den Inhalten bestimmte Berechtigungen zugewiesen werden. Das Konto für den Dienst
WMSvc (Web Management Service) muss über Lese- und Schreibberechtigungen für web.config
verfügen, um eine Remoteverbindung herstellen zu können. Lesen Sie auch das achte Kapitel, das
ausführliche Informationen hierzu enthält.
Spezifische Konfigurationssperrung
Bisher haben wir die Möglichkeit untersucht, Konfigurationsabschnitte für die Delegierung zu sperren
und zu entsperren, und wir haben das location-Tag benutzt, um für eine Site oder ein Verzeichnis
Einstellungen festzulegen, die die geerbten Standardeinstellungen außer Kraft setzen. Die Featuredelegierung kontrolliert, ob in einer Konfigurationsdatei einer bestimmten Ebene ein vollständiger
Abschnitt verwendet werden kann. Es gibt jedoch Fälle, in denen ein Konfigurationsabschnitt einen Teil
der Konfiguration enthält, der delegiert werden soll, während ein anderer Teil gesperrt werden soll.
Um auch solche Szenarien berücksichtigen zu können, bietet Ihnen das Konfigurationssystem mithilfe
der so genannten spezifischen Konfigurationssperrung die Möglichkeit einer feiner abgestuften
Kontrolle darüber, welche einzelnen Konfigurationseinstellungen delegiert werden sollen. Die
spezifische Konfigurationssperrung wird durch den Einsatz spezieller Sperrdirektiven ermöglicht,
die vom Konfigurationssystem unterstützt werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
103
Um mit der spezifischen Konfigurationssperrung arbeiten zu können, müssen Sie die Konfiguration mit
einem anderen Hilfsmittel als dem IIS-Manager bearbeiten. Der IIS-Manager unterstützt gegenwärtig
keine spezifischen Sperrungen.
Hinweis Die Semantik der spezifischen Sperrung basiert auf dem ASP.NET-Konfigurationssystem. Wenn Sie mit
diesem vertraut sind, sollte Ihnen auch die Arbeit mit der spezifischen Sperrung nicht schwerfallen.
Die spezifische Konfigurationssperrung wird mit einem der in Tabelle 4.9 aufgeführten speziellen
Attribute erreicht.
Tabelle 4.9 Spezifische Konfigurationssperrung
Sperrdirektive
Verwendungszweck
lockAttributes
Sperrt bestimmte Attribute, um zu verhindern, dass diese angegeben werden
lockAllAttributesExcept
Sperrt alle Attribute des Elements, die nicht den angegebenen Attributen entsprechen
lockElements
Sperrt die angegebenen Elemente, um zu verhindern, dass diese angegeben werden (deshalb
werden alle Attribute und untergeordneten Elemente der angegebenen Elemente gesperrt)
lockAllElementsExcept
Sperrt alle Elemente des aktuellen Elements, außer die angegebenen Elemente
lockItem
Sperrt das aktuelle Auflistungselement, um zu verhindern, das entfernt wird
lockAttributes, lockAllAttributesExcept
Die Konfigurationsdirektive lockAttributes kann für ein Konfigurationselement angegeben werden, um
bestimmte Attribute des Elements zu sperren, so dass diese auf niedrigeren Konfigurationsebenen nicht
verwendet werden können. Die lockAttributes-Direktive gibt eine kommagetrennte Liste mit
Attributnamen an, die für das aktuelle Element zulässig sind.
Um beispielsweise zuzulassen, dass der Abschnitt <defaultDocument> delegiert, aber das Feature selbst
nicht deaktiviert werden kann, setzen wir das enabled-Attribut wie folgt auf true und sperren es
anschließend mit der Direktive lockAttributes:
<defaultDocument enabled="true" lockAttributes="enabled">
<files>
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
In diesem Beispiel weist lockAttributes IIS 7.0 an, keine Änderungen am enabled-Attribut zuzulassen.
Würde der Webadministrator somit versuchen, das Standarddokumentfeature zu deaktivieren
(enabled="false"), erhielte er die in Abbildung 4.6 dargestellte Fehlermeldung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
104 Kapitel 4: Verstehen des Konfigurationssystems
Abbildung 4.6 Fehlermeldung aufgrund einer Konfigurationssperrung
Wie Sie in Abbildung 4.6 sehen können, wird die Sperrverletzung genannt und die fehlerverursachende
Zeile in web.config ist deutlich hervorgehoben. Das Entfernen dieser Zeile würde in diesem Fall zur
Behebung des Problems führen.
Die lockAllAttributesExcept-Form der Attributsperrung ist für die Situationen vorgesehen, in denen Sie alle
Attribute eines Elements bis auf wenige Ausnahmen sperren möchten. In diesem Fall können Sie dieses
Element anstelle von lockAttributes verwenden und die Attribute angeben, die entsperrt bleiben sollen.
lockElements, lockAllElementsExcept
Die lockElements-Direktive ermöglicht es Ihnen, ein bestimmtes untergeordnetes Element des aktuellen
Elements (und nicht ein Attribut) zu sperren. Dies verhindert, dass dieses Element auf einer niedrigeren
Konfigurationsebene verwendet wird. Die lockElements-Direktive gibt eine kommagetrennte Liste mit
den Namen der zu sperrenden Elemente an.
Sie können die lockElements-Direktive beispielsweise nutzen, um zu verhindern, dass die <files>-Auflistung des <defaultDocument>-Abschnitts angegeben wird. Auf diese Weise wird vermieden, dass
niedrigere Konfigurationsebenen den Inhalt der Standarddokumentliste ändern.
<defaultDocument enabled="true" lockElements="files" >
<files>
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
105
Diese Konfiguration verhindert, dass ein Webadministrator die in der Standarddokumentliste
aufgeführten Dateien ändert. Das Ein- und Ausschalten des Features (über das enabled-Attribut) ist
jedoch möglich.
Die lockElements-Direktive kann ebenfalls verwendet werden, um Auflistungen zu sperren. Mit dem
Sperren bestimmter Auflistungselemente (wie z.B. <add>, <remove> und <clear>) wird erreicht, dass die
Auflistung beispielsweise nicht geändert oder Elemente nicht daraus gelöscht werden können, während
das Hinzufügen von neuen Elementen jedoch weiterhin möglich ist.
Wenn Sie beispielsweise das <add>-Element (oder das Element, das für die Auflistung als <add>-Element
dient) sperren, können der Auflistung auf niedrigeren Konfigurationsebenen keine neuen Elemente
hinzugefügt werden. Wenn Sie stattdessen die Elemente <remove> und <clear> sperren, ist es auf den
niedrigeren Ebenen nicht möglich, Elemente aus der Auflistung zu entfernen. Neue Elemente können
jedoch hinzugefügt werden.
Die lockAllElementsExcept-Direktive kann für Konfigurationselemente verwendet werden, die über
mehrere Unterelemente verfügen, die Sie bis auf eine Ausnahme sperren möchte. In der Praxis wird
diese Direktive wahrscheinlich kaum Verwendung finden, aber es ist eine Option, die zur Verfügung
steht, sollten Sie sie einmal benötigen.
lockItem
Die lockItem-Direktive sperrt bestimmte Auflistungselemente, so dass diese nicht entfernt bzw.
modifiziert werden können. Sie ist das Gegenstück zur Direktive lockElements, die verhindert, dass alle
Elemente in der Auflistung entfernt werden, indem sie das Element <remove> sperrt. Die Direktive wird
für jedes Auflistungselement angegeben, das gesperrt werden soll. Sie erwartet einen booleschen Wert.
Lassen Sie uns zu unserem Beispiel zurückkehren. Die Webadministratoren sollen der Standardseitenliste neue Einträge hinzufügen, aber Default.aspx nicht aus der Liste entfernen können. Sie
können die Seite in applicationHost.config sperren. Dazu müssen Sie den entsprechenden
Konfigurationsabschnitt finden.
<defaultDocument>
<files>
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" lockItem="true" />
</files>
</defaultDocument>
Auf diese Weise wird vermieden, dass auf den niedrigeren Konfigurationsebenen der Eintrag
Default.aspx explizit entfernt werden kann. Außerdem ist es nicht möglich, alle Elemente der
Auflistung mit <clear/> zu entfernen. Das Hinzufügen neuer Einträge zur Auflistung ist aber auch
weiterhin möglich.
Eine wichtige Verwendungsmöglichkeit von lockItem ist in applicationHost.config implementiert. Wenn
Sie den Abschnitt <modules> untersuchen, werden Sie feststellen, dass die Module mit der auf true
gesetzten lockItem-Direktive hinzugefügt werden. Dies bedeutet, dass, wenn IIS 7.0 in einer web.configDatei oder innerhalb eines location-Tags auf ein <clear>- oder <remove>-Element trifft, das ein gesperrtes
Modul referenziert, ein Sperrungsfehler zurückgegeben wird. Diese Sperrungen sind standardmäßig
aktiviert, weil die Delegierung für Module aktiviert ist, damit .NET-Anwendungen Module hinzufügen
können. Dies ist eine übliche Option. Durch das Delegieren des Abschnitts <modules> ist es jedoch
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
106 Kapitel 4: Verstehen des Konfigurationssystems
ebenfalls möglich, Module aus web.config zu entfernen. Dies könnte dazu führen, dass ein Benutzer
versehentlich eine instabile oder nicht funktionierende Konfiguration generiert. Damit dies nicht
geschieht, aber gleichzeitig die größtmögliche Kompatibilität mit .NET gewährleistet bleibt, werden
Module so deklariert, dass lockItem auf true gesetzt ist.
Eine Konfiguration für mehrere Server
Ein ganz neues Feature von IIS 7.0 ist die Möglichkeit, dass mehrere Webserver eine einzelne Konfigurationsdatei gemeinsam nutzen. Dieses Feature wurde mit Blick auf Webfarmen für den Lastenausgleich entwickelt, um dort eine Synchronisierung mehrerer Serverkonfigurationen zu vermeiden.
Diesbezüglich ist die gemeinsam genutzte Konfiguration (die auch als freigegebene Konfiguration
bezeichnet wird) ein hervorragendes Feature, das sich in vielen Webfarmumgebungen als äußerst
nützlich erweisen wird.
Hinweis Die freigegebene Konfiguration allein ist keine vollständige Webfarmlösung, da durch sie die Notwendigkeit, Anwendungsinhalte und lokale Komponenten – wie SSL-Zertifikate oder im globalen Assemblycache registrierte .NET-Assemblys – zu synchronisieren, nicht entfällt.
Die freigegebene Konfiguration aktivieren
Sie können die freigegebene Konfiguration mit dem IIS-Manager aktivieren. Sie finden das Symbol der
freigegebenen Konfiguration im Featurebereich des IIS-Managers, sofern im Hierarchielistenfeld der
Serverknoten markiert ist. Es ist unten im Featurebereich unter Verwaltung aufgeführt, wie in
Abbildung 4.7 dargestellt.
Abbildung 4.7 Das Symbol der freigegebenen Konfiguration im IIS-Manager
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
107
Hinweis Es ist möglich, die freigegebene Konfiguration ohne den IIS-Manager zu aktivieren. Dazu müssen Sie die
IIS-Konfiguration bearbeiten und alle erforderlichen Importierungsschritte manuell ausführen. Sie sollten jedoch mit
dem IIS-Manager arbeiten, da er die meisten dieser Schritte automatisiert und das Einrichten der freigegebenen
Konfiguration viel einfacher gestaltet, als dies der Fall wäre, wenn Sie sich für die manuelle Vorgehensweise entscheiden würden.
Funktionsweise der freigegebenen Konfiguration
Die grundlegende Idee, die sich hinter der freigegebenen Konfiguration verbirgt, besteht darin, die IIS
7.0-Hauptkonfigurationsdateien in einem freigegebenen UNC-Pfad abzulegen und dafür zu sorgen,
dass alle Server in der Farm den Remotekonfigurationsspeicher so verwenden, als würde es sich um
einen lokalen Speicher handeln. Wenn Sie darüber hinaus Befehlszeilentools anweisen, die
Einstellungen eines die freigegebene Konfiguration nutzenden Servers zu ändern, werden diese
Anweisungen zum freigegebenen Speicher umgeleitet. Das Ergebnis ist, dass, wenn Sie mit zehn
Servern arbeiten, die eine Konfiguration gemeinsam nutzen, und Sie z.B. einen Anwendungspool
hinzufügen, alle zehn Server sofort über diesen Pool verfügen können.
Das Einrichten der freigegebenen Konfiguration erfordert drei Hauptschritte: Zuerst müssen Sie einen
Speicherort erstellen, für den Sie die richtigen Berechtigungen und eine Benutzeridentität verwenden,
die für den Zugriff auf die Inhalte verwendet wird. Zweitens müssen Sie die Konfigurationsdateien
exportieren, so dass sie an zentraler Stelle verfügbar sind. Drittens müssen Sie die Server einrichten,
damit sie die freigegebenen anstelle der lokalen Konfigurationsdateien verwenden. Danach sind die
Server alle funktionell identisch.
Schritt 1: Vorbereiten der freigegebenen Konfiguration
Der IIS-Manager muss die Remotekonfiguration unter der Identität eines Benutzers schreiben. Er muss
somit mit den Anmeldeinformationen eines lokalen Benutzers oder eines Domänenbenutzers ausgestattet werden, der über die entsprechenden Berechtigungen verfügt. Die erste Aufgabe besteht deshalb
darin, einen Benutzer zu erstellen, der über die erforderlichen Berechtigungen verfügt. Dann müssen
dem freigegebenen Speicherort die NTFS-Berechtigungen für diesen Benutzer zugewiesen werden.
1. Erstellen Sie einen Benutzer, den Sie verwenden, um den Lese- und Schreibzugriff auf die freigegebenen Konfigurationsdateien zu ermöglichen. Dabei kann es sich um einen lokalen Benutzer
handeln, dessen Anmeldeinformationen auf jedem Server gleich sind, oder es ist ein Domänenbenutzer, sofern die Server zu einer Domäne zusammengeschlossen sind.
net user ConfigAccess HighSecurePasswordhere /add
2. Erstellen Sie einen Ordner, der die freigegebenen Konfigurationsdateien enthält. Dies kann einer
der Webserver oder der Dateiserver sein. Die einzige Voraussetzung, die erfüllt sein muss, ist, dass
alle Server über einen freigegebenen UNC-Standardpfad darauf zugreifen können.
3. Konfigurieren Sie den Ordner für die freigegebene Konfiguration mit den entsprechenden Freigabeberechtigungen. Wir benutzen in diesem Beispiel den Ordner SharedConfig.
Net share sharedconfig$=%SystemDrive%\sharedconfig /grant:ConfigUser,Read
/grant:Administrators,Full /grant:System,Full
4. Untersuchen Sie genau die Konfiguration des Servers, der als Quelle für die freigegebene Konfiguration dienen soll. Die von Ihnen exportierte IIS 7.0-Konfiguration wird von allen anderen Servern
gemeinsam genutzt. Nehmen Sie sich deshalb ein wenig Zeit, um sicherzustellen, dass sie korrekt
ist. Sie können die Konfiguration natürlich ändern, nachdem Sie die freigegebene Konfiguration
aktiviert haben. Die Änderungen wirken sich dann allerdings auf mehrere Server gleichzeitig aus.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
108 Kapitel 4: Verstehen des Konfigurationssystems
5. Sichern Sie die vorhandenen Konfigurationsdateien von einer administrativen Eingabeaufforderung
aus. Verwenden Sie dazu die folgenden Befehle:
windir%\system32\inetsrv appcmd add backup SharedConfigBackup
Schritt 2: Die Konfigurationsdateien exportieren
1. Markieren Sie im IIS-Manager den Serverknoten und führen Sie einen Doppelklick auf dem Symbol Freigegebene Konfiguration aus.
2. Klicken Sie im Bereich Aktionen auf Konfiguration exportieren, um das gleichnamige Dialogfeld zu
öffnen, wie in Abbildung 4.8 dargestellt.
3. Geben Sie unter Konfigurationsspeicherort in das Textfeld Physikalischer Pfad den UNC-Pfad zur
freigegebenen Konfiguration ein.
Hinweis Sie können die Konfigurationsdateien in einen lokalen, nicht freigegebenen Pfad exportieren und dann
manuell in den freigegebenen Ordner kopieren, wenn Sie diese Vorgehensweise bevorzugen.
Abbildung 4.8 Das Dialogfeld Konfiguration exportieren
4. Klicken Sie auf Verbinden als und geben Sie die Anmeldeinformationen ein, mit denen der Zugriff auf
den freigegebenen Pfad möglich ist. Sie können an dieser Stelle auch administrative Anmeldeinformationen eingeben. Die Anmeldeinformationen werden nur für diesen einmaligen Export benötigt und
nicht für den regulären Zugriff auf die freigegebenen Konfigurationseinstellungen verwendet.
Vorsicht Benutzen Sie nicht die Anmeldeinformationen, die Sie erstellt haben, um vom Webserver aus auf die
Konfiguration zuzugreifen. Diese Anmeldeinformationen sollten über keinen Schreibzugriff für die freigegebene
Konfiguration verfügen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Konfigurationsverwaltung
109
5. Geben Sie unter Verschlüsselungsschlüssel ein Kennwort ein, das für den Schutz exportierter Verschlüsselungsschlüssel verwendet wird, wenn diese den Server verlassen. Sie müssen dieses Kennwort auf jedem Server angeben, der die freigegebenen Konfigurationsdateien verwenden wird, damit
dieser die exportierten Verschlüsselungsschlüssel importieren kann. Beachten Sie, dass das Kennwort
mindestens acht Zeichen lang sein, ein Sonderzeichen und eine Zahl enthalten und sowohl Groß- als
auch Kleinschreibung verwenden muss, um akzeptiert zu werden. Zur Drucklegung dieses Buches
war eine automatisierte Erstellung des Verschlüsselungsschlüssels noch nicht möglich.
6. Klicken Sie auf OK. Im Anschluss daran erhalten Sie die Meldung, dass das Exportieren erfolgreich
war.
Sie haben jetzt die freigegebene Konfiguration noch nicht aktiviert, sondern nur einen Satz Dateien
erstellt, der für die freigegebene Konfiguration verwendet werden kann. Bevor Sie fortfahren, möchten
Sie vielleicht wissen, was (und was nicht) kopiert wurde. Lesen Sie den Einschub »Untersuchen der
exportierten Konfigurationsdateien«, um weitere Informationen zu erhalten.
Untersuchen der exportierten Konfigurationsdateien
Öffnen Sie das Verzeichnis, in das Sie die Dateien exportiert haben, und betrachten Sie die Inhalte. Sie
finden dort eine Kopie von applicationHost.config, administration.config und eine verschlüsselte Datei
namens ConfigEncryptedKey.key. Die .key-Datei wird verwendet, um die in den .config-Dateien
gespeicherten verschlüsselten Informationen zu entschlüsseln. Damit dies funktioniert, müssen alle
Server der Farm einen gemeinsamen geheimen Schlüssel kennen. Aus diesem Grund müssen Sie einen
starken Schlüssel eingeben, wenn Sie diese Konfigurationseinstellungen exportieren. In den Konfigurationsdateien sind standardmäßig keine verschlüsselten Informationen enthalten, da der anonyme
Benutzer nun ein integriertes Konto ist, das kein Kennwort mehr erfordert, weil es nicht für eine
Anmeldung an den Server genutzt werden kann. Darüber hinaus wurde das unter IIS 4.0, IIS 5.0 und
IIS 6.0 verwendete IWAM-Konto verworfen. Viele Unternehmen verwenden jedoch eine eindeutige
Identität als Prinzipal für Anwendungspools und sonst den anonymen IIS-Benutzer, um die Sicherheit
zu vergrößern und spezifischere Details in Überwachungsprotokollen zur Verfügung zu stellen.
Die mit dem IIS-Manager erstellten Kennwörter für UNC-Pfade, Anwendungspoolprinzipale und
benutzerdefinierte anonyme Benutzer werden verschlüsselt und in den Konfigurationsdateien
gespeichert. Diese verschlüsselten Elemente können auf anderen IIS 7.0-Servern nicht einfach
entschlüsselt werden. Die freigegebene Konfiguration macht dies jedoch möglich, weil Sie die
Verschlüsselungsschlüssel des Servers, dessen Konfiguration exportiert werden soll, exportieren und
auf allen anderen Computern, die die freigegebene Konfiguration nutzen sollen, wieder importieren
können.
Sie sollten beachten, dass Sie keine web.config-Dateien, benutzerdefinierten Module, Webseiteinhalte,
Zertifikate oder andere Dateien vorfinden werden, die sich auf die Serverkonfiguration beziehen. Die
zentralisierte Konfiguration ermöglicht nur die gemeinsame Nutzung von applicationHost.config und
administration.config. Alle anderen Elemente, die notwendig sind, damit die Server eine identische
Funktionalität aufweisen, müssen durch Prozesse verwaltet werden, die Sie außerhalb von IIS 7.0
initiieren.
Beachten Sie, dass Sie vom IIS-Team Tools oder Updates zu diesem Feature erwarten können,
nachdem Windows Server 2008 veröffentlicht wurde. Diese Hilfsmittel dienen der einfacheren
Replikation und Synchronisierung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
110 Kapitel 4: Verstehen des Konfigurationssystems
Schritt 3: Die freigegebene Konfiguration aktivieren
Sie können die freigegebene Konfiguration nun aktivieren. In der Regel beginnen Sie mit dem Server,
den Sie zum Exportieren der freigegebenen Konfiguration verwendet haben. Das Exportieren der
Konfiguration veranlasst den Server nicht, mit der Verwendung der exportierten Einstellungen automatisch zu beginnen. Es ist sogar so, dass, wenn Sie an diesem Punkt Änderungen an der IIS 7.0Konfiguration vornehmen, Sie diese nur auf dem lokalen Server sehen. Solange Sie die freigegebene
Konfiguration nicht erneut exportieren, wird sie diese neuen Änderungen nicht widerspiegeln.
Die Prozedur ist einfach und für jeden Server gleich:
1. Aktivieren Sie im Feature Freigegebene Konfiguration das Kontrollkästchen Freigegebene Konfiguration aktivieren.
2. Geben Sie den physikalischen Pfad, den Benutzernamen und das Kennwort ein, also die Daten, die
Sie benutzt haben, um den freigegebenen Speicherort und den Benutzer für diesen Ort zu erstellen.
In unserem Beispiel wäre dies:
Pfad: \\Contoso\SharedConfig\
Benutzer: ConfigAccess
Kennwort: HierDasHochsicherheitskennwort
3. Klicken Sie im Bereich Aktionen auf Übernehmen. Geben Sie im folgenden Dialogfeld das Kennwort ein, das Sie benutzt haben, um die Einstellungen zu exportieren. Daraufhin sehen Sie die in
Abbildung 4.9 dargestellte Meldung.
Abbildung 4.9 Verschlüsselungsschlüssel sichern
Diese Meldung teilt Ihnen mit, dass, wenn Sie sich dazu entschließen würden, zu Ihren lokalen
Einstellungen zurückzukehren, der IIS-Manager Ihre Verschlüsselungsschlüssel wiederherstellen
würde, so dass sie für Ihre lokalen Konfigurationsdateien verwendet werden könnten. Andernfalls
könnten alle Kennwörter, die Sie im Konfigurationssystem für UNC-Pfade, benutzerdefinierte
anonyme Benutzer oder Anwendungspoolidentitäten eingegeben hätten, von IIS nicht mehr entschlüsselt werden.
4. Klicken Sie auf OK, um das Meldungsdialogfeld zu schließen. Daraufhin wird eine weitere Meldung angezeigt, die Sie darüber informiert, dass Sie dem IIS-Manager schließen und erneut öffnen
und den Webverwaltungsdienst neu starten müssen, damit die Änderungen berücksichtigt werden.
Wenn Sie den IIS-Manager schließen und neu öffnen, werden die freigegebenen Konfigurationsdateien anstelle der lokalen Dateien geladen. Das Neustarten des Verwaltungsdienstes führt dazu,
dass die Remoteverwaltungsanforderungen umgeleitet werden.
Sie müssen diesen Vorgang auf jedem Server wiederholen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Zusammenfassung
111
Überlegungen zur freigegebenen Konfiguration
Die freigegebene Konfiguration hilft, den administrativen Aufwand zu verringern, der mit dem Replizieren der Konfiguration für die Server einer Webfarm einhergeht. Es handelt sich jedoch nicht um ein
Verwaltungstool für Webfarmen. Sie sind auch weiterhin selbst für das Replizieren aller Inhalte und
solcher Konfigurationseinstellungen verantwortlich, die für einen Server der Farm von lokaler Natur
sind. Dazu zählen Einstellungen zur Inhaltsreplikation, zur Verzeichnisstrukturverwaltung, zu SSLZertifikaten, zur Wiederverwendung von Diensten, zu Betriebssystemupdates, zur Registrieren von
COM-Objekten, zum Platzieren neuer Inhalte im globalen .NET-Assemblycache, zur Netzwerkkonfiguration und andere Einstellungen, die lokal gespeichert werden.
Stellen Sie sich vor, Sie möchten einen Anwendungspool vom klassischen in den integrierten Modus
versetzen. Dies ist eine der wenigen Einstellungen, die dazu führen, dass ein Anwendungspool recycelt
wird. Änderungen, die sich auf die Anwendungspoolumgebung auswirken, wie z.B. der Typ des Anwendungspools oder die Poolidentität, verursachen ein Recycling all Ihrer Anwendungspools auf allen
Shared-Servern, was dazu führen kann, dass Ihre Webanwendung für kurze Zeit nicht verfügbar ist. In
Anbetracht dieses und anderer Szenarien, z.B. Inhaltsaktualisierungen, benötigen Sie ein Verfahren, um
Updates sukzessive anzuwenden, so dass Sie die Einstellungen präziser kontrollieren können.
Wenn Sie beispielsweise eine Konfigurationsänderung durchführen müssen, die einen Recycelvorgang
zur Folge hat, sollten Sie die Einstellungen von einem zweiten Server in einen neuen freigegebenen
Ordner exportieren. Nur dieser Server verwendet dann diesen Speicherort, während die anderen Server der
Farm weiterhin Anforderungen bedienen. Sie wenden anschließend die gewünschten Updates nur auf
diesen Server an und testen die Ergebnisse. Wenn Sie zufrieden sind, verweisen Sie auch die anderen
Shared-Server nacheinander auf den neuen freigegebenen Speicherort. Sollten währenddessen Probleme
auftreten, können Sie ein Rollback zur vorherigen Konfiguration durchführen. Wenn keine Probleme
auftreten, können Sie damit fortfahren, die einzelnen Server zum neuen Speicherort umzuleiten, bis
schließlich alle Server die neue Konfiguration verwenden.
Zusammenfassung
Das IIS 7.0-Konfigurationssystem ist die Basis für viele wichtige Bereitstellungs- und Verwaltungsfunktionen des Servers. Es ermöglicht zum ersten Mal Szenarien wie die delegierte Konfigurationsverwaltung, die echte xcopy-Bereitstellung von IIS-Anwendungen und die gemeinsame Nutzung einer
Konfiguration durch mehrere Server.
In diesem Kapitel haben Sie sich mit den Grundlagen der Bearbeitung von Webserverkonfigurationen
beschäftigt und wesentliche Konfigurationsverwaltungsaufgaben ausgeführt, wie z.B. das Sichern von
Konfigurationen und das Einrichten einer freigegebenen Konfiguration für mehrere Server einer Webfarm.
Das Konfigurationssystem ist der Kern des IIS 7.0-Verwaltungsstacks, der verschiedene Möglichkeiten
der Serververwaltung bietet. Um zu erfahren, wie IIS mithilfe einer grafischen Benutzeroberfläche
verwaltet wird, lesen Sie bitte das sechste Kapitel. Im siebten Kapitel erfahren Sie mehr über die
Verwaltung der IIS 7.0-Konfiguration über die Befehlszeile.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
112 Kapitel 4: Verstehen des Konfigurationssystems
Das IIS 7.0-Konfigurationssystem ist der ganzheitlichen IIS 7.0-Erweiterbarkeit gemäß vollständig
erweiterbar, weshalb Webservermodule von Drittanbietern ihre Konfiguration im IIS 7.0-Konfigurationssystem speichern können. Diese Erweiterbarkeit ermöglicht es den Entwicklern, dieselben
Konfigurationsmöglichkeiten und Verwaltungstools zu nutzen, die auch von IIS 7.0 verwendet werden.
Ein Administrator könnte beispielsweise ein benutzerdefiniertes Feature mit Appcmd konfigurieren,
oder ein Entwickler könnte .NET benutzen, um den Featurestatus und die Featurekonfiguration zu
verwalten.
Weitere Informationen zum Schutz von Konfigurationen auf Ihrem Server, wozu auch der Einsatz der
Konfigurationsverschlüsselung und die richtige Nutzung der Konfigurationsisolation zählen, erhalten
Sie im vierzehnten Kapitel.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Die IIS 7.0-Webreferenz befindet sich unter http://msdn2.microsoft.com/en-us/library/
ms691259.aspx.
Sie können auf der IIS-Website unter http://www.iis.net und in den IIS 7.0-Online-Hilfedateien nach
Konfigurationsinformationen suchen.
Informationen darüber, wie sich die IIS 6.0-Metabasiseigenschaften dem IIS 7.0Konfigurationsschema zuordnen lassen, finden Sie unter http://msdn2.microsoft.com/en-us/library/
aa347565.aspx.
Der Artikel »Using IIS7 Configuration History« unter http://www.iis.net/articles/view.aspx/IIS7/
Managing-IIS7/Configuring-the-IIS7-Runtime/Understanding-AppHost-Service/Using-IIS7Configuration-History?Page=1 enthält weitere Informationen zu configHistory.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
113
T E I L
I I
Bereitstellung
In diesem Teil:
IIS 7.0 installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
115
K A P I T E L
5
Installieren von IIS 7.0
Inhalt dieses Kapitels:
Planen der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nach der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Behandlung von Installationsproblemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIS 7.0 entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf der Begleit-CD
115
137
140
142
145
146
Auf der CD finden Sie weitere Tools und Ressourcen.
Windows Server 2008 spielt bei der Installation und Konfiguration Ihres Webservers eine wichtige
Rolle. Das Setup von IIS 7.0 (Internet Information Services) ist modular aufgebaut und ermöglicht es
Ihnen, das Einrichten Ihres Webservers vollständig zu kontrollieren.
Windows Server 2008 führt neue Hilfsmittel zur Installation von IIS 7.0 ein. Sie können den ServerManager benutzen, ein Tool mit einer grafischen Benutzeroberfläche, oder Sie arbeiten mit zwei
Befehlszeilentools: dem Paketmanager (Pkgmgr.exe) und ServerManagerCMD. Zusätzlich zu den
neuen Tools unterstützt IIS 7.0 auch die alten Skripts, die ADSI (Active Directory Service Interfaces)
oder WMI (Windows Management Instrumentation) verwenden.
Abgesehen von den verschiedenen Möglichkeiten, IIS 7.0 zu installieren, können Sie mit dem neuen
auf XML basierenden Konfigurationssystem, das mit Windows Server 2008 eingeführt wurde, Ihre
Buildbasisdateien auf andere Computer kopieren. Nachdem Sie Ihr Masterimage erstellt haben, können
Sie die IIS 7.0-Konfigurationsdateien auf einen anderen IIS 7.0-Server kopieren. Die neue modulare
Architektur ermöglicht es Ihnen, einen Server zu konzipieren und zu implementieren, der Ihren
Bedürfnissen gerecht wird.
Bevor Sie beginnen, IIS 7.0 zu installieren, ist ein wenig Planung notwendig.
Planen der Installation
IIS 7.0 weist eine modulare Architektur auf, die es Ihnen ermöglicht, genau zu bestimmen, welche
Features auf dem Webserver installiert und ausgeführt werden sollen. Die Webserverfeatures sind in
mehr als vierzig Module unterteilt, die unabhängig voneinander installiert werden können, so dass
Sie über die Möglichkeit verfügen, die potentielle Angriffsfläche zu verringern. (Lesen Sie das dritte
Kapitel, »Verstehen der modularen Basis«, um weitere Details zu erhalten.) Eine kleinere Installation
führt außerdem dazu, dass weniger Patches installiert werden müssen. Wenn Sie eine Standardinstallation implementieren, wird IIS 7.0 mit zehn Modulen installiert und liefert als anonymer Benutzer nur
statische Inhalte. Wahrscheinlich benötigen Sie jedoch eine umfassendere Funktionalität.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
116 Kapitel 5: Installieren von IIS 7.0
Um die modulare Architektur voll ausnutzen zu können, sollten Sie Ihre IIS 7.0-Installation planen,
damit diese den Anforderungen der Anwendungen entspricht, die Sie bereitstellen möchten. Dieses
Kapitel enthält spezifische Informationen darüber, welche Module Sie benötigen, um verschiedene
Arbeitspensen bewältigen zu können. Wenn Sie die Anzahl der installierten Module verringern, ist es
einfacher, Ihre in der Produktionsumgebung befindlichen Anwendungen zu warten und zu überwachen
und Probleme zu beheben.
Wenn Sie Ihre Installation planen, sollten Sie darüber nachdenken, mit welchem Installationstool Sie
arbeiten möchten. Der Server-Manager (der automatisch gestartet wird, wenn Sie sich an Windows
Server 2008 anmelden) stellt eine intuitive Benutzeroberfläche zur Verfügung, mit der Sie kontrollieren
können, welche Rollen und Features installiert werden sollen. Der Server-Manager kümmert sich auch
automatisch um alle mit den verschiedenen Modulen einhergehenden Abhängigkeiten. Sie können
den Server-Manager benutzen, um zu bestimmen, welche Module für ein bestimmtes Arbeitspensum
erforderlich sind. Danach können Sie diese Informationen nutzen, um Ihre Installation unter Verwendung von Befehlszeilentools zu automatisieren. Die Benutzeroberfläche des Server-Managers ist bei
Server Core-Installationen von Windows Server 2008 nicht verfügbar.
ServerManagerCMD ist die Befehlszeilenversion des Server-Managers. Dabei handelt es sich um
eine aus verwaltetem Code bestehende ausführbare Datei, die besonders für die Automatisierung Ihrer
Serverinstallationen geeignet ist. Die Arbeit mit ServerManagerCMD als Installationswerkzeug, das
über die Befehlszeile gesteuert wird, ist sehr einfach, da das Programm die Serverrollen, Rollendienste
und deren Abhängigkeiten kennt. Sie können beispielsweise mit nur einem Befehl alle Komponenten
installieren, die notwendig sind, um einen statischen Webserver einzurichten. Andere Rollen und
Features, wie z.B. das Message Queuing, können auf ähnliche Weise installiert werden. ServerManagerCMD ist als globales Tool vorgesehen, das auf der Serverebene verwendet wird. ServerManagerCMD ist bei Server Core-Installationen nicht verfügbar.
Der Paketmanager ist ein Befehlszeilentool, das für benutzerdefinierte und automatisierte Installationen
von IIS 7.0 vorgesehen ist. Der Paketmanager bietet die größtmögliche Flexibilität und besonders
detaillierte Konfigurationsmöglichkeiten für Ihre IIS 7.0-Installationen. Im Gegensatz zum ServerManager müssen Sie bei der Arbeit mit dem Paketmanager jedoch die Module und deren Abhängigkeiten kennen. Wenn Sie nicht die richtigen Module und die damit verknüpften Abhängigkeiten
installieren, wird Ihr Server nicht wie erwartet arbeiten. Der Paketmanager ist für alle Versionen
von Windows Server 2008 verfügbar.
Welche dieser Tools Sie benutzen, ist von Ihrer Umgebung abhängig. Wenn Sie den Installationsvorgang nicht automatisieren müssen, genügt der Server-Manager. Wenn Sie den Einsatz von Servern
in einem Unternehmen oder bei einem Webhoster planen, werden der Paketmanager und ServerManagerCMD für Sie interessant sein. Aber vielleicht möchten Sie sich nur für eines dieser Werkzeuge
entscheiden, anstatt den Umgang mit beiden zu erlernen. Wenn Sie nur den Einsatz von Server CoreComputern planen, ist der Paketmanager Ihre einzige Option, und er ist für diese Aufgabe bestens
geeignet. Wenn Sie nicht beabsichtigen, Server Core-Computer bereitzustellen, ist ServerManagerCMD eine Option. Unabhängig davon, für welches Tool Sie sich entscheiden, stellt IIS 7.0 mehrere
Hilfsmittel zur Verfügung, die Sie bei der Automatisierung Ihrer Serverinstallationen unterstützen. Sie
finden eine Erläuterung des Paketmanagers und von ServerManagerCMD später in diesem Kapitel in
den Abschnitten »ServerManagerCMD verwenden« und »Den Paketmanager verwenden«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
117
Installationsszenarien für IIS 7.0
Ein bei Windows Server 2008 neues Konzept sind Setups, die sich nach dem späteren Arbeitsschwerpunkt richten. Einige übliche Arbeitsschwerpunktszenarien, die unter Windows Server 2008 zur Verfügung stehen, sind nachfolgend aufgeführt:
Webserver für statische Inhalte (Standardinstallation)
ASP.NET
Klassisches ASP
Auf FastCGI basierende Anwendungen
Verwaltete IIS-Module und .NET-Erweiterbarkeit
Vollständige IIS-Installation
Server Core Web Edition
Webserver für statische Inhalte (Standardinstallation)
Ein Webserver mit dem Rollendienst Statischer Inhalt ist die Standardinstallation und gleichzeitig
das Arbeitsschwerpunktsetup, das vorwiegend zum Einsatz kommt, weil es auch Bestandteil anderer
Arbeitsschwerpunkt- und Produktionsinstallationen ist. Die standardmäßig ausgewählten Setupoptionen von IIS 7.0 stellen alle IIS-Module zur Verfügung, die für diese Konfiguration notwendig sind.
Zu diesen Modulen zählen solche, die verantwortlich für die Bereitstellung von statischen HTMLDateien, Dokumenten und Bildern sind. Ein derart konfigurierter Webserver unterstützt außerdem
Standarddokumente, das Durchsuchen von Verzeichnissen, die Protokollierung und die anonyme
Authentifizierung. Die IIS-Manager-Konsole wird ebenfalls installiert.
Tabelle 5.1 listet alle Komponenten auf, die standardmäßig ausgewählten, wenn Sie IIS 7.0 installieren.
Die Tabelle enthält auch die entsprechenden Updatenamen. Updatenamen sind Namen, die zur Durchführung von Paketmanager-Installationen verwendet werden.
Tabelle 5.1 Installationskomponenten für den Standardserver
Server-Manager
Updatename
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
HTTP-Fehler
IIS-HttpErrors
HTTP-Protokollierung
IIS-HttpLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Anforderungsfilterung
IIS-RequestFiltering
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
IIS-Verwaltungskonsole
IIS-ManagementConsole
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
118 Kapitel 5: Installieren von IIS 7.0
Um mithilfe des Paketmanagers die IIS-Features für einen Webserver zu installieren, der ausschließlich
statische Inhalte bereitstellt, benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
(Der Befehl wurde aus Gründen der besseren Lesbarkeit formatiert.)
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;
IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;
IIS-HttpErrors;IIS-HealthAndDiagnostics;IIS-HttpLogging;
IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;
IIS-RequestFiltering;IIS-HttpCompressionStatic;
IIS-WebServerManagementTools;IIS-ManagementConsole;
WAS-WindowsActivationService;WAS-ProcessModel;
WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für einen Webserver zu installieren, der ausschließlich statische Inhalte bereitstellen soll, benutzen Sie im Fenster der Eingabeaufforderung den
folgenden Befehl:
ServerManagerCMD.exe –install Web-Server
ASP.NET
Der Microsoft ASP.NET-Webserver ist wahrscheinlich der am meisten verwendete Arbeitsschwerpunktserver. ASP.NET ist bei Entwicklern sehr beliebt. IIS 7.0 und ASP.NET wurden für eine enge
Zusammenarbeit entworfen und ASP.NET nimmt bei IIS 7.0 eine besondere Stellung ein. Entwickler
können verwalteten Code auf derselben Ebene bereitstellen, auf der sich auch die systemeigenen
Module befinden. Die integrierte Pipeline ermöglicht diese Funktionalität. Die Module für einen auf
statische Inhalte spezialisierten Webserver bilden zusammen mit bestimmten ASP.NET-Optionen den
ASP.NET-Schwerpunktserver.
Tabelle 5.2 führt alle Komponenten auf, die installiert werden, wenn Sie Ihren Server als ASP.NETSchwerpunktserver konfigurieren. Die Tabelle enthält auch die entsprechenden Updatenamen.
Tabelle 5.2 Installationsoptionen für den ASP.NET-Schwerpunktserver
Server-Manager
Updatename
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
HTTP-Fehler
IIS-HttpErrors
HTTP-Protokollierung
IIS-HttpLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Anforderungsfilterung
IIS-RequestFiltering
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
IIS-Verwaltungskonsole
IIS-ManagementConsole
ASP.NET
IIS-ASPNET
.NET-Erweiterbarkeit
IIS-NetFxExtensibility
ISAPI
IIS-ISAPIFilter
ISAPI-Erweiterungen
IIS-ISAPIExtensions
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
119
Um mithilfe des Paketmanagers IIS-Features für den ASP.NET-Schwerpunktserver zu installieren,
benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;
IIS-ASPNET;IIS-NetFxExtensibility;IIS-ISAPIExtensions;
IIS-ISAPIFilter;IIS-HealthAndDiagnostics;IIS-HttpLogging;
IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;
IIS-RequestFiltering;IIS-HttpCompressionStatic;
IIS-WebServerManagementTools;IIS-ManagementConsole;
WAS-WindowsActivationService;WAS-ProcessModel;
WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für den ASP.NET-Schwerpunktserver zu
installieren, benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
-install
-install
-install
-install
-install
-install
Web-Server
Web-ASP-NET
Web-NET-Ext
Web-Filtering
Web-ISAPI-Filter
Web-ISAPI-Ext
Klassisches ASP
Bevor Microsoft ASP.NET veröffentlichte, war klassisches ASP die Programmiersprache, die hauptsächlich für IIS verwendet wurde. Viele Websites nutzen noch heute klassisches ASP und IIS 7.0
unterstützt dies. Sie können ihre klassischen ASP-Anwendungen einfach portieren, so dass sie unter
IIS 7.0 ausgeführt werden. Sie können die Vorzüge neuer Hilfsmittel und Verfahren nutzen, z.B. die
Diagnose, Protokollierung und Problembehandlung, und gleichzeitig mit Ihren bereits vorhandenen
Anwendungen arbeiten, so dass Sie das Beste aus beiden Welten erhalten. Sie sind in der Lage, Ihr
klassisches ASP beizubehalten und zur selben Zeit die Vorzüge von IIS 7.0 zu nutzen. Die Module für
statische Dateien bilden zusammen mit bestimmten klassischen ASP-Optionen den ASP-Schwerpunktserver.
Tabelle 5.3 führt alle Komponenten auf, die installiert werden, wenn Sie Ihren Server als klassischen
ASP-Schwerpunktserver konfigurieren. Die Tabelle enthält auch die entsprechenden Updatenamen.
Tabelle 5.3 Installationsoptionen für den klassischen ASP-Schwerpunktserver
Server-Manager
Updatename
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
HTTP-Fehler
IIS-HttpErrors
HTTP-Protokollierung
IIS-HttpLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Anforderungsfilterung
IIS-RequestFiltering
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
120 Kapitel 5: Installieren von IIS 7.0
Tabelle 5.3 Installationsoptionen für den klassischen ASP-Schwerpunktserver (Fortsetzung)
Server-Manager
Updatename
IIS-Verwaltungskonsole
IIS-ManagementConsole
ASP
IIS-ASP
ISAPI-Erweiterungen
IIS-ISAPI-Extensions
Um mithilfe des Paketmanagers die IIS-Features für den klassischen ASP-Schwerpunktwebserver zu
installieren, benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;
IIS-ASP;IIS-ISAPIExtensions;IIS-HealthAndDiagnostics;
IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;
IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;
IIS-WebServerManagementTools;IIS-ManagementConsole;
WAS-WindowsActivationService;WAS-ProcessModel;
WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für den klassischen ASP-Schwerpunktwebserver zu installieren, benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
ServerManagerCmd.exe
-install
-install
-install
-install
Web-Server
Web-ASP
Web-Filtering
Web-ISAPI-Ext
FastCGI-Schwerpunktserver
FastCGI ist eine Alternative zu CGI (Common Gateway Interface). Dabei handelt es sich um eine
sprachunabhängige Erweiterung von CGI, die eine hohe Leistung bietet, ohne an eine bestimmte
Serverplattform gebunden zu sein.
Hinweis Um weitere Informationen zum FastCGI-Modul für IIS zu erhalten, lesen Sie bitte Bill Staples Blog unter
http://blogs.iis.net/bills/archive/2006/10/31/PHP-on-IIS.aspx. Das Blog beschreibt, wie Sie Ihre PHP-Anwendungen
mit IIS 7.0- und FastCGI-Modulen erweitern können.
Eines der Designziele von Windows Server 2008 ist die Bereitstellung einer allgemeinen Webserverplattform für alle Anwendungstypen. Dazu zählen Anwendungen, die auf Microsoft-Technologien
basieren, wie z.B. ASP.NET und klassischem ASP, aber auch andere Technologien wie PHP.
Tabelle 5.4 führt alle Komponenten auf, die installiert werden, wenn Sie Ihren Server als FastCGISchwerpunktserver konfigurieren. Die Tabelle enthält auch die entsprechenden Updatenamen.
Tabelle 5.4 Installationsoptionen für einen FastCGI-Schwerpunktserver
Server-Manager
Updatename
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
121
Tabelle 5.4 Installationsoptionen für einen FastCGI-Schwerpunktserver (Fortsetzung)
Server-Manager
Updatename
HTTP-Fehler
IIS-HttpErrors
HTTP-Protokollierung
IIS-HttpLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Anforderungsfilterung
IIS-RequestFiltering
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
IIS-Verwaltungskonsole
IIS-ManagementConsole
CGI
IIS-CGI
Um mithilfe des Paketmanagers die IIS-Features für einen FastCGI-Schwerpunktserver zu installieren,
benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;
IIS-CGI;IIS-HealthAndDiagnostics;IIS-HttpLogging;
IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;
IIS-RequestFiltering;IIS-HttpCompressionStatic;
IIS-WebServerManagementTools;IIS-ManagementConsole;
WAS-WindowsActivationService;WAS-ProcessModel;
WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für einen FastCGI-Schwerpunktserver zu
installieren, benutzen die folgende Befehlszeile:
ServerManagerCmd.exe -install Web-Server
ServerManagerCmd.exe -install Web-CGI
Schwerpunktserver für verwaltete IIS-Module und .NET-Erweiterbarkeit
Es ist möglich, .NET zu nutzen, ohne ASP.NET installiert zu haben. Sie fragen sich vielleicht, in
welchen Situationen ein solcher Schwerpunktserver benötigt wird. Stellen Sie sich vor, Sie haben
eigene benutzerdefinierte HTTP-Module entwickelt, die an Ihre Umgebung angepasst sind. (Dazu
könnten Komponenten für das Handling verschiedener Inhalte, Umleitungen, die Sitzungsverwaltung,
die Protokollierung und andere benutzerdefinierte Anwendungskomponenten zählen.) Ein solcher
Serverschwerpunkt ermöglicht es Ihnen, Server einzurichten, die nur die Module aufweisen, die für
Ihre Anwendungen notwendig sind. Sie verfügen dann über die volle IIS 7.0-Leistung, während der
Ressourcenbedarf des Webservers äußerst gering ist, wodurch er sicherer wird. Und trotzdem erfüllt
dieser Server all Ihre Anforderungen. Die Module für statische Dateien bilden zusammen mit den
verwalteten IIS-Modulen und den Modulen für die .NET-Erweiterbarkeit diesen Schwerpunkttyp.
Tabelle 5.5 führt alle Komponenten auf, die installiert werden, wenn Sie Ihren Server als Schwerpunktserver für verwaltete IIS-Module und die .NET-Erweiterbarkeit konfigurieren. Die Tabelle enthält auch
die entsprechenden Updatenamen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
122 Kapitel 5: Installieren von IIS 7.0
Tabelle 5.5 Installationsoptionen für Server, die verwaltete IIS-Module und die .NET-Erweiterbarkeit nutzen
Server-Manager
Updatename
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
HTTP-Fehler
IIS-HttpErrors
HTTP-Protokollierung
IIS-HttpLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Anforderungsfilterung
IIS-RequestFiltering
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
IIS-Verwaltungskonsole
IIS-ManagementConsole
.NET-Erweiterbarkeit
IIS-NetFxExtensibility
Um mithilfe des Paketmanagers die IIS-Features für Schwerpunktserver zu installieren, die verwaltete
IIS-Module und die .NET-Erweiterbarkeit nutzen, verwenden Sie im Fenster der Eingabeaufforderung
den folgenden Befehl:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;
IIS-NetFxExtensibility;IIS-ISAPIExtensions;IIS-ISAPIFilter;
IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;
IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;
IIS-HttpCompressionStatic;IIS-WebServerManagementTools;
IIS-ManagementConsole;WAS-WindowsActivationService;
WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für Schwerpunktserver zu installieren, die
verwaltete IIS-Module und die .NET-Erweiterbarkeit nutzen, verwenden Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
ServerManagerCmd.exe -install Web-Server
ServerManagerCmd.exe -install Web-Net-Ext
Vollständige IIS-Installation
Wenn Sie alle von IIS 7.0 angebotenen Optionen untersuchen möchten, können Sie innerhalb einer
Testumgebung eine vollständige Installation von IIS 7.0 durchführen. Falls Sie alle Module (über
vierzig) installieren, können Sie die gesamte Funktionalität nutzen. In einer echten Entwicklungsumgebung ist eine vollständige Installation jedoch nicht empfehlenswert, da Probleme auftreten
könnten, wenn Sie Ihre Anwendungen anschließend in eine Produktionsumgebung migrierten, in
der nicht alle Module genutzt würden. Wenn Sie in Ihrer Entwicklungsumgebung nur die wirklich
benötigten Module und Features installieren, werden Sie verstehen, welche Module aus welchen
Gründen notwendig sind. Dies trägt außerdem dazu bei, dass der Ressourcenbedarf Ihres Produktionsservers nicht zu groß wird, was wiederum eine größere Sicherheit zur Folge hat. Je weniger Module Sie
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
123
einsetzen, desto besser wird auch die Leistung Ihrer Anwendungen sein. Und je besser Sie Ihre
Entwicklungsumgebung an Ihren Produktionsserver anpassen, desto wahrscheinlicher ist es, dass der
Übergang von der Entwicklung zu Produktion reibungslos verläuft.
Tabelle 5.6 führt alle Komponenten auf, die installiert werden, wenn Sie sich für eine vollständige
Installation von IIS 7.0 entscheiden. Die Tabelle enthält auch die entsprechenden Updatenamen.
Tabelle 5.6 Komponenten für eine vollständige Serverinstallation
Server-Manager
Updatename
Internet Information Services
IIS-WebServerRole
World Wide Web Services
IIS-WebServer
Allgemeine HTTP-Features
IIS-CommonHttpFeatures
Statischer Inhalt
IIS-StaticContent
Standarddokument
IIS-DefaultDocument
Verzeichnis durchsuchen
IIS-DirectoryBrowsing
HTTP-Fehler
IIS-HttpErrors
HTTP-Umleitung
IIS-HttpRedirect
Anwendungsentwicklung
IIS-ApplicationDevelopment
ASP.NET
IIS-ASPNET
.NET-Erweiterbarkeit
IIS-NetFxExtensibility
ASP
IIS-ASP
CGI
IIS-CGI
ISAPI-Erweiterungen
IIS-ISAPIExtensions
ISAPI-Filter
IIS-ISAPIFilter
Serverseitiges Include
IIS-ServerSideInclude
Systemzustand und Diagnose
IIS-HealthAndDiagnostics
HTTP-Protokollierung
IIS-HTTPLogging
Protokollierungstools
IIS-LoggingLibraries
Anforderungsüberwachung
IIS-RequestMonitor
Ablaufverfolgung
IIS-HttpTracing
Benutzerdefinierte Protokollierung
IIS-CustomLogging
ODBC-Protokollierung
IIS-ODBCLogging
Sicherheit
IIS-Security
Standardauthentifizierung
IIS-BasicAuthentication
Windows-Authentifizierung
IIS-WindowsAuthentication
Digestauthentifizierung.
IIS-DigestAuthentication
Authentifizierung über Clientzertifikatzuordnung
IIS-ClientCertificateMappingAuthentication
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
124 Kapitel 5: Installieren von IIS 7.0
Tabelle 5.6 Komponenten für eine vollständige Serverinstallation (Fortsetzung)
Server-Manager
Updatename
Authentifizierung über IIS-Clientzertifikatzuordnung
IIS-IISCertificateMappingAuthentication
URL-Autorisierung
IIS-URLAuthorization
Anforderungsfilterung
IIS-RequestFiltering
IP- und Domäneneinschränkungen
IIS-IPSecurity
Leistung
IIS-Performance
Komprimierung statischer Inhalte
IIS-HttpCompressionStatic
Komprimierung dynamischer Inhalte
IIS-HttpCompressionDynamic
Verwaltungstools
IIS-WebServerManagementTools
IIS-Verwaltungskonsole
IIS-ManagementConsole
IIS-Verwaltungsskripts und -tools
IIS-ManagementScriptingTools
Verwaltungsdienst
IIS-ManagementService
Kompatibilität mit der IIS 6-Verwaltung
IIS-IIS6ManagementCompatibility
Kompatibilität mit der IIS-Metabasis
IIS-Metabase
Kompatibilität mit WMI für IIS 6
IIS-WMICompatibility
IIS 6-Skripttools
IIS-LegacyScripts
IIS 6-Verwaltungskonsole
IIS-LegacySnapIn
FTP-Publishingdienst
IIS-FTPPublishingService
FTP-Server
IIS-FTPServer
FTP-Verwaltungskonsole
IIS-FTPManagement
Windows-Prozessaktivierungsdienst
WAS-WindowsActivationService
Prozessmodell
WAS-ProcessModel
.NET-Umgebung
WAS-NetFxEnvironment
Konfigurations-APIs
WAS-ConfigurationAPI
Um mithilfe des Paketmanagers die IIS-Features für eine vollständige Serverinstallation zu installieren,
benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;
IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;
IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;
IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;
IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;
IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;
IIS-BasicAuthentication;IIS-WindowsAuthentication;
IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;
IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;
IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
125
IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;
IIS-WebServerManagementTools;IIS-WebServerManagementTools;
IIS-ManagementConsole;IIS-ManagementScriptingTools;
IIS-ManagementService;IIS-IIS6ManagementCompatibility;
IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;
IIS-LegacySnapIn;IIS-FTPPublishingService;IIS-FTPServer;
IIS-FTPManagement;WAS-WindowsActivationService;WAS-ProcessModel;
WAS-NetFxEnvironment;WAS-ConfigurationAPI
Um mithilfe von ServerManagerCMD die IIS-Features für eine vollständige Serverinstallation zu
installieren, benutzen Sie im Fenster der Eingabeaufforderung den folgenden Befehl:
ServerManagerCMD.exe –install Web-Server –allSubFeatures
Tabelle 5.7 führt alle ServerManagerCMD-Updatenamen auf. Möchten Sie mit ServerManagerCMD
eine vollständige Installation durchführen, sollten Sie darauf achten, dass Sie dazu lediglich den
Parameter -a benötigen. Lesen Sie Tabelle 5.7, wenn Sie nur bestimmte Module installieren möchten.
Tabelle 5.7 Vollständige Liste der ServerManagerCMD-Updatenamen
Server-Manager
Updatename
Allgemeine HTTP-Features
Web-Common-Http
Statischer Inhalt
Web-Static-Content
Standarddokument
Web-Default-Doc
Verzeichnis durchsuchen
Web-Dir-Browsing
HTTP-Fehler
Web-Http-Errors
HTTP-Umleitung
Web-Http-Redirect
Anwendungsentwicklung
Web-App-Dev
ASP.NET
Web-Asp-Net
.NET-Erweiterbarkeit
Web-Net-Ext
ASP
Web-ASP
CGI
Web-CGI
ISAPI-Erweiterungen
Web-ISAPI-Ext
ISAPI-Filter
Web-ISAPI-Filter
Serverseitiges Include
Web-Includes
Systemzustand und Diagnose
Web-Health
HTTP-Protokollierung
Web-Http-Logging
Protokollierungstools
Web-Log-Libraries
Anforderungsüberwachung
Web-Request-Monitor
Ablaufverfolgung
Web-Http-Tracing
Benutzerdefinierte Protokollierung
Web-Custom-Logging
ODBC-Protokollierung
Web-ODBC-Logging
Sicherheit
Web-Security
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
126 Kapitel 5: Installieren von IIS 7.0
Tabelle 5.7 Vollständige Liste der ServerManagerCMD-Updatenamen (Fortsetzung)
Server-Manager
Updatename
Standardauthentifizierung
Web-Basic-Auth
Windows-Authentifizierung
Web-Windows-Auth
Digestauthentifizierung
Web-Digest-Auth
Authentifizierung über Clientzertifikatzuordnung
Web-Client-Auth
Authentifizierung über IIS-Clientzertifikatzuordnung
Web-Cert-Auth
URL-Autorisierung
Web-Url-Auth
Anforderungsfilterung
Web-Filtering
IP- und Domäneneinschränkungen
Web-IP-Security
Leistung
Web-Performance
Komprimierung statischer Inhalte
Web-Stat-Compression
Komprimierung dynamischer Inhalte
Web-Dyn-Compression
Verwaltungstools
Web-Mgmt-Tools
IIS-Verwaltungskonsole
Web-Mgmt-Console
IIS-Verwaltungsskripts und -tools
Web-Scripting-Tools
Verwaltungsdienst
Web-Mgmt-Service
Kompatibilität mit der IIS 6-Verwaltung
Web-Mgmt-Compat
Kompatibilität mit der IIS 6-Metabasis
Web-Metabase
Kompatibilität mit WMI für IIS 6
Web-WMI
IIS 6-Skripttools
Web-Lgcy-Scripting
IIS 6-Verwaltungskonsole
Web-Lgcy-Mgmt-Console
FTP-Publishingdienst
Web-Ftp-Publishing
FTP-Server
Web-Ftp-Server
FTP-Verwaltungskonsole
Web-Ftp-Mgmt-Console
Windows-Prozessaktivierungsdienst
WAS
Prozessmodell
WAS-Process-Model
.NET-Umgebung
WAS-NET-Environment
Konfigurations-APIs
WAS-Config-APIs
Server Core Web Edition-Schwerpunktserver
Mit Windows Server 2008 wurde Server Core eingeführt, ein vollständiges Befehlszeilen-ShellBetriebssystem.
Hinweis Eine gute Einleitung zum Thema IIS 7.0 Server Core ist unter http://www.iis.net/articles/view.aspx/IIS7/
Explore-IIS7/Getting-Started/IIS7-on-Server-Core verfügbar.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
127
Server Core bietet eine Installationsoption, die einen Server generiert, der eine Art Appliance darstellt.
Herkömmliche Benutzeroberflächenkomponenten wie der Microsoft Internet Explorer unter Windows
Media Player werden nicht installiert. Server Core Web Edition ist besonders dann für das IIS 7.0Hosting geeignet, wenn Sie mit klassischem ASP, statischen und auf PHP basierenden Inhalten, ISAPI
(Internet Server Application Programming Interface) oder mit anderen Webanwendungen arbeiten
möchten, die kein .NET erfordern. Server Core bietet keine ASP.NET- und .NET-Funktionalität. Doch
selbst ohne ASP.NET können Sie Server Core Web Edition für verschiedene Serverschwerpunkte
verwenden. Sie können Server Core beispielsweise benutzen, um Bilder bereitzustellen. Für diesen
Serverschwerpunkt sind nur zwei Module erforderlich: StaticFileModule und AnonymousAuthenticationModule. Das folgende Beispiel zeigt die Leistungsfähigkeit und Flexibilität der modularen IIS 7.0Architektur.
Installieren von IIS 7.0 unter Server Core Web Edition
Um IIS 7.0 unter Server Core Web Edition zu installieren, gehen Sie wie folgt vor:
1. Installieren Sie Server Core Web Edition und konfigurieren Sie die Server Core-Instanz mit einer
IP-Adresse. Sie müssen mit zwei Befehlen arbeiten, um eine IP-Adresse für Ihren Server zu konfigurieren. Geben Sie den folgenden Befehl an der Eingabeaufforderung ein:
netsh interface ipv4 show interfaces
Sie erhalten dann eine ähnliche Ausgabe wie die folgende:
Idx Met MTU Status
Name
--- --- ----- ----------- ------------------2 10 1500 connected
Local Area Connection
1 50 4294967295 connected
Loopback Pseudo-Interface
Geben Sie anschließend den folgenden Befehl an der Eingabeaufforderung ein (ersetzen Sie die
IP-Informationen durch die entsprechenden Werte Ihrer Umgebung):
netsh interface ipv4 set address name="2" source=static
address=192.168.0.10 mask=255.255.255.0 gateway=192.168.0.1
2. Um nun eine Standardinstallation von IIS 7.0 durchzuführen, lassen Sie an der Eingabeaufforderung den folgenden Befehl ausführen:
start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;
WAS-ProcessModel
3. Sichern Sie die aktuelle applicationHost.config-Datei, indem Sie an der Eingabeaufforderung den
folgenden Befehl eingeben:
%windir%\System32\Inetsrv\appcmd add backup “ContosoComConfig”
4. Öffnen Sie mit dem Windows-Editor die Datei %windir%\System32\Inetsrv\Config\ApplicationHost.config. Dazu nehmen Sie an der Eingabeaufforderung die folgende Eingabe vor:
Notepad %windir%\system32\inetsrv\config\applicationHost.config
5. Lokalisieren Sie den Abschnitt für die globalen Module und ändern Sie ihn wie folgt:
<globalModules>
<add name="StaticFileModule"
image="%windir%\system32\inetsrv\static.dll" />
<add name="AnonymousAuthenticationModule"
image="%windir%\system32\inetsrv\authanon.dll" />
<add name="HttpLoggingModule"
image="%windir%\system32\inetsrv\loghttp.dll" />
</globalModules>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
128 Kapitel 5: Installieren von IIS 7.0
6. Lokalisieren Sie in applicationHost.config den Abschnitt Modules und ändern Sie ihn wie folgt:
<modules>
<add name="StaticFileModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="true" />
<add name="HttpLoggingModule" lockItem="true" />
</modules>
7. Öffnen Sie auf einem Remotecomputer einen Browser und besuchen Sie http://<IPAdresseVonServerCore>/welcome.png.
Daraufhin sollte das Begrüßungsbild angezeigt werden.
Auf dem Server Core-Computer können Sie von einer Eingabeaufforderung aus verifizieren, dass
nur drei auf IIS 7.0 bezogene Module geladen sind. Lassen Sie dazu an der Eingabeaufforderung
den folgenden Befehl ausführen:
tasklist /m /fi "Imagename eq w3wp.exe"
Sie erhalten dann eine ähnliche Ausgabe wie die folgende:
Imagename
PID Module
========================= ======== ============================================
w3wp.exe
1108 ntdll.dll, kernel32.dll, ADVAPI32.dll,
RPCRT4.dll, msvcrt.dll, USER32.dll,
GDI32.dll, ole32.dll, IISUTIL.dll,
CRYPT32.dll, MSASN1.dll, USERENV.dll,
Secur32.dll, WS2_32.dll, NSI.dll,
IMM32.DLL, MSCTF.dll, LPK.DLL, USP10.dll,
NTMARTA.DLL, WLDAP32.dll, PSAPI.DLL,
SAMLIB.dll, w3wphost.dll, OLEAUT32.dll,
nativerd.dll, XmlLite.dll, IISRES.DLL,
rsaenh.dll, CLBCatQ.DLL, mlang.dll,
comctl32.dll, SHLWAPI.dll, iiscore.dll,
W3TP.dll, w3dt.dll, HTTPAPI.dll, slc.dll,
faultrep.dll, VERSION.dll, mswsock.dll,
DNSAPI.dll, NLAapi.dll, IPHLPAPI.DLL,
dhcpcsvc.DLL, WINNSI.DLL, dhcpcsvc6.DLL,
wshtcpip.dll, wship6.dll, static.dll,
authanon.dll, loghttp.dll
Beachten Sie, dass die letzten drei DLLs (Dynamic Link Library) static.dll, authanon.dll und loghttp.dll
sind. Die DLLs werden in derselben Reihenfolge geladen, in der sie in applicationHost.config aufgelistet
sind. Die anderen Module sind auf das Betriebssystem bezogen.
Dieses Beispiel zeigt einen leichten, aber flexiblen Server, der Bilder bereitstellen und Hits in den IISStandardprotokollen verzeichnen kann. Sie können Ihre gewohnten Programme zum Generieren von
Webberichten verwenden, um die bereitgestellten Bilder nachzuverfolgen.
Vorsicht Sichern Sie Ihre applicationHost.config-Datei, bevor Sie diese manuell bearbeiten. Wenn Sie dies tun,
können Sie Ihren Server in den ursprünglichen Zustand zurückversetzen, sobald sich Probleme ergeben. Das
Wiederherstellen Ihrer applicationHost.config-Datei sollte nicht zur Gewohnheit werden. Sie sollten den Wiederherstellungsbefehl nur dann geben, wenn Probleme auftreten oder Sie wie in diesem Beispiel den Server in den
ursprünglichen Zustand zurückversetzen möchten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
129
Durch die modulare Architektur von Windows Server 2008 ist es möglich, das Server-Setup anzupassen. Mit Ausnahme des zuvor präsentierten Server Core-Schwerpunktservers stellen die in diesem
Kapitel vorgestellten Beispiele übliche Schwerpunktszenarien dar, die Aufschluss darüber geben, wie
Sie IIS 7.0 an die Bedürfnisse Ihrer Anwendungen anpassen.
Hinweis Um weitere Informationen darüber zu erhalten, wie Sie IIS 7.0 bei einer Server Core-Installation von
Windows Server 2008 verwalten, besuchen Sie bitte http://blogs.iis.net/metegokt/archive/2007/06/26/administeringiis7-on-server-core-installations-of-windows-server-2008.aspx.
Möglichkeiten der Installation von IIS 7.0
Server-Manager, der Paketmanager (Pkgmgr.exe) und ServerManagerCMD sind drei grundlegende
Tools, die Sie für die Installation von IIS 7.0 verwenden können. Wenn Sie IIS 7.0 in einem Unternehmen einrichten, sollten Sie außerdem einige Alternativen kennen. Die folgenden Abschnitte enthalten wesentliche Hinweise und Tipps, die Sie berücksichtigen sollten, wenn Sie mit den verschiedenen Tools und Optionen für die IIS 7.0-Installation arbeiten.
Mit dem Server-Manager arbeiten
Bevor Sie IIS 7.0 installieren, sollten Sie sich der Tatsache bewusst sein, dass es Benutzerkonten mit
geringstmöglichen Rechten (Least-Privileged User Accounts, LUA) gibt. Das Ziel der Benutzerkontensteuerung von Windows besteht darin, das Gefahrenpotenzial und die Angriffsfläche zu verkleinern. Sie
verlangt, dass für alle Benutzer der Standardbenutzermodus verwendet wird. Wenn Sie sich nicht über
das integrierte Konto des lokalen Administrators angemeldet haben, können Sie, wie in Abbildung 5.1
dargestellt, gelegentlich mit Sicherheitswarnungen in Form von Dialogfeldern konfrontiert werden.
Abbildung 5.1 Windows-Sicherheit (Benutzerkontensteuerung)
Administratorrechte für den lokalen Benutzer
Stellen Sie sicher, dass Sie sich entweder über das integrierte Administratorkonto anmelden oder Ihre
Anwendungen unter Verwendung der Anmeldeinformationen für das integrierte Administratorkonto
starten. Dazu können Sie das Befehlszeilentool runas benutzen. Um beispielsweise den Windows-Editor
zu starten, können Sie den folgenden Befehl aufrufen:
runas /user:Administrator Notepad.exe
Sie werden dann aufgefordert, das Kennwort des Administratorkontos einzugeben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
130 Kapitel 5: Installieren von IIS 7.0
Hinweis Es ist nützlich, mit einer Eingabeaufforderung zu arbeiten, die bereits über erhöhte Rechte verfügt. Sie
können eine solche Shell mit dem folgenden Befehl starten:
runas /user:administrator cmd.exe
Jede Anwendung, die Sie aus dieser Eingabeaufforderung heraus starten, arbeitet ebenfalls mit den erhöhten
Rechten, so dass Sie das Befehlszeilentool runas nicht verwenden müssen.
IIS 7.0 mit dem Server-Manager installieren
Der Server-Manager stellt eine einzelne Konsole zur Verfügung, mit der Sie unter Windows Server
2008 alle administrativen Aufgaben lösen können. Wenn Sie sich zum ersten Mal an Windows Server
2008 anmelden, sollte der Server-Manager automatisch gestartet werden. Um den Server-Manager
manuell aus dem Startmenü heraus zu starten, klicken Sie auf Alle Programme, Verwaltung und dann
auf Server-Manager.
Führen Sie die folgenden Schritte aus, um die Webserverrolle (IIS) mithilfe des Server-Managers zu
installieren:
1. Starten Sie den Server-Manager.
2. Markieren Sie Rollen und klicken Sie auf Rollen hinzufügen.
3. Befolgen Sie die Anweisungen des Assistenten zum Hinzufügen von Rollen und wählen Sie die IISFeatures, die Sie installieren möchten.
Hinweis Der folgende Artikel leitet Sie durch die IIS 7.0-Installation mithilfe des Server-Managers: http://
www.iis.net/articles/view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Install-IIS7-on-Longhorn-Server?Page=2.
Den Paketmanager verwenden
Optionale Windows-Features können sowohl unter Windows Vista als auch unter Windows Server 2008
mit dem Paketmanager (pkgmgr) installiert werden. Der Paketmanager wird mithilfe der folgenden
Befehlszeilensyntax gesteuert:
start /w pkgmgr.exe /iu:update1:update2...
Hinweis Wenn Sie den Paketmanager ohne den ersten Parameter /w ausführen lassen, gibt der Befehl pkgmgr die
Steuerung sofort an Sie zurück, so dass Sie nicht wissen, wann die Installation abgeschlossen ist.
Die nachstehende Liste führt die gebräuchlichsten Befehle des Paketmanagers auf. Um eine vollständige Liste der verfügbaren Befehle zu erhalten, lassen Sie die folgende Anweisung ausführen:
Pkgmgr.exe /?
/iu:{update name}; Gibt die zu installierenden Updates über den jeweiligen Updatenamen an. Sie
können mehrere zu installierenden Updates festlegen, indem Sie diese durch Semikola voneinander
trennen.
/uu:{update name}; Gibt die zu deinstallierenden Updates an. Sie können mehrere zu deinstallierende Updates festlegen, indem Sie diese durch Semikola voneinander trennen. Es muss mindestens ein Update-Name angegeben werden.
/n:{unattend XML} Gibt eine XML-Datei an, die Informationen zu einer unbeaufsichtigten Installation enthält. (Weitere Informationen zur Durchführung einer unbeaufsichtigten Installation erhalten Sie später in diesem Kapitel im Abschnitt »Antwortdateien für unbeaufsichtigte Installationen«.)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
131
Hinweis Weitere Informationen über IIS.NET und den Paketmanager finden Sie unter http://www.iis.net//articles/
view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Install-IIS7-from-the-Command-Line.
ServerManagerCMD verwenden
Sie können ServerManagerCMD in Verbindung mit der Benutzeroberflächenversion des ServerManagers verwenden, um auf dem Server Rollen und Features abzufragen, zu installieren und zu
entfernen. ServerManagerCMD zeigt außerdem alle Rollen, Rollendienste und verfügbaren Features an
und es gibt Aufschluss darüber, welche dieser Komponenten auf dem Computer installiert sind. Sie
können an der Eingabeaufforderung den folgenden Befehl ausführen lassen:
ServerManagerCMD.exe -query
Abbildung 5.2 zeigt ein Beispiel für die resultierende Ausgabe.
Wollten Sie beispielsweise die Webserverrolle installieren, könnten Sie den folgenden Befehl verwenden:
ServerManagerCmd -install Web-Server
Sie können die Installationsaktionen außerdem in einem XML-Dokument wie dem folgenden vermerken (die xmlns-Zeichenfolge wurde aus Gründen der besseren Lesbarkeit in mehrere Zeilen
umbrochen):
<ServerManagerConfiguration Action="Install"
xmlns="http://schemas.microsoft.com/sdm/Windows/ServerManager
/Configuration/2007/1">
<Role Id="Web-Server"/>
</ServerManagerConfiguration>
Abbildung 5.2 Eine ServerManagerCMD-Abfrage der aktuellen Module
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
132 Kapitel 5: Installieren von IIS 7.0
Wäre der XML-Code in einer Datei namens WebServerInstall.xml gespeichert, könnten Sie im Fenster
der Eingabeaufforderung den folgenden whatIf-Parameter benutzen, um zu ermitteln, welche Komponenten gemäß der Eingabedatei installiert würden.
ServerManagerCmd.exe -inputPath WebServerInstall.xml –whatIf
Die resultierende Ausgabe ist in Abbildung 5.3 dargestellt.
Abbildung 5.3 ServerManagerCMD-Ausgabe bei Einsatz des Parameters -whatIf
Um die Webserverinstallation tatsächlich durchzuführen, lassen Sie den folgenden Befehl ausführen:
ServerManagerCmd –inputPath WebServerInstall.xml
Denken Sie daran, dass Sie mit der folgenden Abfrage arbeiten können, wenn Sie ermitteln möchten,
welche Rollen und Features installiert sind:
ServerManagerCmd -query
Um die Liste der installierten Rollen und Features in einer XML-Datei zu speichern, benutzen Sie den
folgenden Befehl:
ServerManagerCmd -query currentConfig.xml
Wenn Sie die Datei Currentconfig.xml betrachten, finden Sie alle Informationen, die Ihnen verraten,
welche Rollen und Features auf einem Server installiert werden.
Nachfolgend ist die vollständige Syntax von ServerManagerCMD aufgeführt:
-query [<query.xml>] [-logPath <log.txt>]
-install <name>
[-setting <setting name>=<setting value>]* [-allSubFeatures]
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath
<log.txt>]
-remove <name>
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath
<log.txt>]
-inputPath <answer.xml>
[-resultPath <result.xml> [-restart] | -whatIf] [-logPath
<log.txt>]
-help | -?
-version
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
133
Switch-Parameter:
-query [<query.xml>]
Zeigt eine Liste aller verfügbaren Rollen, Rollendienste und Features an,
und gibt Aufschluss darüber, welche dieser Komponenten auf dem Computer
installiert sind. (Kurzform: -q)
Wenn <query.xml> angegeben ist, werden die Informationen ebenfalls im
XML-Format in einer Datei namens query.xml gespeichert. -inputPath <answer.xml>
Installiert oder entfernt die Rollen, Rollendienste und Features, die
in einer XML-Antwortdatei angegeben sind. <answer.xml> steht für
den Pfad und Namen der Antwortdatei. (Kurzform: -ip)
-install <name>
Installiert auf dem Computer die Rolle, den Rollendienste oder das Feature,
das mit dem Parameter <name> angegeben wird. (Kurzform: -i)
-setting <setting name>=<setting value>
Wird mit dem Parameter -install verwendet, um die erforderlichen Einstellungen
für die Installation anzugeben. (Kurzform: -s)
-allSubFeatures
Wird mit dem Parameter -install verwendet, dem der Name der zu installierenden Rolle,
des Rollendienstes oder des Features übergeben wird. Alle untergeordneten Rollendienste
und Features werden ebenfalls installiert. (Kurzform: -a)
-remove <name>
Entfernt die Rolle, den Rollendienst oder das Feature von dem Computer, der mit
dem Parameter <name> angegeben wurde. (Kurzform: -r)
-resultPath <result.xml>
Speichert das Ergebnis der ServerManagerCmd.exe-Operation im XML-Format
in einer <result.xml>-Datei. (Kurzform: -rp)
-restart
Startet den Computer automatisch neu, sofern ein Neustart erforderlich ist, um
die Operation abzuschließen.
-whatIf
Zeigt an, welche Operationen in der Datei answer.xml angegeben sind und
auf dem aktuellen Computer ausgeführt werden sollen. (Kurzform: -w)
-logPath <log.txt>
Legt einen nicht der Vorgabe entsprechenden Speicherort für die Protokolldatei
fest. (Kurzform: -l)
-help
Zeigt Hilfeinformationen an. (Kurzform: -?)
-version
Zeigt die Version des gegenwärtig ausgeführten Server-Manager-Befehls,
Microsoft-Schutzmarkeninformationen und die Betriebssystemversion an.
(Kurzform: -v)
Beispiele:
ServerManagerCmd.exe -query
ServerManagerCmd.exe -install Web-Server -resultPath installResult.xml
ServerManagerCmd.exe -inputPath install.xml -whatIf
Antwortdateien für unbeaufsichtigte Installationen
Die unter Windows Server 2008 und IIS 7.0 verwendeten Antwortdateien für unbeaufsichtigte Installationen liegen nun im Gegensatz zu früheren Windows-Versionen im XML-Format vor. Eine Antwortdatei stellt ein einheitliches, wiederholbares Verfahren für die Installation von IIS 7.0 auf mehreren
Servern dar. Der Paketmanager und ServerManagerCMD können mit Antwortdateien arbeiten. Jedes
Tool verlangt ein etwas anderes Format, wenn es mit einer Antwortdatei arbeitet. Dieser Abschnitt
untersucht Beispielantwortdateien für beide Tools.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
134 Kapitel 5: Installieren von IIS 7.0
Der Paketmanager ist ein systemeigenes Tool von Windows Server 2008, das zum Installieren von IIS
7.0 zur Verfügung gestellt wird. Um ein wenig mit nicht beaufsichtigten Installationen zu experimentieren, benutzen Sie den Windows-Editor und erstellen die folgende Beispielantwortdatei, die Sie unter
Unattend.xml speichern.
Auf der Begleit-CD
Diese Antwortdatei befindet sich auch auf der diesem Buch beiliegenden CD.
Sie müssen die version- und processorArchitecture-Einstellungen für Ihre Umgebung ermitteln und im
folgenden Code die fett gedruckten Zeilen entsprechend ändern, bevor Sie mit dem Paketmanager eine
unbeaufsichtigte Installation durchführen können.
Hinweis Um die Versionsnummer abzurufen, öffnen Sie den Windows-Explorer, wechseln zu %windir%\
System32, klicken mit der rechten Maustaste auf Regedt32.exe und wählen Eigenschaften. Öffnen Sie die
Registerkarte Details, lokalisieren Sie die Eigenschaft Dateiversion (wie in Abbildung 5.4 dargestellt), und benutzen
Sie diesen Wert in Ihrer Unattend.xml-Datei für die Einstellung version. Um die Architekturinformationen abzurufen,
lassen Sie im Fenster der Eingabeaufforderung den Befehl Set ausführen und suchen nach der Variablen
processor_architecture.
Abbildung 5.4 Die Dateiversion ermitteln
<?xml version="1.0" ?>
<unattend xmlns="urn:schemas-microsoft-com:unattend"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<servicing>
<!-- Ein wählbares Update installieren, das sich in einem Paket befindet, das
wiederum im Windows Foundation-Namespace enthalten ist -->
<package action="configure">
<assemblyIdentity
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Planen der Installation
135
name="Microsoft-Windows-Foundation-Package"
version="6.0.XXXX.XXXXX"
language="neutral"
processorArchitecture="x86"
publicKeyToken="31bf3856ad364e35"
versionScope="nonSxS"
/>
<selection name="IIS-WebServerRole" state="true"/>
<selection name="WAS-WindowsActivationService" state="true"/>
<selection name="WAS-ProcessModel" state="true"/>
<selection name="WAS-NetFxEnvironment" state="true"/>
<selection name="WAS-ConfigurationAPI" state="true"/>
</package>
</servicing>
</unattend>
Um den Installationsvorgang zu starten, geben Sie an der Eingabeaufforderung den folgenden Befehl ein:
pkgmgr /n:unattend.xml
Sie können Ihre XML-Antwortdatei für die unbeaufsichtigte Installation in einem freigegebenen
Netzwerkordner speichern und den Paketmanager auf diese Datei verweisen. Die Arbeit mit nur einer
Installationsdatei vereinfacht die Verwaltung Ihrer Installationen.
ServerManagerCMD ist die Befehlszeilenversion des Server-Managers. Die Syntax der Antwortdatei
für unbeaufsichtigte Installationen unterscheidet sich ein wenig von der entsprechenden PaketmanagerSyntax. Mit Ausnahme der Server Core-Edition können Sie ServerManagerCMD für alle Versionen von
Windows Server 2008 verwenden.
Nachfolgend ist eine Beispieldatei aufgeführt, die Sie für ServerManagerCMD verwenden können. Das
Beispiel zeigt die Installation eines Webservers für statische Inhalte. Speichern Sie die folgenden Daten
auf Ihrem lokalen Datenträger in einer Datei namens Default.xml (auch hier wurde die xmlns-Zeichenfolge aus Gründen der besseren Lesbarkeit umbrochen).
Auf der Begleit-CD
Diese Datei befindet sich ebenfalls auf der dem Buch beiliegenden CD.
<ServerManagerConfiguration Action="Install"
xmlns="http://schemas.microsoft.com/sdm/Windows/ServerManager
/Configuration/2007/1">
<Role Id="Web-Server" />
</ServerManagerConfiguration>
Um diese Antwortdatei mit ServerManagerCMD zu benutzen, öffnen Sie die Eingabeaufforderung und
nehmen die folgende Eingabe vor:
ServerManagerCMD.exe –inputPath Default.xml
Hinweis Weitere Informationen zu ServerManagerCMD und verschiedenen Schwerpunktservern finden Sie unter
http://blogs.iis.net/metegokt/archive/2007/04/13/installing-iis-7-0-using-servermanagercmd-exe.aspx.
Sysprep/Neues Setupsystem
Sysprep wird seit Jahren verwendet, um Standardabbilddateien als Teil der Serverbereitstellung vorzubereiten. Windows Server 2008 und IIS 7.0 unterstützen Bereitstellungen, die auf Sysprep basieren.
Alternativ zu einer bei jeder Bereitstellung eines neuen Servers erfolgenden Durchführung einer unbeaufsichtigten Installation können Sie einen einzelnen Server aufbauen und darauf IIS 7.0 – Ihrer
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
136 Kapitel 5: Installieren von IIS 7.0
Umgebung entsprechend – installieren und konfigurieren. Wenn Sie mit Sysprep arbeiten, können Sie
ein Programm zur Erstellung von Abbildern verwenden, z.B. ImageX, das im WAIK (Windows Automated Installation Kit) enthalten ist. Danach benutzen Sie beispielsweise WDS (Windows Deployment
Services), um das Abbild auf den Servern in Ihrer Umgebung bereitzustellen.
Eine Einschränkung, die Sie kennen sollten, wenn Sie Sysprep für eine IIS 7.0-Installation verwenden,
ist, dass die Computerschlüsselwerte verschlüsselt und in der Datei applicationHost.config gespeichert
werden. Wenn das Abbild auf einen neuen Computer übertragen wird, müssen Sie die Computerschlüsselwerte als Teil des Postbuildvorgangs bei der ersten Anmeldung korrigieren. Die Art der ersten
Anmeldung kann abhängig davon variieren, welche Tools Sie benutzen, um Abbilder in Ihrer Umgebung bereitzustellen.
Automatische Installationen
Microsoft hat mit Windows Server 2003 Service Pack 2 (SP2) WDS (Windows Deployment Services)
eingeführt.
Windows Server 2008 enthält bereits WDS (Windows Deployment Services). Dabei handelt es sich um
den Nachfolger von RIS (Remote Installation Services). WDS verwendet PXE (Pre-Boot Execution
Environment), um ein Sysprep-Abbild oder eine Skriptinstallation bereitzustellen.
Unabhängig davon, für welches Tool Sie sich entscheiden, bieten Windows Server 2008 und IIS 7.0
verschiedene Optionen an, die Ihre Serverbereitstellungen vereinfachen.
Hinweis Weitere Informationen zu WDS finden Sie unter http://technet2.microsoft.com/WindowsVista/en/library/
9e197135-6711-4c20-bfad-fc80fc2151301033.mspx?mfr=true.
Weitere Informationen zur in Windows Server 2008 enthaltenen WDS-Rolle finden Sie unter http://technet2.
microsoft.com/windowsserver2008/en/library/b279dfef-892e-4b12-bb6b-c250cf8c95f41033.mspx?mfr=true.
Windows Server 2008-Setup für optionale Features
Die mit Windows Server 2008 eingeführten Hilfsmittel ersetzen die vorherigen Installationstools, wie
z.B. Sysocmgr.exe und Setup.exe. Eine allgemeine Installationsbasis bietet viele Vorteile. Windows
Server 2008 verfügt deshalb über eine aus verschiedenen Komponenten bestehende Installationsarchitektur.
Hinweis Weitere Informationen zur Installation optionaler Features finden Sie unter http://www.iis.net/articles/
view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Understanding-Setup-in-IIS7.
Direkt von der Quelle: Welche Features sollen in IIS 7.0 enthalten sein?
Während der Entwicklung von Windows Vista dachte das IIS-Team darüber nach, wie das neue
modulare Design von IIS 7.0 auf die neuen Installationstechnologien von Windows Vista abgestimmt
werden könnte. (Windows Vista und Windows Server 2008 gründen auf derselben Codebasis, so
dass viele Windows Server 2008-Technologien zuerst in Windows Vista zu finden waren.) Obwohl
natürlich viele spezifische Probleme gelöst werden mussten, entbrannte eine philosophische Debatte
darüber, was standardmäßig mit IIS 7.0 installiert werden sollte.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Nach der Installation
137
Wenn IIS 6.0 installiert wird, besitzt es viele Fähigkeiten, wie z.B. die Digestauthentifizierung, die
Komprimierung, die Standarddokumentbehandlung und andere Features, die als selbstverständlich
erachtet werden, weil sie immer präsent sind. Bei IIS 7.0 sind diese und andere Features einzelne
.dll-Dateien, die mithilfe der verschiedenen Installationstechnologien des Betriebssystems (ServerManager, ServerManagerCMD oder Paketmanager) installiert oder entfernt werden können. Die
Frage, die sich dem IIS-Team stellte, war, ob IIS 7.0 standardmäßig mit den Features installiert
werden sollte, die auch bei einer Standardinstallation von IIS 6.0 zum Einsatz kommen, oder ob –
weil die neue Architektur modular ist – eine kleine Untermenge der Features genügen würde.
Das Argument für eine IIS 6.0-Äquivalenz ist, dass die Kunden dies erwarten. Außerdem wurde
die Standardinstallation von IIS 6.0 immer als sicher erachtet. Das Argument für einen reduzierten
Featuresatz ist, dass das allgemein anerkannte Verfahren darin besteht, nur den benötigten Mindestsatz zu installieren und die Kunden explizit entscheiden zu lassen, ob weitere Features genutzt
werden sollen.
Letztendlich fiel die Entscheidung auf den Mindestfeaturesatz und ich glaube, dass dies die richtige
Entscheidung war. Wenn Sie sich dazu entschließen, ausschließlich die Webserverrolle (IIS) und
keine weiteren Optionen zu installieren, besitzt IIS 7.0 nur die Fähigkeit, statische, anonyme Inhalte
bereitzustellen. Sie müssen zusätzliche Features explizit auswählen.
Das Schöne ist, dass der Server-Manager und ServerManagerCMD die für die zugrunde liegenden
Pakete festgelegte Abhängigkeiten berücksichtigen, die die Installationskomponenten für die verschiedenen Subsysteme bestimmen. Wenn ein Kunde somit ASP.NET installieren möchte, muss er
nur diese Option auswählen und das Installationssystem installiert automatisch ISAPI und andere
Features, die notwendig sind, um das verlangte Feature zu unterstützen. Auf diese Weise kommt der
Kunde in den Genuss eines vorgefertigten sicheren Produkts, wobei das Hinzufügen von Funktionalität zum Server sehr einfach ist.
Brett Hill
Nach der Installation
Sobald die Installation abgeschlossen ist, besteht eine Ihrer ersten Aufgaben darin, die Dateien applicationHost.config, administration.config und redirection.config zu sichern. Diese befinden sich im
Ordner %windir%\System32\Inetsrv\Config. Sie können Kopien von diesen Dateien entweder manuell
oder wie folgt mit dem Backup-Befehl von Appcmd.exe anlegen:
// Eine Sicherung mit Appcmd durchführen
%windir%\system32\inetsrv\appcmd.exe add backup "MyBackup"
Diese Aktion kopiert wichtige Dateien in den Ordner %windir%\System32\Inetsrv\Backup\MyBackup.
Die Dateien administration.config, applicationHost.config, mbschema.xml, metabase.xml und
redirection.config werden an diesem Ort gespeichert.
Nachdem Sie Ihre Konfiguration gesichert haben, verschaffen Sie sich auf der Seite der Webserverrolle
(IIS) einen Überblick über den Status von IIS. Verwenden Sie die IIS-Manager-Konsole, um die von
Ihnen installierten IIS-Features zu konfigurieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
138 Kapitel 5: Installieren von IIS 7.0
Ordner und Inhalte
Benutzen Sie die folgende Aufzählung, um Ihre Installation zu überprüfen. Diese Schlüsseldateien und
-ordner speichern die wichtigen Inhalte und Binärdateien von IIS 7.0.
%windir%\system32\inetsrv Installationsstammordner für alle IIS-Prozesse
%windir%\system32\inetsrv\config Enthält alle IIS-Konfigurationsdateien, einschließlich
applicationHost.config, administration.config und redirection.config. Diese Konfigurationsdateien
speichern alle wichtigen, auf IIS bezogenen Konfigurationsinformationen und Daten.
%windir%\system32\inetsrv\config\schema Speichert alle XML-Schemadefinitionsdateien,
die von den Konfigurationsdateien verwendet werden
%SystemDrive%\inetpub Standardstammordner für IIS-Inhalte. Beachten Sie, dass empfohlen
wird, Websites auf einem anderen Laufwerk als %SystemDrive% abzulegen.
%SystemDrive%\inetpub\AdminScripts Enthält Skripts, die für die Verwaltung von IIS und
den damit verbundenen Diensten benötigt werden. Dieser Ordner wird standardmäßig nicht
installiert. Dieser Ordner wird nur dann installiert, wenn Kompatibilitätskomponenten installiert
werden.
%SystemDrive%\inetpub\custerr Speicherort für alle benutzerdefinierten IIS-Fehlerwebseiten.
Dies ist ein neuer Speicherort unter IIS 7.0.
%SystemDrive%\inetpub\history Enthält die Konfigurationssicherungen, die von den IIS 7.0Features für den Konfigurationsverlauf (ConfigHistory) automatisch angelegt wurden. Lesen Sie
das vierte Kapitel, »Verstehen des Konfigurationssystems«, um weitere Informationen zu erhalten.
%SystemDrive%\inetpub\ftproot FTP-Standardstammordner für den integrierten FTPPublishingdienst
%SystemDrive%\inetpub\logs\failedreqlogfiles Speicherort für alle Ereignisablaufverfolgungen für Anforderungsfehler. Dies ist ein neuer Speicherort unter IIS 7.0.
Hinweis Die Protokolle für den integrierten FTP-Publishingdienst und den SMTP-Dienst werden standardmäßig in
%windir%\System32\LogFiles gespeichert.
%SystemDrive%\inetpub\mailroot Stammordner für alle auf den SMTP-Dienst bezogenen
Prozesse. Wird standardmäßig nicht installiert.
%SystemDrive%\inetpub\temp Wird von ASP.NET und IIS verwendet, um kompilierte ASPVorlagen und temporär komprimierte IIS-Dateien zu speichern
%SystemDrive%\inetpub\wwwroot Stammordner für die Standardwebsite (Default Web Site).
Beachten Sie, dass empfohlen wird, Websites auf einem anderen Laufwerk als %SystemDrive%
abzulegen.
%windir%\IIS7.log Setupprotokolldateien zum Aufzeichnen der Installation
%windir%\system32\inetsrv\config\applicationHost.config Von IIS verwendete Kernkonfigurationsdatei. Dies ist die Hauptdatei, die die Metabasis von früheren IIS-Versionen ersetzt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Nach der Installation
139
Registrierung
Die IIS 7.0-Installation zeichnet auch im folgenden Registrierungsschlüssel Informationen darüber auf,
was installiert wurde:
HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\.
Dieser Registrierungsschlüssel führt nur die Elemente auf, die gegenwärtig installiert sind. Module, die
noch nicht installiert oder die deinstalliert wurden, werden nicht aufgelistet.
Hinweis Weitere Informationen zu diesem Thema und eine Referenztabelle, die jeden Registrierungsschlüsselwert aufführt, finden Sie unter http://www.iis.net/articles/view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Discover-Installed-Components.
Dienste
Tabelle 5.8 ist eine Liste der Systemdienste, die während der Installation einer Webserverrolle installiert
werden, wenn alle Rollendienst ausgewählt sind.
Tabelle 5.8 Liste der Systemdienste, die mit der Webserverrolle installiert werden
Dienstname
Beschreibung
ASP.NET-Statusdienst
Unterstützt die prozessexterne ASP.NET-Sitzungszustandsverwaltung. Wenn dieser Dienst beendet wird, werden keine Out-of-Process-Anforderungen verarbeitet.
IIS-Verwaltungsdienst
Ermöglicht diesem Server die Verwaltung von FTP-Metabasisdiensten. Wenn dieser Dienst beendet wird, kann der Server weder die Metabasis- noch FTP-Sites
ausführen.
Webverwaltungsdienst
Bietet Remote- und delegierte Verwaltungsfunktionen für Administratoren zur Verwaltung des Webservers, der Websites und der Anwendungen auf dem Computer
Windows-Prozessaktivierungsdienst (WAS)
Bietet Dienste zur Prozessaktivierung, Ressourcenverwaltung und Zustandsverwaltung von Anwendungen, die eine Aktivierung durch Nachrichten unterstützen
WWW-Publishingdienst
Stellt die Webkonnektivität und die Webverwaltung mithilfe des IIS-Managers zur
Verfügung
FTP-Publishingdienst (integriert)
Ermöglicht es dem aktuellen Server, als FTP-Server (File Transfer Protocol) zu
fungieren
Überprüfung
Um die Webserverrolle (IIS) zu überprüfen, können Sie den Server-Manager öffnen und die Serverrolle
Webserver (IIS) auswählen. Daraufhin wird eine zentrale Konsole zur Verfügung gestellt, mit der es
möglich ist, Ereignisprotokolle, auf IIS bezogene Dienste und andere verwandte Dienste einzusehen.
Sie können die IIS-Manager-Konsole auch direkt aus der Programmgruppe Verwaltung heraus öffnen
(der Eintrag heißt Internetinformationsdienste-Manager). Eines der in der IIS-Manager-Konsole enthaltenen Features, das Sie verwenden können, um Ihre Installation überprüfen, ist Module. Führen Sie
einen Doppelklick auf Module aus, um zu ermitteln, ob die richtigen Module installiert sind.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
140 Kapitel 5: Installieren von IIS 7.0
Webbenutzeroberfläche
IIS 7.0 verwendet einen vollständig neuen IIS-Manager. Diese Anwendung nutzt nur eine Benutzeroberfläche, um alle IIS 7.0-Website- und ASP.NET-Einstellungen zu verwalten. Windows Server 2008
stellt außerdem den Internetinformationsdienste 6.0-Manager zur Verfügung, mit dem die integrierten
Dienste FTP-Publishing und SMTP verwaltet werden können. Kapitel 6, »Verwenden von IISManager«, hält weiterführende Informationen zur Arbeit mit dem IIS-Manager bereit.
Benutzer und Gruppen unter Windows Server 2008
Für IIS 7.0 wurden Windows Server 2008 neue Konten und Gruppen hinzugefügt. Das Konto IUSR
ersetzt das Konto IUSR_MachineName. Dies ist die Standardidentität, die verwendet wird, wenn die
anonyme Authentifizierung aktiviert ist. Das Konto IUSR_MachineName wird auch weiterhin generiert
und verwendet, aber nur dann, wenn der FTP-Server installiert ist. Falls FTP nicht installiert ist, wird
das Konto nicht erzeugt.
Die Gruppe IIS_IUSRS ersetzt die Gruppe IIS_WPG. Die integrierte IIS_IUSRS-Gruppe darf auf alle
erforderlichen Datei- und Systemressourcen zugreifen, so dass ein Konto als Anwendungspoolidentität
agieren kann, wenn es dieser Gruppe hinzugefügt wird.
Sowohl das Konto IUSR als auch die Gruppe IIS_IUSRS sind in Windows Server 2008 integriert. Das
IUSR-Konto ist ein eingeschränktes Konto und erfordert deshalb kein Kennwort. Dies ermöglicht es
Ihnen, xcopy.exe /o zu benutzen, um Dateien zusammen mit den entsprechenden Besitzer- und ACLInformationen (Access Control List) problemlos auf andere Computer zu kopieren. (Beachten Sie, dass
diese Benutzerkonten nicht lokalisiert sind. Unabhängig von der Sprache, die Sie für Ihre WindowsInstallation verwendet haben, heißt das IIS-Konto immer IUSR, und der Gruppenname lautet immer
IIS_IUSRS.) Das IUSR-Konto ist vom selben Kontotyp wie die Konten NETZWERKDIENST und
LOKALER DIENST. Es hat auf allen Computern dieselbe SID (Security Identifier).
Behandlung von Installationsproblemen
Der neue deklarative XML-Installationsprozess stellt umfassende und detaillierte Protokollinformationen zur Verfügung. Dies kann hilfreich sein, wenn Sie feststellen möchten, ob die Installation
erfolgreich war. Sie können auf verschiedene Bereiche zurückgreifen, um den erfolgreichen Abschluss
der Installation überprüfen. Sie können mit den herkömmlichen Windows-Ereignisprotokollen, der
Datei IIS7.log und der ServerManagerCMD-Protokolldatei arbeiten. Die zuletzt genannte Datei wird
erzeugt, wenn Sie den entsprechenden ServerManagerCMD-Parameter angeben (lesen Sie dazu auch
später in diesem Kapitel den Abschnitt »Andere Protokollierungsoptionen«).
Ereignisprotokolle
Sie können die integrierten Ereignisprotokolle Anwendung, Sicherheit und System benutzen, um
Probleme zu analysieren und zu ermitteln, ob Ihre Installation erfolgreich war. Dies sind wichtige
Informationsquellen, die vom Betriebssystem gepflegt werden. Die Ereignisprotokolle katalogisieren
alle Ereignisse. Dazu zählen auch Fehler, die während einer fehlgeschlagenen Installation aufgetreten
sind. Auf diese Weise können Sie spezifische Fehler nachverfolgen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Behandlung von Installationsproblemen
141
IIS 7.0-Protokoll
Die neue auf verschiedenen Komponenten basierende Installation bietet eine umfassende und detaillierte Protokollierung von Informationen, die Ihnen bei der Behandlung von Installationsproblemen
helfen. Die meisten Fehler werden durch Benutzer verursacht, die nicht als Administratoren angemeldet
sind oder über keine administrativen Rechte verfügen. IIS bietet ein detailliertes Protokoll an, das sich
in der Datei %windir%\IIS7.log befindet. Dieses Protokoll enthält einfach zu lesende und beschreibende Texte zur Installation jeder einzelnen Komponente. Sie können diese Informationen benutzen,
um Probleme zu behandeln, die sich auf Ihre gesamte IIS-Installation oder auf die Installation einer
bestimmten Komponente beziehen. Nachfolgend ist ein Beispiel für das IIS-Protokoll aufgeführt:
[05/09/2007 00:43:31] [ ***** IIS 7.0 Component Based Setup ***** ]
[05/09/2007 00:43:31] "C:\Windows\System32\inetsrv\iissetup.exe"
/install SharedLibraries
[05/09/2007 00:43:31] Created NetFrameworkConfigurationKey
[05/09/2007 00:43:32] Set ACLs on NetFrameworkConfigurationKey
[05/09/2007 00:43:32] Created iisWasKey
[05/09/2007 00:43:32] Created iisWasKey user key
[05/09/2007 00:43:32] Created iisConfigurationKey
[05/09/2007 00:43:33] Created iisConfigurationKey user key
[05/09/2007 00:43:33] Set ACLs on iisConfigurationKey
[05/09/2007 00:43:33] iisConfigurationKey already exists
[05/09/2007 00:43:33] Created AesProvider
[05/09/2007 00:43:33] Created IISWASOnlyAesProvider
[05/09/2007 00:43:33] Install of component SharedLibraries succeeded!
[05/09/2007 00:43:33] Success!
[05/09/2007 00:43:33] [ End of IIS 7.0 Component Based Setup ]
Immer dann, wenn Sie Installationsprobleme behandeln müssen, ist IIS7.log die erste Anlaufstelle, um
nach Fehlern zu suchen.
Andere Protokollierungsoptionen
ServerManagerCMD bietet umfassende Protokollierungsmöglichkeiten. Dieser Abschnitt beschreibt, wie
die Protokollierung durchgeführt wird, wenn Sie mit ServerManagerCMD arbeiten.
Und die aus Ihrer Installation resultierende Ausgabe zu erfassen, verwenden Sie den folgenden Befehl:
ServerManagerCMD.exe –install Web-Server –resultPath InstallResults.xml
–logPath InstallResults.txt
Um die aus einer Deinstallation resultierende Ausgabe zu erfassen, benutzen Sie den folgenden Befehl:
ServerManagerCMD.exe –remove Web-Server –resultPath UnInstallResults.xml
–logPath UnInstallResults.txt
Jedes dieser Ergebnisprotokolle enthält detaillierte Informationen, die Ihnen helfen können, Probleme
zu beheben oder den Installationsstatus zu ermitteln. Sie können einen Texteditor wie zum Beispiel den
Windows-Editor benutzen, um die Ergebnisse zu betrachten. Wenn Sie mit einem Fehler konfrontiert
wurden, können Sie diesen lokalisieren, indem Sie mit der Suchfunktion Ihres Texteditors arbeiten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
142 Kapitel 5: Installieren von IIS 7.0
Der Paketmanager (pkgmgr.exe) bietet ebenfalls die Möglichkeit der Protokollierung. Er hilft Ihnen auf
diese Weise, Probleme zu beheben, die während der Bereitstellung aufgetreten sind. Die Position des
Protokollierungsordners und der Protokollierungsdatei ist %windir%\Logs\CBS\CBS.log. Nachfolgend
ist ein Auszug zu sehen, der das Protokoll zu einem ausgeführten Befehl zeigt. Dabei handelt es sich um
den Befehl, der zum Installieren der Webserverstandardrolle verwendet wird:
2007-11-20 05:27:44, Info
CBS
Pkgmgr: aufgerufen mit:
"pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServer;IISommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IISirectoryBrowsing;IIS-HttpErrors;IIS-HealthAndDiagnostics;IISttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IISequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;
IS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WASetFxEnvironment;WAS-ConfigurationAPI"
2007-11-20 05:27:44, Info
CSI
0000001@2007/11/20:13:27:44.373 WcpInitialize (wcp.dll version 0.0.0.5)
aufgerufen (stack @0x700e7ee9 @0xca1672 @0xc9b8fa @0xc9c378 @0x77cb1cc2
@0x77d88785)
IIS 7.0 entfernen
Der Server-Manager, ServerManagerCMD und der Paketmanager ermöglichen nicht nur eine einfache
Installation von IIS 7.0, sie bieten auch effiziente und einfache Möglichkeiten, um bestimmte Features
oder die gesamte Serverrolle Webserver (IIS) zu entfernen.
Die Benutzeroberfläche unter Windows Server 2008 und Windows Vista
Um IIS oder die Webserverrolle mit dem Server-Manager zu deinstallieren, gehen Sie wie folgt vor:
1. Starten Sie den Server-Manager, indem Sie im Startmenü auf Alle Programme, Verwaltung und
dann auf Server-Manager klicken. Das Fenster des Server-Managers wird daraufhin angezeigt.
2. Markieren Sie im Server-Manager den Eintrag Rollen.
3. Das Fenster Rollenübersicht wird wie in Abbildung 5.5 dargestellt angezeigt.
4. Klicken Sie auf den Link Rollen entfernen, um den Assistenten zum Entfernen von Rollen zu öffnen.
5. Klicken Sie auf Weiter, um die Seite Serverrollen entfernen anzeigen zu lassen.
6. Deaktivieren Sie, wie in Abbildung 5.6 dargestellt, das Kontrollkästchen vor Webserver (IIS), um
die Webserverrolle zu deinstallieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0 entfernen
143
Abbildung 5.5 Die Rollenübersicht des Server-Managers
Abbildung 5.6 Deaktivieren Sie das Kontrollkästchen vor Webserver (IIS), um die
Webserverrolle zu deinstallieren
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
144 Kapitel 5: Installieren von IIS 7.0
7. Klicken Sie auf Weiter, um die Seite Entfernungsauswahl bestätigen anzeigen zu lassen, wie in
Abbildung 5.7 dargestellt.
Abbildung 5.7 Die Bestätigungsseite des Assistenten zum Entfernen von Rollen
8. Klicken Sie auf Entfernen.
9. Klicken Sie auf Schließen, um zum Server-Manager zurückzukehren. Abhängig von den deinstallierten Rollen werden Sie möglicherweise dazu aufgefordert, den Computer neu zu starten. Wenn
Sie zum Server-Manager zurückkehren, wird die Webserverrolle entfernt worden sein.
Die Befehlszeilenmethode
Sie können entweder den Paketmanager oder ServerManagerCMD benutzen, um die Webserverrolle zu
deinstallieren.
Den Paketmanager verwenden
Dieser Abschnitt zeigt, wie Sie den Paketmanager benutzen, um IIS zu deinstallieren. Dieses Beispiel
setzt voraus, dass zuvor alle Komponenten installiert wurden. Hier ist die verwendete Syntax:
start /w pkgmgr.exe /uu:{<update name>}
Der Parameter /uu:{<update name>} gibt die zu deinstallierenden Updates an. Sie können mehrere Updates
auflisten, indem Sie diese durch Semikola voneinander trennen. Mindestens ein Updatename muss
angegeben werden.
Hinweis /uu zeigt eine Deinstallation an. Hinter dem Parameter müssen die gewünschten Updatenamen angegeben werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Zusammenfassung
145
Der folgende Paketmanagerbefehl deinstalliert alle Komponenten, die sich auf die Serverrolle Webserver (IIS) beziehen:
start /w pkgmgr.exe /uu:IIS-WebServerRole;IIS-WebServer;
IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;
IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;
IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;
IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;
IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;
IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;
IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;
IIS-BasicAuthentication;IIS-WindowsAuthentication;
IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;
IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;
IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;
IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;
IIS-WebServerManagementTools;IIS-ManagementConsole;
IIS-ManagementScriptingTools;IIS-ManagementService;
IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;
IIS-LegacyScripts;IIS-LegacySnapIn;IIS-FTPPublishingService;
IIS-FTPServer;IIS-FTPManagement;WAS-WindowsActivationService;
WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI
ServerManagerCMD verwenden
Sie können ebenfalls ServerManagerCMD benutzen, um die Webserverrolle zu deinstallieren. Verwenden Sie für die Deinstallation die folgende Syntax:
ServerManagerCMD.exe –remove Web-Server
Um eine detaillierte Protokollierung der Deinstallation zu erhalten, können Sie, wie im folgenden
Beispiel gezeigt, die Ergebnisse und die Befehlszeilensyntax in eine Protokolldatei namens
ServerManagerCMD_Uninstall.txt leiten:
ServerManagerCMD.exe –remove Web-Server –resultPath results.xml
–logPath ServerManagerCMD_Uninstall.txt
Zusammenfassung
Wir haben die verschiedenen Möglichkeiten behandelt, die Ihnen zur Verfügung stehen, um die
Webserverrolle, bestimmte Rollendienste und IIS 7.0-Features zu installieren. Windows Server 2008
bietet unterschiedliche Verfahren für die Installation, Konfiguration und Deinstallation von IIS 7.0 an.
Die zusätzlichen Protokollierungsfeatures helfen Ihnen, Installationsprobleme zu beheben. Die Informationen in diesem Kapitel sollen dazu beitragen, die Installation von IIS 7.0 zu vereinfachen und die
Konfiguration zu beschleunigen. Verglichen mit einem Plätzchenteig geben Ihnen diese Informationen
verschiedene Ausstechformen an die Hand, die Sie benutzen können, um IIS 7.0 wie einen Teig in
Ihrem Unternehmen auszurollen und an den erforderlichen Stellen den jeweiligen Wünschen
entsprechend zu formen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
146 Kapitel 5: Installieren von IIS 7.0
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Navigieren Sie im TechCENTER unter IIS.net (http://www.iis.net/default.aspx?CategoryID=
13&tabid=2) zu Setup and Migration.
Besuchen Sie die IIS7-Setup and Migration-Foren unter http://forums.iis.net/1047.aspx.
Weitere Informationen zum FastCGI-Modul für IIS finden Sie in Bill Staples Blog unter http://
blogs.iis.net/bills/archive/2006/10/31/PHP-on-IIS.aspx.
Eine gute Einleitung zum Thema IIS 7.0 Server Core ist unter http://www.iis.net/articles/view.aspx/
IIS7/Explore-IIS7/Getting-Started/IIS7-on-Server-Core verfügbar.
Um weitere Informationen zur Verwaltung von IIS 7.0-Installationen unter Windows Server 2008
Server Core zu erhalten, lesen Sie http://blogs.iis.net/metegokt/archive/2007/06/26/administeringiis7-on-server-core-installations-of-windows-server-2008.aspx.
Der folgende Artikel leitet Sie durch eine IIS-Installation mit dem Server-Manager: http://
www.iis.net/articles/view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Install-IIS7-onLonghorn-Server?Page=2.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
147
T E I L
I I I
Verwaltung
In diesem Teil:
Verwenden von IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwenden von Befehlszeilentools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten von Websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten von Anwendungen und Anwendungspools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hosting von Anwendungsentwicklungsframeworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verwalten von Webservermodulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfigurations- und Benutzeroberflächenerweiterungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementieren von Sicherheitsstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
183
221
249
279
309
349
401
427
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
149
K A P I T E L
6
Verwenden von IIS-Manager
Inhalt dieses Kapitels:
Übersicht über den IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den IIS-Manager starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Benutzeroberfläche des IIS-Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Features verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anpassung und Erweiterbarkeit des IIS 7.0-Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
152
153
171
177
180
181
182
Der IIS-Manager ist ein Verwaltungstool für IIS 7.0 (Internet Information Services), das über eine
grafische Benutzeroberfläche verfügt. Er stellt eine sich intuitiv erschließende, feature- und aufgabenorientierte Verwaltungskonsole für die Arbeit mit IIS 7.0- und ASP.NET-Einstellungen zur Verfügung.
Die Benutzeroberfläche ist sehr spezifisch und ermöglicht es Ihnen, aus nur einer Konsole heraus IIS
7.0-Server und ASP.NET-Anwendungen zu konfigurieren. Mit dem IIS-Manager können Sie die
delegierte Verwaltung einrichten, damit Anwendungsbesitzer ihre Anwendungen remote verwalten
können, wozu keine administrativen Rechte für den Zugriff auf den Server erforderlich sind. Der IISManager ist hochgradig anpassbar und stellt eine Erweiterbarkeitsplattform zur Verfügung, die Sie
verwenden können, um Ihre eigenen Features für die Verwaltung von benutzerdefinierten Einstellungen
und Anwendungen einzubringen.
In diesem Kapitel konzentrieren wir uns auf die Benutzeroberfläche des IIS-Managers, erörtern die
Feature- und Konfigurationszuordnung und sprechen über das Anpassen und die Erweiterbarkeit des
IIS-Managers. Wir werden außerdem einen Blick darauf werfen, wie der IIS-Manager für die
Remoteverwaltung konfiguriert wird.
Hinweis Eine ausführliche Erläuterung der Remoteverwaltung finden Sie im achten Kapitel, »Remoteverwaltung«.
Wie Sie den IIS-Manager benutzen, um gebräuchliche Verwaltungsaufgaben zu lösen, lesen Sie im Anhang J,
»Durchführen von Administrationsaufgaben im Internetinformationsdienste-Manager«.
Übersicht über den IIS-Manager
Der IIS-Manager ist ein Serververwaltungstool, das es Ihnen ermöglicht, mit nur einer Benutzeroberfläche IIS 7.0- und ASP.NET-Features zu konfigurieren. Sie können Systemzustands- und Diagnoseinformationen einsehen und den Serverbetrieb einschließlich aller gegenwärtig ausgeführten Anforde-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
150 Kapitel 6: Verwenden von IIS-Manager
rungen überwachen. Darüber hinaus können Sie die Mitgliedschaft verwalten. Mit seiner aufgabenorientierten, sich intuitiv erschließenden Benutzeroberfläche zielt das Tool darauf ab, Verwaltungsaufgaben zu vereinfachen und die mit der Verwaltung einhergehende Komplexität zu verringern.
Verglichen mit der Verwaltungskonsole früherer IIS-Versionen ist der IIS 7.0-Manager sehr viel
einfacher zu bedienen. Bei früheren IIS-Versionen war die Serververwaltungskonsole in Form eines
MMC-Snap-Ins (Microsoft Management Console) mit der Bezeichnung Inetmgr.exe implementiert.
Die Benutzeroberfläche des MMC-Snap-Ins bestand aus Registerkarten mit Konfigurationseinstellungen. IIS 7.0 arbeitet mit sehr viel mehr Einstellungen, und eine größere Anzahl von Einstellungen
hätte in der alten Verwaltungskonsole dazu geführt, dass zusätzliche Registerkarten erforderlich
gewesen wären. Viele Registerkarten erschweren jedoch das Auffinden einer Einstellung und die
Durchführung von Verwaltungsaufgaben.
Für IIS 7.0 wurde das Serververwaltungstool von Grund auf neu entworfen und entwickelt. Die IIS 7.0Verwaltungskonsole ist kein MMC-Snap-In, sondern eine benutzerfreundliche Windows FormsAnwendung, die eine einfach zu bedienende, feature- und aufgabenorientierte Benutzeroberfläche für
IIS- und ASP.NET-Features zur Verfügung stellt. Wie bei den vorherigen IIS-Versionen heißt auch die
IIS 7.0-Manager-Anwendung Inetmgr.exe. Und auch sie befindet sich im Ordner %SystemRoot%\System32\Inetsrv. Aber lassen Sie sich nicht täuschen. Trotz desselben Namens und Speicherorts handelt es
sich um einen vollständig anderen IIS-Manager!
Eine der wichtigsten Fähigkeiten des IIS-Managers ist die delegierte Verwaltung. Mithilfe der delegierten Verwaltung bietet der IIS-Manager den Anwendungsbesitzern die Möglichkeit, ihre Anwendungen remote zu verwalten, ohne über administrative Rechte für den Zugriff auf den Server verfügen
zu müssen. Benutzer von gehosteten Diensten können diese Möglichkeit nutzen, um den IIS-Manager
auf ihren Desktops ausführen zu lassen und ihre Sites und Anwendungen remote auf dem Server zu verwalten, der diese Sites und Anwendungen hostet. Eine sichere Delegierung administrativer Verantwortlichkeiten kann dazu beitragen, dass ein Serveradministrator viel Zeit spart und dass Webverwaltungsengpässe seltener werden. Der Serveradministrator hat natürlich die volle Kontrolle darüber, welche
Features an Site- und Anwendungsbesitzer delegiert werden.
Der IIS-Manager ermöglicht die Remoteverwaltung über HTTPS-Verbindungen, die Firewalls
passieren können. Dabei werden für die Authentifizierung sowohl auf Windows basierende als auch
andere Anmeldeinformationen unterstützt. Zusätzlich zu den Windows-Anmeldeinformationen kann
der IIS-Manager alternative Anmeldeinformationsspeicher nutzen, um Benutzer zu identifizieren. IISManager-Anmeldeinformationen sind besonders dann nützlich, wenn Sie nicht für alle Remotebenutzer
Windows-Konten erstellen möchten, oder wenn die Anmeldeinformationen bereits in einem nicht von
Windows genutzten Authentifizierungssystem gespeichert sind und Sie nur diesen einen Speicher
verwenden möchten.
Um eine Verbindung zum Server herzustellen, verwendet der IIS-Manager HTTPS. Mit diesem Protokoll wird eine Verbindung zu WMSvc (Web Management Service, Webverwaltungsdienst) hergestellt.
WMSvc ist ein Windows-Dienst, der die Möglichkeit bietet, IIS 7.0-Sites und -Anwendungen mit Hilfe
des IIS-Managers remote zu verwalten. WMSvc überwacht standardmäßig alle nicht zugewiesenen IPAdressen in Verbindung mit Port 8172 daraufhin, ob Anforderungen eingehen. Sie können jedoch bei
Bedarf einen anderen Port und eine IP-Adresse konfigurieren. Nachdem die Verbindung eingerichtet
wurde, sendet der IIS-Manager bei entsprechenden, innerhalb der Benutzeroberfläche stattfindenden
Benutzeraktionen Verwaltungsdienstanforderungen, z.B. die Anforderungen, eine Konfigurationseinstellung in einer web.config-Datei zu ändern. Wenn der Webverwaltungsdienst vom IIS-Manager
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Übersicht über den IIS-Manager
151
eine Anforderung erhält, führt er die angeforderte Aktion aus und gibt eine Antwort zurück. Alle
Interaktionen zwischen dem IIS-Manager auf dem Remotecomputer und WMSvc auf dem
Servercomputer erfolgen über HTTPS. Diese Architektur ist in Abbildung 6.1 dargestellt.
Abbildung 6.1 Der IIS-Manager und der Webverwaltungsdienst
Die meisten Anforderungen, die der IIS-Manager an den Webverwaltungsdienst richtet, beziehen sich
darauf, Informationen aus der Konfigurationsdateihierarchie des Servers zu lesen oder in diese Dateien
zu schreiben. Dazu zählen die applicationHost.config-Datei, die web.config-Stammdatei des .NET
Frameworks und die web.config-Dateien der Sites, Anwendungen und Verzeichnisse. Andere IISManager-Anforderungen verlangen das Lesen des Laufzeitstatus und die Arbeit mit Anbietern auf dem
Server.
Darüber hinaus ist der IIS-Manager erweiterbar. Er besitzt eine eigene Konfigurationsdatei, administration.config, die das Hinzufügen von benutzerdefinierter Funktionalität ermöglicht. Alle hinzugefügten Verwaltungs-Plug-Ins werden in den IIS-Manager integriert und zusammen mit den IIS- und
ASP.NET-Features aufgelistet. Aus dieser Perspektive betrachtet ist der IIS-Manager nicht bloß eine
Anwendung, sondern vielmehr eine erweiterbare Plattform, die von den Entwicklern genutzt werden
kann, um eigene Features zur Verwaltung benutzerdefinierter Einstellungen einzubringen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
152 Kapitel 6: Verwenden von IIS-Manager
Den IIS-Manager starten
Sie können den IIS-Manager aus der Programmgruppe Verwaltung heraus starten oder Sie lassen von
der Befehlszeile oder dem Windows-Explorer aus %SystemRoot%\System32\Inetsrv\Inetmgr.exe ausführen. Die Startseite des IIS-Managers ist in Abbildung 6.2 dargestellt.
Abbildung 6.2 Die Startseite des IIS-Managers
Hinweis Um auf dem Servercomputer den IIS-Manager mit administrativen Rechten ausführen zu lassen, sollten
Sie sich nicht als Administrator anmelden, sondern in einem nicht administrativen Benutzerkontext den Befehl runas
benutzen, z.B. runas /user:<AdministratorAccount> "%SystemRoot%\system32\inetsrv\inetmgr.exe".
Die Startseite ermöglicht es Ihnen, eine der zuletzt genutzten Verbindungen zu öffnen, indem Sie in
der Liste Letzte Verbindungen einen Doppelklick darauf ausführen. Sie können neue Verbindungen
erstellen, indem Sie in der Liste unter Verbindungsaufgaben die gewünschte Aufgabe anklicken. Sie
müssen möglicherweise Kontoanmeldeinformationen angeben, um eine neue Verbindung erstellen zu
können.
Die Startseite enthält außerdem Links zu IIS-Onlineressourcen und sie ermöglicht es Ihnen, aktuelle
Online-News abzurufen. Die Newsanzeige ist standardmäßig deaktiviert. Um News zu aktivieren,
klicken Sie rechts oben im Bereich IIS-News auf IIS News aktivieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
153
Die Benutzeroberfläche des IIS-Managers
Der IIS-Manager wurde für IIS 7.0 vollständig überarbeitet. Das Look and Feel unterscheidet sich
von früheren IIS-Versionen. Die IIS-Manager-Navigation erinnert mehr an einen Browser mit einer
Adressleiste, ähnlich dem Windows-Explorer. Wenn Sie einen Server, eine Site oder eine Anwendung
auswählen, gleicht die entsprechende, im Hauptbereich dargestellte Featureliste der Systemsteuerung.
Wenngleich einige Benutzeroberflächenelemente denen vorheriger IIS-Versionen entsprechen, hat sich
die Oberfläche größtenteils verändert. Abbildung 6.3 zeigt das typische Erscheinungsbild des IISManagers, wenn im Hauptbereich die Serverfeatures angezeigt werden.
Abbildung 6.3 IIS-Manager: Startseite des Servers
Das IIS-Manager-Fenster ist in verschiedene Abschnitte unterteilt. Im oberen Bereich des IIS-ManagerFensters gibt es zwei Leisten:
Die Navigationsleiste, die Schaltflächen und eine Adressleiste für die einfache Navigation
innerhalb der Benutzeroberfläche zur Verfügung stellt
Die Menüleiste, die drei Menüs bereithält: Datei, Ansicht und Hilfe (?)
Der Hauptteil des IIS-Manager-Fensters ist in drei Bereiche unterteilt:
Der Bereich Verbindungen einschließlich der darin enthaltenen Symbolleiste ermöglicht es Ihnen,
eine Verbindung zu Servern, Sites und Anwendungen herzustellen. Die Verbindungen werden in
einer hierarchischen Struktur dargestellt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
154 Kapitel 6: Verwenden von IIS-Manager
Der zentrale Bereich, der auch als Arbeitsbereich bezeichnet wird, zeigt Seiten mit Informationen
an und ermöglicht es Ihnen, Einstellungen zu ändern. Der Arbeitsbereich verwendet zwei
Ansichten: Features und Inhalt.
In der Ansicht Features können Sie die Features des gegenwärtig ausgewählten Konfigurationspfades betrachten und konfigurieren. Jedes IIS-Manager-Feature ist in der Regel einem Konfigurationsabschnitt zugeordnet, der das entsprechende Webserverfeature kontrolliert.
Die Ansicht Inhalt stellt die Inhalte, die sich auf den gegenwärtig ausgewählten Konfigurationspfad beziehen, schreibgeschützt dar. Wenn Sie die Ansicht Inhalt aktiviert haben und in der hierarchischen Struktur des Bereichs Verbindungen einen Knoten auswählen, wird dessen Inhalt im
Arbeitsbereich aufgelistet.
Der Bereich Aktionen ist aufgabenorientiert. Die Liste der angezeigten Aufgaben ist vom jeweiligen
Kontext abhängig und bezieht sich auf den gegenwärtig markierten Knoten und das gegenwärtig
ausgewählte Feature.
Lassen Sie uns einen etwas genaueren Blick auf diese Bereiche der Benutzeroberfläche werfen.
Direkt von der Quelle: Die Ansichten Inhalt und Features … Wofür?
Sehr früh in der Entwicklungsphase des IIS-Managers wies dieser noch ein ganz anderes Erscheinungsbild auf. Er unterschied sich radikal von dem, was IIS 6.0 und frühere Versionen boten. Er besaß
beispielsweise keine hierarchische Struktur für die Navigation durch die Objekte. Er arbeitete wie
heutige Webbrowser mit mehreren Registerkarten, um verschiedene Objekte zu verwalten. Die
Startseite besaß Links und Bilder, deren Layout äußerst komplex war. Und es gab noch viele andere
Merkmale, in denen er sich von der finalen IIS 7.0-Version unterschied. Damals erschienen uns all
diese Unterschiede sinnvoll – wir hatten immer gedacht, dass frühere Versionen des IIS-Managers die
Inhalte zu sehr betont hätten. Die Benutzeroberflächen dieser Versionen listeten die Dateien und
Ordner der Sites auf, aber wenn es darum ging, eine Einstellung zu ändern, wurde letztendlich ein
kleines modales Dialogfeld mit vielen Registerkarten angezeigt, das über eine zu kleine
Benutzeroberfläche verfügte, auf der nur wenige Einstellungen aufgeführt werden konnten. Ein solches
Dialogfeld war in seiner Funktionalität stark eingeschränkt (es gab beispielsweise keine Möglichkeit
der Sortierung, Gruppierung, Filterung usw.). Unsere Vorstellung von IIS 7.0 bestand darin, der Benutzeroberfläche Raum für die eigentliche Aufgabe des Tools – die Verwaltung der Konfiguration – zu
bieten und dabei die Möglichkeiten des Benutzers auszuweiten.
Dann begannen wir damit, einige Untersuchungen zur Benutzerfreundlichkeit durchzuführen, und es
stellte sich heraus, dass wir nicht in allen Punkten Recht gehabt hatten. Die Untersuchungsteilnehmer
machten einige Bedenken geltend und sagten uns, dass viele Features, von deren Nutzen wir überzeugt gewesen waren, nicht so nützlich seien. Andere Features wiederum, die wir als nicht erforderlich erachtet hatten, waren für die Benutzer wichtig. Das Auffallendste, das wir lernten, bezog sich auf
das Hierarchielistenfeld: Es erwies sich für fast jeden Benutzer als äußerst wichtiges Feature. Es half
den Benutzern, die Hierarchie des Systems zu verstehen und zu erkennen, welche Konfiguration eine
Änderung erfuhr. Deshalb war dies natürlich das erste Feature, das wir wieder zurückbrachten!
Die Benutzer wünschten sich außerdem eine ähnliche Ansicht wie jene, die frühere Versionen
hauptsächlich boten: eine Liste der Ordner und Dateien. Darüber hinaus vermissten einige Benutzer
die Möglichkeit, mit der rechten Maustaste auf ein Objekt zu klicken, um über das Kontextmenü das
entsprechende Eigenschaftendialogfeld aufzurufen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
155
An diesem Punkt entschieden wir, dass wir uns nach diesen Vorgaben richten wollten. Die Probleme,
die sich durch kleine modale Dialogfelder und viele Registerkarten ergeben, sollten jedoch
vermieden werden.
Die Ansicht Inhalt war die Lösung des Problems. Wenn Sie mit der Ansicht Inhalt arbeiten, erhalten
Sie fast dasselbe Look and Feel, das Sie von früheren Versionen des IIS-Managers kennen. Auf diese
Weise können Sie sich bis zu jedem beliebigen Objekt durchhangeln, einen Klick mit der rechten
Maustaste darauf ausführen und im folgenden Kontextmenü den Eintrag zum Ändern der entsprechenden Einstellungen auswählen. Jedoch wählen Sie in diesem Fall im Kontextmenü nicht den
Eintrag Eigenschaften, sondern Zur Ansicht "Features" wechseln, was denselben Effekt hat.
Letztendlich waren wir glücklich darüber, dass wir beide Ansichten anbieten konnten. Die Ergebnisse der Untersuchungen zur Benutzerfreundlichkeit verbesserten sich umgehend, und den Benutzern gefällt der neue IIS-Manager. Es war eine großartige Erfahrung, bei jeder Entscheidung auf das
Feedback von Kunden zurückgreifen und sich die Zeit nehmen zu können, um die meisten Designentscheidungen wieder und wieder zu überprüfen.
Carlos Aguilar Mares
Senior Development Lead, IIS
Navigationsleiste
Die obere Leiste des IIS-Managers ist die Navigationsleiste, mit deren Hilfe Sie durch die Benutzeroberfläche navigieren können. Die Navigationsleiste enthält:
Die Adressleiste, die den gesamten Pfad bis zur aktuellen Position innerhalb der
Benutzeroberfläche zeigt
Navigationsschaltflächen, die abhängig von ihrer Position oder Auswahl innerhalb der Benutzeroberfläche entweder verfügbar oder abgeblendet sind. Sie bieten die übliche Funktionalität:
Die Schaltfläche Zurück zeigt die vorherige Seite des Seitenverlaufs an.
Die Schaltfläche Weiter zeigt die jeweils nächste Seite des Seitenverlaufs an.
Die Schaltfläche Seite aktualisieren aktualisiert die Ansicht des Objekts, das gegenwärtig innerhalb der Benutzeroberfläche ausgewählt ist.
Die Schaltfläche Beenden unterbricht die gegenwärtig innerhalb der Benutzeroberfläche ausgeführte Aktion.
Die Schaltfläche Startseite wechselt zur Startseite der aktuellen Auswahl.
Die Schaltfläche Hilfe öffnet eine Liste mit Links, die zu den Hilfetexten führen.
Der Bereich Verbindungen
Oben im Bereich Verbindungen befindet sich eine Symbolleiste, von der aus Sie Verbindungen zu
Webservern, Sites und Anwendungen herstellen können.
Wenn Sie vom Bereich Verbindungen aus eine Verbindung zu einem Webserver, einer Site oder einer
Anwendung herstellen, wird die Verbindung in Form einer hierarchischen Struktur in den Bereich
geladen. Diese Struktur zeigt die der Verbindung untergeordneten Knoten wie folgt an:
Wenn Sie eine Verbindung zu einem Server herstellen, zeigt die Struktur die Serververbindung mit
den Anwendungspools und den Sites des Servers an.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
156 Kapitel 6: Verwenden von IIS-Manager
Wenn Sie eine Verbindung zu einer Site herstellen, zeigt die Struktur die Siteverbindung mit den
Anwendungen innerhalb dieser Site an.
Wenn Sie eine Verbindung zu einer Anwendung herstellen, zeigt die Struktur die Anwendungsverbindung mit den physikalischen und virtuellen Verzeichnissen innerhalb dieser Anwendung an.
Hinweis Sie können in der hierarchischen Struktur auch einen Dateiknoten anzeigen lassen, und zwar innerhalb
der Verbindung, zu der die Datei gehört. Um einen Dateiknoten hinzuzufügen, wechseln Sie zur Ansicht Inhalt, markieren die Datei und wechseln mithilfe des Bereichs Aktionen oder des Kontextmenüs zurück zur Ansicht Features.
Die Symbolleiste im Bereich Verbindungen enthält die folgenden Schaltflächen:
Neue Verbindung erstellen Öffnet ein Menü mit drei Optionen: Mit einem Server verbinden, Mit
einer Site verbinden oder Mit einer Anwendung verbinden. Die Auswahl einer Option ruft den
entsprechenden Verbindungsassistenten auf, so dass Sie eine Verbindung zu einem Webserver, einer
Site oder einer Anwendung herstellen können.
Hinweis Dieselben Optionen sind auf der Startseite (in der Liste unter Verbindungsaufgaben) und im Menü Datei
verfügbar.
Aktuelle Verbindungen speichern Speichert die Verbindungsinformationen für die aktuellen
Verbindungen im Hierarchielistenfeld.
Nach oben Verschiebt die Auswahl im Hierarchielistenfeld um eine Ebene nach oben.
Verbindung löschen Entfernt die ausgewählte Verbindung aus der hierarchischen Struktur. Wenn
der gegenwärtig ausgewählte Knoten nicht der Verbindungsknoten ist, wird die übergeordnete
Verbindung aus dem Hierarchielistenfeld entfernt. Ist beispielsweise, wenn der Benutzer auf diese
Schaltfläche klickt, ein virtuelles oder physikalisches Verzeichnis markiert, wird die übergeordnete
Anwendung entfernt.
Neue Verbindungen erstellen
Um eine neue Verbindung zu erstellen, klicken Sie in der Symbolleiste des Bereichs Verbindungen
auf die Schaltfläche Neue Verbindung erstellen und wählen die gewünschte Aktion. Sie können diese
Aktionen ebenfalls aus dem Menü Datei oder auf der Startseite auswählen. Wenn Sie die entsprechende
Aktion an einem dieser Orte auswählen, wird immer derselbe Assistent geöffnet.
Wenn Sie eine Verbindung zu einem Server herstellen möchten, fordert der Assistent Sie auf, den
Servernamen einzugeben, wie in Abbildung 6.4 dargestellt. Wenn WMSvc auf dem Server einen anderen
Port als 8172 (die Standardportnummer) überwacht, müssen Sie die Portnummer mit einem vorangestellten Doppelpunkt angeben, zum Beispiel www.contoso.com:8080. Wenn Sie eine Verbindung zum
lokalen Computer herstellen möchten, geben Sie localhost anstelle eines Servernamens ein. Der
Assistent verlangt anschließend von Ihnen die Eingabe der für die Verbindung erforderlichen Benutzeranmeldeinformationen. Nur Serveradministratoren können eine Verbindung zu einem Server herstellen.
Schließlich können Sie einen beschreibenden Namen für diese Verbindung eingeben. Dieser Name wird
in der hierarchischen Struktur des Bereichs Verbindungen für den Knoten dieser Serververbindung
verwendet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
157
Abbildung 6.4 Der Assistent zum Herstellen von Serververbindungen
Wenn Sie eine Verbindung zu einer Site herstellen möchten, fordert der Assistent Sie auf, den Namen
des Servers, der die Site hostet, sowie den Sitenamen einzugeben, wie in Abbildung 6.5 dargestellt.
Wenn WMSvc auf dem Server einen anderen Port als 8172 überwacht, müssen Sie die Portnummer
angeben. Der Assistent verlangt anschließend von Ihnen die Eingabe der für die Verbindung erforderlichen Benutzeranmeldeinformationen. Serveradministratoren und designierte Siteadministratoren
können Verbindungen zu Websites herstellen. Schließlich ermöglicht es Ihnen der Assistent, einen
beschreibenden Namen für diese Verbindung einzugeben. Dieser Name wird im Hierarchielistenfeld
für den Knoten der Siteverbindung verwendet.
Abbildung 6.5 Der Assistent zum Herstellen von Siteverbindungen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
158 Kapitel 6: Verwenden von IIS-Manager
Wenn Sie eine Verbindung zu einer Anwendung herstellen möchten, fordert der Assistent Sie auf, den
Namen des Servers, der die Anwendung hostet, den Namen der Site, dem die Anwendung zugeordnet
ist, und den vollständigen Namen der Anwendung einzugeben, zu dem auch der Pfad zur Anwendung
innerhalb der Site zählt (siehe Abbildung 6.6). Wenn WMSvc auf dem Server einen anderen Port als
8172 überwacht, müssen Sie die Portnummer angeben. Der Assistent verlangt anschließend von Ihnen
die Eingabe der für die Verbindung erforderlichen Benutzeranmeldeinformationen. Serveradministratoren, Administratoren der Site, die der Anwendung übergordnet ist, und designierte Anwendungsadministratoren können eine Verbindung zu einer Anwendung herstellen. Schließlich ermöglicht es
Ihnen der Assistent, einen beschreibenden Namen für diese Verbindung einzugeben. Dieser Name wird
im Hierarchielistenfeld für den Knoten der Anwendungsverbindung verwendet.
Hinweis Informationen zur Behebung von Problemen mit Remoteverbindungen finden Sie im achten Kapitel.
Abbildung 6.6 Der Assistent zum Herstellen von Anwendungsverbindungen
Arbeitsbereich
Der Arbeitsbereich ist der zentrale Bereich des IIS-Managers. Er befindet sich zwischen den Bereichen
Verbindungen und Aktionen. Der Arbeitsbereich zeigt Seiten an, die Features auflisten und andere
Informationen zur Verfügung stellen und mit deren Hilfe Sie Einstellungen ändern können.
Der Arbeitsbereich bietet zwei Ansichten an: Features und Inhalt. Sie können zwischen diesen
Ansichten wechseln, indem Sie die Schaltflächen unten im Arbeitsbereich benutzen, wie in Abbildung 6.7 dargestellt.
Abbildung 6.7 Die Schaltflächen der Ansichten Features und Inhalt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
159
Die Ansicht Features
Wenn Sie die Ansicht Features aktivieren, werden die Features für das im Bereich Verbindungen markierte
Objekt angezeigt. Bei diesem Objekt kann es sich um einen Server, eine Site, eine Anwendung, ein
virtuelles Verzeichnis, einen Ordner oder eine Datei handeln. Abbildung 6.3 zeigt beispielsweise die
Featureliste, die angezeigt wird, wenn der Benutzer im Bereich Verbindungen eine Serververbindung
markiert.
Jedes Feature greift auf die Konfigurationsabschnitte der .config-Dateihierarchie zu, indem es Daten
daraus liest oder darin schreibt. Die Ansicht Features ermöglicht es Ihnen, Konfigurationseinstellungen
für Features zu betrachten und zu ändern.
Startseite
Wenn Sie im Hierarchielistenfeld einen Knoten eines Servers, einer Site, einer Anwendung, eines
virtuelles Verzeichnisses, eines Ordners oder einer Datei markieren, wird für dieses Objekt eine
entsprechende Startseite angezeigt. Die Startseite zeigt eine Liste mit Features für diesen Knoten an.
Wenn Sie beispielsweise im Hierarchielistenfeld einen Siteknoten markieren, wird die Startseite zu
dieser Site angezeigt. In Abbildung 6.8 ist dies für die Site www.contoso.com zu sehen.
Abbildung 6.8 Nach Bereich gruppierte Startseite einer Site
Die Featureliste auf einer Startseite kann nach Bereich oder nach Kategorie gruppiert, in verschiedenen
Layouts betrachtet und nach Featurename oder Beschreibung sortiert werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
160 Kapitel 6: Verwenden von IIS-Manager
Die Features des IIS-Managers sind in Tabelle 6.1 aufgeführt. Die Tabelle hält zu jedem Feature eine
kurze Beschreibung bereit und nennt den Bereich und die Kategorie, dem/der das Feature zugeordnet
ist. Sie enthält außerdem den Gültigkeitsbereich des jeweiligen Features (Hierarchieebenen und die
Startseiten, auf denen das Feature erscheint).
Tabelle 6.1 Features des IIS-Managers
Feature
Beschreibung
Bereich
Kategorie
Gültigkeitsbereich
.NET-Kompilierung Konfiguriert Eigenschaften für die
Kompilierung von verwaltetem Code
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
.NET-Globalisierung
Konfiguriert Globalisierungseigenschaften für verwalteten Code
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
.NET-Profil
Konfiguriert Optionen für das Feature ASP.NET
ASP.NET-Profil, das innerhalb von
ASP.NET-Anwendungen Benutzerinformationen überwacht
Anwendungsentwicklung
Site, Anwendung, virtual directory, Ordner, Datei
.NET-Rollen
Konfiguriert Rollen für das Feature
ASP.NET
ASP.NET-Rollen. Diese Rollen
können für .NET-Benutzer und die
Formularauthentifizierung verwendet
werden.
Sicherheit
Site, Anwendung, virtual directory, Ordner, Datei
.NET-Vertrauensebenen
Konfiguriert Vertrauensebenen für
verwaltete Module, Handler und
Anwendungen
ASP.NET
Sicherheit
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
.NET-Benutzer
Verwaltet Benutzer für das Feature
ASP.NET-Mitgliedschaft
ASP.NET
Sicherheit
Site, Anwendung, virtuelles
Verzeichnis, Ordner, Datei
Anwendungseinstellungen
Konfiguriert Name/Wert-Paare, die
zur Laufzeit von aus verwaltetem
Code bestehenden Anwendungen
verwendet werden können
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Authentifizierung
Konfiguriert Authentifizierungseinstellungen für Sites und Anwendungen
IIS
Sicherheit
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Hinweis: Einige Optionen innerhalb des Authentifizierungsfeatures sind ausschließlich auf
der Serverebene verfügbar
Komprimierung
Konfiguriert Einstellungen für die
Komprimierung von Antworten
IIS
Leistung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Verbindungszeichenfolgen
Konfiguriert Zeichenfolgen, die von
ASP.NET
ASP.NET-Anwendungen verwendet
werden können, um Verbindungen zu
Datenquellen herzustellen
Anwendungsentwicklung
Server, Site, Anwendung,
virtuelles Verzeichnis, Ordner,
Datei
HTTP-Features
Server, Site, Anwendung,
virtuelles Verzeichnis, Ordner,
Datei
Standarddokument Konfiguriert Standarddateien, die
IIS
zurückgegeben werden, wenn Clients
den Verzeichnisstamm anfordern
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
161
Tabelle 6.1 Features des IIS-Managers (Fortsetzung)
Feature
Beschreibung
Verzeichnis
durchsuchen
Bereich
Kategorie
Gültigkeitsbereich
Legt fest, ob IIS eine Verzeichnisliste IIS
anzeigt, wenn Clients einen Verzeichnisstamm anfordern
HTTP-Features
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Fehlerseiten
Konfiguriert Seiten, die beim Auftreten IIS
von HTTP-Fehlern zurückgegeben
werden
HTTP-Features
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Ablaufverfolgung
für Anforderungsfehler
Konfiguriert die Protokollierung der
Ablaufverfolgung für Anforderungsfehler
Systemzustand
und Diagnose
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Delegierung von
Features
Konfiguriert den StandarddelegieVerwaltung
rungsstatus für Features, die sich im
IIS-Manager auf niedrigeren Ebenen
befinden
Sicherheit
Stammknoten der Verbindung
(Server, Site, Anwendung)
Handlerzuordnungen
Legt Handler fest, die für Antworten
auf bestimmte Anforderungstypen
zuständig sind
Serverkomponenten
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
HTTP-Umleitung
IIS
Legt Regeln für das Umleiten von
eingehenden Anforderungen zu einer
anderen Datei oder einem anderen
URL fest
HTTP-Features
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
HTTP-Antwortheader
Konfiguriert HTTP-Header, die den
Antworten vom Webserver hinzugefügt werden
HTTP-Features
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
IIS-ManagerBerechtigungen
Konfiguriert Benutzer, die in Sites
Verwaltung
oder Anwendungen, für die sie die
entsprechenden Berechtigungen
besitzen, delegierte Features einrichten können
Sicherheit
Server
IIS-ManagerBenutzer
Verwaltet IIS-Manager-Benutzer
Sicherheit
Server
ISAPI- und CGIEinschränkungen
Schränkt bestimmte ISAPI-Erweite- IIS
rungen (Internet Server Application
Programming Interface) und CGIProgramme (Common Gateway Interface) auf dem Webserver ein oder
aktiviert diese
Sicherheit
Server
ISAPI-Filter
Legt ISAPI-Filter fest, die die IISFunktionalität modifizieren
Serverkomponenten
Server, Site
Protokollierung
Konfiguriert, wie IIS auf dem Webser- IIS
ver Anforderungen protokolliert
Systemzustand
und Diagnose
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
IIS
IIS
IIS
Verwaltung
IIS
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
162 Kapitel 6: Verwenden von IIS-Manager
Tabelle 6.1 Features des IIS-Managers (Fortsetzung)
Feature
Beschreibung
Kategorie
Gültigkeitsbereich
Computerschlüssel Konfiguriert Hashing- und Verschlüs- ASP.NET
selungseinstellungen für ASP.NETAnwendungsdienste, z. B. Anzeigezustand, Formularauthentifizierung,
Mitgliedschaft und Rollen und anonyme Authentifizierung
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
MIME-Typen
Konfiguriert DateinamenserweiteIIS
rungen und die damit verbundenen
Inhaltstypen, die als statische Dateien
bereitgestellt werden
HTTP-Features
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Module
Konfiguiert Module für systemeigenen IIS
und verwalteten Code, die auf dem
Webserver Anforderungen verarbeiten
Serverkomponenten
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Leistung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Ausgabezwischen- Legt Regeln für die Zwischenspeicherung
speicherung von Antwortinhalten im
Ausgabecache fest
Bereich
IIS
Seiten und
Steuerelemente
Konfiguriert Einstellungen für
ASP.NET
ASP.NET-Seiten und -Steuerelemente
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Anbieter
Konfiguriert Anbieter für anbieterabhängige Anwendungsdienste
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
Serverzertifikate
Anfordern und Verwalten von Zertifikaten für Websites, die SSL (Secure
Sockets Layer) verwenden
IIS
Sicherheit
Server
Sitzungszustand
Konfiguriert Sitzungszustandseinstellungen und Einstellungen für
Formularauthentifizierungscookies
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner
Freigegebene
Konfiguration
Konfiguriert die freigegebene
Konfiguration
Management
Andere
Server
SMTP-E-Mail
Konfiguriert E-Mail-Adressen und
Übermittlungsoptionen für das
Versenden von E-Mails aus Webanwendungen heraus
ASP.NET
Anwendungsentwicklung
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner, Datei
SSL-Einstellungen
Legt Anforderungen für SSL und
Clientzertifikate fest
IIS
Sicherheit
Site, Anwendung, virtuelles
Verzeichnis, Ordner, Datei
Arbeitsprozesse
Zeigt Informationen über ArbeitsIIS
prozesse und die darin ausgeführten
Anforderungen an
Systemzustand
und Diagnose
Server
Die Features auf der Startseite können in Gruppen angezeigt werden. Mit dem Dropdown-Listenfeld
Gruppieren nach in der Symbolleiste der Startseite oder der Option Gruppieren nach im Menü Ansicht
können Sie wie folgt festlegen, wie Features in Gruppen organisiert werden sollen:
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
163
Wenn Sie die Option Bereich auswählen, werden ASP.NET- und IIS-Features getrennt voneinander
in zwei Gruppen angezeigt (für den Serverknoten eines lokalen Computers wird darüber hinaus die
Gruppe Verwaltung angezeigt):
ASP.NET
IIS
Hinweis Wird die IIS-Standardinstallation erweitert, können zusätzliche Gruppen angeboten werden. Das Hinzufügen des Medienpakets sorgt beispielsweise dafür, dass zusätzlich die Gruppe Medien angezeigt wird.
Ein Beispiel für die Gruppierung nach Bereich ist in Abbildung 6.8 dargestellt. Tabelle 6.1 zeigt,
welchem Bereich jedes IIS-Manager-Feature zugeordnet ist.
Die Auswahl der Option Kategorie zeigt die ASP.NET- und IIS-Features in sechs Kategorien an
(für den Serverknoten eines lokalen Computers kann eine weitere Kategorie namens Andere
angezeigt werden):
Anwendungsentwicklung
Systemzustand und Diagnose
HTTP-Features
Leistung
Sicherheit
Serverkomponenten
Ein Beispiel für die Gruppierung nach Kategorie ist in Abbildung 6.9 zu sehen. Tabelle 6.1 zeigt,
welcher Kategorie jedes IIS-Manager-Feature zugeordnet ist.
Abbildung 6.9 Die nach Kategorie gruppierte Startseite
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
164 Kapitel 6: Verwenden von IIS-Manager
Die Auswahl der Option Keine Gruppierung listet alle Features in alphabetischer Reihenfolge auf,
wie in Abbildung 6.10 dargestellt.
Abbildung 6.10 Die Startseite ohne Featuregruppierung
Mithilfe der auf der Symbolleiste der Startseite angeordneten Schaltfläche Ansichten oder der Option
Ansicht, die Sie im Menü Ansicht finden, können Sie verschiedene Layouts für die Featureliste
auswählen:
Die Ansicht Details listet die Features in einer Tabelle auf. Die erste Spalte jedes Features enthält
ein kleines Symbol und einen Namen und in der zweiten Spalte ist eine kurze Beschreibung
aufgeführt. In dieser Ansicht können Sie die Features in auf- oder absteigender Reihenfolge nach
dem Namen oder der Beschreibung sortieren. Dazu klicken Sie auf die entsprechende Spaltenüberschrift. Die Sortierung erfolgt innerhalb der Featuregruppen. Abbildung 6.11 zeigt beispielsweise die Ansicht Details für die Startseite einer Site, wobei sowohl ASP.NET- als auch IISGruppen nach Featurename sortiert sind.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
165
Abbildung 6.11 Die Ansicht Details für die Startseite einer Site
Die Ansicht Symbole zeigt eine Liste mit Symbolen an. Diese Ansicht erinnerte ein wenig an die
Systemsteuerung. Es handelt sich um die Standardansicht.
Die Ansicht Kacheln zeigt kleinere Symbole zusammen mit dem jeweiligen Featurenamen an.
Die Ansicht Liste zeigt eine Liste mit Featurenamen an.
Features werden verwendet, um Konfigurationen zu betrachten und zu ändern. Wenn Sie beispielsweise
die Standarddateien einer Site konfigurieren möchten, führen Sie auf der Startseite dieser Site einen
Doppelklick auf dem Feature Standarddokument aus, um die gleichnamige Seite (siehe Abbildung
6.12) zu öffnen und die gewünschten Änderungen vorzunehmen.
Beachten Sie den Konfigurationsvermerk, der sich links in der Statusleiste im unteren Bereich des IISManagers befindet (siehe Abbildung 6.12). Der Vermerk verweist auf die web.config-Datei dieser Site.
Wenn die Einstellungen eines Features angezeigt werden, führt die Statusleiste die Konfigurationsdatei
auf, in der die Konfigurationseinstellungen zu diesem Feature gespeichert sind. In diesem Beispiel
handelt es sich um die web.config-Datei der Site www.contoso.com.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
166 Kapitel 6: Verwenden von IIS-Manager
Abbildung 6.12 Das Feature Standarddokument
Seitenlayouts
Die auf den Featureseiten dargestellten Informationen und Konfigurationseinstellungen können
mithilfe verschiedener Layouts präsentiert werden. Bezogen auf das Seitenlayout gibt es drei Arten von
Featureseiten:
Listenseiten
Eigenschaftenseiten
Dialogseiten
Das Layout, das vorwiegend für eine Seite genutzt wird, ist die Listenseite. Eine Listenseite enthält eine
Liste, die in Form einer Tabelle angezeigt wird. Mit dem Dropdown-Listenfeld Gruppieren nach
können Sie die Liste nach den Spaltenwerten gruppieren. Darüber hinaus können Sie die Daten nach
den Werten einer Spalte sortieren lassen, indem Sie auf die Überschrift dieser Spalte klicken. Ein
Beispiel für eine Listenseite ist in Abbildung 6.13 dargestellt. Es handelt sich um die Seite des Features
Fehlerseiten.
Die Seiten Sites und Anwendungspools sind Listenseiten, mit denen Sie die Listeneinträge filtern
können. Dazu wird in einer Spalte nach Einträgen gesucht, die einer Suchzeichenfolge entsprechen.
Geben Sie die Suchzeichenfolge im Dropdown-Listenfeld Filter an, und wählen Sie die zu filternde
Spalte aus dem Dropdown-Listenfeld Start aus. Abbildung 6.14 zeigt die Seite Sites mit den verfügbaren Spaltenfiltern.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
167
Abbildung 6.13 Die Seite Fehlerseiten: ein Beispiel für das Listenseitenlayout
Abbildung 6.14 Die Seite Sites filtern
Auf der Seite Sites können Sie in den folgenden Spalten suchen:
Sitename
Hostname
IP-Adresse
Port
Physikalischer Pfad
Protokoll
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
168 Kapitel 6: Verwenden von IIS-Manager
Auf der Seite Anwendungspools können Sie in den folgenden Spalten suchen:
Name
.NET Framework-Version
Identität
Verwalteter Pipelinemodus
Die Filterfunktionalität ist für Listenseiten mit einer großen Anzahl von Einträgen – z.B. bei Servern, die
sehr viele Sites hosten – besonders dann nützlich, wenn Sie einen Eintrag schnell lokalisieren möchten.
Das Eigenschaftenseitenlayout wird ebenfalls oft verwendet. Eine Eigenschaftenseite stellt ein Eigenschaftenraster mit einem Look and Feel dar, das dem eines Eigenschaftenrasters von Microsoft Visual
Studio gleicht. Wenn Sie im Raster eine Eigenschaft markieren, erscheint im unteren Bereich eine
Beschreibung dieser Eigenschaft. Mit dem Dropdown-Listenfeld Anzeige, das sich im oberen Bereich
des Eigenschaftenrasters befindet, können Sie festlegen, wie die Eigenschaftennamen angezeigt werden
sollen:
Anzeigenamen (Standardeinstellung)
Konfigurationsnamen
Beide Namen Wenn Sie diese Option wählen, werden die Anzeigenamen gefolgt von den Konfigurationsnamen in eckigen Klammern angezeigt.
Nachdem Sie in einem Raster Änderungen vorgenommen haben, klicken Sie im Bereich Aktionen auf
Übernehmen, um die Änderungen zu speichern. Wenn Sie das Eigenschaftenraster verlassen, ohne auf
Übernehmen zu klicken, fordert der IIS-Manager Sie auf, die Änderungen zu speichern, da diese
andernfalls verloren gehen.
Abbildung 6.15 zeigt das Eigenschaftenraster .NET-Kompilierung, das die Anzeigenamen darstellt.
Abbildung 6.15 Die Seite .NET-Kompilierung: ein Beispiel für ein Eigenschaftenseitenlayout
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Benutzeroberfläche des IIS-Managers
169
Der dritte Layouttyp ist die Dialogseite. Dialogseiten arbeiten mit Kontrollkästchen, Textfeldern und
Optionsfeldern. Nachdem Sie in einer Dialogseite eine Auswahl vorgenommen haben, klicken Sie
im Bereich Aktionen auf Übernehmen, um die Änderungen zu speichern. Wenn Sie die Dialogseite
verlassen, ohne auf Übernehmen zu klicken, fordert der IIS-Manager Sie auf, die Änderungen zu
speichern, da diese andernfalls verloren gehen.
Abbildung 6.16 zeigt die Seite des Features Sitzungszustand, die ein gutes Beispiel für eine Dialogseite
ist. Sie sehen dort die Optionsfelder für die Einstellungen zum Sitzungszustandmodus, die Textfelder
für die Verbindungszeichenfolge und das Timeout sowie ein Kontrollkästchen zur Aktivierung einer
benutzerdefinierten Datenbank.
Abbildung 6.16 Die Seite Sitzungszustand: ein Beispiel für ein Dialogseitenlayout
Die Ansicht Inhalt
Wenn Sie die Ansicht Inhalt aktivieren, wird der eigentliche Inhalt des im Bereich Verbindungen
ausgewählten Objekts angezeigt. Wenn Sie beispielsweise im Hierarchielistenfeld den Knoten einer
Site markieren, werden die Inhalte dieser Site angezeigt. Dazu zählen auch virtuelle Verzeichnisse,
Ordner und Dateien. Abbildung 6.17 zeigt die Ansicht Inhalt für die Site www.contoso.com, die das
Standarddokument default.aspx, eine web.config-Sitekonfigurationsdatei, eine Anwendung und ein
virtuelles Verzeichnis enthält.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
170 Kapitel 6: Verwenden von IIS-Manager
Abbildung 6.17 Die Ansicht Inhalt
Die Ansicht Inhalt ist eine schreibgeschützte Ansicht. Sie können in dieser Ansicht keine Dateien oder
Ordner erstellen, kopieren, verschieben oder löschen. Sie können in der Ansicht Inhalt zum markierten
Inhalt navigieren, indem Sie im Bereich Aktionen auf Durchsuchen oder mit der rechten Maustaste auf
den Inhalt klicken.
Sie können innerhalb der Ansicht Inhalt navigieren, indem Sie einen Doppelklick auf einem Objekt
ausführen, woraufhin Sie dessen Inhalte einsehen. Wenn Sie in der Ansicht Inhalt beispielsweise einen
Doppelklick auf einem Verzeichnis ausführen, wird der Inhalt dieses Verzeichnisses im Arbeitsbereich
angezeigt, und der Verzeichnisknoten wird im Hierarchielistenfeld des Bereichs Verbindungen markiert.
Sie können die Ansicht Inhalt aktivieren, indem Sie im unteren Bereich des IIS-Managers auf Ansicht
"Inhalt" oder im Hierarchielistenfeld mit der rechten Maustaste auf einen Knoten klicken und im
folgenden Kontextmenü Zur Ansicht "Inhalt" wechseln auswählen.
Die Ansicht Inhalt arbeitet mit dem Listenlayout. Sie können die Inhalte filtern, indem Sie in den
Spalten Name und Typ nach einer Suchzeichenfolge suchen lassen, die Sie im Dropdown-Listenfeld
Filter angeben. Darüber hinaus können Sie die Liste nach dem Namen oder Typ sortieren lassen, indem
Sie auf die entsprechende Spaltenüberschrift klicken. Des Weiteren ist eine Gruppierung des Inhalts
nach dem Typ möglich. Dazu verwenden Sie das Dropdown-Listenfeld Gruppieren nach.
Wenn Sie in der Ansicht Inhalt ein Objekt markieren, z.B. ein Verzeichnis oder eine Datei, können Sie
die Features dieses Objekts konfigurieren, indem Sie zur Ansicht Features wechseln. Sie können die
Ansicht Features aktivieren, indem Sie im unteren Bereich des IIS-Managers auf Ansicht "Features"
oder im Bereich Aktionen auf Zur Ansicht "Features" wechseln klicken. Es ist aber auch möglich, in der
Ansicht Inhalt mit der rechten Maustaste auf ein Objekt zu klicken und im folgenden Kontextmenü Zur
Ansicht "Features" wechseln auszuwählen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Features verstehen
171
Hinweis Die einzige Möglichkeit, die Konfiguration für eine Datei festzulegen, besteht darin, zur Ansicht Inhalt zu
wechseln, die Datei zu markieren und dann mithilfe des Bereichs Aktionen oder des Kontextmenüs, das nach einem
Rechtsklick angezeigt wird, die Ansicht Features wieder zu aktivieren.
Wenn Sie sich in der Ansicht Inhalt befinden, können Sie die Windows-Eigenschaften des markierten
Objekts (z.B. eine Datei oder ein Verzeichnis) betrachten. Und die Windows-Eigenschaften eines in der
Ansicht Inhalt markierten Objekts anzeigen zu lassen, wählen Sie entweder im Bereich Aktionen den
Eintrag Berechtigungen bearbeiten oder Sie klicken mit der rechten Maustaste auf das Objekt.
Der Bereich Aktionen
Der Bereich Aktionen wird verwendet, um IIS-, ASP.NET- und IIS-Manager-Einstellungen zu konfigurieren. Sie können den Bereich Aktionen benutzen, um Dialogfelder und Assistenten zu öffnen, mit
deren Hilfe Sie im IIS-Manager bestimmte Aufgaben ausführen können, wie z.B. das Erstellen einer
Site, das Konfigurieren der Authentifizierung oder das Hinzufügen einer Verbindungszeichenfolge zu
einer Anwendung.
Die Einträge im Bereich Aktionen sind aufgabenorientiert. Die Liste der angezeigten Aufgaben ist
kontextspezifisch und davon abhängig, welches Objekt gegenwärtig markiert ist, z.B. ein markierter
Knoten im Hierarchielistenfeld des Bereichs Verbindungen, und welches Feature oder welcher Inhalt
im Arbeitsbereich ausgewählt ist.
Abbildung 6.3 zeigt beispielsweise, dass, wenn im Hierarchielistenfeld ein Serverknoten markiert ist,
der Bereich Aktionen Aufgaben anzeigt, die sich auf die Ebene der Serververbindung beziehen, wie z.B.
das Starten und Beenden des Webservers oder das Delegieren eines Features. Abbildung 6.8 zeigt, dass,
wenn ein Siteknoten im Bereich Verbindungen markiert ist, der Bereich Aktionen Aufgaben anzeigt, die
sich auf die Ebene der Siteverbindung beziehen, z.B. das Starten und Beenden oder das Bearbeiten der
Bindungen dieser Website.
Die Einträge im Bereich Aktionen sind auch im Kontextmenü verfügbar, wenn Sie im IIS-Manager mit
der rechten Maustaste auf ein Objekt klicken.
Features verstehen
Die Features des IIS-Managers arbeiten mit den entsprechenden Konfigurationsabschnitten in der
.config-Dateihierarchie, um Daten daraus zu lesen oder darin zu schreiben. Das Feature Anwendungseinstellungen entspricht beispielsweise dem <appSettings>-Abschnitt in den web.config-Dateien, wohingegen das Feature Verzeichnis durchsuchen dem <directoryBrowse>-Element im <system.webServer>-Abschnitt
entspricht.
Nur wenige Ausnahmen lesen und schreiben Konfigurationen in andere Dateien außerhalb von IIS,
die nicht der Hierarchie der Konfigurationsdateien zugehören. Das Feature Serverzertifikate erhält
seine Einstellungen beispielsweise aus dem Zertifikatspeicher des lokalen Servers, und das Feature
Verwaltungsdienst ruft seine Einstellungen aus der Windows-Registrierung des lokalen Servers ab.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
172 Kapitel 6: Verwenden von IIS-Manager
Die Zuordnung von Features zu Modulen
Die Features des IIS-Managers und die entsprechenden Konfigurationsabschnitte in den .configDateien sind in Tabelle 6.2 aufgelistet.
Die Tabelle führt zusätzlich die Servermodule auf, die auf die Konfigurationsabschnitte zugreifen. Für
jedes Servermodul sind sowohl der Modulname als auch der Typ bzw. der DLL-Name aufgeführt,
wobei der Typ bzw. der DLL-Name in Klammern angegeben ist.
In einigen Fällen kann der IIS-Kernwebserver, der IIS-Manager, das .NET Framework oder die
ASP.NET-Laufzeit (jeweils in eckigen Klammern angegeben) direkt mit einem Konfigurationsabschnitt arbeiten.
Tabelle 6.2 Zuordnung von IIS-Manager-Features zur Konfiguration und zu Modulen
Featurename
Konfigurationsabschnitt
Verwendet von
.NET-Kompilierung
system.web/compilation
[ASP.NET-Kompilierungssystem]
.NET-Globalisierung
system.web/globalization
[ASP.NET-Laufzeit]
.NET-Profil
system.web/profile
Profil (System.Web.Profile.ProfileModule)
.NET-Rollen
system.web/roleManager
Rollendienst, RoleManager (System.Web.
Security.RoleManagerModule) und der konfigurierte standardmäßige Rollenanbieter
.NET-Vertrauensebenen
system.web/trust
[ASP.NET-Laufzeit]
.NET-Benutzer
system.web/membership
[Mitgliedschaftsdienst, der konfigurierte
standardmäßige Mitgliedschaftsanbieter]
[Authentifizierung] Anonym
system.webServer/security/
anonymousAuthentication
AnonymousAuthenticationModule
(authanon.dll)
[Authentifizierung] Standard
system.webServer/security/
basicAuthentication
BasicAuthenticationModule (authbas.dll)
[Authentifizierung] Digest
system.webServer/security/
digestAuthentication
DigestAuthenticationModule (authmd5.dll)
[Authentifizierung] Formular
system.web/authentication
FormsAuthentication (System.Web.Security.
FormsAuthenticationModule)
[Athentifizierung] Windows
system.webServer/security/
windowsAuthentication
WindowsAuthenticationModule (authsspi.dll)
Anwendungseinstellungen
appSettings
[ASP.NET-Anwendungscode]
ASP
system.webServer/asp (indirect)
IsapiModule (isapi.dll)
Autorisierungsregeln
system.webServer/security/
authorization
UrlAuthorizationModule (urlauthz.dll)
CGI
system.webServer/cgi
CgiModule (cgi.dll)
Komprimierung
system.webServer/httpCompression
system.webServer/urlCompression
DynamicCompressionModule (compdyn.dll)
StaticCompressionModule (compstat.dll)
Verbindungszeichenfolgen
connectionStrings
[ASP.NET-Features und -Anwendungscode]
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Features verstehen
173
Tabelle 6.2 Zuordnung von IIS-Manager-Features zur Konfiguration und zu Modulen (Fortsetzung)
Featurename
Konfigurationsabschnitt
Verwendet von
Standarddokument
system.webServer/
defaultDocument
DefaultDocumentModule (defdoc.dll)
Verzeichnis durchsuchen
system.webServer/directoryBrowse
DirectoryListingModule (dirlist.dll)
Fehlerseiten
system.webServer/httpErrors
CustomErrorModule (custerr.dll)
Ablaufverfolgung für
Anforderungsfehler
system.webServer/tracing/
traceFailedRequests
system.webServer/tracing/
traceProviderDefinitions
FailedRequestsTracingModule (iisfreb.dll)
Handlerzuordnungen
system.webServer/handlers
[IIS-Serverkern]
HTTP-Umleitung
system.webServer/httpRedirect
HttpRedirectionModule (redirect.dll)
HTTP-Antwortheader
system.webServer/httpProtocol
ProtocolSupportModule (protsup.dll)
IIS-Manager-Berechtigungen
administration.config: system.webServer/
management
[IIS-Manager, Webverwaltungsdienst
(WMSvc)]
IIS-Manager-Benutzer
administration.config: system.webServer/
management
[IIS-Manager, Webverwaltungsdienst
(WMSvc)]
Einschränkungen für
IPv4-Adressen und Domänen
system.webServer/ipSecurity
IpRestrictionModule (iprestr.dll)
ISAPI- und
CGI-Einschränkungen
system.webServer/security/
isapiCgiRestriction
CgiModule (cgi.dll)
IsapiModule (isapi.dll)
ISAPI-Filter
system.webServer/isapiFilters
IsapiFilterModule (filter.dll)
Protokollierung
system.applicationHost/log
system.webServer/httpLogging
[IIS Server Core]
HttpLoggingModule (loghttp.dll)
Computerschlüssel
system.web/machineKey
[ASP.NET-Laufzeit und Features, die die
Verschlüsselung nutzen]
Verwaltungsdienst
Registry:
HKLM\SOFTWARE\Microsoft\
WebManagement\Server
[Webverwaltungsdienst (WMSVC)]
MIME-Typen
system.webServer/staticContent
StaticFileModule (static.dll)
Module
system.webServer/globalModules
system.webServer/modules
[IIS-Serverkern]
Ausgabezwischenspeicherung
system.webServer/caching
HttpCacheModule (cachhttp.dll)
Seiten und Steuerelemente
system.web/pages
[ASP.NET]
Anbieter
system.web/membership
system.web/roleManager
system.web/profile
[Features für ASP.NET-Rollen, -Mitgliedschaft
und -Profile]
Serverzertifikate
[Local Machine Certificate Store]
[Betriebssystem, HTTP.SYS, WindowsAnwendungen]
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
174 Kapitel 6: Verwenden von IIS-Manager
Tabelle 6.2 Zuordnung von IIS-Manager-Features zur Konfiguration und zu Modulen (Fortsetzung)
Featurename
Konfigurationsabschnitt
Verwendet von
Serverseitiges Include
system.webServer/
serverSideInclude
ServerSideIncludeModule (iis_ssi.dll)
Sitzungszustand
system.web/sessionState
system.web/sessionPageState
Session (System.Web.
SessionState.SessionStateModule)
Freigegebene Konfiguration
redirection.config: configurationRedirection
[IIS-Konfigurationssystem]
SMTP-E-Mail
system.net/mailSettings/smtp
[.NET Framework]
SSL-Einstellungen
system.webServer/access
[IIS-Serverkern]
Arbeitsprozesse
applicationHost.config: system.
applicationHost/applicationPools
[Windows-Prozessaktivierungsdienst}
Speicherort der Konfiguration
Wenn die Featurekonfigurationseinstellungen geändert werden, schreibt der IIS-Manager diese
Einstellungen in eine Konfigurationsdatei. Abhängig von der Verbindungsebene (Server, Site oder
Anwendung) und den Sperrungen in der Konfigurationsdateihierarchie sind die IIS-Manager-Featureeinstellungen mit Lesen/Schreiben oder Schreibgeschützt gekennzeichnet.
Serververbindungen können in die Konfigurationsdateien der Serverebene, also applicationHost.config
und die web.config-Stammdatei, und in alle verteilten web.config-Dateien dieses Servers schreiben.
Nur der Administrator eines Servercomputers kann eine Verbindung zu einem Server herstellen. Die
Features auf der Serverebene können die Konfigurationsdateien verwenden, um sowohl daraus zu lesen
als auch darin zu schreiben. Selbst wenn in applicationHost.config ein Konfigurationsabschnitt gesperrt
ist, ist das entsprechende Feature bei einer Serververbindung mit Lesen/Schreiben gekennzeichnet. Die
Konfigurationsänderungen werden in applicationHost.config in ein <location>-Tag geschrieben.
Siteverbindungen können lediglich in die web.config-Dateien schreiben, die sich im Stammordner der
Site oder auf den Ebenen darunter befinden. Serveradministratoren und designierte Siteadministratoren
können Verbindungen zu Websites herstellen. Wenn in applicationHost.config ein Konfigurationsabschnitt gesperrt ist, ist das entsprechende Feature bei dieser Siteverbindung mit Schreibgeschützt
gekennzeichnet, weil Siteverbindungen nicht in applicationHost.config schreiben können (auch nicht in
ein <location>-Tag).
Anwendungsverbindungen können lediglich in die web.config-Dateien schreiben, die sich im Stammordner der Anwendung oder auf den Ebenen darunter befinden. Serveradministratoren, Administratoren der Site, die der Anwendung übergordnet ist, und designierte Anwendungsadministratoren
können eine Verbindung zu einer Anwendung herstellen. Wenn in applicationHost.config oder in der
web.config-Datei der Site ein Konfigurationsabschnitt gesperrt ist, ist das entsprechende Feature bei
dieser Anwendungsverbindung mit Schreibgeschützt gekennzeichnet.
Vorausgesetzt, dass ein Feature nicht schreibgeschützt ist und Einstellungen gespeichert werden
können, definieren zwei Regeln, in welche Dateien die Konfigurationseinstellungen zu diesem Feature
geschrieben werden:
ApplicationHost.config gegen die web.config-Stammdatei bei Konfigurationen der Serverebene:
Wenn das Feature im IIS-Manager im Bereich ASP.NET aufgeführt ist, wird eine Konfiguration
der Serverebene in die web.config-Stammdatei des .NET Frameworks geschrieben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Features verstehen
175
Wenn das Feature im IIS-Manager im Bereich IIS aufgeführt ist, wird eine Konfiguration der
Serverebene in die applicationHost.config-Datei geschrieben.
Die einzige Ausnahme bildet die Formularauthentifizierung, bei der es sich um ein Authentifizierungsfeature im IIS-Bereich handelt. Die Konfiguration der Formularauthentifizierung wird
in die web.config-Stammdatei geschrieben.
Hinweis Der IIS-Manager speichert eine Featurekonfiguration der Serverebene entweder in applicationHost.config oder in der web.config-Stammdatei. Für welche dieser Dateien der IIS-Manager sich entscheidet, ist davon
abhängig, wo der entsprechende Konfigurationsabschnitt definiert ist. Wenn der Abschnitt in applicationHost.config
definiert ist, wird die Konfiguration dort gespeichert. Andernfalls wird sie in der web.config-Stammdatei gespeichert.
Gesperrte gegen nicht gesperrte Konfigurationen der Site- und Anwendungsebene:
Alle ASP.NET-Konfigurationsabschnitte und einige wenige IIS-Konfigurationsabschnitte sind
standardmäßig nicht gesperrt. Bei nicht gesperrten Abschnitten schreibt der IIS-Manager in die
web.config-Datei einer Site, wenn die Konfiguration dieser Site geändert wurde, oder in die
web.config-Datei einer Anwendung, wenn die Konfiguration dieser Anwendung geändert wurde.
Die meisten IIS-Konfigurationsabschnitte sind standardmäßig gesperrt. Bei gesperrten
Abschnitten schreibt der IIS-Manager immer in applicationHost.config. Dies geschieht selbst
dann, wenn die Konfigurationen von Sites und Anwendungen geändert werden.
Der IIS-Manager ermittelt mithilfe der folgenden Logik, wo eine Konfiguration gespeichert werden soll:
Er versucht immer, die Konfiguration in der Konfigurationsdatei zu speichern, die sich in der Hierarchie in
nächster Nähe zum konfigurierten Objekt befindet. Bei einer Verzeichniskonfiguration versucht der IISManager beispielsweise, die Einstellungen in der web.config-Datei dieses Verzeichnisses zu speichern.
Bei Anwendungskonfigurationen versucht er, in die web.config-Datei der jeweiligen Anwendung zu
schreiben usw. Wenn jedoch der entsprechende Abschnitt in der nächstgelegenen Datei gesperrt ist,
verwendet der Manager die nächstgelegene übergeordnete Datei und versucht dort, den Speichervorgang
mithilfe eines location-Tags auszuführen. Wenn der Abschnitt in der übergeordneten Konfigurationsdatei
gesperrt ist, setzt der IIS-Manager diesen Vorgang fort, bis er die oberste Konfigurationsdatei der jeweiligen Verbindung erreicht. Wenn der Abschnitt auch dort gesperrt ist, wird die Konfiguration als schreibgeschützt erachtet.
Wenn Sie Featurekonfigurationseinstellungen bearbeiten, zeigt der IIS-Manager Ihnen den Verwahrungsort der Datei an, in der diese Einstellungen gespeichert werden. Der Speicherort der Konfigurationsdatei wird unten links im IIS-Manager dargestellt und mit dem Präfix Konfiguration eingeleitet.
Das folgende Format wird verwendet:
Konfiguration: 'konfigurationsdateiobjektpfad' konfigurationsdateiname
konfigurationsdateiobjektpfad ist der Pfad zum Konfigurationsdateiobjekt. Lassen Sie uns einige
Beispiele betrachten:
'localhost' Wird auf dem lokalen Computer für Konfigurationen der Serverebene angezeigt. Bei
IIS-Features folgt die applicationHost.config-Datei. Bei ASP.NET-Features folgt die web.configStammdatei. Abbildung 6.15 zeigt die Seite des Features .NET-Kompilierung als Beispiel für den
zuletzt genannten Fall.
www.contoso.com Wird als Pfad zur web.config-Datei im physikalischen Ordner
www.contoso.com angezeigt (hinter www.contoso.com folgt web.config).
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
176 Kapitel 6: Verwenden von IIS-Manager
konfigurationsdateiname ist der Name der Zielkonfigurationsdatei. Dazu einige Beispiele:
applicationHost.config für IIS-Features Bei einer Serververbindung zeigt die Statusleiste für
das Feature Verzeichnis durchsuchen beispielsweise den folgenden Text an:
Konfiguration: 'localhost' applicationHost.config
web.config-Stammdatei für ASP.NET-Features Bei einer Serververbindung zeigt die Statusleiste für das Feature .NET-Vertrauensebenen beispielsweise den folgenden Text an:
Konfiguration: 'localhost' web.config (Stamm)
web.config, eine web.config-Zieldatei Die Statusleiste zeigt für die Site www.contoso.com und das
Feature Sitzungszustand beispielsweise den folgenden Text an, wie in Abbildung 6.16 dargestellt:
Konfiguration: 'www.contoso.com' web.config
location path (engl. für Speicherortpfad) ist der Pfad zu dem Ort, an dem das konfigurierte Objekt
gespeichert ist. (Weitere Informationen zu Speicherortpfaden finden Sie im vierten Kapitel, »Verstehen
des Konfigurationssystems«.) Dieser Teil des Textes erscheint nur dann, wenn der Konfigurationsabschnitt, der dem Feature entspricht, auf einer höheren Ebene gesperrt ist. Beispielsweise zeigt
die Statusleiste in Abbildung 6.13 für die Site www.contoso.com und das Feature Fehlerseiten den
folgenden Text an:
Konfiguration: 'localhost' applicationHost.config , <location path="www.contoso.com">
Gültigkeitsbereich der Features
Die Startseiten der Knoten auf den verschiedenen Ebenen des Hierarchielistenfelds können unterschiedliche Features anzeigen. Tabelle 6.1 zeigt, wo jedes Feature standardmäßig angezeigt wird.
Ob auf der Startseite ein Feature für ein markiertes Objekt angezeigt wird, ist von drei Faktoren
abhängig:
Objektebene Einige Features sind nur auf bestimmte Ebenen anwendbar.
Delegierung Wenn die Delegierung eines Features auf Nicht delegiert gesetzt ist, erscheint dieses
Feature nicht auf der Startseite.
Lokale Verbindung oder Remoteverbindung Einige Features werden nur bei lokalen
Verbindungen angezeigt.
Die meisten Features des IIS-Managers sind auf alle Knoten des Hierarchielistenfelds anwendbar:
Server, Site, Anwendung, virtuelles Verzeichnis, Ordner und Datei. Diese Features erscheinen auf den
Startseiten aller Ebenen. Es gibt jedoch Ausnahmen für die Serverebene. Einige Features stehen ausschließlich auf der Serverebene zur Verfügung. Sie konfigurieren serverweit gültige Konfigurationen,
Daten oder Informationen. Diese Features erscheinen nur auf der Startseite eines Servers:
IIS-Manager-Benutzer
IIS-Manager-Berechtigungen
ISAPI- und CGI-Einschränkungen
Serverzertifikate (dieses Feature wird bei Remoteverbindungen nicht angezeigt)
Verwaltungsdienst (dieses Feature wird bei Remoteverbindungen nicht angezeigt)
Arbeitsprozesse
Active Directory- und Clientzertifikatoptionen, die Bestandteil des Authentifizierungsfeatures sind
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anpassung und Erweiterbarkeit des IIS 7.0-Managers
177
Darüber hinaus erscheinen einige Features auf allen Startseiten außer der des Servers. Dabei handelt es
sich um die Features, die sich auf die Anwendungskonfiguration beziehen und deshalb auf der Serverebene nicht sinnvoll sind. Es gibt weitere Features, wie z.B. SSL, für die dies gilt. Diese Features sind:
.NET-Benutzer
.NET-Rollen
.NET-Profil
SSL-Einstellungen
Eine weitere Ausnahme ist das Feature Delegierung von Features, das nur für den Stammknoten einer
Verbindung angezeigt wird, wie z.B. für einen Server-, Site- oder Anwendungsknoten. Dieses Feature
ist für virtuelle Verzeichnisse und Ordner nicht verfügbar.
Des Weiteren wirken sich die Einstellungen zur Featuredelegierung darauf aus, ob ein Feature im IISManager angezeigt wird oder nicht. Ausführliche Informationen zur Featuredelegierung finden Sie im
achten Kapitel.
Anpassung und Erweiterbarkeit des IIS 7.0-Managers
Der IIS-Manager ist nicht bloß eine Anwendung, sondern eine erweiterbare Plattform, die von
Entwicklern genutzt werden kann, um eigene Features zur Verwaltung benutzerdefinierter
Einstellungen und Anwendungen einzubringen. Entwickler können die Benutzeroberfläche verändern,
bereits vorhandene Features entfernen und neue Verwaltungsfeatures hinzufügen.
Direkt von der Quelle: IIS-Manager – gegründet auf der öffentlichen Erweiterbarkeits-API
Während der Entwicklung des neuen IIS-Managers entschieden wir, dass die Erweiterbarkeit ein
Kernfeature und der IIS-Manager eine echte Plattform sein sollte, so dass nicht nur wir, sondern auch
andere Entwickler dazu in der Lage sein würden, seine Funktionalität zu erweitern. Um sicherzustellen, dass wir eine flexible API entwickelten, entschlossen wir uns dazu, alle Features unter
Verwendung dieser API zu implementieren, so dass keines unserer Features ein spezieller Fall
innerhalb des Produkts sein würde. Aus diesem Grund weist die IIS-Installation mehrere DLLs auf,
wie z.B. Microsoft.Web.Management.Iis.dll und Microsoft.Web.Management.Aspnet.dll. Indem wir
diese strengen Richtlinien befolgten und die API außerhalb des Kernframeworks erstellten, gewährleisteten wir, dass alles, was wir entwickelten, von anderen erweitert oder durch eigene Implementierungen ersetzt werden konnte. Dies war natürlich eine Herausforderung, führte aber gleichzeitig
dazu, dass unsere Plattform flexibel genug wurde, um zu gewährleisten, dass zusätzliche IISFeatures, wie z.B. FTP, WebDAV usw., einen Platz im IIS-Manager finden können.
Carlos Aguilar Mares
Senior Development Lead, IIS
IIS 7.0 wird mit einer API (Application Programming Interface) ausgeliefert, die es den Entwicklern
ermöglicht, die Benutzeroberfläche des IIS-Managers zu verändern und auf dem Server benutzerdefinierte Einstellungen und Anwendungen zu verwalten. Diese API bietet beispielsweise im Rahmen der
Erweiterbarkeit die Möglichkeit, Benutzeroberflächenfeatures zu entwickeln, die in Form von Listenseiten, Eigenschaftenrastern und Dialogseiten dargestellt werden. Aber auch die Entwicklung eines
benutzerdefinierten Designs für den Bereich Aktionen und von Assistenten und Dialogfeldern ist möglich.
Darüber hinaus können dem Bereich Verbindungen benutzerdefinierte Knoten hinzugefügt werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
178 Kapitel 6: Verwenden von IIS-Manager
Der IIS-Manager wurde für eine verteilte Client/Server-Architektur entworfen. Darüber hinaus verfügt
der IIS-Manager über eine modulare Infrastruktur, bei der jedes Benutzeroberflächenfeature eine
eigene Entität bildet. Jedes Feature befolgt das Client/Server-Paradigma. Diese Architektur des IISManagers trennt die Logik, die die Servereinstellungen modifiziert, von dem Code, der diese Einstellungen für jedes Benutzeroberflächenfeature in einer benutzerfreundlichen Weise darstellt.
Die IIS 7.0-Verwaltungs- und Administrations-API
Die API befindet sich in zwei Assemblies, die auf dem Server ein Framework zur Modifizierung
der Benutzeroberfläche des IIS-Managers und zur Entwicklung neuer Features für die Verwaltung
benutzerdefinierter Anwendungen zur Verfügung stellen. Diese Assemblies sind:
Microsoft.Web.Management.dll Diese Assembly stellt das Framework zur Verfügung,
mit dem Entwickler neue Benutzeroberflächenfeatures erstellen und Modifikationen am IISManager vornehmen können. Sie bietet eine Basisklasse und andere Funktionen an, durch die
neu entwickelte Erweiterungen mit einem Look and Feel dargestellt werden, das dem der
integrierten IIS- und ASP.NET-Features entspricht. Sie unterstützt aber nicht das Ändern der
Einstellungen auf dem Server.
Microsoft.Web.Administration.dll Diese Assembly stellt das Framework zur Verfügung, mit
dem Entwickler die Einstellungen auf dem Server ändern können. Sie gibt den Entwicklern ein
programmgesteuertes Verfahren an die Hand, mit dem es möglich ist, auf die Webserverkonfigurationen und die Verwaltungsinformationen zuzugreifen und diese zu aktualisieren. Sie unterstützt nicht das Hinzufügen von Benutzeroberflächenerweiterungen oder -funktionalität. Die
meisten Features des IIS-Managers nutzen diese API, um die Konfigurationseinstellungen auf
dem Server zu verwalten.
Jedes IIS-Manager-Feature besteht aus zwei Komponenten:
Ein clientseitiges Modul, das für die Benutzeroberfläche zuständig ist
Ein serverseitiger Moduldienst, der die Einstellungen auf dem Server modifiziert
Diese Architektur ist in Abbildung 6.18 dargestellt. Die IIS-Manager-Erweiterungen müssen diese
Architektur befolgen. Die in der API enthaltene Basisklasse sorgt dafür, dass dies geschieht.
Der erste Schritt zur Bereitstellung einer neuen IIS-Erweiterung besteht darin, deren Client- und Serverkomponenten im globalen Assemblycache (GAC) des Servers zu installieren. Der zweite Schritt ist die
Registrierung der neuen Erweiterung beim IIS-Manager. Jede Erweiterung muss einzeln beim IISManager registriert werden. Der IIS-Manager gründet auf einer Erweiterbarkeit des Konfigurationssystems, die das einfache Hinzufügen von benutzerdefinierter Funktionalität ermöglicht.
Der IIS-Manager benutzt eine spezielle Datei namens administration.config, die die IIS-ManagerKonfiguration definiert. Die Datei administration.config befindet sich auf dem Server im Ordner
%SystemRoot%\System32\Inetsrv\Config. Administration.config ist eine XML-Konfigurationsdatei,
die eine Liste der in den IIS-Manager integrierten Features und Erweiterungen enthält. Beim Start des
IIS-Managers wird diese Datei überprüft, um zu ermitteln, welche Features im IIS-Manager angezeigt
werden sollen. Wenn der IIS-Manager eine Remoteverbindung herstellt, vergleicht der Webverwaltungsdienst die auf dem Server verfügbaren Modulanbieter mit den auf dem Client verfügbaren
Modulanbietern. Wenn auf dem Server eine neue Erweiterung verfügbar ist, wird der Client dazu
aufgefordert, diese Erweiterung herunterzuladen und zu installieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anpassung und Erweiterbarkeit des IIS 7.0-Managers
179
Abbildung 6.18 Die Client/Server-Architektur für IIS-Manager-Features
Der <moduleProviders>-Abschnitt in der Datei administration.config definiert alle im System registrierten
IIS-Manager-Erweiterungen. Um eine Erweiterung zu registrieren, müssen Sie dem <moduleProviders>Abschnitt den voll qualifizierten Typnamen des Modulanbieters dieser Erweiterung und dem <modules>Abschnitt den Modulnamen hinzufügen. Abhängig vom gewünschten Gültigkeitsbereich der Erweiterung müssen Sie möglicherweise den entsprechenden Modulnamen dem zugehörigen <location path>Abschnitt hinzufügen, der die Sites und Anwendungen definiert, für die diese Erweiterung im IISManager angezeigt wird. Der folgende Auszug aus administration.config zeigt im <moduleProviders>Abschnitt einen integrierten Modulanbieter für das Modul DefaultDocument und im <modules>-Abschnitt den
Modulnamen DefaultDocument. Der zuletzt genannte Abschnitt verwendet den Speicherortstammpfad, so
dass alle Sites und Anwendungen des Servers darauf zugreifen können.
<moduleProviders>
<!-- Server Modules-->
<add name="DefaultDocument"
type="Microsoft.Web.Management.Iis.DefaultDocument
DefaultDocumentModuleProvider, Microsoft.Web.Management.Iis,
Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</moduleProviders>
<!-- For all Sites -->
<location path=".">
<modules>
<add name="DefaultDocument" />
…
</modules>
</location>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
180 Kapitel 6: Verwenden von IIS-Manager
Nachdem Sie die Erweiterung registriert haben, wird der Client beim nächsten Start des IIS-Managers
dazu aufgefordert, die Clientkomponente dieser Erweiterung herunterzuladen und zu installieren.
Hinweis Weitere Informationen zur Erweiterung des IIS-Managers und zur Erstellung benutzerdefinierter
Konfigurationsabschnitte in .config-Dateien finden Sie im dreizehnten Kapitel, »Konfigurations- und
Benutzeroberflächenerweiterungen verwalten«.
Remoteverwaltung
Remoteverbindungen sind im IIS-Manager standardmäßig nicht verfügbar. Um ein unter Windows
Server 2008 ausgeführtes IIS 7.0-System remote zu verwalten, müssen Sie die Clientcomputer entsprechend einrichten und den Server für die Remoteverwaltung konfigurieren.
Um ein unter Windows Server 2008 ausgeführtes IIS 7.0-System von Clientcomputern aus remote zu
verwalten, auf denen Windows Vista Service Pack 1 (SP1), Windows Server 2003 SP1 oder Windows XP
SP2 ausgeführt wird, müssen Sie auf diesen Clientcomputern den IIS-Manager installieren und dann eine
Verbindung zu den Sites und Anwendungen des Servers herstellen, die Sie verwalten möchten. Sie können
den IIS-Manager für diese Betriebssysteme unter der folgenden Adresse beziehen: http://iis.net/
downloads.
Auf dem Server müssen Sie die Remoteverwaltung von IIS 7.0 über den IIS-Managers explizit aktivieren. Dies geschieht anders als bei IIS 6.0, wo der Remotezugriff auf die Verwaltungskonsole über
das MMC-Snap-In erfolgte und immer aktiv war. Für die Remoteverwaltung von IIS 7.0 muss der
Webverwaltungsdienst (WMSvc) auf dem Server installiert sein und ausgeführt werden. Darüber
hinaus müssen Remoteverbindungen zu diesem Dienst ermöglicht werden.
Der Webverwaltungsdienst ist standardmäßig nicht installiert – Sie müssen ihn manuell installieren.
Während der Installation können Sie die IP-Adresse und die Portnummer angeben, die der Dienst
überwachen soll, oder Sie akzeptieren die Voreinstellungen: Keine zugewiesen für die IP-Adresse und
8172 für die Portnummer. Eine ausführliche Anleitung zur Installation von WMSvc finden Sie im
achten Kapitel.
Nachdem Sie den Webverwaltungsdienst installiert haben, wird im IIS-Manager auf der Startseite des
Servers das Feature Verwaltungsdienst angezeigt. Sie können dann dieses Feature konfigurieren, um die
zu bedienenden Remoteverbindungen zu aktivieren.
Um Remoteverbindungen zu aktivieren, gehen Sie unter IIS wie folgt vor:
1. Markieren Sie im Bereich Verbindungen den Serverknoten. Die Startseite des Servers wird angezeigt.
2. Führen Sie einen Doppelklick auf dem Feature Verwaltungsdienst auf, um die Seite des Features
Verwaltungsdienst zu öffnen.
3. Klicken Sie auf der Seite des Features Verwaltungsdienst und dort im Bereich Aktionen auf Beenden,
um den Dienst zu beenden.
4. Aktivieren Sie das Kontrollkästchen Remoteverbindungen aktivieren. Dies ermöglicht es dem Serveradministrator, eine Verbindung zum Server sowie zu Sites und Anwendungen remote herzustellen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Zusammenfassung
181
Hinweis Die Einstellung, die die Remoteverwaltung ermöglicht, wird in der Windows-Registrierung in einem dwordWert namens EnableRemoteManagement gespeichert. Dies geschieht unter dem Registrierungsschlüssel HKLM\SOFTWARE\Microsoft\WebManagement\Server.
5. Wenn Sie möchten, dass Benutzer ohne administrative Rechte die Sites und Anwendungen des
Servers verwalten können, wählen Sie für diese Benutzer die Art der Anmeldeinformationen. Konfigurieren Sie andere Einstellungen, sofern dies erforderlich ist, z.B. Verbindungs- und Protokollierungsoptionen und IPv4- und Domäneneinschränkungen. Klicken Sie im Bereich Aktionen auf
Übernehmen, um die Änderungen zu speichern, und dann auf Starten, um den Dienst zu starten.
Hinweis Eine ausführliche Erläuterung der Remoteverwaltung, die sich auch mit Webverwaltungsdiensteinstellungen befasst, erhalten Sie im achten Kapitel.
Zusammenfassung
Der IIS-Manager wurde für IIS 7.0 von Grund auf neu erstellt und unterscheidet sich stark von dem
MMC-Snap-In, das für frühere IIS-Versionen verwendet wurde. Der IIS-Manager von IIS 7.0 ist eine
Clientanwendung mit einer sich intuitiv erschließenden, feature- und aufgabenorientierten spezifischen
Benutzeroberfläche, die die mit den Verwaltungsaufgaben einhergehende Komplexität wesentlich
verringert.
Der IIS-Manager ermöglicht die gemeinsame Verwaltung von IIS- und ASP.NET-Features mit nur
einem Tool. Die Features des IIS-Managers sind den Konfigurationsabschnitten in den .config-Dateien
zugeordnet und stellen eine einfach zu bedienende Benutzeroberfläche für die Arbeit mit komplexen, in
der .config-Dateihierarchie verborgenen Einstellungen zur Verfügung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
182 Kapitel 6: Verwenden von IIS-Manager
Der IIS-Manager ist hochgradig anpassbar und bietet eine erweiterbare Plattform, die von Entwicklern
genutzt werden kann, um eigene administrative Features für die Verwaltung benutzerdefinierter
Einstellungen und Anwendungen einzubringen.
Der IIS-Manager unterstützt die Remoteverwaltung und die Delegierung von Features, so dass
Benutzer, die auf dem Server über keine administrativen Rechte verfügen, Sites und Anwendungen
von ihren Clientcomputern aus remote verwalten können.
Weitere Informationen
Informationen zum Befehlszeilentool Appcmd.exe, zum WMI-Management-Anbieter und
PowerShell erhalten Sie im siebten Kapitel, »Verwenden von Befehlszeilentools«.
Informationen zur Remoteverwendung des IIS-Managers finden Sie im achten Kapitel,
»Remoteverwaltung«.
Informationen zur Erweiterung des IIS-Managers bietet das dreizehnte Kapitel, »Konfigurationsund Benutzeroberflächenerweiterungen verwalten«.
Eine Liste der Verwaltungsaufgaben, die vorwiegend mit dem IIS-Manager ausgeführt werden,
finden Sie in Anhang J, »Durchführen von Administrationsaufgaben im InternetinformationsdiensteManager«.
Eine Einführung in die Arbeit mit dem IIS 7.0-Manager erhalten Sie unter http://www.iis.net//
articles/view.aspx/IIS7/Use-IIS7-Administration-Tools/IIS-Manager-Administration-Tool/GettingStarted-with-IIS-Manager.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
183
K A P I T E L
7
Verwenden von Befehlszeilentools
Inhalt dieses Kapitels:
Befehlszeilentools für die Verwaltung benutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appcmd.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erste Schritte mit Appcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Grundverben verwenden: List, Add, Set und Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Anwendungen, virtuellen Verzeichnissen und Anwendungspools arbeiten . . . . . . . . . . . . . . .
Mit Webservermodulen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausgeführte Arbeitsprozesse und Anforderungen untersuchen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit der Ablaufverfolgung für Anforderungsfehler arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Microsoft.Web.Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Windows PowerShell und IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WMI-Anbieter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
COM-Objekte für die IIS 7.0-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf der Begleit-CD
183
185
186
196
200
207
208
208
210
215
218
219
219
220
220
Auf der CD finden Sie weitere Tools und Ressourcen.
Befehlszeilentools für die Verwaltung benutzen
Es ist nicht immer möglich oder sinnvoll, den IIS-Manager für bestimmte Verwaltungsaufgaben zu
verwenden. IIS-Administratoren (Internet Information Services; Internetinformationsdienste) müssen
oft Befehlszeilentools für bedarfsorientierte oder automatisierte Vorgänge benutzen. Häufige
Verwaltungsaufgaben wie zum Beispiel die Erstellung und Konfiguration von Sites, Anwendungspools
und virtuellen Verzeichnissen können mithilfe von Befehlszeilentools und Programmierschnittstellen
effizienter gelöst werden.
Dieses Kapitel konzentriert sich auf die Verwaltung von IIS 7.0 über die Befehlszeile. Dazu wird
Appcmd.exe verwendet, ein einzelnes Befehlszeilentool, das verschiedene Skripts und Tools früherer
IIS-Versionen ersetzt. Appcmd wird standardmäßig installiert und ist sofort für die Verwaltung von IIS
über die Befehlszeile verfügbar. Es kann benutzt werden, um fast jeden IIS 7.0-Verwaltungsvorgang
innerhalb kürzester Zeit von der Befehlszeile aus manuell auszuführen oder eine große Anzahl von
Konfigurationsoperationen effizient zu automatisieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
184 Kapitel 7: Verwenden von Befehlszeilentools
Zusätzlich zu Appcmd bietet IIS 7.0 viele andere Automatisierungsoptionen an, für die die Entwicklung
von benutzerdefiniertem Skriptcode erforderlich ist. Diese Optionen sind für komplexere Automatisierungsvorgänge oder solche Aufgaben geeignet, die im Kontext eines anderen Programms ausgeführt
werden müssen. Diese Optionen werden in diesem Kapitel nicht ausführlich behandelt, doch am Ende
des Kapitels finden Sie einige Quellenverweise, so dass Sie mehr darüber erfahren können.
Zu diesen Optionen zählen:
Microsoft.Web.Administration Benutzen Sie den Namespace Microsoft.Web.Administration
(MWA), um von einer auf dem .NET Framework basierenden Anwendung aus häufige Verwaltungsaufgaben auszuführen.
Windows PowerShell Installieren Sie dieses Windows Server 2008-Feature, um IIS innerhalb
einer Befehlszeilenumgebung zu konfigurieren und zu verwalten. (Windows PowerShell ist für
Computer, die mit dem Betriebssystem Windows Vista, Windows Server 2003 oder Windows XP
arbeiten, auch als kostenloser Download erhältlich.)
WMI-Anbieter Der neue WMI-Anbieter (Windows Management Instrumentation) bietet die
Möglichkeit, die IIS 7.0-Konfiguration mithilfe von Skripts zu verwalten, die das WMI-Objektmodell nutzen.
COM-Objekte für die IIS 7.0-Konfiguration Sie können die COM-Objekte für die IIS 7.0Konfiguration (Component Object Model) direkt von C++-Programmen, Skripts oder verwaltetem
Code aus verwenden, um auf das IIS 7.0-Konfigurationssystem zuzugreifen.
Wenn Sie zwischen der über die Befehlszeile erfolgenden und der programmgesteuerten IIS 7.0Verwaltung wählen, ist Ihre Entscheidung oft von Ihren Präferenzen hinsichtlich des Programmiermodells und von der Umgebung abhängig, in der die Verwaltungsfunktionalität benötigt wird. Sie
sollten auch die Vorzüge und Einschränkungen der verfügbaren Optionen berücksichtigen, die in
Tabelle 7.1 beschrieben sind.
Tabelle 7.1 Vorzüge und Einschränkungen der Optionen zur Verwaltung über die Befehlszeile
Option
Vorteile
Appcmd
Microsoft.Web.Administration
COM-Konfigurationsobjekte
Nachteile
Schnelle Verwaltung, für die kein Code
erforderlich ist
Funktioniert bei vollständigen Windows
und bei Server Core-Installationen
Bietet neben den COM-Konfigurationsobjekten
bei vielen Operationen die beste Leistung
Beste Option für .NET Framework-Programme
Unterstützt die Remoteverwaltung
Beste Option für native C++-Programme
und Skripts
Funktioniert bei vollständigen Windows- und
bei Server Core-Installationen
Unterstützt die Remoteverwaltung
Bietet die beste Leistung
Keine Unterstützung der Remoteverwaltung
Erfordert administrative Rechte
Die Befehlszeile kann bei komplexen Verwaltungsvorgängen Einschränkungen unterliegen
Code ist erforderlich
Ist für Server Core nicht verfügbar, kann aber
für die Remoteverwaltung von Server CoreServern verwendet werden
Code ist erforderlich
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Appcmd.exe
185
Tabelle 7.1 Vorzüge und Einschränkungen der Optionen zur Verwaltung über die Befehlszeile (Fortsetzung)
Option
Vorteile
Nachteile
WMI
Unterstützt die Remoteverwaltung
Funktioniert bei vollständigen Windowsund bei Server Core-Installationen
Ermöglicht eine Remoteverwaltung, die von
anderen Windows-Betriebssystemen aus
erfolgen kann
Bietet die Flexibilität der Windows
PowerShell-Befehlszeilenumgebung
PowerShell
Code ist erforderlich
Führt zu einem WMI-Overhead
Erfordert administrative Rechte
Unterstützt unter Windows Server 2008 die
Remoteverwaltung nicht direkt
Ist für Server Core nicht verfügbar, kann aber
für die Remoteverwaltung von Server CoreServern verwendet werden
Erfordert die Entwicklung benutzerdefinierter
Cmdlets
Appcmd.exe
Appcmd.exe ist ein neues in IIS 7.0 enthaltenes Befehlszeilentool. Es ermöglicht die meisten Webserververwaltungsvorgänge über eine einzelne, sich intuitiv erschließende Befehlszeilenschnittstelle.
Dieses Tool ersetzt viele Befehlszeilentools und Skripts, die von IIS 6.0 zur Verfügung gestellt wurden,
um die wesentlichen Verwaltungsaufgaben zu lösen.
Mit Appcmd verfügt ein Webserveradministrator an der Befehlszeile über die folgenden Möglichkeiten:
Websites, Anwendungen virtuelle Verzeichnisse und Anwendungspools hinzufügen und konfigurieren
Webservermodule installieren, aktivieren und konfigurieren
Sites starten und beenden und Anwendungspools wiederverwenden
Gegenwärtig ausgeführte Arbeitsprozesse und Anforderungen auflisten
Die IIS- und ASP.NET-Konfiguration durchsuchen, anzeigen und modifizieren
Die Einstellungen zu Ablaufverfolgung für Anforderungsfehler konfigurieren
Besonders erwähnenswert ist die Möglichkeit, die IIS-Konfiguration einzusehen und zu bearbeiten.
Sie ermöglicht es den Administratoren, jeden beliebigen Konfigurationsvorgang unabhängig vom zu
konfigurierenden Feature schnell auszuführen oder zu automatisieren. Die restliche Funktionalität dient
allgemeinen Konfigurations- und Verwaltungsaufgaben.
Appcmd.exe ist für die lokale Verwaltung des Webservers vorgesehen (es unterstützt unter IIS 7.0 keine
Remoteverwaltung) und die Benutzer müssen über administrative Rechte verfügen, wenn sie mit dem
Tool arbeiten möchten. Soll eine Remoteverwaltung durchgeführt oder der Webserver von Benutzern
konfiguriert werden, die keine Serveradministratoren sind, benötigen Sie die Remotedelegierung, die
der IIS-Manager anbietet. Weitere Informationen hierzu erhalten Sie im achten Kapitel,
»Remoteverwaltung«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
186 Kapitel 7: Verwenden von Befehlszeilentools
Erste Schritte mit Appcmd
Appcmd.exe befindet sich im Verzeichnis %SystemRoot%\System32\Inetsrv. Da dieses Verzeichnis
standardmäßig kein Bestandteil der Umgebungsvariablen PATH ist, müssen Sie es entweder PATH
hinzufügen oder immer den vollständigen Pfad zum Befehl benutzen, wenn Sie Appcmd-Anweisungen
ausführen lassen möchten. Sollten Sie sich für die letzte Möglichkeit entscheiden, können Sie Appcmd
beispielsweise wie folgt aufrufen:
%systemroot%\system32\inetsrv\Appcmd list sites
Bei den in diesem Kapitel aufgeführten Befehlen verzichten wir auf die Angabe des vollständigen
Pfades, wenn wir Appcmd-Anweisungen präsentieren. Sie müssen somit entweder das InetsrvVerzeichnis der Umgebungsvariablen PATH hinzufügen oder jeden Befehl mit dem gesamten Pfad
vervollständigen.
Hinweis Um Appcmd.exe ausführen zu können, müssen Sie entweder das Inetsrv-Verzeichnis der Umgebungsvariablen PATH hinzufügen oder den vollständigen, zu Appcmd.exe führenden Pfad verwenden. Erst dann können die
Appcmd-Befehle ihre Arbeit verrichten.
Um Appcmd aufrufen zu können, müssen Sie am lokalen Computer als Mitglied der Gruppe Administratoren angemeldet sein. Wenn Sie darüber hinaus Appcmd unter Windows Vista verwenden, müssen
Sie das Tool als Administrator ausführen, um sicherzustellen, dass die Benutzerkontensteuerung die
korrekte Ausführung des Tools nicht verhindert. Dazu sollten Sie die Appcmd-Befehle aus einer
hochgestuften Eingabeaufforderung heraus aufrufen. Sie erhalten eine hochgestufte Eingabeaufforderung, wenn Sie diese mit der Option Als Administrator ausführen starten. Öffnen Sie dazu das
Startmenü, klicken Sie auf Alle Programme, wählen Sie Zubehör, und klicken Sie mit der rechten
Maustaste auf Eingabeaufforderung, um im folgenden Kontextmenü Als Administrator ausführen zu
wählen.
Hinweis Um Appcmd benutzen zu können, müssen Sie als Mitglied der Gruppe Administratoren angemeldet sein.
Unter Windows Vista müssen Sie die Appcmd-Befehle aus einer Eingabeaufforderung heraus aufrufen, die sie mit
der Option Als Administrator ausführen gestartet haben.
Appcmd verwendet eine Syntax, die an die natürliche Sprache angelehnt ist und zuerst das Verb und
dann das Objekt nennt. Dies ist ein Unterschied zu einigen anderen Windows-Tools, die mit einer
Syntax arbeiten, bei der zuerst das Objekt und dann das Verb angegeben wird, um Befehle für
verschiedene Objektkontexte zu ermöglichen (ein Beispiel für ein solches Tool ist netsh). Um beispielsweise auf dem Server die Websites aufzulisten, die das Site-Objekt verwenden, benutzen Sie den
folgenden Befehl:
Appcmd list sites
Jeder Befehl gibt eine oder mehrere Objektinstanzen oder Nachrichten aus, die während der Befehlsausführung generiert werden. Der vorherige Befehl könnte beispielsweise die folgende Ausgabe
erzeugen:
SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started)
SITE "TestSite" (id:2,bindings:http/*:80:testsite,state:Started)
Die Ausgabe ist eine Liste von Site-Objekten samt deren Bezeichnern (Default Web Site,
Liste führt außerdem einige wichtige Attribute des Objekts auf (id, bindings, state).
TestSite).
Die
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Erste Schritte mit Appcmd
187
Appcmd unterstützt eine große Anzahl von Objekten, und die meisten Objekte unterstützen einen
Standardsatz Verben, wie z.B. List, Add, Set und Delete. Einige Objekte besitzen zusätzliche Verben,
die objektspezifisch sind. Alle Verben akzeptieren Parameter, mit denen Sie das Verhalten eines
jeden Befehls anpassen können. Schließlich akzeptieren einige Verben einen speziellen Parameter,
der Bezeichner genannt wird und die Instanz des Objekts eindeutig identifiziert, für die das jeweilige
Verb ausgeführt werden soll. Der Bezeichner ist eine objektspezifische Benennung.
Sie können beispielsweise den Befehl Delete Site in Verbindung mit dem Sitenamen als Bezeichner
benutzen, um eine Website zu löschen, wie das folgende Beispiel zeigt:
Appcmd Delete Site "TestSite"
Dies führt zur folgenden Ausgabe:
SITE object "TestSite" deleted
Die Appcmd-Syntax und die Liste der unterstützten Objekte werden im folgenden Abschnitt »Die
Syntax von Appcmd« näher erläutert.
Die Syntax von Appcmd
Appcmd verwendet die folgende Syntax:
Appcmd <Verb> <Objekt> [Bezeichner] [/Parameter:Wert]
Diese Syntax besteht aus den folgenden Teilen:
Verb Das Verb ist die Aktion, die für das angegebene Objekt ausgeführt werden soll. Jedes Objekt
unterstützt einen festen Satz Verben, und jedes Verb kann die Verwendung von Bezeichnern und
Parametern ermöglichen, wobei es bisweilen Parameter gibt, die angegeben werden müssen. Die
meisten Objekte unterstützen grundlegende Befehle, wie z.B. List, Add, Set und Delete, und einige
Objekte bieten zusätzliche Befehle an. Das Verb muss immer angegeben werden. Es unterscheidet
nicht zwischen Groß- und Kleinschreibung.
Objekt Das Objekt ist der Name des Verwaltungsobjekts, für das das angegebene Verb aufgerufen
wird. Zusammen mit dem Verb bestimmt es den eigentlichen auszuführenden Befehl. Die unterstützten Objekte sind in Tabelle 7.2 aufgeführt. Das Objekt muss immer angegeben werden. Es
unterscheidet nicht zwischen Groß- und Kleinschreibung.
Bezeichner Der Bezeichner ist ein optionales Argument, das dem Objekt folgt. Sie können ihn
benutzen, um eine spezielle Instanz des Objekts, für das der Befehl ausgeführt werden soll, eindeutig zu identifizieren. Er ist für die meisten Befehle, die Aktionen für bestimmte Objektinstanzen
ausführen, zwingend erforderlich. Dazu zählen beispielsweise die Befehle Set und Delete. Der
Bezeichner weist ein objektspezifisches Format auf, das zur Identifizierung der Instanzen des
jeweiligen Objekts verwendet wird, und er kann zwischen Groß- und Kleinschreibung unterscheiden, muss dies aber nicht. Informationen zum Format des Bezeichners finden Sie in den
Abschnitten dieses Kapitels, die sich mit den einzelnen Objekten beschäftigen.
Parameter Verben können Parameter unterstützen, die im Format /Name:Wert angegeben werden
und die Ausführung des jeweiligen Befehls steuern. Die Parameternamen unterscheiden nicht
zwischen Groß- und Kleinschreibung, bei den Werten kann dies jedoch der Fall sein. Informationen
zu den unterstützten Parametern finden Sie in den Abschnitten dieses Kapitels, die sich mit den
einzelnen Objekten beschäftigen. Darüber hinaus bietet das Tool selbst einige allgemeine Parameter
an, die sich auf die Ausführung jedes Befehls auswirken. Informationen zu diesen Parametern
finden Sie später in diesem Kapitel im Abschnitt »Allgemeine Parameter«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
188 Kapitel 7: Verwenden von Befehlszeilentools
Jeder Appcmd-Befehl muss mindestens das Objekt und das Verb angeben. Möchten Sie beispielsweise
das List-Verb des Site-Objekts benutzen, um die Websites des Servers aufzulisten, können Sie den
folgenden Befehl verwenden:
Appcmd List Site
Sie können dem List-Verb des Site-Objekts einen optionalen Bezeichner übergeben, mit dem Sie die
Website eindeutig identifizieren, an deren Auflistung Sie interessiert sind. Das Site-Objekt verwendet
den Websitenamen als eindeutigen Bezeichner (nicht die Website-ID). Um somit nach einer spezifischen Website namens Default Web Site zu suchen, können Sie die folgende Syntax verwenden:
Appcmd List Site "Default Web Site"
Alternativ hierzu können Sie optionale Parameter anstelle des Bezeichners verwenden, um nach allen
Websiteinstanzen zu suchen, die bestimmte Attribute aufweisen. Sie können sogar alle Konfigurationsattribute der Websitedefinition als Parameter des List Site-Befehls angeben, um nach den Sites zu
suchen, deren Konfigurationsparameter auf die festgelegten Werte gesetzt sind. Um beispielsweise alle
Websites zu finden, deren serverAutoStart-Konfigurationsattribut auf false gesetzt ist, können Sie die
folgende Syntax benutzen:
Appcmd List Site /serverAutoStart:false
Eine Liste der unterstützten Objekte und Verben finden Sie im folgenden Abschnitt »Unterstützte
Objekte«.
Unterstützte Objekte
Appcmd unterstützt die in Tabelle 7.2 aufgelisteten Objekte und die dazugehörigen Befehle.
Tabelle 7.2 Von Appcmd unterstützte Objekte
Objekt
Beschreibung
Befehle
Site (Sites)
Websites verwalten
List, Set, Add, Delete, Start, Stop
App (Apps)
Anwendungen verwalten
List, Set, Add, Delete
Vdir (Vdirs)
Virtuelle Verzeichnisse verwalten
List, Set, Add, Delete
Apppool (Apppools)
Anwendungspools verwalten
List, Set, Add, Delete, Start, Stop, Recycle
Config (Configs)
IIS-Konfigurationsabschnitte verwalten
List, Set, Search, Lock, Unlock, Clear, Reset,
Migrate
Wp (Wps)
Listet die gegenwärtig ausgeführten Arbeitsprozesse auf
List
Request (Requests)
Listet die gegenwärtig ausgeführten HTTPAnforderungen auf
List
Module (Modules)
Verwaltet Webservermodule
List, Set, Add, Delete, Install, Uninstall
Backup (Backups)
Verwaltet Konfigurationssicherungen
List, Add, Delete, Restore
Trace (Traces)
Verwaltet die Konfiguration der Ablaufverfolgung für
Anforderungsfehler und Ablaufverfolgungsprotokolle
List, Configure, Inspect
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Erste Schritte mit Appcmd
189
Hinweis Beachten Sie, dass in der Spalte Objekt ebenfalls der Plural jedes Objektnamens aufgeführt ist. Der
Grund hierfür besteht darin, dass Appcmd einen Alias für jedes Objekt zur Verfügung stellt und diesen verwendet,
damit auch die Pluralform des Objektnamens für dessen Referenzierung verwendet werden kann. Deshalb können
Sie den Befehl List Sites (plural) benutzen, um Websites aufzulisten, während Sie z.B. Set Site (singular) verwenden, um ein Konfigurationsattribut einer Website festzulegen.
Die einzelnen Objekte und die dazugehörigen Befehle werden später in diesem Kapitel ausführlich
beschrieben. Sie erhalten ebenfalls Informationen über die unterstützten Objekte, Verben und die
Syntax jedes Verbs, wenn Sie die integrierte Appcmd-Befehlszeilenhilfe verwenden. Mehr dazu im
folgenden Abschnitt »Die Hilfe nutzen«.
Die Hilfe nutzen
Da Appcmd solch eine Vielfalt an Objekten und Verben bietet und jedes Verb über verschiedene Parameter verfügt, stellt das Programm ein umfassendes Hilfesystem zur Verfügung, das Sie beim Erlernen
der Verwendung des Tools unterstützt.
Es gibt bei Appcmd drei verschiedene Ebenen der Hilfe:
1. Die übergeordnete Hilfe. Zeigt eine Liste der vom Appcmd unterstützten Objekte und die allgemeinen Toolparameter an, die Sie für jeden Befehl verwenden können. Um diese Hilfe aufzurufen,
lassen Sie Appcmd ohne Parameter oder mit dem Parameter /? ausführen, zum Beispiel Appcmd /?.
2. Die Objekthilfe. Zeigt die Liste der Verben an, die von einem bestimmten Objekt unterstützt werden. Um diese Hilfe aufzurufen, benutzen Sie den Parameter /?, der dem Objektnamen folgen muss,
z.B. Appcmd Site /?.
3. Die Verbhilfe. Zeigt die Liste der Parameter an, die von einem bestimmten Verb eines bestimmten
Objekts unterstützt werden. Darüber hinaus werden Anwendungsbeispiele angezeigt. Um diese
Hilfe aufzurufen, benutzen Sie den Parameter /?, der dem Verb- und Objektnamen folgen muss, z.B.
Appcmd List Site /?.
Diese drei Ebenen verdeutlichen, wie die Benutzer das Hilfesystem von Appcmd in der Regel benutzen,
um zu erfahren, wie ein bestimmter Befehl ausgeführt wird. Sie können zuerst die Liste der unterstützten Objekte mit der übergeordneten Hilfe anzeigen lassen. Die daraus resultierende Ausgabe
enthält die Liste der unterstützten Objekte, wie nachfolgend gezeigt:
Allgemeines IIS-Befehlszeilen-Verwaltungstool
APPCMD (Befehl) (Objekttyp) <ID> </Parameter1:Wert1 ...>
Unterstützte Objekttypen:
SITE
APP
VDIR
...
Verwaltung von virtuellen Sites
Verwaltung von Anwendungen
Verwaltung von virtuellen Verzeichnissen
(Rufen Sie mit "/?" eine Liste der vom entsprechenden Objekt unterstützten Befehle auf, z. B. "appcmd.exe site /?".)
Allgemeine Parameter:
/?
Kontextbezogene Hilfemeldung anzeigen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
190 Kapitel 7: Verwenden von Befehlszeilentools
/text<:value>
/xml
Ausgabe im Textformat generieren (Standard)
/text:* Alle Objekteigenschaften in der Detailansicht anzeigen
/text:<Attribut> Wert des angegebenen Attributs
für jedes Objekt anzeigen
Ausgabe im XML-Format generieren
Hiermit generieren Sie eine Ausgabe, die an einen
anderen Befehl im "/in"-Modus übergeben werden kann.
...
Verwenden Sie das Ausrufezeichen "!", um Parameter anzugeben, die denselben Namen haben
wie die allgemeinen Parameter, beispielsweise "/!debug:value" zum Festlegen einer Konfigurationseigenschaft "debug".
Die übergeordnete Hilfe zeigt zusätzlich die Liste der allgemeinen Toolparameter an, die die Ausführung des Programms unabhängig vom Befehl kontrollieren. Weitere Informationen zu diesen
Parametern erhalten Sie später in diesem Kapitel im Abschnitt »Allgemeine Parameter«.
Sie können nun spezifische Informationen zu einem bestimmten Objekt abrufen, indem Sie die Syntax
Appcmd Objekt /? verwenden. Daraufhin wird eine Liste der unterstützten Verben angezeigt. Um beispielsweise die vom Site-Objekt unterstützten Verben aufzulisten, benutzen Sie die folgende Anweisung:
Appcmd Site /?
Die Ausgabe präsentiert sich wie folgt:
Verwaltung von virtuellen Sites
APPCMD (Befehl) SITE <ID> <-Parameter1:Wert1 ...>
Unterstützte Befehle:
list
set
add
delete
start
stop
Virtuelle Sites auflisten
Virtuelle Site konfigurieren
Neue virtuelle Site hinzufügen
Virtuelle Site löschen
Virtuelle Site starten
Virtuelle Site beenden
(Rufen Sie mit /? die Hilfe für die einzelnen Befehle ab, z. B. "appcmd.exe add site /?".)
Der letzte Schritt besteht darin, die spezifische Syntax des benötigten Verbs mit der Syntax Appcmd Verb
Objekt /? abzurufen. Um beispielsweise die spezifische Syntax des Befehls List Site zu erhalten, benutzen
Sie die folgende Anweisung:
Appcmd List Site /?
Dies führt zur folgenden Ausgabe:
Virtuelle Sites auflisten
APPCMD list SITE <ID> <-Parameter1:Wert1 ...>
Listet die virtuellen Sites auf dem Computer auf. Mit diesem Befehl kann eine
bestimmte Site über die ID oder URL gesucht werden, oder es können null oder
mehrere Sites gesucht werden, die den angegebenen Siteattributen entsprechen.
Unterstützte Parameter:
identifier
Sitename oder URL der gesuchten Site
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Erste Schritte mit Appcmd
191
/site.name
Sitename oder URL der gesuchten Site (identisch mit der ID)
/?
Dynamische Eigenschaften der Site anzeigen, mit denen ein oder mehrere
Siteobjekte gesucht werden können
Beispiele:
appcmd list sites
Alle Sites auf dem Computer auflisten
appcmd list site "Default Web Site"
Site "Default Web Site" suchen
appcmd list site http://localhost/app1
Der angegebenen URL zugeordnete Site suchen
appcmd list site /serverAutoStart:false
Alle Sites suchen, deren "serverAutoStart"-Konfigurationseigenschaft auf
"false" festgelegt ist
Beachten Sie, dass die Hilfeausgabe die Liste der unterstützten Parameter einschließlich der Bezeichner
enthält. Der hier aufgeführte Parameter /? gibt an, dass Sie ebenfalls die von jeder Objektinstanz
bereitgestellten dynamischen Parameter verwenden können. Beim List Site-Befehl können Sie jedes
der in der Websitedefinition angegebenen Konfigurationsattribute als Parameter festlegen, um nach
allen Websiteinstanzen zu suchen, denen die angegebenen Parameterwerte zugewiesen sind.
Hinweis Um die Liste der dynamischen Parameter abzurufen, können Sie das Verb Set für eine mit einem Bezeichner angegebene Objektinstanz und den Parameter /? verwenden. Dies führt dazu, dass die unterstützten Attribute
aufgelistet werden. Zum Beispiel: Appcmd Set Site "Default Web Site" /?. Dabei handelt es sich sicherlich nicht um
die ideale Vorgehensweise. Es ist jedoch eine Möglichkeit, um die dynamischen Parameter, die Sie für jeden, dynamische Objektparameter unterstützenden Befehl verwenden können, schnell anzeigen zu lassen.
Die Liste der Beispiele zu jedem Befehl ist sehr praktisch, da sie zeigt, wie der jeweilige Befehl oft
genutzt wird. Beim Websiteobjekt zeigt die Liste beispielsweise, wie Sites aufgelistet werden, und zwar
alle Sites, Sites, die dem angegebenen Bezeichner (Name) entsprechen, Sites, die einen bestimmten
URL bedienen, und Sites, die einem bestimmten Konfigurationsparameterwert entsprechen.
Hinweis Achten sie darauf, die Beispiele zu einem Verb zu betrachten, um schnell ein Gespür für die verschiedenen
Möglichkeiten der Verwendung des Befehls zu bekommen.
Die Ausgabe von Appcmd verstehen
Die Ausgabe von Appcmd enthält in der Regel eine Liste mit Elementen. Bei Befehlen, die Objektinstanzen zurückgeben, wie z.B. der Befehl List, handelt es sich um eine Liste mit Objektinstanzen. Bei
Befehlen, die Aktionen für bestimmte Objektinstanzen ausführen, handelt es sich um eine Liste mit
Nachrichten, die Aufschluss über die ausgeführte Aktion geben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
192 Kapitel 7: Verwenden von Befehlszeilentools
Die Ausgabe des Befehls List Site enthält beispielsweise eine Liste mit Instanzen von Websiteobjekten.
Dazu ein Beispiel:
SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started)
SITE "TestSite" (id:2,bindings:http/*:80:testsite,state:Started)
Appcmd benutzt standardmäßig eine benutzerfreundliche Listenansicht, die den Objekttyp, den
Bezeichner, der für die anschließenden Befehle zur Identifizierung der jeweiligen Instanz benötigt wird,
und mehrere allgemeine Attribute jeder Objektinstanz aufführt. Beim Site-Objekt ist dies die ID der
Website, die Liste der konfigurierten Bindungen und der Status der Website (der angibt, ob sie gestartet
oder beendet ist).
Jede Instanz des Site-Objekts enthält mehr Attribute, als in der benutzerfreundlichen Listenansicht zu
sehen sind. Um diese Parameter anzeigen zu lassen, stehen Ihnen mehrere Optionen zur Verfügung:
Textansicht In dieser Ansicht werden alle Attribute aller Objektinstanzen in einer hierarchischen
Eigenschaft/Wert-Struktur angezeigt.
Parametereinzelansicht In dieser Ansicht können Sie für jede Objektinstanz den Wert eines
bestimmten Attributs anzeigen lassen.
Konfigurationsansicht In dieser Ansicht wird das jeder Objektinstanz zugrunde liegende
Element als Konfigurationsfragment angezeigt.
Hinweis Wenn Sie eine Liste der allgemeinen Parameter benötigen, lesen Sie später in diesem Kapitel den
Abschnitt »Allgemeine Parameter«.
Die Textansicht bietet die Möglichkeit, die Attribute aller Objektinstanzen schnell anzeigen zu lassen.
Um die Textansicht zu verwenden, benutzen Sie den allgemeinen Parameter /text:*. Nachfolgend ist
beispielsweise ein Teil der Ausgabe des Befehls List Sites aufgeführt, der mit dem Parameter /text:*
aufgerufen wurde:
SITE
SITE.NAME:"Default Web Site"
SITE.ID:"1"
bindings:"http/*:80:,https/*:443:
state:"Started"
[site]
name:"Default Web Site"
id:"1"
serverAutoStart:"true"
[bindings]
[binding]
protocol:"http"
bindingInformation:"*:80:"
[binding]
protocol:"https"
bindingInformation:"*:443:"
[limits]
maxBandwidth:"4294967295"
maxConnections:"4294967295"
connectionTimeout:"00:02:00"
Wie Sie sehen können, enthält diese Ausgabe mehr Informationen zu jeder Websiteinstanz als die
Standardausgabe.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Erste Schritte mit Appcmd
193
Wenn Sie nur an bestimmten Attributen jeder Objektinstanz interessiert sind, können Sie wahlweise die
Parametereinzelansicht einsetzen. Dazu benutzen Sie den allgemeinen Parameter /text:ParameterName,
wobei ParameterName das Attribut ist, dessen Wert Sie anzeigen lassen möchten. Nachfolgend ist die
Ausgabe des Befehls List Sites aufgeführt, für den der Parameter /text:ParameterName verwendet wurde,
damit nur die Sitenamen angezeigt werden:
Default Web Site
TestSite
Schließlich können Sie die Konfigurationsansicht benutzen, um das mit jeder Objektinstanz verknüpfte
Konfigurationselement als Konfigurationsfragment anzeigen zu lassen. Dazu verwenden Sie den
allgemeinen Parameter /config, der die explizit gesetzte Konfiguration anzeigt, oder den Parameter /
config:*, der die gesamte Konfiguration anzeigt. Das Config-Objekt verwendet standardmäßig dieses
Format. Nachfolgend ist die Ausgabe des Befehls List Sites aufgeführt, für den der Parameter /config
verwendet wurde:
<site name="Default Web Site" id="1">
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
<limits />
<logFile />
<traceFailedRequestsLogging enabled="true" />
<applicationDefaults />
<virtualDirectoryDefaults />
<application path="/">
<virtualDirectoryDefaults />
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
</application>
</site>
Sie können ebenfalls den Parameter /xml benutzen, um die Ergebnisse von Appcmd-Befehlen in Form
von XML auszugeben. Dieser Parameter kann verwendet werden, um die Ergebnisse eines AppcmdBefehls an einen anderen Befehl weiterzuleiten, so dass mehrere aufeinander bezogene Befehle im
Rahmen einer Befehlsverknüpfung miteinander verkettet werden können.
Hinweis Weitere Informationen zur Befehlsverknüpfung finden Sie unter http://mvolo.com/blogs/serverside/
archive/2007/06/19/Do-complex-IIS-management-tasks-easily-with-appcmd-command-piping.aspx.
Der XML-Ausgabemodus kann genutzt werden, um die Ergebnisse von Appcmd-Befehlen in andere
Softwareprogramme zu exportieren und Massenoperationen durchzuführen.
Hinweis Weitere Informationen zu Massenoperationen finden Sie unter http://mvolo.com/blogs/serverside/archive/
2007/10/06/Create-IIS7-websites-and-application-pools-fast-with-appcmd.aspx.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
194 Kapitel 7: Verwenden von Befehlszeilentools
Allgemeine Parameter
Zusätzlich zu spezifischen Verbparametern unterstützt Appcmd auch allgemeine Parameter, die sich auf
die Ausführung aller Appcmd-Befehle auswirken. Diese Parameter sind in Tabelle 7.3 aufgeführt.
Tabelle 7.3 Allgemeine Appcmd-Parameter
Parameter
Beschreibung
/?
Zeigt eine kontextbezogene Hilfe an. Weitere Informationen hierzu finden Sie früher in diesem Kapitel im Abschnitt
»Die Hilfe nutzen«.
/text
Erzeugt eine Ausgabe im Textformat. Dies ist die Standardeinstellung. Sie können ebenfalls /text:* angeben, um
eine detaillierte Textansicht anzeigen zu lassen, die für jedes Objekt alle Attribute aufführt. Alternativ hierzu
können Sie den Parameter /text: angeben, um für jedes Objekt nur den Wert des angegebenen Attributs anzeigen
zu lassen. Weiterführende Informationen finden Sie später in diesem Kapitel im Abschnitt »Die Ausgabe von Appcmd verstehen«.
/xml
Generiert eine Ausgabe im XML-Format. Sie können dieses Format verwenden, um die Ausgabe des Tools zu
speichern oder zu einem anderen Programm zu transportieren. Es bildet die Basis für die Befehlsverknüpfung.
- oder /in
Führt den Befehl für den von der Standardeingabe bereitgestellten Datensatz aus. Benutzen Sie diesen Parameter, um Appcmd-Befehle für Objektsätze ausführen zu lassen, die von der Ausgabe eines anderen Befehls zur
Verfügung gestellt werden.
/config
Zeigt die zu jedem aufgelisteten Objekt gehörende Konfiguration an. Sie können ebenfalls /config:* benutzen, um
die gesamte Konfiguration einschließlich der von den Schemastandards geerbten Werte anzeigen zu lassen.
/metadata
Zeigt Konfigurationsmetadaten an, wenn Konfigurationsobjekte aufgelistet werden und /text:* verwendet wird.
Dazu zählen auch Informationen zu den Typen der Konfigurationsattribute.
/commit
Kontrolliert das Speichern einer Konfiguration. Die Konfiguration wird standardmäßig in dem Konfigurationspfad
gespeichert, auf den sie angewendet wird. Dabei wird die delegierte Konfiguration bevorzugt, sofern die Konfiguration auf der Website-, Anwendungs- oder URL-Ebene festgelegt wird. Sie können dies jedoch mit diesem
Parameter unabhängig von dem Konfigurationspfad kontrollieren, auf den die Konfiguration angewendet wird. Sie
können einen festen Konfigurationspfad angeben oder apphost, machine bzw. webroot für die entsprechende
Konfigurationsdateiebene des Servers verwenden. Alternativ hierzu können Sie die Werte Site, App und Parent
benutzen, um das jeweilige Segment des aktuellen Konfigurationspfades zu speichern. Weitere Informationen
finden Sie später in diesem Kapitel im Einschub »Wo die Konfiguration gespeichert wird«.
/debug
Zeigt Debuginformationen zur Ausführung aller Befehle an. Dazu zählen auch die für die Ausführung benötigte
Zeit, die übergebenen Parameter, die Anzahl der zurückgegebenen Objekte und alle Fehler. Sie können diese
Informationen nutzen, um Appcmd-Befehle zu debuggen oder zu optimieren.
Wenn Sie einem Befehl einen Parameter übergeben, der denselben Namen wie ein allgemeiner Parameter hat, können Sie dem Parameter zur besonderen Kennzeichnung ein Ausrufezeichen (!) voranstellen. Müssten Sie beispielsweise das commit-Konfigurationsattribut für den fiktiven Konfigurationsabschnitt mysection setzen, könnten Sie die folgende Syntax benutzen:
appcmd set config /section:mysection /!commit:somevalue
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Erste Schritte mit Appcmd
195
Bereichsoperatoren verwenden
Wenn Sie das List-Verb für ein Appcmd-Objekt benutzen, können Sie Parameter einbinden, um die
zurückgegebenen Ergebnisse anhand von Attributwerten zu filtern, die Sie zu diesem Zweck angeben.
Wenn Sie beispielsweise nach allen Sites suchen, deren serverAutoStart-Attribut auf false gesetzt ist,
können Sie die folgende Syntax verwenden:
appcmd list sites /serverAutoStart:false
Hinweis Weitere Informationen zur Verwendung des List-Befehls zum Auflisten von Objekten finden Sie später in
diesem Kapitel im Abschnitt »Objekte mit dem List-Befehl auflisten und auffinden«.
Das Filtern mithilfe genau angegebener Objektattributwerte ist jedoch bisweilen mit zu vielen Einschränkungen verbunden. Sie müssen oft nach Objekten suchen, deren Attributwerte innerhalb eines
bestimmten Bereichs liegen. Appcmd ermöglicht dies durch den Einsatz von Bereichsoperatoren, mit
denen Objekte gefiltert werden können, deren Attributwerte einem bestimmten Ausdruck und nicht
einem festen Wert entsprechen.
Wollten wir beispielsweise alle Websites mit einer ID über 300 aufspüren, könnten wir den Operator >=
wie folgt benutzen:
appcmd list sites "/id:$>=300"
Hinweis Da in einer Befehlszeile die Zeichen > und < einen speziellen Zweck erfüllen, sollten Sie darauf achten,
einen Parameter, der Bereichsoperatoren enthält, vollständig in Anführungszeichen einzuschließen.
Sie können für jedes unterstützte Attribut Bereichsoperatoren angeben, indem Sie die $OPVAL-Syntax
verwenden, wobei OP (Operator) dem Bereichsoperator und VAL (engl. für Value; Wert) dem Wert des
Operators entspricht.
Tabelle 7.4 zeigt die unterstützten Operatoren.
Tabelle 7.4 Von Appcmd unterstützte Operatoren
Operator
Beschreibung
>
Größer-als-Operator für numerische Attribute. Entspricht allen Attributwerten, die größer als der angegebene Wert
sind. /id:$>10 entspricht beispielsweise 11, aber nicht 9.
>=
Größer-gleich-Operator für numerische Attribute. Entspricht allen Attributwerten, die größer als der oder gleich dem
angegebenen Wert sind. /id:$>=10 entspricht beispielsweise 10, aber nicht 9.
<
Kleiner-als-Operator für numerische Attribute. Entspricht allen Attributwerten, die kleiner als der angegebene Wert
sind. /id:$<10 entspricht beispielsweise 9, aber nicht 10.
<=
Kleiner-gleich-Operator für numerische Attribute. Entspricht allen Attributwerten, die kleiner als der oder gleich dem
angegebenen Wert sind. /id:$<=10 entspricht beispielsweise 10, aber nicht Ziffer 11.
=
Entspricht-Ausdruck mit Platzhalterzeichen für Zeichenfolgenattribute. Der Platzhalterzeichenausdruck kann die
Zeichen * und ? enthalten. /name:$=*Site entspricht beispielsweise MySite und Default Web Site, aber nicht Site 1.
<>
Logisches NICHT-Operator. Entspricht allen Objekten, die nicht über den genau angegebenen Attributwert
verfügen. /name:$<>MySite entspricht beispielsweise jedem Namen außer MySite. Dieser Operator unterstützt
kleine Platzhalterzeichen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
196 Kapitel 7: Verwenden von Befehlszeilentools
Sie können die Bereichsoperatoren verwenden, um nach Objekten zu suchen, deren Attribute den von
Ihnen angegebenen Bereichsbedingungen entsprechen. Um beispielsweise alle Sites zu finden, die
beendet sind und den Namen Site N besitzen, wobei N eine einstellige Ziffer ist, können Sie die folgende
Syntax benutzen:
appcmd list sites /state:stopped "/name:$=Site ?"
Häufige Fehler bei der Arbeit mit Appcmd vermeiden
Wenn Sie mit Appcmd arbeiten, sollten Sie einige Besonderheiten der Befehlszeile kennen, so dass Sie
nicht plötzlich mit einem unerwarteten Verhalten konfrontiert werden. Benutzen Sie die folgenden
Techniken, um sich aus Schwierigkeiten herauszuhalten:
Umschließen Sie den Bezeichner und die Befehlsparameter mit Anführungszeichen ("), um
sicherzustellen, dass alle Parameterinhalte innerhalb der Befehlszeile richtig gruppiert sind. Dies
gilt besonders dann, wenn Leerzeichen oder spezielle Zeichen wie > oder < darin enthalten sind. Sie
sollten dies ebenfalls tun, wenn Sie Skripts oder Batchdateien schreiben, die Appcmd-Befehle
aufrufen. Zum Beispiel: appcmd list sites "/id:$>10". Dies ist eine Einschränkung, die die Befehlszeilenshell und nicht Appcmd betrifft.
Achten Sie darauf, die Standard-ASCII-Zeichen für die Parametertrennzeichen - und / sowie die
doppelten (") und einfachen (') Anführungszeichen anstelle der erweiterten Zeichen (“) und (’) zu
verwenden. Wenn Befehle per E-Mail versendet oder in Microsoft Office-Programme eingefügt
werden, können aus den normalen Zeichen die erweiterten Versionen werden, die andere Zeichencodes besitzen und deshalb von der Befehlszeilenshell oder von Appcmd möglicherweise nicht richtig verarbeitet werden. Verwenden Sie deshalb auch sicherheitshalber anstelle von - das Zeichen /,
um Parameternamen einzuleiten. Benutzen Sie beispielsweise /parameter und nicht -parameter.
Achten Sie auf Parameter, die mit den Zeichen \" enden, da die Kombination \" ein Escapezeichen
für das doppelte Anführungszeichen (") ist und nicht das Ende des Parameters kennzeichnet. Um
Verwechselungen zu vermeiden, benutzen Sie das Zeichen doppelt (\\). Zum Beispiel:
"/physicalPath:c:\test\\".
Die Grundverben verwenden: List, Add, Set und Delete
Die meisten Appcmd-Objekte unterstützen einen grundlegenden Satz Verben: List, Add, Set und Delete.
Diese Verben stellen für fast alle Objekte eine einheitliche Funktionalität zur Verfügung. Sobald Sie ein
Gespür für die Arbeitsweise dieser Verben entwickelt haben, wird die Bedienung von Appcmd nicht
mehr schwierig sein.
Objekte mit dem List-Befehl auflisten und auffinden
Das List-Verb ist eines der nützlichsten Verben, und Appcmd bietet es für all seine Objekttypen an. Es
listet alle verfügbaren Instanzen eines Objekttyps auf, so dass Sie nach einer bestimmten Objektinstanz
suchen können. Sie können auch Attribute angeben, um Abfragen zum Auffinden von Objektinstanzen
zu initiieren.
Sie können mithilfe der folgenden Appcmd-Syntax das List-Verb benutzen, um alle Objektinstanzen
eines bestimmten Objekttyps aufzulisten:
appcmd list Objekt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Grundverben verwenden: List, Add, Set und Delete
197
Dabei ist Objekt das Objekt, dessen Instanzen Sie auflisten lassen möchten. Um beispielsweise alle auf
Ihrem Server konfigurierten Websites anzeigen zu lassen, benutzen Sie die folgende Anweisung:
appcmd list sites
Sie können ebenfalls Parameter angeben, so dass Sie die Liste auf solche Websites beschränken, die die
von Ihnen angegebenen Attribute besitzen. Die für diese Operation verfügbare Attributliste basiert auf
der Konfigurationsdefinition der Website und enthält ebenfalls alle Attribute, die von Appcmd für jedes
Site-Objekt generiert wurden (wie z.B. das Attribut State).
Möchten Sie beispielsweise alle Sites anzeigen lassen, die beendet wurden, geben Sie den folgenden
Befehl ein:
appcmd list sites /state:Stopped
Die Ausgabe dieses Befehls gibt nur die Sites zurück, deren Status (state) Stopped (beendet) ist. Sie
können dem Befehl beliebig viele Parameter übergeben. Möchten Sie beispielsweise die Sites abfragen,
die beim Start des Servers nicht automatisch gestartet, aber gegenwärtig ausgeführt werden, können Sie
den folgenden Befehl benutzen:
appcmd list sites /serverAutoStart:false /state:Started
Zusätzlich zur Angabe exakter Attributwerte für die Abfrage von Objekten können Sie mithilfe der
Appcmd-Bereichsoperatoren Ausdrücke verwenden, um eine Abfrage auszuweiten. Sie können
beispielsweise wie folgt alle Websites mit einer ID über 300 anzeigen lassen:
appcmd list sites "/id:$>300"
Die unterstützten Bereichsoperatoren sind Ungleich (logisches NICHT), Größer-als, Größer-gleich,
Kleiner-als, Kleiner-gleich und ein Entspricht-Ausdruck mit Platzhalterzeichen für Zeichenfolgenwerte. Weitere Informationen zur Verwendung von Bereichsoperatoren finden Sie früher in diesem
Kapitel im Abschnitt »Bereichsoperatoren verwenden«.
Letztendlich können Sie auch immer nach einer speziellen Websiteinstanz suchen, indem Sie deren
eindeutigen Bezeichner, also den Namen der Website angeben. Beim Auflisten von Objekten wird der
Bezeichner für jede Objektinstanz angezeigt, damit er für eine spätere Referenzierung dieses Objekts
verwendet werden kann. Um beispielsweise die Website mit dem Namen Default Web Site zu lokalisieren,
benutzen Sie die folgende Syntax:
appcmd list site "Default Web Site"
Darüber hinaus unterstützt das Site-Objekt einen URL als Bezeichner. In diesem Fall löst das Tool unter
Verwendung der Bindungsinformationen aller Websites den URL automatisch auf, um die entsprechende Website zu erhalten. Dies funktioniert auch beim Auflisten der Objekte App und Vdir. Um beispielsweise die Website anzuzeigen, die konfiguriert wurde, um den URL http://localhost/test.html zu
bedienen, können Sie die folgende Syntax verwenden:
appcmd list site "http://localhost/test.html"
Denken Sie daran, dass das List-Verb für alle Objekttypen verwendet werden kann. Zusätzlich zur
Anzeige von Websites können Sie Anwendungspools, Anwendungen, virtuelle Verzeichnisse,
Arbeitsprozesse und aktive HTTP-Anforderungen auflisten. Testen Sie das List-Verb mit allen
unterstützten Objekttypen. Lesen Sie Tabelle 7.2 oder lassen Sie den Befehl Appcmd.exe /? ausführen,
wenn Sie wissen möchten, welche Objekttypen unterstützt werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
198 Kapitel 7: Verwenden von Befehlszeilentools
Objekte mit dem Add-Verb erstellen
Viele Appcmd-Objekte unterstützen die Erstellung neuer Objektinstanzen. Sie können beispielsweise
neue Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools erstellen. Wie Sie
vielleicht schon erraten haben, benutzen Sie das Add-Verb, um diese Aufgaben auszuführen. Das AddVerb hat in der Regel die folgende Syntax:
appcmd add Objekt [/Parameter:Wert]*
Dabei ist Objekt das Objekt, dessen Instanz Sie erstellen. Das Add-Verb eines Objekts verlangt die Angabe
bestimmter Parameter, die während der Erstellung der Objektinstanz verwendet werden. Darüber
hinaus können Sie für das Add-Verb oft zusätzliche Parameter angeben, die normalerweise vom Set-Verb
angeboten werden, damit diese Attribute direkt nach der Objekterstellung gesetzt werden. Sie können
die Liste der Parameter, die für das Verb angegeben werden müssen, über die Add-Befehl-Hilfe zu
diesem Verb abrufen. Um beispielsweise zu erfahren, wie eine Site hinzugefügt wird, können Sie den
folgenden Befehl aufrufen:
appcmd add site /?
Die Ausgabe dieser Hilfeanforderung über die Befehlszeile zeigt, dass Sie eine Site hinzufügen können,
indem Sie die Parameter name, bindings und physicalPath angeben. Das nachfolgende Beispiel zeigt, wie
eine Website mit dem Add Site-Befehl hinzugefügt wird:
appcmd add site /name:MyWebSite /bindings:"http/*:81:"
/physicalPath:"c:\inetpub\wwwroot"
Hinweis Weitere Informationen zur Verwendung von Appcmd für die Erstellung von Websites finden Sie im neunten Kapitel, »Verwalten von Websites«.
Die Ausgabe des Add-Befehls zeigt in der Regel die vom Befehl erstellten Objekte. Im vorherigen
Beispiel hat der Add Site-Befehl eine neue Website, eine Stammanwendung und ein virtuelles
Stammverzeichnis erzeugt.
Hinweis Im Gegensatz zu den Befehlen Set und Delete akzeptiert der Add-Befehl keinen Bezeichner. Der Grund
hierfür besteht darin, dass der Add-Befehl keinen Bezeichner benötigt, um nach einem bereits vorhandenen Objekt
zu suchen – er erzeugt ein neues Objekt und verlangt, dass die zugrunde liegenden Parameter, die natürlich auch
den Bezeichner für spätere Suchen beinhalten können, zur Verfgügung gestellt werden, so dass das Objekt generiert werden kann. Wenn Sie beispielsweise den Add Site-Befehl benutzen, müssen Sie den /name-Parameter zur
Verfügung stellen, anstatt den Namen als Bezeichner anzugeben.
Bereits vorhandene Objekte mit dem Set-Verb ändern
Zusätzlich zur Erstellung neuer Objekte mit dem Add-Verb können Sie ebenfalls die Konfigurationsattribute bereits vorhandener Objekte ändern. Dazu benutzen Sie das Set-Verb mit der folgenden Syntax:
appcmd set Objekt Bezeichner [/Parameter:Wert …]
Dabei ist Objekt das Objekt, dessen Instanz Sie ändern möchten. Das Set-Verb verlangt vom Bezeichner,
dass dieser die zu modifizierende Objektinstanz eindeutig identifiziert. Um die Richtigkeit zu
gewährleisten, muss der exakte Bezeichner verwendet werden. Benutzen Sie für das Site-Objekt
beispielsweise den Sitenamen anstelle eines URLs.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Die Grundverben verwenden: List, Add, Set und Delete
199
Hinweis Im Gegensatz zur Vorgehensweise beim Add-Verb identifizieren Sie die gewünschte Objektinstanz nicht
durch die Angabe spezifischer Objektparameter, wie z.B. /name beim Site-Objekt. Stattdessen müssen Sie den
Bezeichner benutzen, um die Objektinstanz eindeutig zu identifizieren.
Um herauszufinden, welche Attribute Sie ändern können, indem Sie diese als Parameter des Set-Verbs
angeben, benutzen Sie die Hilfe zum Verb. Um beispielsweise festzustellen, welche Parameter Sie in
Verbindung mit dem Befehl Set Site verwenden können, benutzen Sie die folgende Anweisung:
appcmd set site /?
Wenn die angezeigte Parameterliste /? enthält, bedeutet dies, dass Sie Konfigurationsparameter setzen
können, die auf der Hilfeseite nicht aufgeführt sind. Dies ist bei fast allen Appcmd-Objekten der Fall,
weil diese über verknüpfte Konfigurationsinformationen verfügen, die Sie modifizieren können. Um zu
ermitteln, welche Konfigurationsattribute Sie für das Set-Verb verwenden können, müssen Sie die
Attribute eines bereits vorhandenen Objekts untersuchen. Dazu benutzen Sie das List-Verb in Verbindung mit der detaillierten Textansicht oder das Verb Set mit dem Parameter /?. Möchten Sie beispielsweise die Objekteigenschaften einsehen, die Sie für jedes Site-Objekt setzen können, hilft die
folgende Syntax weiter.
appcmd set site "Default Web Site" /?
Hinweis Sie müssen eine bereits vorhandene Objektinstanz angeben, wenn Sie das Set-Verb mit dem Parameter
/? benutzen, um die unterstützten Parameter auflisten zu lassen. Andernfalls erhalten Sie die Standardhilfeseite des
Verbs.
Die Ausgabe dieses Befehls ist eine Liste aller Parameter, die Sie für das Set-Verb (aber auch bei
Abfragen für das List-Verb) des Objekts verwendet werden können. Nachfolgend ist beispielsweise die
Ausgabe des vorherigen Befehls aufgeführt:
-name
-id
-serverAutoStart
-bindings.[protocol='string',bindingInformation='string'].protocol
-bindings.[protocol='string',bindingInformation='string'].bindingInformation
-limits.maxBandwidth
-limits.maxConnections
…
Hinweis Weitere Informationen zur Referenzierung und zum Setzen von Konfigurationsattributen sowie zur
Modifizierung von Konfigurationsauflistungen finden Sie später in diesem Kapitel im Abschnitt »Arbeiten mit der
Konfiguration«.
Objekte mit dem Delete-Verb entfernen
Kein Konfigurationshilfsmittel wäre vollständig, ohne Ihnen die Möglichkeit zu bieten, Daten zu
entfernen. Appcmd stellt eine anschauliche Syntax zum Entfernen von Konfigurationen zur Verfügung.
Dabei handelt es sich um das Verb Delete, mit dem Objekte gelöscht werden.
appcmd delete Object identifier
Das Delete-Verb verlangt ähnlich wie das Set-Verb, dass mit dem Bezeichner die zu löschende Objektinstanz eindeutig identifiziert wird. Um die Richtigkeit zu gewährleisten, muss der exakte Bezeichner
verwendet werden. Benutzen Sie für das Site-Objekt beispielsweise den Sitenamen anstelle eines URLs.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
200 Kapitel 7: Verwenden von Befehlszeilentools
Hinweis Im Gegensatz zur Vorgehensweise beim Add-Verb identifizieren Sie die gewünschte Objektinstanz nicht
durch die Angabe spezifischer Objektparameter, wie z.B. /name beim Site-Objekt. Stattdessen müssen Sie den
Bezeichner benutzen, um die Objektinstanz eindeutig zu identifizieren.
Sie können beispielsweise eine Website löschen, indem Sie wie folgt den Befehl Delete
Site
benutzen:
appcmd delete site "MyNewWebSite"
Vorsicht Wenn Sie eine Website löschen, werden automatisch auch alle darin enthaltenen Definitionen von
Anwendungen und virtuellen Verzeichnissen gelöscht. Die Inhalte bleiben jedoch erhalten.
Arbeiten mit der Konfiguration
Eine der wichtigsten Aufgaben, für die Appcmd verwendet wird, ist die Bearbeitung der IIS 7.0Konfiguration. Appcmd-Befehle sind bestens geeignet, um Konfigurationsänderungen zu kapseln, so
dass Sie sie anderen Benutzern zeigen, für eine spätere Verwendung speichern oder zur Automatisierung von Verwaltungsaufgaben verwenden können. Für die meisten Konfigurationsaufgaben gilt,
dass es sehr zeitaufwändig ist, sie mit dem IIS-Manager auszuführen. Deshalb greift die IIS 7.0Onlinehilfe genauso wie dieses Buch auf Appcmd zurück, um zu demonstrieren, wie solche Aufgaben
gelöst werden.
Obwohl Sie die Konfiguration für die Hauptobjekte des Webservers – wie zum Beispiel Websites,
Anwendungen, virtuelle Verzeichnisse und Anwendungspools – über die entsprechenden AppcmdObjekte verwalten können, werden die meisten Konfigurationsabschnitte nicht über solche Objekte
offen gelegt. Stattdessen benutzen Sie das Config-Objekt, um Konfigurationseinstellungen zu bearbeiten.
Mit dem Config-Objekt können Sie jeden Konfigurationsabschnitt des IIS 7.0-Konfigurationsstacks
bearbeiten (und zwar unabhängig davon, ob es sich um einen integrierten oder einen von einem
Drittanbieter hinzugefügten Abschnitt handelt).
Das Config-Objekt unterstützt die in Tabelle 7.5 aufgelisteten Verben.
Tabelle 7.5 Unterstützte Verben des Config-Objekts
Verb
Beschreibung
List
Die Konfiguration des angegebenen Konfigurationsabschnitts für den angegebenen URL oder Konfigurationspfad anzeigen
Set
Die Konfiguration des angegebenen Konfigurationsabschnitts für den angegebenen URL oder Konfigurationspfad festlegen
Search
Ermitteln, wo die Konfiguration definiert ist
Lock
Einen bestimmten Konfigurationsabschnitt sperren, damit dieser nicht an die untergeordneten Konfigurationsebenen
delegiert werden kann
Unlock
Einen bestimmten Konfigurationsabschnitt entsperren, damit dieser an die untergeordneten Konfigurationsebenen
delegiert werden kann
Clear
Einen Konfigurationsabschnitt, eine Konfigurationsauflistung oder ein Konfigurationsattribut löschen
Reset
Wird vom Windows-Setup benutzt, um jeden integrierten Konfigurationsabschnitt auf die Setup-Standardwerte zurückzusetzen; Sie sollten diesen Befehl nicht benutzen
Migrate
Migriert die ASP.NET-Konfigurationsabschnitte in eine IIS-Konfiguration, damit der integrierte Pipelinemodus genutzt werden
kann; lesen Sie das elfte Kapitel, »Hosting von Anwendungsentwicklungsframeworks«, um weitere Informationen zu erhalten
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Arbeiten mit der Konfiguration
201
Sie können den Befehl List Config verwenden, um die Konfiguration für einen angegebenen URL oder
Konfigurationspfad anzeigen zu lassen, wobei entweder die gesamte Konfiguration oder nur ein
bestimmter Konfigurationsabschnitt angezeigt wird. Sie können den Befehl Set Config benutzen, um die
Konfiguration eines Konfigurationsabschnitts für einen bestimmten URL oder Konfigurationspfad
festzulegen. Schließlich können Sie mit dem Befehl Clear Config die Konfiguration eines bestimmten
Abschnitts für einen angegebenen URL oder Konfigurationspfad löschen. Sie können außerdem den
Delegierungsstatus von Konfigurationsabschnitten verwalten, indem Sie mit den Befehlen Lock Config
und Unlock Config arbeiten. Weitere Informationen zur Verwaltung der Delegierung von Konfigurationsabschnitten finden Sie im vierten Kapitel, »Verstehen des Konfigurationssystems«.
Die meisten Konfigurationsbefehle ermöglichen den Einsatz von Bezeichnern, die beim Config-Objekt
den Konfigurationspfad repräsentieren, für den Sie den Befehl ausführen lassen. Wenn Sie den
Bezeichner nicht angeben, wird standardmäßig MACHINE/WEBROOT/APPHOST verwendet. Dieser Pfad referenziert die Konfiguration der Webserverebene, die sich in der Datei applicationHost.config befindet. Sie
können den Bezeichner sowohl als Konfigurationspfad im Format SiteName/UrlPfad (z.B. Default Web
Site/myapp) oder in Form eines gewöhnlichen URLs (z.B. http://localhost/myapp) angeben. Wenn Sie
sich für die erste Möglichkeit entscheiden, fügt Appcmd automatisch das Präfix MACHINE/WEBROOT/APPHPOST
an, um den Konfigurationspfad zu bilden. Nutzen Sie die zweite Möglichkeit, löst Appcmd den URL
unter Verwendung der Websitebindungen in einen Konfigurationspfad auf.
Um beispielsweise die Einstellungen des system.webServer/asp-Abschnitts von http://localhost/myapp
anzeigen zu lassen, können Sie den folgenden Befehl verwenden:
appcmd list config "Default Web Site/myapp"
Oder Sie benutzen den folgenden Befehl:
appcmd list config "http://localhost/myapp"
Weitere Informationen zu Konfigurationspfaden finden Sie im vierten Kapitel.
Konfigurationen mit dem Befehl List Config betrachten
Um eine Konfiguration zu betrachten, können Sie den Befehl List
die folgende Syntax auf:
Config
benutzen. Dieser Befehl weist
appcmd list config Konfigurationspfad [/section:Abschnittsname]
Konfigurationspfad ist der Konfigurationspfad oder URL, der auf die Stelle der Konfiguration verweist, die
Appcmd lesen soll. Wenn Sie auf diese Angabe verzichten, verwendet Appcmd den Konfigurationspfad
um die Konfiguration der Webserverebene zu lesen. Denken Sie daran, dass
Appcmd die tatsächliche, auf den angegebenen Pfad bezogene Konfiguration liest, bei der es sich um ein
Produkt aus mehreren zusammengefügten Konfigurationspfaden der Hierarchie handelt, die dem
angegebenen Konfigurationspfad entsprechen. Deshalb ist dies etwas anderes, als das bloße Öffnen der
am Ende des angegebenen Pfades vorhandenen Konfigurationsdatei mit dem Windows-Editor.
Wenn der Parameter /section nicht angegeben wird, listet Appcmd die Konfigurationen aller Konfigurationsabschnitte auf. Dies ist eine große Menge, weshalb Sie in der Regel den Namen des aufzulistenden
Abschnitts angeben möchten. Wenn Sie nicht wissen, wie der Abschnittsname lautet, können Sie alle
registrierten Abschnitte mit dem folgenden Trick anzeigen lassen:
MACHINE/WEBROOT/APPHOST,
appcmd list config /section:?
Damit werden alle Abschnitte aufgelistet. Sie können hinter dem Fragezeichen (?) Platzhalterzeichen
benutzen, um nach Abschnitten mit einem bestimmten Namen zu suchen. ?*security* zeigt beispielsweise alle Abschnitte an, deren Namen die Zeichenfolge security enthalten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
202 Kapitel 7: Verwenden von Befehlszeilentools
Die Ausgabe des Befehls List Config nutzt standardmäßig die Konfigurationsansicht. Um weitere
Informationen zur Auswahl der Ausgabeansicht zu erhalten, lesen Sie bitte früher in diesem Kapitel den
Abschnitt »Die Ausgabe von Appcmd verstehen«.
Konfigurationen mit dem Befehl Set Config festlegen
Der Befehl Set Config ist sehr vielseitig und ermöglicht es Ihnen, Konfigurationseigenschaften festzulegen oder zu bearbeiten. Dieser Befehl verwendet die folgende Syntax.
appcmd list config Konfigurationspfad [/section:Abschnittsname] [/Attribut:Wert]
[/+Attribut] [/-Attribut]
ist wie bei dem Befehl List Config der Konfigurationspfad oder URL, auf den Appcmd
die Konfigurationsänderungen anwendet. Wenn Sie auf diese Angabe verzichten, verwendet Appcmd
den Konfigurationspfad MACHINE/WEBROOT/APPHOST, um die Konfiguration auf die Webserverebene anzuwenden. Appcmd schreibt die Konfiguration standardmäßig in die Datei, die im Konfigurationspfad
entspricht. Dies ermöglicht die Erstellung einer delegierten Konfiguration.
Sie können die Konfigurationseinstellung jedoch auch auf einer höheren Ebene der Konfigurationshierarchie speichern, indem Sie sie mit einem location-Tag auf den angegebenen Konfigurationspfad
anwenden. Dies ist beispielsweise dann erforderlich, wenn der zu bearbeitende Konfigurationsabschnitt
gesperrt ist, und es somit nicht möglich ist, die Konfigurationseinstellungen auf den gewünschten
Konfigurationspfad anzuwenden. Das eigentliche Speichern geschieht mit dem Parameter /commit.
Weitere Informationen finden Sie früher in diesem Kapitel im Abschnitt »Allgemeine Parameter« und
im vierten Kapitel.
Konfigurationspfad
Direkt von der Quelle: Wo die Konfiguration gespeichert wird
Es ist wichtig, dass Sie verstehen, dass es einen Unterschied gibt, und zwar zwischen dem Konfigurationspfad, auf den die Konfiguration angewendet wird, und dem Konfigurationspfad, wo sie
gespeichert wird. Beide sind standardmäßig identisch, aber Sie können sie trennen, indem Sie die
Konfigurationsänderungen auf einer höheren Konfigurationsebene speichern und mithilfe eines
location-Tags auf den Pfad anwenden, den Sie für den Befehl angegeben haben. Dazu können Sie den
von Appcmd angebotenen /commit-Parameter benutzen. Das eigentliche Speichern geschieht mit dem
Parameter /commit.
Wenn Sie diesen Parameter benutzen, können Sie explizit einen Konfigurationspfad festlegen, wo
die Einstellungen gespeichert werden sollen. Sie können für bestimmte Konfigurationsdateien der
Serverebene machine, webroot oder apphost angeben, sofern alle Konfigurationen in Dateien gespeichert
werden sollen, die der Administrator kontrolliert. Dies ist eine nützliche Option, wenn die Konfigurationsabschnitte gesperrt sind und in den verteilten web.config-Dateien nicht angegeben werden
dürfen.
Alternativ hierzu können Sie site oder app benutzen, um die Änderungen im der web.config-Datei zu
speichern, die der Stammwebsite oder Stammanwendung des angegebenen Konfigurationspfades
entspricht. Schließlich können Sie den parent-Wert verwenden, um das übergeordnete Pfadsegment
des angegebenen URLs auszuwählen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Arbeiten mit der Konfiguration
203
Sie sollten die Werte site, app oder parent einsetzen, wenn Sie eine Konfiguration auf einen
bestimmten URL anwenden möchten, der keinem Verzeichnis entspricht, da Appcmd andernfalls die
erforderliche web.config-Datei nicht generieren kann. Darüber hinaus können Sie diese Werte
verwenden, um eine Konfiguration für mehrere URLs in nur einer verteilten web.config-Datei zu
platzieren, die sich im Website- oder Anwendungsstamm befindet. Auf diese Weise können Sie auch
weiterhin die Vorzüge der verteilten Konfiguration nutzen, während gleichzeitig eine zu große Zahl
verteilter web.config-Dateien vermieden wird.
Die richtige Wahl ist von Ihrer Strategie für die Konfigurationsdelegierung und davon abhängig,
welche Anforderungen Sie definieren, wenn Sie eine portierbare Konfiguration aufbauen möchten.
Mike Volodarsky
IIS-Kernserver Program Manager
Der Parameter /section muss beim Set Config-Befehl immer angegeben werden und er muss einen
gültigen Konfigurationsabschnitt bezeichnen, dessen Konfiguration Sie festlegen möchten.
Hinweis Sie können den Befehl List Config benutzen, um den Konfigurationsabschnitt zu finden, an dem Sie
interessiert sind.
Benutzen Sie zusätzliche Parameter, um Änderungen an der Konfiguration vorzunehmen. Zu diesen
Änderungen zählen z.B. das Setzen von Attributwerten und das Hinzufügen, Entfernen und Bearbeiten
von Auflistungselementen. Diese Themen sind ausführlich im nächsten Abschnitt, »Konfigurationsattribute setzen« und später in diesem Kapitel im Abschnitt »Konfigurationsauflistungen verwalten«
beschrieben.
Konfigurationsattribute setzen
Um mit dem Set Config-Befehl Konfigurationsattribute für einen bestimmten Abschnitt festzulegen,
geben Sie jedes zu setzende Attribut als Parameter und den Attributwert als Parameterwert an. Um
beispielsweise das allowDoubleEscaping-Attribut des Abschnitts system.webServer/security/requestFiltering zu
setzen, können Sie die folgende Syntax verwenden:
appcmd set config /section:system.webServer/security/requestFiltering
/allowDoubleEscaping:true
Einige Konfigurationsabschnitte enthalten Unterelemente. Um die Attribute solcher Abschnitte zu
referenzieren, können Sie die Punktnotation (.) benutzen, mit der Sie den vollständigen Elementpfad
zum Attribut angeben. Der Elementpfad ist, ausgehend vom jeweiligen Abschnitt, ein relativer Pfad, so
dass er nicht für die Attribute des Abschnittselements verwendet wird, die sich auf oberster Ebene
befinden. Um beispielsweise allowUnlisted im fileExtensions-Element des bereits von uns bearbeiteten
Abschnitts zu setzen, können Sie die folgende Syntax benutzen:
appcmd set config /section:system.webServer/security/requestFiltering
/fileExtensions.allowUnlisted:false
Hinweis Sie können mehrere Parameter angeben, um in nur einem Befehl mehrere Konfigurationsattribute eines
Abschnitts festzulegen. Sie können jeden Parameter aber nur einmal angeben. Aufgrund eines Fehlers wird immer
nur der letzte Wert berücksichtigt, wenn Sie dasselbe Attribut mehrmals angeben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
204 Kapitel 7: Verwenden von Befehlszeilentools
Sie können ebenfalls die /-Attribut-Syntax benutzen, um die in einer Konfiguration für ein Attribut
gesetzten Werte zu entfernen und die Konfiguration somit auf den Wert zurückzusetzen, der von der
übergeordneten Konfigurationsebene geerbt oder von der Schemadefinition für diesen Konfigurationsabschnitt als Standard definiert wird. Um beispielsweise den zuvor von uns explizit gesetzten Wert des
Attributs allowDoubleEscaping zu löschen, können Sie die folgende Syntax verwenden:
appcmd set config /section:system.webServer/security/requestFiltering
/-allowDoubleEscaping
Direkt von der Quelle: Berücksichtigung der Groß- und Kleinschreibung in Appcmd
Bei Parameternamen unterscheidet Appcmd nicht zwischen Groß- und Kleinschreibung. Das bedeutet,
dass Sie sich keine Gedanken darum machen müssen, ob die von Ihnen gesetzten Konfigurationsattribute groß oder klein geschrieben werden. Das zugrunde liegende Konfigurationssystem berücksichtigt jedoch bei Attributnamen die Groß- und Kleinschreibung. Tritt somit der recht unwahrscheinliche Fall ein, dass ein Konfigurationselement zwei Attribute besitzt, die sich ausschließlich hinsichtlich der Groß- und Kleinschreibung voneinander unterscheiden, können Sie das zweite Attribut nicht
referenzieren, weil Appcmd immer mit dem ersten Attribut arbeiten wird. Diese Entscheidung war das
Ergebnis einer hitzigen Diskussion, bei der es um Korrektheit kontra Verwendbarkeit ging, wobei die
Wahl auf eine optimale allgemeine Benutzererfahrung fiel. Der Möglichkeit, Attributnamen zu verwenden, die zwischen Groß- und Kleinschreibung unterscheiden, sollte in der Regel kein Vorrang
eingeräumt werden, da dies für die Benutzer sehr verwirrend sein kann und äußerst fehleranfällig ist.
Denken Sie deshalb sorgfältig nach, bevor Sie Konfigurationsabschnitte erstellen, die über mehrere
Attribute verfügen, deren Namen sich lediglich hinsichtlich der Groß- und Kleinschreibung
voneinander unterscheiden.
Auch die Namen der mit dem Parameter /section angegebenen Konfigurationsabschnitte unterscheiden
nicht zwischen Groß- und Kleinschreibung, obwohl es möglich ist, mit mehreren Abschnitten zu
arbeiten, die sich ausschließlich hinsichtlich der Groß- und Kleinschreibung voneinander unterscheiden.
Letztendlich erleichtert die fehlende Berücksichtigung der Groß- und Kleinschreibung bei Attributund Abschnittsnamen den Einsatz des Tools für Konfigurationsaufgaben. Denken Sie jedoch daran,
dass Konfigurationsattributswerte selbst oft zwischen Groß- und Kleinschreibung unterscheiden, je
nachdem, wie die Webserverfeatures die Werte interpretieren.
Mike Volodarsky
IIS-Kernserver Program Manager
Konfigurationsauflistungen verwalten
Sie können für Konfigurationsabschnitte, die Auflistungen enthalten, den Befehl Set Config benutzen,
um neue Auflistungselemente hinzuzufügen, bereits vorhandene Elemente zu entfernen oder die in
einem vorhandenen Element enthaltene Konfiguration zu bearbeiten.
Um ein Auflistungselement hinzuzufügen, können Sie die Syntax /+Elementpfad.[Attribut='Wert',…]
verwenden, wobei Elementpfad der Pfad zum Auflistungselement ist, der die Punktnotation (.) verwendet.
Jedes Attribut/Wert-Paar repräsentiert das entsprechende Attribut des Auflistungselements. Sie müssen
die Werte aller vorgeschriebenen Attribute angeben, um ein neues Auflistungselement zu erstellen, und
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Arbeiten mit der Konfiguration
205
Sie können optional andere vom Auflistungselement unterstützte Attribute festlegen. Um beispielsweise der Auflistung im fileExtensions-Element des Abschnitts system.webServer/security/requestFiltering
einen neuen Eintrag hinzuzufügen, können Sie den folgenden Befehl benutzen:
appcmd set config /section:system.webServer/security/requestFiltering
/+fileExtensions.[fileExtension='.test',allowed='true']
Hinweis Wenn Sie nicht alle vorgeschriebenen Attribute des neuen Auflistungselements angeben, führt der Set
Config-Befehl zu einem Fehler mit der Meldung Das Element enthält nicht die erforderlichen Attribute.
Der vorherige Befehl erzeugt in der fileExtensions-Auflistung ein untergeordnetes Element, dessen
allowed-Attribut auf den angegebenen Wert gesetzt wird. Beachten Sie, dass Sie bei einem Abschnitt, der
selbst eine Auflistung ist, lediglich den Ausdruck in den eckigen Klammern und nicht einen Elementpfad angeben müssen.
Sie können festlegen, wo in der Auflistung das neue Element hinzugefügt werden soll. Das Element
wird bei Auflistungen, die im Konfigurationsschema für den Anhängen-Zusammenführungsmodus
konfiguriert sind, standardmäßig am Ende der Auflistung hinzugefügt, während es bei Auflistungen,
die für den Voranstellen-Zusammenführungsmodus konfiguriert sind, am Anfang angeordnet wird. Sie
können diese Standardposition außer Kraft setzen, indem Sie den Positionsqualifizierer verwenden, der
@start, @end und @Position sein kann, wobei Position die mit dem Index 0 beginnende Position innerhalb der
Auflistung ist. Der Positionsqualifizierer sollte in der von den eckigen Klammern eingeschlossenen
Liste der erste Eintrag sein. Um beispielsweise das Element, das Sie mit dem vorherigen Befehl hinzugefügt haben, am Anfang der Auflistung anzuordnen, können Sie die folgende Syntax verwenden:
appcmd set config /section:system.webServer/security/requestFiltering
/+fileExtensions.[@start,fileExtension='.test',allowed='true']
Hinweis Wenn die Auflistung bereits über ein Element verfügt, das für die Schlüsselattribute dieselben Werte wie
das hinzuzufügende Element verwendet, meldet der Set Config-Befehl den Fehler Doppelter Auflistungseintrag
kann nicht hinzugefügt werden.
Um ein Auflistungselement zu entfernen, benutzen Sie die Syntax /-elementpath.[attribute='value',…]. Sie
müssen Attribut/Wert-Paare für alle Attribute angeben, die zusammen den Auflistungsschlüssel bilden,
der das zu entfernende Auflistungselement eindeutig identifiziert. Um beispielsweise das im vorherigen
Beispiel hinzugefügte Auflistungselement wieder zu entfernen, benutzen Sie die folgende Syntax:
appcmd set config /section:system.webServer/security/requestFiltering
/-fileExtensions.[fileExtension='.test']
Da das Attribut fileExtension der einzige eindeutige Schlüssel der Auflistung ist, genügt seine Angabe,
um das gewünschte Element zu entfernen.
Anstatt Schlüsselattribute festzulegen, können Sie Auflistungselemente auch entfernen, indem Sie die
bereits besprochenen Positionsqualifizierer verwenden. Um beispielsweise das erste Element in der
Auflistung zu entfernen, benutzen Sie die folgende Syntax:
appcmd set config /section:system.webServer/security/requestFiltering
/-fileExtensions.[@start]
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
206 Kapitel 7: Verwenden von Befehlszeilentools
Um schließlich die Attribute eines bestimmten Auflistungselements zu setzen, können Sie entweder
die Standardnotation für Elementpfade zum Setzen von Konfigurationsattributen verwenden, oder Sie
greifen zum Auswählen des gewünschten Auflistungselements auf den Auflistungsindexerausdruck in
eckigen Klammern zurück. Um zum Beispiel das allowed-Attribut des zuvor von uns hinzugefügten
Auflistungseintrags zu setzen, können Sie die folgende Syntax verwenden:
appcmd set config /section:system.webServer/security/requestFiltering
/fileExtensions.[fileExtension='.test'].allowed:true
Beachten Sie, dass Sie das Element ähnlich wie beim Löschen von Auflistungselementen mithilfe des
eindeutigen Schlüssels der Auflistung identifizieren müssen. Beachten Sie auch, dass sich das von
Ihnen gesetzte Attribut außerhalb des von den eckigen Klammern umschlossenen Ausdrucks befindet –
die Attribute innerhalb des von den eckigen Klammern umschlossenen Ausdrucks dienen der eindeutigen Identifizierung des Elements, das Sie modifizieren möchten. Aus diesem Grund müssen Sie
die Notation für Elementpfade benutzen, um das Attribut eines Auflistungselements zu setzen. Wie
zuvor können Sie anstelle der Schlüsselattribute auch den Positionsqualifizierer benutzen, um das
Auflistungselement zu identifizieren.
Die Konfigurationsdelegierung verwalten
Sie können das Config-Objekt ebenfalls benutzen, um die Konfigurationsdelegierung zu verwalten, um
zu ermitteln, welche Konfigurationsabschnitte in den verteilten web.config-Konfigurationsdateien
erlaubt sind und um eine spezifischere Konfigurationssperrung für bestimmte Elemente, Attribute
und Auflistungen zu konfigurieren. Appcmd unterstützt dies wie folgt:
Lock Config-Befehl Sperrt einen Konfigurationsabschnitt, um zu verhindern, dass er auf einer
bestimmten Konfigurationsebene oder darunter delegiert wird
Unlock Config-Befehl Entsperrt einen Konfigurationsabschnitt, um zuzulassen, dass er auf einer
bestimmten Konfigurationsebene oder darunter delegiert wird
Set Config-Befehl Legt spezielle Konfigurationsattribute fest, einschließlich lockAttributes,
lockElements und lockItem, um eine spezifische Konfigurationssperrung zu konfigurieren
Um mehr über den Einsatz von Appcmd zum Sperren und Entsperren von Abschnitten zu erfahren,
lesen Sie bitte das vierte Kapitel. Weitere Informationen zur spezifischen Konfigurationssperrung
finden Sie im vierten Kapitel und dort im Abschnitt »Spezifische Konfigurationssperrung«.
Konfigurationssicherungen verwalten
Appcmd stellt ein Backup-Objekt zur Verfügung, mit dem Sie globale Konfigurationsdateien sichern und
wiederherstellen können. Das Erstellen einer Sicherung ist mit dem Add-Verb des Backup-Objekts sehr
einfach, wie das folgende Beispiel zeigt:
appcmd add backup
Der Aufruf dieses Befehls generiert eine neue Sicherung, deren Name auf dem aktuellen Datum und der
aktuellen Uhrzeit basiert. Das Format lautet wie folgt: JJJJMMTTZhhmmss (dabei steht JJJJ für die vier Ziffern
des Jahres, MM für die zwei Ziffern des Monats, TT für die zwei Ziffern des Tages, Z für das Trennzeichen
zwischen Datum und Uhrzeit, hh für die zwei Ziffern der Stunde, mm für die zwei Ziffern der Minute und
ss für die zwei Ziffern der Sekunde). Möchten Sie einen eigenen Namen für die Sicherung angeben,
können Sie dies am Ende der Appcmd-Anforderung tun:
appcmd add backup "MyServerBackup"
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Mit Anwendungen, virtuellen Verzeichnissen und Anwendungspools arbeiten
207
Wenn Sie das List-Verb in Verbindung mit dem Backup-Objekt benutzen, sehen Sie Ihre neu erstellte
Sicherung:
appcmd list backup
Um eine Konfigurationssicherungen wiederherzustellen, verwenden Sie das Restore-Verb zusammen
mit dem Namen der wiederherzustellenden Sicherung. Um beispielsweise eine Sicherung namens
MyServerBackup wiederherzustellen, geben Sie Folgendes ein:
appcmd restore backup "MyServerBackup"
Hinweis Die Sicherungsdateien werden automatisch in Unterverzeichnissen des Ordners %SystemRoot%\
System32\Inetsrv\Backup gespeichert, die die Namen der jeweiligen Sicherungsinstanzen erhalten. Wenn Sie eine
neue Sicherung erstellen, befinden sich unter den gesicherten Dateien auch administration.config und applicationHost.config.
Weitere Informationen zur Verwaltung von IIS 7.0-Konfigurationssicherungen finden Sie im vierten
Kapitel und dort im Abschnitt »Sichern der Konfiguration«.
Mit Anwendungen, virtuellen Verzeichnissen
und Anwendungspools arbeiten
Appcmd ist ein effektives Hilfsmittel für die Erstellung und Konfiguration vieler Webserver-Schlüsselobjekte, zu denen Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools zählen. Die
Appcmd-Objekte Site, App, Vdir und Apppool bieten ein einfaches Verfahren zur Verwaltung dieser Objekte,
auch wenn Sie die meisten Aufgaben, die sich auf diese Objekte beziehen, unter Verwendung des ConfigObjekts und somit durch direkte Bearbeitung der Konfigurationsdateien lösen können.
Das Site-Objekt ermöglicht das einfache Auflisten von Websites sowie die Erstellung neuer und die
Konfiguration bereits vorhandener Websites. Sie können beispielsweise in nur einem Schritt eine
Website erstellen, indem Sie den Befehl Add Site benutzen:
ppcmd add site /name:MySite /bindings:http/*:81: /physicalPath:c:\mysite
Dieser Befehl generiert eine neue Website für Port 81. Darüber hinaus erzeugt er eine Stammanwendung und ein virtuelles Stammverzeichnis, das auf C:\mysite verweist. Sie können die Website auch
separat erstellen, indem Sie auf die Angabe des Parameters physicalPath verzichten und die Anwendungen und virtuellen Verzeichnisse der Site mit den Befehlen Add App und Add Vdir erzeugen.
Sie können das Objekt List Sites benutzen, um die Websites des Servers aufzulisten oder anhand
bestimmter Attribute oder eines URLs nach Websites zu suchen. Um beispielsweise zu ermitteln,
welche Website so konfiguriert ist, dass sie die an http://localhost:83 gerichteten Anforderungen
bedient, können Sie die folgende Syntax verwenden:
appcmd list sites http://localhost:83
Um alle Sites zu finden, die gegenwärtig beendet sind, benutzen Sie die folgende Syntax:
appcmd list sites /state:Stopped
Sie können Websites auch manuell starten und beenden. Dazu benutzen Sie die Befehle Start Site und
Stop Site. Ausführliche Informationen bezüglich der Verwendung von Appcmd zum Auflisten, Erstellen
und Konfigurieren von Websites und virtuellen Verzeichnissen finden Sie im neunten Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
208 Kapitel 7: Verwenden von Befehlszeilentools
Sie verfügen ebenfalls über die Möglichkeit, Anwendungen, virtuelle Verzeichnisse und Anwendungspools ähnlich wie Websites zu erstellen, aufzulisten und zu bearbeiten. Das zehnte Kapitel, »Verwalten
von Anwendungen und Anwendungspools«, verrät Ihnen, wie Sie Anwendungen und
Anwendungspools erstellen und konfigurieren.
Mit Webservermodulen arbeiten
Das Appcmd-Objekt Module stellt einfach zu verwendende Methoden für die Installation, Aktivierung
und Verwaltung von Webservermodulen zur Verfügung. Auch hier können Sie den größten Teil der mit
diesem Objekt einhergehenden Aufgaben unter Verwendung des Config-Objekts lösen, das die Konfigurationsdateien direkt bearbeitet.
Sie können beispielsweise systemeigene Module mit dem Befehl Install Module installieren:
appcmd install module /name:MyNativeModule /image:c:\mymodule.dll
Sie können denselben Befehl benutzen, um neue verwaltete Module hinzuzufügen:
appcmd add module /name:MyManagedModules /type:MyModules.MyManagedModule
Sie verfügen außerdem über die Möglichkeit, festzulegen, welche Module auf Ihrem Webserver oder
für Ihre Anwendung aktiviert sind, indem Sie Module hinzufügen oder entfernen.
Ausführliche Informationen zur Verwendung von Appcmd, um Webservermodule zu installieren, zu
aktivieren und zu konfigurieren, finden Sie im zwölften Kapitel, »Verwalten von Webservermodulen«.
Ausgeführte Arbeitsprozesse und Anforderungen
untersuchen
Das Betrachten und Ändern von Konfigurationsdaten ist nicht das Einzige, was Sie mit Appcmd
anstellen können. Sie können ebenfalls den Laufzeitstatus des Webservers untersuchen, indem Sie
die gegenwärtige ausgeführten Arbeitsprozesse und sogar Anforderungen auflisten lassen.
Ausgeführte IIS-Arbeitsprozesse auflisten
Sie können den Befehl List Wp benutzen, um alle gegenwärtig ausgeführten IIS-Arbeitsprozesse aufzulisten. Dieser Befehl verwendet die folgende Syntax:
appcmd list wp [pid] [/apppool.name:string] [/wp.name:string]
Der Befehl List Wp unterstützt die Verwendung der Prozess-ID (PID) als Bezeichner zur Lokalisierung des
angegebenen IIS-Arbeitsprozesses. Darüber hinaus können Sie mit dem Parameter /apppool.name einen
Anwendungspoolnamen angeben, um die IIS-Arbeitsprozesse aufzulisten, die dem entsprechenden
Anwendungspool zugeordnet sind.
Um beispielsweise alle gegenwärtig ausgeführten IIS-Arbeitsprozesse aufzulisten, können Sie die
folgende Syntax benutzen:
appcmd list wp
Die Ausgabe dieses Befehls enthält alle Prozess-IDs aller IIS-Arbeitsprozesse sowie die zugehörigen
Anwendungspools:
WP "3284" (applicationPool:DefaultAppPool)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Ausgeführte Arbeitsprozesse und Anforderungen untersuchen
209
Gegenwärtig ausgeführte Anforderungen auflisten
Sie können nicht nur die gegenwärtig ausgeführten Arbeitsprozesse anzeigen lassen, sondern auch
einen genaueren Blick auf die Arbeit des Webservers werfen, indem Sie die gegenwärtig ausgeführten
Anforderungen auflisten. Auf diese Weise erhalten Sie eine Momentaufnahme der gegenwärtigen
Systemaktivität und Sie erfahren, welche Anforderungen bereits seit längerer Zeit ausgeführt werden
(was auf ein Problem hindeuten kann).
Sie können die gegenwärtig ausgeführten Anforderungen mit dem Befehl List Request auflisten lassen.
Um beispielsweise eine Liste aller Anforderungen zu erhalten, die gegenwärtig auf dem Server
ausgeführt werden, benutzen Sie die folgende Syntax:
appcmd list requests
Die Ausgabe führt alle Anforderungen aus, die zum Zeitpunkt der Abfrage in allen IIS-Arbeitsprozessen ausgeführt wurden:
REQUEST "fd00000180000004" (url:GET /wait.aspx?sleep=10000, time:4072 msec,
client:localhost, stage:ExecuteRequestHandler,
module:ManagedPipelineHandler)
Wie Sie sehen, enthält jedes angezeigte Anforderungsobjekt einige Informationen über die gegenwärtig
ausgeführte Anforderung. Dazu zählen:
Der Anforderungs-URL und das dazugehörige Verb
Die Zeitdauer der Anforderungsausführung
Der Client, der die Anforderung initiiert hat
Die Pipelinephase, in der sich die Anforderung gegenwärtig befindet, und das Modul, das
gegenwärtig ausgeführt wird
Sie können die Informationen über die Ausführungsdauer, die aktuelle Pipelinephase und das aktuelle
Modul verwenden, um Probleme mit nicht reagierenden Anforderungen und Leistungseinbußen zu
behandeln, indem Sie den exakten URL und in einigen Fällen auch das die Leistungseinbuße
verursachende Modul genau bestimmen.
Das Auflisten aller Anforderungen auf dem Server ist oft zu arbeitsaufwändig und gibt zu viele Informationen zurück, die in den meisten Fällen nicht benötigt werden. Deshalb können Sie verschiedene
Filter einsetzen, um nur die relevanten Anforderungen aufzulisten. Wie dies funktioniert, erfahren Sie
bei einem Blick auf die genaue Syntax des Befehls List Requests:
appcmd list requests [identifier] [/site.name:string] [/wp.name:string]
[/apppool.name:string] [/elapsed:uint] [/url:string] [/verb:string]
[ClientIp:string] [/stage:string] [/module:string]
Dieser Befehl unterstützt die in Tabelle 7.6 aufgeführten Parameter.
Tabelle 7.6 Parameter für den Befehl List Requests
Parameter
Beschreibung
identifier
Der Anforderungsbezeichner, mit dem eine bestimmte Anforderung mehrmals abgefragt werden kann. Der Anforderungsbezeichner ist eine nach dem Zufallsprinzip generierte Zeichenfolge wie z.B. fd00000180000004, die
angezeigt wird, wenn Anforderungen von Appcmd aufgelistet werden.
site.name
Der Name der Site, auf die sich die angezeigte gegenwärtig ausgeführte Anforderung bezieht
wp.name
Die PID des IIS-Arbeitsprozesses, für den die gegenwärtig ausgeführten Anforderungen angezeigt werden sollen.
Dies verbessert die Effizienz der Abfrage, da nur der angegebene IIS-Arbeitsprozess abgefragt wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
210 Kapitel 7: Verwenden von Befehlszeilentools
Tabelle 7.6 Parameter für den Befehl List Requests (Fortsetzung)
Parameter
Beschreibung
apppool.name
Der Anwendungspoolname, für den die gegenwärtig ausgeführten Anforderungen angezeigt werden sollen. Dies
verbessert die Effizienz der Abfrage, da nur die IIS-Arbeitsprozesse des angegebenen Anwendungspools abgefragt werden.
elapsed
Die Mindestausführungsdauer einer Anforderung in Millisekunden, die erreicht sein muss, damit die Anforderung
angezeigt wird. Anforderungen, deren Ausführungsdauer unter diesem Wert liegt, werden nicht zurückgegeben.
Dies kann die Effizienz der Abfrage verbessern, wenn weniger Anforderungen zurückgegeben werden. Mit dem
Attribut elapsed ist es möglich, nicht reagierende Anforderungen effektiv zu ermitteln.
url
Der URL der Anforderung. Sie können den genauen URL angeben oder mit Platzhalterausdrücken arbeiten, um
die Anforderungen anzeigen zu lassen, die sich nur auf bestimmte URLs beziehen (beachten Sie, dass der URL
auch Abfragezeichenfolgen enthalten kann).
clientip
Die IP des anfordernden Clients. Diese kann abhängig von der Clientverbindung sowohl im IPv4- als auch im IPv6Format angegeben werden.
stage
Die Anforderungsverarbeitungsphase. Benutzen Sie diesen Parameter, um nur solche Anforderungen anzeigen zu
lassen, die gegenwärtig in der angegebenen Anforderungsverarbeitungsphase ausgeführt werden. Eine Liste der
zulässigen Anforderungsverarbeitungsphasen finden Sie im zwölften Kapitel und dort im Abschnitt »Die Anforderungsverarbeitungspipeline«.
module
Der Name des Moduls. Benutzen Sie diesen Parameter, um nur solche Anforderungen anzeigen zu lassen, die vom
angegebenen Modul verarbeitet werden.
Mit der Ablaufverfolgung für Anforderungsfehler arbeiten
Das Appcmd-Objekt Trace bietet ein einfaches Verfahren zur Aktivierung und Verwendung des Features
Ablaufverfolgung für Anforderungsfehler, mit dessen Hilfe unter IIS 7.0 Serverprobleme diagnostiziert
werden können.
Hinweis Weitere Informationen zur Verwendung der Ablaufverfolgung für Anforderungsfehler finden Sie im sechzehnten Kapitel, »Ablaufverfolgung und Problembehandlung«.
Mit dem Trace-Objekt können Sie Folgendes tun:
Die Ablaufverfolgung für Anforderungsfehler für eine Website aktivieren und deaktivieren
Auf Anforderungsfehler bezogene Ablaufverfolgungsregeln für URLs verwalten
Nach Protokolldateien für die Ablaufverfolgung für Anforderungsfehler suchen und diese
untersuchen
Die Ablaufverfolgung für Anforderungsfehler aktivieren
Um die auf Anforderungsfehler bezogene Ablaufverfolgung für einen bestimmten URL einzuschalten,
müssen Sie das Feature zunächst für die jeweilige Website aktivieren. Dies ist mit Appcmd und dem
Befehl Configure Trace möglich:
appcmd configure trace SiteName /enablesite
Der Parameter /enablesite aktiviert die Verwendung der auf Anforderungsfehler bezogenen
Ablaufverfolgung, und zwar für die Site, die mit dem Bezeichner SiteName angegeben wird (dieser
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Mit der Ablaufverfolgung für Anforderungsfehler arbeiten
211
Bezeichner kann ebenfalls ein URL sein; in diesem Fall aktiviert Appcmd die Ablaufverfolgung für die
entsprechende Site). Um beispielsweise die auf Anforderungsfehler bezogene Ablaufverfolgung für die
Site Default Web Site zu aktivieren, benutzen Sie die folgende Syntax:
appcmd configure trace "Default Web Site" /enablesite
Hinweis Achten Sie darauf, die Ablaufverfolgung für Anforderungsfehler mit dem Parameter /disablesite zu deaktivieren, wenn Sie sie nicht benötigen.
Sie können ebenfalls den Parameter /disablesite benutzen, um die auf Anforderungsfehler bezogene
Ablaufverfolgung für eine Website zu deaktivieren, sofern Sie diese Funktionalität nicht benötigen. Auf
diese Weise behalten Sie die für die URLs der Site konfigurierten Ablaufverfolgungsregeln bei und
schalten die Ablaufverfolgung einfach auf der Websiteebene ein oder aus.
Ablaufverfolgungsregeln für Anforderungsfehler aufstellen
Um die Ablaufverfolgung für Anforderungsfehler zu protokollieren, müssen Sie Regeln aufstellen, die
die Fehlerbedingungen definieren, unter denen eine Ablaufverfolgungsprotokollierung initiiert wird.
Sie müssen außerdem die zu erfassenden Ablaufverfolgungsereignisse festlegen. Dazu benutzen Sie
den /enable-Parameter des Configure Trace-Befehls. Dieser hat die folgende Syntax:
appcmd Configure Trace <URL> /enable [/path:string] [/areas:string]
[/verbosity:level] [/timetaken:timespan] [/statuscodes:string]
Dieser Befehl unterstützt die in Tabelle 7.7 aufgeführten Parameter.
Tabelle 7.7 Parameter des Befehls Configure Trace
Parameter
Beschreibung
path
Der URL-Pfad, für den die Regel aktiviert wird. Dies kann eine Erweiterung im Format .erweiterung oder – soll die
Regel für alle Anforderungen aktiviert werden – das Sternchen (*) sein. Wenn Sie auf die Angabe verzichten, wird
der Vorgabewert (*) verwendet.
areas
Die Liste der nachzuverfolgenden Anbieter und der dazugehörigen Bereiche. Die Angabe erfolgt in der Form
"Anbieter/Bereich1,Bereich2:Ausführlichkeitsgrad,...", wobei die Bereichsliste und der Ausführlichkeitsgrad nicht für
jeden Anbietereintrag angegeben werden müssen. Wenn Sie auf die Angabe verzichten, werden alle registrierten
Anbieter und deren Unterbereiche sowie der Ausführlichkeitsgrad Verbose (Ausführlich) verwendet.
verbosity
Der Ausführlichkeitsgrad eines Ereignisses, der dazu führt, dass die Anforderung die Fehlerbedingung erfüllt und
das Ablaufverfolgungsprotokoll generiert wird. Sie können diesen Parameter verwenden, um Ablaufverfolgungsprotokolle zu generieren, wenn z.B. ein Ereignis mit dem Ausführlichkeitsgrad Warning oder Error eintritt. Zulässige
Werte sind Ignore, CriticalError, Error und Warning. Erfolgt keine Angabe, ist Warning die Vorgabe.
timetaken
Die Ausführungszeit (im Zeitspannenformat), die verstrichen sein muss, damit die Anforderung die Fehlerbedingung erfüllt und das Ablaufverfolgungsprotokoll generiert wird. Sie können diesen Parameter benutzen, um Ablaufverfolgungsprotokolle nur dann generieren zu lassen, wenn die Anforderung die angegebene Ausführungszeit
überschreitet. Auf diese Weise erfassen Sie langsame oder nicht reagierende Anforderungen. Erfolgt keine
Angabe, ist die Vorgabe eine Minute.
statuscodes
Antwortstatuscodes, die gegeben sein müssen, damit die Anforderung die Fehlerbedingung erfüllt und das Ablaufverfolgungsprotokoll generiert wird. Die Angabe erfolgt im Format "status.substatus,…", wobei substatus nicht
angegeben werden muss. Sie können diesen Parameter benutzen, um das Ablaufverfolgungsprotokoll für Anforderungen generieren zu lassen, die zu Fehlern mit bestimmten Antwortfehlercodes führen. Erfolgt keine Angabe,
ist die Vorgabe "500,400,401,403".
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
212 Kapitel 7: Verwenden von Befehlszeilentools
Wenn Sie den /enable-Befehl ohne Angabe des Parameters /path verwenden, wird ein Eintrag für alle
Anforderungen erzeugt, die sich auf URLs mit dem Pfad "*" beziehen. Sie können beispielsweise die
folgende Syntax benutzen, um die Ablaufverfolgung für Anforderungsfehler unter Verwendung der
Standardkonfiguration zu aktivieren:
appcmd configure trace "Default Web Site/" /enable
Daraufhin wird für den Konfigurationsabschnitt system.webServer/tracing/traceFailedRequests die folgende
Konfiguration generiert:
<tracing>
<traceFailedRequests>
<add path="*.aspx">
<traceAreas>
<add provider="ASPNET"
areas="Infrastructure,Module,Page,AppServices" />
</traceAreas>
<failureDefinitions statusCodes="404" />
</add>
<add path="*">
<traceAreas>
<add provider="WWW Server"
areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module"
verbosity="Verbose" />
<add provider="ASP" areas="" verbosity="Verbose" />
<add provider="ISAPI Extension" areas=""
verbosity="Verbose" />
<add provider="ASPNET"
areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:01:00"
statusCodes="500,400,401,403" verbosity="Warning" />
</add>
</traceFailedRequests>
</tracing>
Beachten Sie, dass die Regel den Pfad "*" verwendet, damit sie auf alle Anforderungen angewendet
wird, die sich auf die URL-Ebene beziehen, auf der die Konfiguration festgelegt wird bzw. auf die
Ebenen darunter. Außerdem verwendet die Regel alle registrierten Ablaufverfolgungsanbieter und
-bereiche mit dem Ausführlichkeitsgrad Verbose und sie arbeitet mit den standardmäßigen Fehlerdefinitions-Triggern.
Sie können den Parameter /path angeben, um zusätzliche Regeln für bestimmte Erweiterungen
aufzustellen, z.B. um die Ablaufverfolgung nur für ASPX-Seiten zu aktivieren:
appcmd configure trace "Default Web Site/" /enable /path:*.aspx
Sie können anstelle von /enable den Parameter /disable benutzen, um Regeln zu entfernen. Dabei geben Sie
den Parameter /path an, um festzulegen, welche Regel Sie entfernen möchten. Wenn Sie auf die Angabe
des Parameters /path verzichten, versucht das Tool, Regeln unter Verwendung des Pfades "*" zu entfernen.
Sie können zusätzlich sowohl die Liste der von jeder Regel erfassten Ablaufverfolgungsanbieter und
-bereiche sowie die Fehlerdefinitionen für die Regel außer Kraft setzen, indem Sie die in Tabelle 7.7
aufgeführten Parameter verwenden. Um beispielsweise eine Ablaufverfolgungsregel für Anforderungsfehler zu konfigurieren, die lediglich die Ereignisse vom ASP.NET-Anbieter abfängt und
ausschließlich Protokolldateien für den Statuscode 404 generiert, verwenden Sie die folgende Syntax:
appcmd configure trace "Default Web Site/" /enable /path:*.aspx
/areas:ASPNET/Infrastructure,Module,Page,AppServices /statuscodes:404
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Mit der Ablaufverfolgung für Anforderungsfehler arbeiten
213
Ablaufverfolgungsprotokolle für Anforderungsfehler durchsuchen
Appcmd ermöglicht nicht nur die Aktivierung und Konfiguration der Ablaufverfolgung für
Anforderungsfehler, sondern bietet auch eine einfache Möglichkeit, um die
Ablaufverfolgungsprotokolldateien zu durchsuchen. Sie können mithilfe dieser Möglichkeit das
Ablaufverfolgungsprotokoll schnell durchsuchen und sogar Ereignisse darin aufspüren, was für die
Diagnose bestimmter Probleme sehr hilfreich ist.
Sie können die vorhandenen Ablaufverfolgungsprotokolldateien mit dem Befehl List Trace durchsuchen.
Dieser Befehl weist die folgende Syntax auf:
appcmd list traces [identifier] [/url:string] [/site.name:string] [apppool.name:string][/statuscode:string] …
Dieser Befehl akzeptiert die in Tabelle 7.8 aufgeführten Parameter.
Tabelle 7.8 Parameter des Befehls List Trace
Parameter
Beschreibung
identifier
Der eindeutige Bezeichner eines Ablaufverfolgungsprotokolls, der im Format SiteName/logfilename.xml angegeben wird. Sie können diesen Bezeichner benutzen, um in einem bestimmten Ablaufverfolgungsprotokoll zu
suchen.
url
Der URL der Anforderung. Appcmd unterstützt standardmäßig partielle URLs und führt für eine normalisierte
Version des URLs einen Präfixabgleich durch.
site.name
Der Name der Website, für die die Anforderungsprotokolle angezeigt werden sollen. Der Einsatz dieses Parameters kann die Effizienz des Befehls verbessern, da nur die Protokolle für die angegebene Website abgerufen
werden.
apppool.name
Der Name des Anwendungspools, für den die Anforderungsprotokolle angezeigt werden sollen
statuscode
Der Statuscode der Anforderung
Sie können zusätzlich andere Attribute des Ablaufverfolgungsobjekts angeben, mit deren Hilfe die
Ergebnisse gefiltert werden sollen. Um die verfügbaren Attribute anzeigen zu lassen, listen Sie die
Ablaufverfolgungsprotokolle mit dem Parameter /text:* auf. Um beispielsweise alle Ablaufverfolgungsprotokolle für eine bestimmte Website anzeigen zu lassen, verwenden Sie die folgende Syntax:
appcmd list traces /site.name:"Default Web Site"
Um alle Ablaufverfolgungsprotokolle für einen bestimmten URL aufzulisten, benutzen Sie die
folgende Syntax:
appcmd list traces /site.name:"Default Web Site"
/url:http://localhost/myapp/test.html
Die Ausgabe des Befehls nennt, wie im folgenden Beispiel gezeigt, die Ablaufverfolgungsobjekte, den
Ablaufverfolgungsprotokollbezeichner, den URL der Anforderung, den Statuscode und den Arbeitsprozess:
TRACE "Default Web Site/fr000021.xml"
(url:http://localhost:80/myapp/test.html,statuscode:200,wp:3284)
TRACE "Default Web Site/fr000022.xml"
(url:http://localhost:80/,statuscode:200,wp:3284)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
214 Kapitel 7: Verwenden von Befehlszeilentools
Wird ein Ablaufverfolgungsprotokoll im Modus /text:* angezeigt, weist es viele zusätzliche Attribute
auf (die Sie bei der Arbeit mit dem Befehl List Traces ebenfalls zum Filtern der resultierenden Ausgabe
verwenden können).
TRACELOG
TRACE.NAME:"Default Web Site/fr000022.xml"
PATH:"C:\inetpub\logs\FailedReqLogFiles\W3SVC1\fr000022.xml"
URL:"http://localhost:80/myapp/test.html"
STATUSCODE:"200"
SITE.ID:"1"
SITE.NAME:"Default Web Site"
WP.NAME:"3284"
APPPOOL.NAME:"DefaultAppPool"
verb:"GET"
remoteUserName:"Administrator"
userName:"Administrator"
tokenUserName:"contoso\Administrator"
authenticationType:"Basic"
activityId:"{00000000-0000-0000-0300-0080010000FD}"
failureReason:"STATUS_CODE"
triggerStatusCode:"200"
Beachten Sie, dass das Protokoll weitere Informationen zur Anforderung bereithält. Dazu zählen auch
der Authentifizierungstyp und der Grund für die fehlgeschlagene Anforderung. Es enthält auch den
physikalischen Pfad zur Protokolldatei, so dass Sie diese unter Verwendung des Stylesheets für die auf
Anforderungsfehler bezogene Ablaufverfolgung in einem Browser öffnen können, um eine ausführliche Diagnose durchzuführen.
Schließlich können Sie eine Ablaufverfolgungsprotokolldatei auch nach bestimmten Ereignissen
durchsuchen, um schnell die Ereignisse zu finden, die zu einem Anforderungsfehler geführt haben.
Dazu können Sie den Befehl Inspect Trace benutzen. Dieser Befehl hat die folgende Syntax:
appcmd inspect trace <identifier> [/event.name:string]
[/name:string] [/level:int] [/providerid:string]
Dieser Befehl unterstützt die in Tabelle 7.9 aufgeführten Parameter.
Tabelle 7.9 Parameter für den Befehl Trace Command
Parameter
Beschreibung
identifier
Der Bezeichner des Ablaufverfolgungsprotokolls. Muss angegeben werden.
event.name
Der eindeutige Bezeichner des Ereignisses innerhalb dieses Ablaufverfolgungsprotokolls. Die Angabe erfolgt
in der Form ablaufverfBezeichner#index, wie bei Default Web Site/fr000001.xml#174. Sie können diese
Bezeichner-ID benutzen, um innerhalb des Ablaufverfolgungsprotokolls nach einem bestimmten Ereignis zu
suchen.
name
Der Anzeigenamen des Ereignisses. Benutzen Sie diesen Parameter, um bestimmte Ereignisse zu filtern.
level
Der numerische Ausführlichkeitsgrad eines Ereignisses. Benutzen Sie diesen Parameter, um Ereignisse mit
einem bestimmten Ausführlichkeitsgrad zu filtern, wie z.B. Warning, Error oder CriticalError.
providerid
Die GUID (Globally Unique Identifier, global eindeutiger Bezeichner) des Anbieters, der das jeweilige Ereignis
generiert hat
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft.Web.Administration
215
Sie können außerdem weitere Attribute des Ablaufverfolgungsobjekts angeben, die zum Filtern der
Ergebnisse verwendet werden sollen. Um die verfügbaren Attribute anzeigen zu lassen, untersuchen Sie
ein Ablaufverfolgungsprotokoll mit dem Parameter /text:*.
Sie können den Befehl Inspect Trace benutzen, um schnell das Ereignis aufzuspüren, das die gewünschte
Fehlerbedingung aufweist. Um beispielsweise alle Ereignisse des Ablaufverfolgungsprotokolls auflisten zu lassen, deren Ausführlichkeitsgrad Warning oder höher ist, benutzen Sie die folgende Syntax:
appcmd list traces "Default Web Site/fr000001.xml" "/level:$>4"
Um nach einem bestimmten Ereignis zu suchen, verwenden Sie diese Syntax:
appcmd list traces "Default Web Site/fr000001.xml"
"/name:WARNING_ _SEND_CUSTOM_ERROR"
Sie können diese einfachen Techniken mithilfe der Befehlsverknüpfung kombinieren, um mehrere
Ablaufverfolgungsprotokolldateien innerhalb kurzer Zeit zu analysieren. Lesen Sie das Blog unter
http://mvolo.com/blogs/serverside/archive/2007/06/19/Do-complex-IIS-management-tasks-easilywith-AppCmd-command-piping.aspx, um weitere Informationen zu erhalten.
Microsoft.Web.Administration
Eine weitere Möglichkeit des Zugriffs auf Konfigurationsdaten bietet die verwaltete API (Application
Programming Interface), die sich in der Assembly Microsoft.Web.Administration (MWA) befindet. Die MWAAssembly ermöglicht es Ihnen, auf eine Konfiguration zuzugreifen und diese zu ändern. Darüber hinaus
können Sie über die Verwaltungsobjekte der obersten Ebene auf einige Eigenschaften und Statusdaten
von Serverobjekten zugreifen. Zu diesen Verwaltungsobjekten zählen Sites, Anwendungspools und
Arbeitsprozesse.
Die folgenden Abschnitte beschreiben, wie MWA für allgemeine Verwaltungsaufgaben verwendet
wird. Diese Abschnitte setzen voraus, dass Sie mit verwaltetem Code und der Programmiersprache C#
ein wenig vertraut sind. Da sich dieses Buch nicht an Entwickler richtet, enthalten diese Abschnitte
keine umfassende Erläuterung zur Verwendung von MWA in allen möglichen Szenarien.
Sites mit MWA erstellen
Das folgende Beispiel nutzt MWA, um eine neue Site namens Fabrikam Site für Port 8080 zu erstellen,
die C:\inetpub\wwwroot\fabrikam als Stammverzeichnis für die Inhalte verwendet:
using System;
using Microsoft.Web.Administration;
namespace Example {
class Program {
static void Main(string[] args) {
ServerManager mgr = new ServerManager();
Site site = mgr.Sites.Add("Fabrikam",
@"C:\inetpub\wwwroot\fabrikam", 8080);
site.ServerAutoStart = true;
mgr.CommitChanges();
}
}
}
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
216 Kapitel 7: Verwenden von Befehlszeilentools
Beachten Sie, dass im Beispiel das Objekt ServerManager verwendet wird. Dies ist der Einstiegspunkt
für alle Aktionen, die mit den MWA-APIs arbeiten. Das ServerManager-Objekt ermöglicht den Zugriff
auf Eigenschaften, Methoden und Auflistungen, die wiederum den Zugriff auf andere Klassen der
Assembly ermöglichen. Obwohl Serverdaten auch direkt über XML oder Status-APIs verwaltet werden
können, ist mit MWA und den zugehörigen APIs ein einfacher Zugriff auf diese Daten möglich.
Lassen Sie uns jetzt einen Blick auf die Verwendung der Sites-Auflistung werfen, auf die über die SitesEigenschaft der ServerManager-Objektinstanz zugegriffen wird. Die Sites-Auflistung ermöglicht den Zugriff
auf alle Sites, die gegenwärtig für das System konfiguriert sind. Sie können Sites hinzufügen und
entfernen und bereits vorhandene Sites bearbeiten.
Sie können auch auf die Eigenschaften einzelner Sites zugreifen. Im folgenden Beispiel setzen Sie
die Autostart-Option einer Site auf true. Sie können viele Siteeigenschaften direkt über die Klasse Site
modifizieren. Sie können außerdem wie folgt über den entsprechenden Namen auf eine aus Sites
bestehende Auflistung zugreifen:
mgr.Sites["Fabrikam"].ServerAutoStart = true;
Die letzte besonders erwähnenswerte Zeile ist der Aufruf der Methode CommitChanges. Bis zum Aufruf
dieser Zeile erfolgen alle Änderungen ausschließlich im Arbeitsspeicher und werden nicht in das
Konfigurationssystem übernommen.
mgr.CommitChanges();
CommitChanges muss immer dann aufgerufen werden, wenn Sie eine Konfiguration aktualisieren möchten.
Wenn Ihr Programm CommitChanges nicht aufruft, gehen die innerhalb Ihrer Anwendung vorgenommenen
Konfigurationsänderungen verloren.
Nachdem die Änderungen gespeichert wurden, sollten Sie Ihre Sitekonfiguration in der applicationHost.config-Datei sehen können. Ihre Konfiguration sollte einen ähnlichen Abschnitt wie den folgenden enthalten:
<site name="Fabrikam" id="1000" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/"
physicalPath="c:\inetpub\wwwroot\fabrikam" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8080:" />
</bindings>
</site>
Anwendungspools mit MWA erstellen
Sie können die MWA-APIs ebenfalls benutzen, um Anwendungspools zu erstellen und diese einer Site
zuzuweisen. Das folgende Beispiel zeigt die dazu notwendige Vorgehensweise:
using System;
using Microsoft.Web.Administration;
namespace Example {
class Program {
static void Main(string[] args) {
ServerManager mgr = new ServerManager();
ApplicationPool pool =
mgr.ApplicationPools.Add("FabrikamPool");
pool.ManagedPipelineMode
= ManagedPipelineMode.Classic;
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft.Web.Administration
217
Site = mgr.Sites["Fabrikam"];
site.Applications[0].ApplicationPoolName =
@"FabrikamPool";
mgr.CommitChanges();
}
}
}
Die erste Zeile dieses Beispiels sollte Ihnen vertraut sein. Sie benutzen das ServerManager-Objekt, um
einen Verweis auf die Fabrikam-Site abzurufen. In der nächsten Zeile fügen Sie einen Anwendungspool
hinzu, indem Sie die Add-Methode der Auflistung ApplicationPoolsCollection benutzen, die von der Eigenschaft ApplicationPools zurückgegeben wird:
ApplicationPool pool =
mgr.ApplicationPools.Add("FabrikamPool");
Sie möchten für Ihren Anwendungspool den klassischen Pipelinemodus verwenden. Dies wird in der
nächsten Zeile festgelegt, die mit der ManagedPipelineMode-Eigenschaft der ApplicationPool-Klasse arbeitet:
pool.ManagedPipelineMode
= ManagedPipelineMode.Classic;
Anschließend greifen Sie auf die Stammanwendung der Fabrikam-Site zu und setzen den
Anwendungspool auf Ihren neu erstellten FabrikamPool:
Site = mgr.Sites["Fabrikam"];
site.Applications[0].ApplicationPoolName =
@"FabrikamPool";
Schließlich möchten Sie die Änderungen speichern:
mgr.CommitChanges();
Die Konfiguration festlegen
Der folgende Code demonstriert, wie die Microsoft.Web.Administration-APIs verwendet werden, um das
Standarddokument von Default Web Site zu aktivieren:
using System;
using Microsoft.Web.Administration;
namespace Example {
class Program
{
static void Main(string[] args) {
ServerManager mgr = new ServerManager();
Configuration config =
mgr.GetWebConfiguration(
"Default Web Site");
ConfigurationSection section =
config.GetSection(
"system.webServer/defaultDocument");
ConfigurationAttribute enabled =
section.GetAttribute("enabled");
enabled.Value = true;
mgr.CommitChanges();
}
}
}
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
218 Kapitel 7: Verwenden von Befehlszeilentools
In diesem Abschnitt benutzen Sie die Klasse Configuration, um direkt auf einen Konfigurationsabschnitt
zuzugreifen und den Wert eines Knotens zu setzen. Dazu müssen Sie zuerst mit der GetWebConfigurationMethode des Server-Managers auf die Webkonfigurationsstammdatei zugreifen:
ServerManager mgr = new ServerManager();
Configuration config =
mgr.GetWebConfiguration(
"Default Web Site");
Daraufhin wird eine Instanz der Configuration-Klasse an die Anwendung zurückgegeben. Benutzen Sie
die Objektinstanz, um direkt auf einen Konfigurationsabschnitt zuzugreifen und dann das Attribut
anzufordern, dass Sie ändern möchten:
ConfigurationSection section =
config.GetSection(
"system.webServer/defaultDocument");
ConfigurationAttribute enabled =
section.GetAttribute("enabled");
Nehmen Sie zuletzt die Änderung am Attribut vor, und lassen Sie dieser Änderung einen Aufruf von
CommitChanges folgen, der zur Aktualisierung des Konfigurationssystems führt:
enabled.Value = true;
mgr.CommitChanges();
Sie können Microsoft.Web.Administration für viele weitere Aufgaben nutzen. Machen Sie sich über
die MSDN-Referenz mit einigen Eigenschaften und Methoden der Assembly vertraut. Sie werden
feststellen, dass die meisten Aufgaben über die API gelöst werden können, was oft sehr viel einfacher
als eine direkte Bearbeitung der Konfiguration ist.
Windows PowerShell und IIS 7.0
Windows PowerShell bietet eine funktionsreiche Befehlsshell an. Windows PowerShell nutzt die
Vorzüge der Microsoft C#-Skriptsprache und verwendet ein auf dem .NET Framework basierendes
Objektmodell, um leistungsfähige Funktionen für die Umleitung von Objekten und die dynamische
Bearbeitung von Ergebnissätzen zur Verfügung stellen. Sie können Befehle direkt von der Befehlszeile
aus, aber auch aus Skripts heraus aufrufen.
Wenn Sie mit Windows PowerShell arbeiten, benutzen Sie integrierte Befehle, die als Cmdlets
bezeichnet werden. Diese werden genauso wie die Befehle oder Hilfsmittel genutzt, die Sie an der
Befehlszeile verwenden. Cmdlets sind sowohl einfach als auch leistungsfähig. Ihre Namen ergeben sich
aus einer einfach zu verstehenden Wortpaarung:
NewErzeugt eine neue Instanz eines Elements oder Objekts
Remove- Entfernt eine Instanz eines Elements oder Objekts
SetModifiziert bestimmte Einstellungen eines Objekts
GetRuft ein bestimmtes Objekt oder eine Untermenge eines Objekts ab
Das Cmdlet Get-Credential ruft beispielsweise basierend auf einem Kennwort ein Anmeldeinformationsobjekt ab. Sie erhalten eine Liste aller Cmdlets, indem Sie an der Eingabeaufforderung von Windows
PowerShell help * eingeben.
Wenn neue Cmdlets für die Verwaltung von IIS-Servern veröffentlicht werden, können Sie diese über
Server-Updates oder heruntergeladene Installationspakete installieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
COM-Objekte für die IIS 7.0-Konfiguration
219
Die folgenden Bücher stellen hervorragende Quellen dar, wenn Sie mehr über den Einsatz von
Windows PowerShell unter IIS 7.0 erfahren möchten:
Microsoft IIS 7.0 Taschenratgeber für Administratoren von William R. Stanek (Microsoft Press, 2007)
Microsoft Windows PowerShell Step by Step (englisch) von Ed Wilson (Microsoft Press, 2007)
Windows PowerShell Scripting Guide (englisch) von Ed Wilson (Microsoft Press, 2007)
WMI-Anbieter
IIS 7.0 unterstützt auch weiterhin den alten WMI-Anbieter, der unter IIS 6.0 zur Verwaltung des
Webservers verwendet wurde. Dieser WMI-Anbieter stellt seine Dienste über den Rollendienst IIS 6Metabasiskompatibilität zur Verfügung, der die IIS 6.0-Konfigurationseinstellungen und -aktionen
in die IIS 7.0-Konfigurationsstruktur übersetzt. Um bereits vorhandene, mit dem WMI-Objektmodell
von IIS 6.0 arbeitende Skripts zu benutzen, müssen Sie den Rollendienst IIS 6-WMI-Kompatibilität
installieren (Kategorie Verwaltungstools\IIS 6-Verwaltungskompatibilität), sofern Sie unter Windows
Server 2008 die Webserverrolle im Server-Manager verwalten. Alternativ hierzu benutzen Sie unter
Windows Vista die Seite Windows-Funktionen ein- oder ausschalten. Um mehr über die IIS 6.0Metabasiskompatibilitätsschicht zu erfahren, lesen Sie bitte das vierte Kapitel.
Hinweis Um Konfigurationsskripts zu verwenden, die Aufrufe an das alte WMI-Objektmodell von IIS 6.0 richten,
müssen Sie den Rollendienst IIS 6-WMI-Kompatibilität installieren.
Die Übersetzungsschicht zwischen einem WMI-Skript, dem Metabasisformat und dem neuen Konfigurationssystem kann bei der Konfigurationszuordnung zu leichten Abweichungen führen, sofern Sie
alte IIS 6.0-Konfigurationsskripts und -APIs verwenden. Deshalb wird empfohlen, bereits vorhandene
Skripts zu migrieren, so dass diese die neuen Konfigurations-APIs benutzen. Sie würden sich dann für
den Einsatz des neuen WMI-Anbieters entscheiden, der den direkten Zugriff auf das neue Konfigurationssystem ermöglicht und ein anderes Objektmodell als der WMI-Anbieter von IIS 6.0 verwendet.
Hinweis Um unter IIS 7.0 den neuen WMI-Anbieter zu nutzen, müssen Sie den Rollendienst IIS-Verwaltungsskripts und -tools installieren. Installieren Sie nicht den Rollendienst IIS 6-WMI-Kompatibilität, wenn Sie den neuen
WMI-Provider verwenden möchten.
Um weitere Informationen zum Objektmodell des WMI-Anbieters zu erhalten, lesen Sie die Onlinedokumentation, die unter http://msdn2.microsoft.com/en-us/library/aa347459.aspx verfügbar ist.
COM-Objekte für die IIS 7.0-Konfiguration
Sie können auch direkt die COM-Objekte für die IIS 7.0-Konfiguration benutzen, um unter IIS 7.0
die IIS-Konfiguration zu verwalten und auf die Verwaltungsfunktionalität zuzugreifen. Sie können aus
nativen C++-Programmen, .NET-Anwendungen oder Skriptumgebungen heraus auf diese COMObjekte zugreifen. Im letzten Fall stellen die COM-Konfigurationsobjekte eine einfachere Alternative
für die Nutzung des WMI-Anbieters dar, weil sie einerseits eine einfachere Syntax besitzen und
andererseits der Overhead der WMI-Infrastruktur nicht gegeben ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
220 Kapitel 7: Verwenden von Befehlszeilentools
Diese COM-Objekte sind ebenfalls verfügbar, wenn IIS 7.0 installiert ist, und sie sind nicht von
irgendwelchen externen Komponenten abhängig. Sie erfordern keine Installation des .NET Frameworks.
Um mehr über den Einsatz der COM-Objekte für die IIS 7.0-Konfiguration zu erfahren, lesen Sie bitte
die Onlinedokumentation zu den Klassen Microsoft.ApplicationHost.WritableAdminManager und Microsoft.ApplicationHost.AdminManager.
Zusammenfassung
In diesem Kapitel haben Sie die verfügbaren Optionen für die Verwaltung von IIS 7.0 über die Befehlszeile kennen gelernt. Dabei wurde besonders Appcmd behandelt – das einheitliche Befehlszeilentool für
die IIS 7.0-Verwaltung –, mit dem die meisten grundlegenden IIS 7.0-Verwaltungsaufgaben ausgeführt
werden können.
Sie können Appcmd benutzen, um grundlegende IIS 7.0-Objekte einfach zu verwalten. Dazu zählen
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools. Sie können mit dem Programm Webserverkonfigurationen generisch bearbeiten und alle erforderlichen Konfigurationsaufgaben ausführen. Darüber hinaus können mit Appcmd auch andere Schlüsselaufgaben bequem
gelöst werden, wie z.B. die Verwaltung von Webservermodulen, das Konfigurieren der Ablaufverfolgung für Anforderungsfehler und die Sicherung und Wiederherstellung von Konfigurationen.
Der Vorteil von Appcmd besteht darin, dass zur effektiven Verwaltung des Webservers keine Programmierung erforderlich ist. Wenn Sie jedoch Verwaltungsaufgaben aus einer Programmierumgebung
heraus lösen müssen, stehen Ihnen mehrere Optionen zur Entwicklung einer umfassenden Verwaltungsautomatisierung zur Verfügung. Zu diesen Optionen zählen die Microsoft.Web.Adminstration-API für .NET
Framework-Anwendungen und der neue WMI-Anbieter. Sie können außerdem benutzerdefinierte
Windows PowerShell-Skripts entwickeln. Weitere Informationen zur Nutzung dieser Optionen finden
Sie in der MSDN-Onlinedokumentation und in den entsprechenden Artikeln unter http://www.iis.net.
Auf der Begleit-CD
Auf der CD finden Sie weitere Tools und Ressourcen.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Artikel zur Verwaltung von IIS über die Befehlszeile finden Sie unter http://www.iis.net. Lesen Sie
die MSDN-Dokumentation, um mehr über Appcmd, Microsoft.Web.Administration und WMI zu
erfahren.
Das vierte Kapitel, »Verstehen des Konfigurationssystems«, hält weitere Informationen zum
Konfigurationssystem von IIS 7.0 bereit.
Das sechste Kapitel, »Verwenden von IIS-Manager«, bietet zusätzliche Informationen zur
Verwaltung von IIS 7.0 mit dem IIS-Manager.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
221
K A P I T E L
8
Remoteverwaltung
Inhalt dieses Kapitels:
Der IIS-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webverwaltungsdienst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf der Begleit-CD
222
222
248
248
Auf der CD finden Sie weitere Tools und Ressourcen .
Die Möglichkeit, einen Server remote zu verwalten, stellt für Administratoren eine wichtige Voraussetzung dar. Administratoren müssen oft auf dem Server globale Verwaltungsaufgaben ausführen, wie
z.B. das Ändern der Einstellungen eines Anwendungspools oder die Konfiguration der Standardprotokollierungsregeln. Sie müssen aber auch spezifischere Aufgaben lösen, wie z.B. die Aktivierung der
Ablaufverfolgung für eine bestimmte Anwendung. Serveradministratoren sind jedoch nicht die
einzigen Benutzer, die Einstellungen auf dem Server konfigurieren müssen. In einer gehosteten Umgebung sollten die Benutzer beispielsweise die Einstellungen ihrer Sites remote bearbeiten können. In
einer Unternehmensumgebung könnte es sein, dass die Entwickler Anwendungseinstellungen ändern
müssen, obwohl sie keine Administratoren des jeweiligen Computers sind. Solche Aufgaben müssen in
der Regel ohne physikalischen Zugriff auf den Server gelöst werden können. IIS (Internet Information
Services; Internetinformationsdienste) bietet Ihnen erstmals mit Version 7.0 alle benötigten Konfigurationstools, und zwar unabhängig davon, ob Sie ein Serveradministrator oder ein Hoster sind, der seinen
Benutzern den Remotezugriff ermöglichen möchte.
IIS 7.0 stellt verschiedene Tools zur Verfügung, mit denen Sie das System von einem Remotecomputer
aus verwalten können. Einige dieser Tools sind nachfolgend aufgeführt:
Der IIS 7.0-Manager (Internet Information Services), bei dem es sich um ein
Benutzeroberflächentool für die Verwaltung über HTTPS handelt
Die AHADMIN-COM-Bibliothek (Application Host Administration-API), die von Skripts und
Anwendungen verwendet werden kann
Die aus verwaltetem Code bestehende Bibliothek Microsoft.Web.Administration, die in Anwendungen
benutzt werden kann, die ebenfalls aus verwaltetem Code bestehen
Der neue WMI-Anbieter (Windows Management Instrumentation), der Skripts oder verwalteten
Code verwendet, um Konfigurationen zu verwalten
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
222 Kapitel 8: Remoteverwaltung
Dieses Kapitel erläutert, wie die vom IIS-Manager angebotene Remotingplattform eingerichtet und
genutzt wird. Diese Remotingplattform bietet eine neue Infrastruktur für die Remoteverwaltung von
Websites und führt verschiedene Erweiterungen ein, wie z.B. die Delegierung, die Remoteverwaltung
über HTTPS und viele weitere neue Features und Konfigurationsoptionen, die Sie mit der Flexibilität
ausstatten, die Sie zur Verwaltung von IIS 7.0 benötigen. Dazu zählt auch die Möglichkeit, IIS unter
Verwendung nichtadministrativer Windows-Konten zu verwalten.
Der IIS-Manager
Der IIS-Manager besitzt eine überarbeitete Benutzeroberfläche, mit deren Hilfe der Zugriff auf die
Konfigurationseinstellungen von IIS 7.0 und ASP.NET über ein integriertes Tool möglich ist. Er wurde
von Grund auf neu als einfach zu erweiternde Plattform entworfen, die die Arbeit mit allen Webplattformeinstellungen vereinheitlicht. Teil dieses Plattformentwurfs ist eine Remotinginfrastruktur für
integrierte Features, aber auch für die Features von Drittanbietern. Weitere Informationen zum IISManager finden Sie im sechsten Kapitel, »Verwenden von IIS-Manager«.
Um einen Server remote zu verwalten, muss der IIS-Manager mit einem separaten IIS 7.0-Dienst
zusammenarbeiten, der WMSvc heißt (Web Management Service, Webverwaltungsdienst). Dieser wird
als Teil des Rollendienstes IIS-Verwaltungsskripts und -tools installiert.
Hinweis Um ein unter Windows Server 2008 ausgeführtes IIS 7.0-System remote zu verwalten, muss auf dem
Clientcomputer der IIS-Manager vorhanden sein. Standardmäßig ist nur Windows 2008 dazu in der Lage. Sie
können jedoch eine entsprechende Unterstützung für Windows XP Service Pack 2 (SP2), Windows 2003 SP1
und Windows Vista SP1 für die x86- und x64-Versionen dieser Betriebssysteme herunterladen. Die Adresse lautet:
http://iis.net/downloads.
Webverwaltungsdienst
Der Webverwaltungsdienst ist ein IIS 7.0-Dienst, der auf dem IIS-Server ausgeführt wird – also dem
Server, der remote verwaltet werden soll. Er stellt zwei wichtige Features zur Verfügung:
Er kümmert sich für den IIS-Manager um die Remoteverwaltung, indem er die HTTPS-Anforderungen überwacht, die von den mit dem IIS-Manager arbeitenden Remotebenutzern eingehen. Er
führt dann die angeforderten Operationen lokal aus.
Er ermöglicht Windows Benutzern ohne administrative Rechte und Nicht-Windows-Benutzern den
Zugriff, und zwar unabhängig davon, ob sie den IIS-Manager lokal oder von einem Remotecomputer aus verwenden.
Hinweis Dieser Dienst funktioniert nicht unter Windows Vista. Dies bedeutet, dass ein unter Windows Vista
ausgeführtes IIS-System nicht mithilfe des IIS-Managers remote verwaltet werden kann.
Windows Server 2008 Server Core kann nicht mit verwaltetem Code arbeiten, so dass der Webverwaltungsdienst für eine solche Konfiguration nicht installiert werden kann.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
223
Installation
Der Webverwaltungsdienst ist nicht Teil der IIS 7.0-Standardinstallation, sondern ein optionaler
Rollendienst, der installiert werden und dessen Starttyp konfiguriert werden muss. Um ihn zu
installieren, können Sie den Server-Manager oder das Befehlszeilentool ServerManagerCMD
benutzen. Für die Installation mithilfe des Server-Managers gehen Sie wie folgt vor:
1. Starten Sie den Server-Manager.
2. Markieren Sie im Server-Manager den Knoten Rollen.
3. Klicken Sie innerhalb der Rollengruppe Webserver (IIS) auf Rollendienste hinzufügen.
4. Klicken Sie unter Verwaltungstools auf Verwaltungsdienst und dann auf Weiter.
5. Klicken Sie auf Installieren.
Abbildung 8.1 zeigt das Dialogfeld Rollendienst auswählen.
Abbildung 8.1 Rollendienste des Server-Managers
Um den Webverwaltungsdienst mit ServerManagerCMD zu installieren, lassen Sie die folgende
Befehlszeile ausführen:
ServerManagerCMD -install Web-Mgmt-Service
Weitere Informationen zur Installation von Features finden Sie im fünften Kapitel, »Installieren von IIS
7.0«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
224 Kapitel 8: Remoteverwaltung
Webverwaltungsdienst-Setup
Die Installation des Webverwaltungsdienstes nimmt folgende Änderungen an Ihrem Server vor:
Der Dienst wird so konfiguriert, dass er unter Verwendung des Kontos Lokaler Dienst ausgeführt
wird. Dank der Dienstisolation, die ein neues Feature von Windows Server 2008 und Windows
Vista ist, werden jedoch alle für den Dienst benötigten Ressourcen über eine WMSvc-spezifische
SID (Security Identifier; Sicherheits-ID) namens NT Service\WMSvc geschützt.
Der Ordner %SystemDrive%\Inetpub\Logs\Wmsvc wird erstellt und NT Service\WMSvc erhält
die Berechtigung, diesen Ordner zu modifizieren.
Es wird eine neue Regel für die Firewall für eingehende Verbindungen aufgestellt. Diese Regel
trägt den Namen Webverwaltungsdienst (HTTP) und sie wird für TCP-Port 8172 erstellt und
aktiviert.
Für den Computer wird ein neues selbstsigniertes SSL-Zertifikat (Secure Sockets Layer) generiert. Dazu wird ein Name im Format WMSvc-computername verwendet.
In HTTP.sys wird die SSL-Konfiguration für den Dienst so konfiguriert, dass das selbstsignierte
Zertifikat verwendet wird und Port 8172 dafür reserviert ist.
Die Konfiguration wird in den Registrierungsschlüssel HKLM\Software\Microsoft\WebManagement\Server geschrieben.
Der ASP.NET-Infrastruktur werden Berechtigungen gewährt:
Berechtigungen zum Schreiben und Ändern im .NET Framework-Verzeichnis für temporäre
ASP.NET-Dateien
Leseberechtigungen für das Verzeichnis %SystemRoot%\System32\Inetsrv\config
Berechtigungen zum Ändern des ASP.NET-Registrierungsschlüssels CompilationMutexName
WMSvc-Konfiguration
Nachdem der Webverwaltungsdienst installiert wurde, müssen Sie einige Konfigurationsänderungen
vornehmen, um den Dienst an Ihre Umgebung anzupassen. Besonders wichtige Konfigurationsaufgaben sind:
die Konfiguration des Dienstes für den automatischen Start
das Ermöglichen von Remoteverbindungen, die Auswahl des SSL-Zertifikats und das Festlegen der
IP-Konfiguration
das Festlegen von IPv4-Adressbeschränkungen
das Konfigurieren von Verbindungsauthentifizierungsoptionen
Den automatischen Start des Dienstes konfigurieren
Nach der Installation ist der Webverwaltungsdienst für einen manuellen Start konfiguriert, so dass
ein erneuter Start nicht automatisch erfolgt, wenn der Dienst beendet wurde. Diese Situation wäre
beispielsweise nach einem Neustart des Computers gegeben. Um somit die Remoteverwaltung nach
Beendigung des Webverwaltungsdienstes wieder zu aktivieren, müsste jemand den Dienst manuell
starten. Aus diesem Grund ist es wichtig, den Dienst so einzurichten, dass er automatisch startet,
wodurch gewährleistet wird, dass die Remoteverwaltung ständig aktiv ist. Sie können dazu die Konsole
Dienste oder das Befehlszeilentool Sc.exe verwenden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
225
Um den Dienst mithilfe der Konsole Dienste für den automatischen Start zu konfigurieren, gehen Sie
wie folgt vor:
1. Starten Sie aus der Programmgruppe Verwaltung heraus die Konsole Dienste.
2. Führen Sie einen Doppelklick auf Webverwaltungsdienst aus.
3. Wählen Sie im Dropdown-Listenfeld Starttyp den Eintrag Automatisch und klicken Sie auf OK.
Abbildung 8.2 zeigt das Dialogfeld Eigenschaften von Webverwaltungsdienst.
Abbildung 8.2 Das Dialogfeld Eigenschaften von Webverwaltungsdienst
Um den Dienst mithilfe des Befehlszeilentools Sc.exe (Services Configuration; Dienstkonfiguration)
für den automatischen Start zu konfigurieren, lassen Sie in einer Eingabeaufforderung in folgendem
Befehl ausführen:
sc config WMSvc start= auto
Hinweis WMSvc ist der Name des Dienstes in der Dienstkonfigurationsdatenbank. Achten Sie in der vorherigen
Befehlszeile darauf, hinter dem Gleichheitszeichen (=) ein Leerzeichen anzugeben. Der Befehl wird andernfalls nicht
richtig ausgeführt.
Remoteverbindungen, SSL-Zertifikat und IP-Konfiguration
Der Webverwaltungsdienst ist standardmäßig so konfiguriert, dass zur Durchführung von Verwaltungsaufgaben nur lokale Verbindungen zum Dienst hergestellt werden können. Auf diese Weise können
delegierte Benutzer (Nichtadministratoren) am lokalen Computer eine Verbindung zum Server herstellen, um ihre Sites und Anwendungen zu verwalten. Von einem Remotecomputer aus können die
Benutzer jedoch keine Verbindung herstellen. Um dies zuzulassen, müssen Sie Remoteverbindungen
mit dem IIS-Manager-Feature Verwaltungsdienst aktivieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
226 Kapitel 8: Remoteverwaltung
Außerdem wird während des Setups unter Verwendung von HTTP.sys ein selbstsigniertes Zertifikat
generiert, das für die SSL-Registrierung an Port 8172 verwendet wird. Dieses Zertifikat ist für die
schnelle Einrichtung einer Testkonfiguration geeignet. Es wird jedoch nachdrücklich empfohlen, dass
Sie ein von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) ausgestelltes
Zertifikat beantragen, das von den Benutzern verwendet wird, um eine Verbindung zum Server herzustellen. Bei einem integrierten selbstsignierten Zertifikat wird auf jedem Remotecomputer, der eine
Verbindung zum Server herstellen möchte, eine Warnmeldung angezeigt, die wissen will, ob das
Zertifikat vertrauenswürdig ist und die Verbindung zum Server wirklich hergestellt werden soll. Diese
Meldung ermöglicht es dem Benutzer, detaillierte Informationen zum Zertifikat einzusehen. Abbildung
8.3 zeigt die Serverzertifikatwarnung, die den Benutzern präsentiert wird, wenn sie ein selbstsigniertes
Zertifikat verwenden.
Abbildung 8.3 Serverzertifikatwarnung
Um diese Warnung zu vermeiden, müssen Sie bei Ihrer eigenen vertrauenswürdigen Zertifizierungsstelle oder bei einer bekannten externen Zertifizierungsstelle ein gültiges Zertifikat für die Serverauthentifizierung beantragen und dieses anschließend konfigurieren. Ein solches Zertifikat kann
mithilfe verschiedener Tools auf dem Server installiert werden. Zu diesen Tools zählen die Konsole
Zertifikate und das IIS-Manager-Feature Serverzertifikate. Nachdem das Zertifikat auf dem Computer
installiert wurde, können Sie den Webverwaltungsdienst über das IIS-Manager-Feature Verwaltungsdienst so konfigurieren, dass er das Zertifikat verwendet. Gehen Sie dazu wie folgt vor:
1. Starten Sie über die Programmgruppe Verwaltung den Internetinformationsdienste-Manager.
2. Markieren Sie im Bereich Verbindungen den Knoten des IIS-Computers, und führen Sie in der
Ansicht Features einen Doppelklick auf Verwaltungsdienst aus. Um Änderungen vornehmen zu
können, müssen Sie den Webverwaltungsdienst zunächst beenden.
3. Im oberen Bereich der Seite können Sie dafür sorgen, dass Remoteverbindungen möglich sind,
indem Sie ein Häkchen in das Kontrollkästchen vor Remoteverbindungen aktivieren setzen.
4. Im Bereich Verbindungen können Sie die IP-Adresse und den Port festlegen, an die/den Sie den
Dienst binden möchten. Sie können auch das SSL-Zertifikat auswählen, indem Sie mit dem Dropdown-Listenfeld SSL-Zertifikat arbeiten, das alle für die Serverauthentifizierung verfügbaren
Zertifikate enthält.
5. Klicken Sie, nachdem Sie alle erforderlichen Änderungen vorgenommen haben, auf Übernehmen,
um den Dienst zu starten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
227
Abbildung 8.4 zeigt die Konfigurationseinstellungen des Verwaltungsdienstes.
Abbildung 8.4 Das Verwaltungsdienst-Feature
Hinweis Wenn der Webverwaltungsdienst ausgeführt wird, sind die Optionen des Features Verwaltungsdienst
deaktiviert. Um die Konfiguration zu ändern, müssen Sie im Bereich Aktionen auf Beenden klicken.
Hinweis Wenn Sie den vom Dienst verwendeten Port ändern und Remoteverbindungen zulassen möchten, müssen Sie eine Firewallausnahme für den neuen Port definieren. Andernfalls ist eine Verbindungsherstellung nicht
möglich. Während des Setups wird standardmäßig eine Firewallausnahme namens Webverwaltungsdienst (HTTP)
für Port 8172 hinzugefügt und aktiviert. Wenn somit die Remotebenutzer den Servernamen in das Dialogfeld Mit
Server verbinden eingeben, müssen sie im Textfeld Servername auch den neuen Port angeben (z.B. MyServerMachine:8173). Weitere Informationen zum Dialogfeld Mit Server verbinden finden Sie später in diesem Kapitel im
Abschnitt »Mit der Remoteverwaltung arbeiten«.
Alle vom Feature Verwaltungsdienst konfigurierten Einstellungen sind in der Windows-Registrierung
unter dem folgenden Schlüssel gespeichert:
HKLM\SOFTWARE\Microsoft\WebManagement\Server
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
228 Kapitel 8: Remoteverwaltung
Tabelle 8.1 führt die Registrierungseinträge des Webverwaltungsdienstes auf.
Tabelle 8.1 Registrierungseinträge für den Webverwaltungsdienst
Wert
Beschreibung
EnableLogging
Gibt an, ob die Protokollierung aktiviert werden soll. Der Vorgabewerte ist 1 (aktiviert).
EnableRemoteManagement
Gibt an, ob der Dienst Remoteverbindungen oder nur lokale, delegierte Verbindungen ermöglichen soll. Der Vorgabewerte ist 0 (nicht zulässig). Setzen Sie ihn auf 1, um Remoteverbindungen
zuzulassen.
IPAddress
Gibt die IP-Adresse an, an die der Dienst gebunden ist. Die Vorgabe ist Keine zugewiesen.
Hinweis: Das Ändern dieses Wertes in der Windows-Registrierung hat keine Auswirkungen,
da der IIS-Manager die SSL-Konfiguration und die URL-Reservierung mithilfe von HTTP.sys
durchführt. (Dies wird später in diesem Kapitel ausführlich erläutert.)
LoggingDirectory
Gibt das Verzeichnis an, in dem die Protokolldateien generiert werden sollen. Der Vorgabewert
hierfür ist %SystemDrive%\Inetpub\logs\Wmsvc.
Port
Legt den Port fest, der vom Dienst verwendet werden soll. Der Vorgabewert ist 8172.
Hinweis: Das Ändern dieses Wertes in der Windows-Registrierung hat keine Auswirkungen,
da der IIS-Manager die SSL-Konfiguration und die URL-Reservierung mithilfe von HTTP.sys
durchführt. (Dies wird später in diesem Kapitel ausführlich erläutert.)
RemoteRestrictions
Stellt eine serialisierte Version der Liste zur Verfügung, die die konfigurierten IP-Adressbeschränkungen enthält. Dieser Wert sollte nicht direkt bearbeitet werden.
RequiresWindowsCredentials
Legt fest, ob Windows-Anmeldeinformationen oder auch IIS-Manager-Anmeldeinformationen für
Remoteverbindungen zulässig sind. Der Vorgabewert ist 1, und er legt fest, dass nur WindowsAnmeldeinformationen erlaubt sind. Setzen Sie ihn auf 0, damit beide Arten von Anmeldeinformationen verwendet werden können. (Weitere Informationen zu diesem Thema finden Sie später
in diesem Kapitel im Abschnitt »Verbindungsauthentifizierungsoptionen«.)
SelfSignedSslCertificateHash
Enthält das Zertifikathash des während des Setups generierten selbstsignierten Zertifikats
SslCertificateHash
Legt das für SSL zu verwendende Zertifikathash fest
Hinweis: Das Ändern dieses Wertes in der Windows-Registrierung hat keine Auswirkungen,
da der IIS-Manager die SSL-Konfiguration und die URL-Reservierung mithilfe von HTTP.sys
durchführt. (Dies wird später in diesem Kapitel ausführlich erläutert.)
Wie bereits erwähnt wurde, führt eine direkt in der Registrierung erfolgende Änderung einiger Werte,
wie z.B. IPAddress, Port oder SslCertificateHash, nicht dazu, dass der Dienst diese Werte automatisch
verwendet. Der Grund hierfür besteht darin, dass sie über die Benutzeroberfläche in der URL-Registrierung und SSL-Konfiguration von HTTP.sys festgelegt werden. Wenn Sie somit diese Einstellungen
automatisch konfigurieren möchten, müssen Sie sowohl die Registrierung manuell aktualisieren als
auch eine entsprechende Registrierung bei HTTP.sys durchführen, was mit dem Befehlszeilentool für
die Netzwerkkonfiguration (Netsh.exe) möglich ist. Danach starten Sie den Webverwaltungsdienst neu.
IPv4-Adressbeschränkungen
Wenn der Webverwaltungsdienst ausgeführt wird und Remoteverbindungen aktiviert sind, ist es möglich, über jede IP-Adresse eine Verbindung zum Server herzustellen. Mit dem Verwaltungsdienst
können Sie für eine bessere Sicherheit sorgen, indem Sie eine bestimmte IP-Adresse oder einen IP-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
229
Adressbereich festlegen, der bzw. dem Sie den Zugriff gewähren oder verweigern möchten. Sie können
außerdem den Zugriff für alle Clients konfigurieren, die in der Liste nicht aufgeführt sind. Die hierfür
erforderliche Konfiguration ist einfacher zu verstehen, wenn sie anhand von Beispielen erläutert wird:
Eine bestimmte Gruppe von Clients zulassen. Um dies zu konfigurieren, wählen Sie im DropdownListenfeld Zugriff für nicht angegebene Clients den Eintrag Verweigern aus, so dass nur die in der
Einschränkungsliste aufgeführten Clients zulässig sind. Sie müssen außerdem alle gewünschten
Clients oder IP-Adressbereiche mithilfe der Schaltfläche Zulassen hinzufügen. Abbildung 8.5 zeigt
ein Beispiel für diese Konfiguration.
Abbildung 8.5 IPv4-Adresseinschränkung, die nur eine bestimmte Gruppe von Clients zulässt
Eine bestimmte Gruppe von Clients ablehnen. Um dies zu konfigurieren, wählen Sie im DropdownListenfeld Zugriff für nicht angegebene Clients den Eintrag Zulassen aus. Bei dieser Auswahl dürfen
alle Clients außer diejenigen, die in der Einschränkungsliste aufgeführt sind, auf den Server zugreifen.
Sie benutzen anschließend die Schaltfläche Verweigern, um alle Clients oder IP-Adressbereiche
hinzuzufügen, die Sie ablehnen möchten. Abbildung 8.6 zeigt ein Beispiel für diese Konfiguration.
Hinweis Diese Einstellungen beziehen sich ausschließlich auf IPv4-Adressen. Um sie zu ändern, müssen
Remoteverbindungen aktiviert sein.
Hinweis Die vom Webverwaltungsdienst verwendete IPv4-Einschränkungsliste unterscheidet sich von den unter
IIS für den Webserver konfigurierten Einschränkungen für IPv4-Adressen und -Domänen. Beide werden unabhängig voneinander ausschließlich vom jeweiligen zugehörigen Dienst verwendet.
Abbildung 8.6 IPv4-Adresseinschränkung, die eine Zugriffsverweigerung für
eine bestimmte Clientgruppe festlegt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
230 Kapitel 8: Remoteverwaltung
Verbindungsauthentifizierungsoptionen
Eines der leistungsfähigsten Features der delegierten Konfiguration unter IIS 7.0 besteht darin, dass
Benutzer ohne administrative Rechte ihre Site- und Anwendungseinstellungen in eigenen web.configDateien konfigurieren können. Der Webverwaltungsdienst weitet diese Möglichkeit sogar noch aus,
indem er nicht nur die Benutzeroberfläche hierfür zur Verfügung stellt, sondern dafür sorgt, dass die
Benutzer ihre eigenen web.config-Dateien ändern können, ohne ein Windows-Benutzerkonto besitzen
zu müssen. Solche Benutzer werden als IIS-Manager-Benutzer bezeichnet und können mithilfe des IISManagers konfiguriert werden. Wenn Sie eine klare Vorstellung von den Unterschieden zwischen
diesen Authentifizierungsmodellen haben, können Sie eine Strategie wählen, die für Ihre Umgebung
besonders geeignet ist.
Windows-Anmeldeinformationen Für die Aktivierung der Remoteverwaltung wird der Einsatz von
Windows-Anmeldeinformationen empfohlen, da Windows Ihnen eine robuste Lösung für die Verwaltung von Benutzern und Gruppen und zum Aufstellen von Richtlinien, wie z.B. Kontokennwortrichtlinien, bietet. Darüber hinaus hält Windows mehrere Tools bereit, die diese Verwaltungsaufgaben
vereinfachen. Wenn Sie mit den Windows-Anmeldeinformationen arbeiten, wird jede Aktion eines
Remotebenutzers unter dessen Identität auf dem Server ausgeführt. Dies bedeutet, dass Sie die Sicherheitsmechanismen von Windows nutzen können, wie z.B. ACLs (Access Control List, Zugriffssteuerungsliste), um die Ressourcen auf dem Server besser zu schützen. Außerdem können Sie diese
Mechanismen genauer steuern. Das bedeutet natürlich, dass Sie dem jeweiligen Benutzer spezifische
Zugriffsrechte für die Ressourcen gewähren müssen, die ihm obliegen. Sie müssen insbesondere
Schreibrechte für die web.config-Dateien gewähren, die vom Benutzer verwaltet werden.
Windows-Administratoren sind die einzigen Benutzer, die eine Verbindung zu einem Server herstellen
und diesen vollständig verwalten können, und sie können immer eine Verbindung zum Server und
zu jeder Site oder Anwendung herstellen. Windows-Benutzer, die über keine administrativen Rechte
verfügen, können lediglich eine Verbindung zu ihren Sites und Anwendungen herstellen und dies ist
auch nur dann möglich, wenn der Administrator ihnen entsprechende Zugriffsrechte gewährt hat.
IIS-Manager-Anmeldeinformationen IIS-Manager-Anmeldeinformationen stellen eine Alternative
für solche Situationen dar, in denen die Erstellung von Windows-Konten für alle Remotebenutzer keine
Option ist, oder wenn die Benutzer, die eine Verbindung herstellen können sollen, bereits in einem
anderen Authentifizierungssystem gespeichert sind, z.B. in einer benutzerdefinierten Datenbank, und
Sie mit nur diesem einen Speicher arbeiten möchten. IIS-Manager-Benutzer verwenden ausschließlich
eine Kombination aus Benutzername und Kennwort und entsprechen in keinerlei Hinsicht WindowsPrinzipalen. Deshalb werden ihre Anforderungen immer unter der Prozessidentität ausgeführt, die über
die Anmeldungseinstellung des Webverwaltungsdienstes konfiguriert wird. Der Webverwaltungsdienst
ist standardmäßig so konfiguriert, dass er das Konto Lokaler Dienst verwendet, doch dank des Dienstisolationsfeatures von Windows Server 2008 können Sie die dienstspezifische SID NT Service\WMSvc
verwenden, um den Zugriff auf Inhalte und Ressourcen zu schützen.
Ein Nachteil, der mit der Nutzung der IIS-Manager-Anmeldeinformationen einhergeht, besteht darin, dass
Sie immer derselben Identität (NT Service\WMSvc) Zugriffsrechte für alle nutzbaren Ressourcen gewähren
müssen, und zwar unabhängig davon, zu welcher Site oder Anwendung der jeweilige Benutzer eine Verbindung herstellt. Dies bedeutet, dass auf der Betriebssystemebene keine Isolation gegeben ist. Dies sollte
jedoch kein Problem darstellen, da die integrierten IIS-Manager-Features so entwickelt wurden, dass ein
Benutzer außerhalb seines Gültigkeitsbereichs keine Aktionen initiieren kann. Die Funktionalität des IISManagers ist jedoch erweiterbar und es ist wichtig, dass Sie IIS-Manager-Verwaltungsfeatures nur von
vertrauenswürdigen Quellen installieren, da sie innerhalb von WMSvc ausgeführt werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
231
Ein interessantes Merkmal der Arbeit mit IIS-Manager-Benutzern ist, dass diese Funktionalität mithilfe
einer erweiterbaren Architektur entwickelt wurde, die von Ihnen ersetzt werden kann. Auf diese Weise
erhalten Sie die Möglichkeit, die Authentifizierung und Autorisierung anhand eines eigenen Benutzerspeichers durchzuführen. Dabei kann es sich um eine bereits vorhandene Datenbank, einen LDAPAnbieter oder etwas anderes handeln. Weitere Informationen finden Sie unter http://msdn2.microsoft.
com/Microsoft.Web.Management.Server.ManagementAuthenticationProvider.aspx.
Die integrierte Implementierung des Authentifizierungsanbieters verwendet unsere KonfigurationsAPIs, um die Anmeldeinformationen eines Benutzers in einer Datei namens administration.config zu
speichern, welche sich im Verzeichnis %SystemRoot%\System32\Inetsrv\Config befindet. Zu den in
dieser Datei gespeicherten Anmeldeinformationen zählen der Benutzername und das SHA256-Hash
des zugehörigen Kennwortes. Diese Verfahrensweise ist besonders dann nützlich, wenn das IIS-Feature
Freigegebene Konfiguration aktiviert wird. Sie stellt eine einfache und bequeme Möglichkeit dar, um
mit einer Benutzerliste zu arbeiten, die für mehrere Computer zentral verwaltet wird.
Wenn Sie mit IIS-Manager-Anmeldeinformationen arbeiten, ist auch die Frage, ob Ihre Sites oder
Anwendungen auf einem Remotecomputer gespeichert und über einen UNC-Pfad (Universal Naming
Convention) verfügbar sind, von besonderer Bedeutung. Wenn die von den IIS-Manager-Benutzern
initiierten Operationen unter der Prozessidentität ausgeführt werden und der Webverwaltungsdienst
standardmäßig die Identität Lokaler Dienst verwendet, können die IIS-Manager-Benutzer solche
Ressourcen, die sich außerhalb des lokalen Computers befinden, nicht verwalten, es sei denn, Sie
ändern die Anmeldeidentität des Webverwaltungsdienstes.
Tabelle 8.2 fasst die Benutzertypen und deren Merkmale zusammen.
Tabelle 8.2 Benutzertypen und deren Merkmale
Benutzertyp
Gültigkeitsbereich der Verbindung
Ausführungsidentität
Windows-Administratoren
Windows-Administratoren dürfen immer eine Verbindung Jede Aktion des Servers wird unter der
zum Server und zu jeder beliebigen Site und Anwendung Identität des aufrufenden Windowsdes Computers herstellen
Administrators ausgeführt
Windows-Benutzer
Windows-Benutzer dürfen lediglich Verbindungen zu
Jede Aktion des Servers wird unter der
Sites und Anwendungen herstellen, sofern ihnen über
Identität des aufrufenden Windowsdas Feature IIS-Manager-Berechtigungen die entspreBenutzers ausgeführt
chenden Zugriffsrechte gewährt wurden. Gewöhnliche
Windows-Benutzer können somit niemals eine Verbindung herstellen, um den gesamten Server zu verwalten.
Sie können lediglich für Sites oder Anwendungen
zuständig sein.
IIS-Manager-Benutzer
IIS-Manager-Benutzer dürfen nur dann Verbindungen
zu Sites oder Anwendungen herstellen, wenn mithilfe
des Features Verwaltungsdienst IIS-Manager-Benutzer
zugelassen wurden und wenn ihnen über das Feature IIS-Manager-Berechtigungen die entsprechenden
Zugriffsrechte gewährt wurden. Sie dürfen niemals eine
Verbindung herstellen, um den gesamten Server zu
verwalten. Sie können lediglich für Sites und Anwendungen zuständig sein.
Jede Aktion des Servers wird unter der
Prozessidentität ausgeführt, die mit der
Dienstanmeldeidentität konfiguriert wird.
Aus Gründen der Einfachheit können Sie
davon ausgehen, dass es sich hierbei immer
um NT Service\WMSvc handelt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
232 Kapitel 8: Remoteverwaltung
Die Remoteverwaltung verwalten
Der vorherige Abschnitt konzentrierte sich auf die Aktivierung des Dienstes und vermittelte einen
ersten Einblick. In diesem Abschnitt werden die Aufgaben behandelt, die Sie in Verbindung mit der
Remoteverwaltung regelmäßig ausführen müssen, z.B. das Hinzufügen neuer Benutzer, das Gewähren
von Berechtigungen und das Anpassen der Delegierung.
Benutzer und Berechtigungen verwalten
Die Vorgehensweise zum Verwalten von Benutzern und Berechtigungen kann abhängig davon variieren, welche Authentifizierungsoption Sie gewählt haben. Die folgenden Abschnitte sind keine
detaillierte Anleitung hinsichtlich der Vorkehrungen, die es für die Arbeit mit einer Website zu treffen
gilt (engl. Provisioning), sondern vielmehr einige der Schritte, die zur Bereitstellung einer einfachen
Site erforderlich sind. Weitere Informationen zu den notwendigen Vorkehrungen erhalten Sie, wenn Sie
unter http://iis.net nach Secure Hosting oder mit einer Suchmaschine nach den Begriffen Provisioning
und IIS suchen.
Windows-Anmeldeinformationen Wenn Sie mit Windows-Benutzern arbeiten, können Sie jedes
native Windows-Tool zur Erstellung und Verwaltung von Benutzern verwenden. Windows-Benutzer,
die nur Sites oder Anwendungen verwalten, müssen kein Mitglied der Gruppe Administratoren oder
einer anderen Gruppe sein. Eine einfache Möglichkeit, Benutzer hinzuzufügen, ist der Einsatz des
Befehlszeilentools Net.exe. Um beispielsweise einen neuen lokalen Windows-Benutzer namens
DelegatedUser1 hinzuzufügen, können Sie einfach die folgende Befehlszeile ausführen lassen:
net user /add DelegatedUser1 Str0ngP@ssw0rd!
Sie können nun eine Site namens DelegatedUser1Site erstellen und deren Inhalte und Konfiguration
für den Benutzer schützen, so dass nur dieser die entsprechenden Einstellungen bearbeiten kann. Die
folgenden Befehlszeilen erzeugen ein Verzeichnis, gewähren dem Benutzer Modifizierungsrechte für
diesen Ordner und registrieren ihn mithilfe von Appcmd bei IIS 7.0 als Site:
Mkdir c:\Sites\DelegatedUser1Site
icacls c:\Sites\DelegatedUser1Site /grant DelegatedUser1:(OI)(CI)(M)
%windir%\system32\inetsrv\appcmd.exe add site /name:"DelegatedUser1Site"/physicalPath:c:\Sites\DelegatedUser1Site /
bindings:http/*:8080:
Hinweis Lange Befehle werden bisweilen in mehrere Zeilen umbrochen, damit sie auf die gedruckte Seite passen.
Nachdem Sie den Benutzer und die Site erstellt und konfiguriert haben, können Sie das Feature IISManager-Berechtigungen aufrufen und dem neu erstellten Benutzer Zugriffsrechte gewähren, so dass
er seine eigene Site verwalten kann. Diese Aufgabe kann auch unter Verwendung von Windows
PowerShell mithilfe von verwaltetem Code und der Microsoft.Web.Management-API automatisiert werden,
was später in diesem Kapitel beschrieben wird.
Die folgenden Schritte gewähren dem Benutzer DelegatedUser1 die Berechtigungen, die er benötigt,
um eine Verbindung zur Site DelegatedUser1Site herzustellen:
1. Starten Sie aus der Programmgruppe Verwaltung heraus den Internetinformationsdienste-Manager.
2. Erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers sowie den Knoten Sites und
markieren Sie innerhalb der hierarchischen Struktur die Site DelegatedUser1Site.
3. Führen Sie einen Doppelklick auf dem Feature IIS-Manager-Berechtigungen aus.
4. Klicken Sie im Bereich Aktionen auf Benutzer zulassen, geben Sie im Textfeld unter Windows
DelegatedUser1 ein, und klicken Sie auf OK. Beachten Sie, dass Sie in diesem Textfeld auch den
Namen einer Gruppe eingeben können, um ganze Windows-Gruppen zuzulassen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
233
Abbildung 8.7 zeigt das Dialogfeld Benutzer zulassen. Beachten Sie, dass, wenn auf der Verwaltungsdienstseite nur Windows-Anmeldeinformationen aktiviert sind, im oberen Teil des Bereichs Aktionen
eine entsprechende Meldung angezeigt wird und im Dialogfeld Benutzer zulassen die Option IISManager deaktiviert ist. Sie können auch die Schaltfläche Auswählen benutzen, um nach bereits
vorhandenen Windows-Benutzern und -Gruppen zu suchen.
Abbildung 8.7 Das Dialogfeld Benutzer zulassen für Windows-Benutzer
Wenn Sie die vorherigen Schritte befolgt haben, kann nun der Benutzer DelegatedUser1 den IISManager verwenden, um remote oder lokal eine Verbindung zu dieser Site herzustellen und sie zu
verwalten.
IIS-Manager-Anmeldeinformationen Wenn Sie mit IIS-Manager-Anmeldeinformationen arbeiten,
können Sie den IIS-Manager verwenden, um Benutzer zu verwalten. Wie bereits früher in diesem
Kapitel erwähnt wurde, wurde diese Funktionalität unter Verwendung einer erweiterbaren Architektur
und eines anbieterbasierten Modells entwickelt. Die integrierte Funktionalität verwendet administration.config, um den Benutzernamen und das SHA256-Hash des Kennwortes zu speichern, so dass Sie
nicht einfach den Windows-Editor benutzen können, um administration.config zu bearbeiten und
Benutzer hinzuzufügen. Wir empfehlen zwei Verfahrensweisen für das Hinzufügen von Benutzern:
Arbeiten Sie mit dem IIS-Manager oder verwenden Sie die zugrunde liegende, aus verwaltetem Code
bestehende API (Microsoft.Web.Management). Glücklicherweise sind Aufrufe von Objekten, die aus verwaltetem Code bestehen, mit Windows PowerShell sehr einfach, und Sie werden noch erfahren, wie Sie
dieses Tool verwenden, um IIS-Benutzer ohne die Hilfe des IIS-Managers zu verwalten. Nachfolgend
ist ein Beispiel aufgeführt, das dem vorherigen gleicht und das einen neuen Benutzer namens IISUser1
erstellt und für diesen eine neue Site einrichtet. Der Benutzer IISUser1 kann die Site dann verwalten.
Zuerst erstellen wir eine Site namens IisUser1Site und schützen den Inhalt und die Konfiguration, so
dass NT Service\WMSvc die Einstellungen bearbeiten kann. Die folgenden Befehlszeilen erstellen das
Verzeichnis, gewähren dem Dienst Modifizierungsberechtigungen für diesen Ordner und registrieren
ihn mithilfe von Appcmd bei IIS 7.0 als Site:
Mkdir c:\Sites\IISUser1Site
icacls c:\Sites\IISUser1Site /grant "NT Service\WMSvc":(OI)(CI)(M)
%windir%\system32\inetsrv\appcmd.exe add site /name:"IISUser1Site"
/physicalPath:c:\Sites\IISUser1Site /bindings:http/*:8081:
Mit den Features IIS-Manager-Benutzer und IIS-Manager-Berechtigungen erstellen Sie schließlich den
Benutzer und weisen ihm die entsprechenden Berechtigungen zu.
1. Starten Sie aus der Programmgruppe Verwaltung heraus den Internetinformationsdienste-Manager.
2. Markieren Sie im Bereich Verbindungen den Knoten des IIS-Computers und führen Sie einen Doppelklick auf dem Feature IIS-Manager-Benutzer aus.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
234 Kapitel 8: Remoteverwaltung
3. Klicken Sie im Bereich Aktionen auf Benutzer hinzufügen, geben Sie im Textfeld Benutzername
IISUser1 ein, vermerken Sie ein sicheres Kennwort, bestätigen Sie dieses und klicken Sie auf OK.
Abbildung 8.8 zeigt das Dialogfeld Benutzer hinzufügen.
Abbildung 8.8 Das Dialogfeld Benutzer hinzufügen
Nachdem der Benutzer erstellt wurde, können Sie die Site markieren und das Feature IIS-ManagerBerechtigungen in derselben Weise wie für Windows-Benutzer verwenden, um die Zugriffsrechte für
die Site festzulegen.
Die folgenden Schritte gewähren dem Benutzer IISUser1 die Berechtigungen, die er benötigt, um eine
Verbindung zur Site IISUser1Site herzustellen:
1. Starten Sie aus der Programmgruppe Verwaltung heraus den Internetinformationsdienste-Manager.
2. Erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers sowie den Knoten Sites,
und markieren Sie innerhalb der hierarchischen Struktur die Site IISUser1Site.
3. Führen Sie einen Doppelklick auf dem Feature IIS-Manager-Berechtigungen aus.
4. Klicken Sie im Bereich Aktionen auf Benutzer zulassen und wählen Sie die Option IIS-Manager.
Geben Sie im Textfeld IISUser1 ein und klicken Sie auf OK.
Abbildung 8.9 zeigt das Dialogfeld Benutzer zulassen mit ausgewählter IIS-Manager-Option. Beachten
Sie, dass Sie auf die Schaltfläche Auswählen klicken können, um eine Liste mit bereits vorhandenen
IIS-Manager-Benutzern zu erhalten.
Hinweis Wenn Sie mit der Seite IIS-Manager-Berechtigungen arbeiten, um Zugriffsrechte für IIS-ManagerBenutzer zu gewähren, müssen Sie sicherstellen, dass der Verwaltungsdienst so konfiguriert wurde, dass WindowsAnmeldeinformationen und IIS-Manager-Anmeldeinformationen verwendet werden können. Andernfalls ist im
Dialogfeld Benutzer zulassen die Option IIS-Manager deaktiviert.
Abbildung 8.9 Das Dialogfeld Benutzer zulassen für IIS-Manager-Benutzer
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
235
Wenn Sie die vorherigen Schritte befolgt haben, wird dem Benutzer IISUser1 der Zugriff auf seine
Site gewährt und da wir die integrierte Authentifizierung verwenden, wird er unter Verwendung einer
ähnlichen Syntax wie der folgenden in %SystemRoot%\System32\Inetsrv\Config\Administration.config
gespeichert:
<system.webServer>
<management>
<authentication
defaultProvider="ConfigurationAuthenticationProvider">
<providers>
<add name="ConfigurationAuthenticationProvider"
type="Microsoft.Web.Management.Server.ConfigurationAuthenticationProvider,
..." />
</providers>
<credentials>
<add name="IISUser1" password="DE499719..." />
</credentials>
</authentication>
<authorization
defaultProvider="ConfigurationAuthorizationProvider">
<providers>
<add name="ConfigurationAuthorizationProvider"
type="Microsoft.Web.Management.Server.ConfigurationAuthorizationProvider,
... " />
</providers>
<authorizationRules>
<scope path="/DelegatedUser1Site">
<add name="CONTOSO\DelegatedUser1" />
</scope>
<scope path="/IISUser1Site">
<add name="IISUser1" />
</scope>
</authorizationRules>
</authorization>
...
Windows PowerShell zur Verwaltung von IIS-Benutzern und -Berechtigungen verwenden
Möchten Sie die Erstellung von IIS-Benutzern oder das Ausstatten von Windows- bzw. IIS-Benutzern
mit IIS-Manager-Berechtigungen automatisieren, sollten Sie hierzu die zugrunde liegende API
verwenden, die vom IIS-Manager-Erweiterbarkeitsmodell in Microsoft.Web.Management offen gelegt wird.
In diesem Fall gibt es zwei statische Klassen, die Sie aufrufen können, um die Authentifizierung und
Autorisierung von IIS-Benutzern zu verwalten. Glücklicherweise gestaltet Windows PowerShell diese
Aufgabe sehr einfach.
Um einen neuen IIS-Benutzer namens IisUser2 zu erstellen und diesem das Recht zu gewähren, eine
Verbindung zur Site IisUser1Site herzustellen, können Sie innerhalb einer Windows PowerShellKonsole die folgenden Befehle ausführen lassen:
Hinweis Windows PowerShell ist ein installierbares Feature von Windows Server 2008 und Sie können das Tool
mithilfe des Server-Managers installieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
236 Kapitel 8: Remoteverwaltung
# Zuerst die Assembly Microsoft.Web.Management laden
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Management")
# Einen neuen IIS-Benutzer erstellen
[Microsoft.Web.Management.Server.ManagementAuthentication]::CreateUser("Iis
User2", "Str0ngP@ssw0rd!")
# Dem Benutzer Berechtigungen zuweisen, damit er eine Verbindung zur Website IisUser1Site herstellen kann
[Microsoft.Web.Management.Server.ManagementAuthorization]::Grant("IisUser2",
"IisUser1Site", 0)
Da diese API intern den in administration.config konfigurierten Anbieter verwendet, um Aufrufe zu
verarbeiten, werden die Einstellungen ohne Nennung des Anbieterspeichers korrekt gespeichert.
Deshalb funktioniert der Code, obwohl nirgendwo angegeben ist, dass der Benutzername in administration.config und das Kennwort als SHA256-Hash gespeichert werden muss. Wenn ein Entwickler
seinen eigenen Authentifizierungs- oder Autorisierungsanbieter erstellt, funktioniert der vorherige
Code ebenfalls mit diesem Benutzerspeicher, und zwar unabhängig davon, ob es sich dabei um eine
Datenbank oder etwas anderes handelt.
Delegierung von Features
Der vorherige Abschnitt hat beschrieben, wie Benutzer erstellt werden und wie diesen Benutzern die
Möglichkeit gewährt wird, eine Remoteverbindung herzustellen, so dass sie ihre Sites und Anwendungen verwalten können. Es wurde jedoch noch kein Wort darüber verloren, welche Einstellungen
diese Benutzer sehen und konfigurieren dürfen, sobald sie verbunden sind, und wie Sie dies konfigurieren. An dieser Stelle kommt die Featuredelegierung ins Spiel.
Abbildung 8.10 Die Seite Delegierung von Features
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
237
Mit der Featuredelegierung können Sie festlegen, welche Optionen die Benutzer, die eine Verbindung
hergestellt haben, nicht sehen können sollen, welche Features schreibgeschützt sind und welche Features von den Benutzern geändert werden dürfen. Sie können beispielsweise bestimmen, dass alle Sites
die Einstellungen zum Durchsuchen von Verzeichnissen modifizieren dürfen, während der Zugriff auf
die CGI-Einstellungen schreibgeschützt ist. Gleichzeitig könnten Sie festlegen, dass die Benutzer einer
bestimmten Site oder Anwendung die Erlaubnis besitzen, CGI-Einstellungen zu ändern, und dass
andere Anwendungen die CGI-Einstellungen nicht sehen dürfen (folglich sollten Sie sie aus der
Featureansicht dieser Anwendungen entfernen).
Abbildung 8.10 zeigt die Seite Delegierung von Features mit den Standardeinstellungen für alle Sites
des Servers.
Diese Seite kennt zwei Betriebsmodi. Der erste ist der Standarddelegierungsmodus, der aktiv ist, wenn
Sie die Seite zum ersten Mal aufrufen und mit dem Sie den Delegierungszustand aller untergeordneten
Objekte (engl. Children) des gegenwärtig markierten Objekts festlegen können. Abbildung 8.10 zeigt
beispielsweise die Standardeinstellungen für alle Sites des Servers. Der zweite Betriebsmodus ist der
benutzerdefinierte Sitedelegierungsmodus und er ermöglicht es Ihnen, die Site oder Anwendung zu
wählen, für die Sie den Delegierungszustand konfigurieren möchten. Abbildung 8.11 zeigt die Ansicht
Benutzerdefinierte Sitedelegierung. Beachten Sie das Dropdown-Listenfeld Sites, mit dem Sie die Site
auswählen können, die Sie anpassen möchten. Alle Änderungen wirken sich dann ausschließlich auf die
ausgewählte Site bzw. Anwendung und deren Children aus.
Abbildung 8.11 Die Seite Benutzerdefinierte Sitedelegierung
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
238 Kapitel 8: Remoteverwaltung
Delegierungszustände
Auf der Seite Delegierung von Features gibt die Spalte Delegierung den Delegierungszustand jedes
Features an. Mit den darin enthaltenen Werten legen Sie die verschiedenen Zustände fest, z.B. ob ein
Feature für die untergeordneten Sites oder Anwendungen sichtbar sein soll. Tabelle 8.3 zeigt die
möglichen Werte und das entsprechende Verhalten der integrierten Features des IIS-Managers.
Tabelle 8.3 Delegierungszustände
Delegierung
Beschreibung
Lesen/Schreiben
Vollständig delegiert und die Benutzer können die Featureeinstellungen ändern. Wenn das Feature mit
Konfigurationsabschnitten arbeitet, werden diese Abschnitte entsperrt, so dass sie innerhalb der web.config-Dateien der Sites, Anwendungen oder Ordner, die sich unterhalb des aktuellen Objekts befinden,
modifiziert werden können. Das Entsperren der Konfigurationsabschnitte führt außerdem dazu, dass der
IIS-Manager alle Einstellungen tiefstmöglich im Konfigurationspfad speichert, so dass die Einstellungen
für eine Site oder Anwendung möglichst in deren web.config-Datei gespeichert wird.
Schreibgeschützt
Schreibgeschützt, so dass die delegierten Benutzer die Featureeinstellungen lediglich einsehen, aber
nicht ändern können. Wenn das Feature mit Konfigurationsabschnitten arbeitet, werden diese gesperrt,
so dass sie in den web.config-Dateien unterhalb des aktuellen Objekts nicht modifiziert werden können.
Das Sperren dieser Konfigurationsabschnitte führt dazu, dass der IIS-Manager alle Einstellungen für die
untergeordneten Objekte im aktuellen Konfigurationspfad speichert und dort location-Pfade für die
Objekte verwendet. Wenn beispielsweise ein Feature auf der Serverebene mit Schreibgeschützt gekennzeichnet wird, werden alle Einstellungen für die entsprechenden Sites und Anwendungen unter Verwendung von location-Pfaden in applicationHost.config und nicht in den web.config-Dateien dieser Sites und
Anwendungen gespeichert.
Nicht delegiert
Wird delegierten Benutzern nicht angezeigt. Wenn das Feature mit Konfigurationsabschnitten arbeitet,
werden diese wie bei der Einstellung Schreibgeschützt gesperrt. Darüber hinaus wird das Feature aus
administration.config entfernt, so dass die Benutzer es nicht sehen können.
Konfiguration lesen/
schreiben
Wie Lesen/Schreiben, wird aber auch für Features mit Einstellungen oder Daten verwendet, die außerhalb
von IIS gespeichert und verwaltet werden. Wird für Features wie ASP.NET-Rollen und ASP.NET-Benutzer
verwendet, die mit solchen externen Featureeinstellungen arbeiten, wozu beispielsweise auch der im
Konfigurationssystem zu verwendende Anbieter zählt. Dieser spezifische Anbieter verarbeitet jedoch die
eigentlichen Daten und diese können vom IIS-Manager nicht geschützt werden. In diesem Fall bedeutet
Konfiguration lesen/schreiben, dass delegierte Benutzer den Konfigurationsteil des Features ändern
können. Die Konfigurationsabschnitte des Features werden entsperrt, so dass in den entsprechenden
web.config-Dateien eine Modifizierung möglich ist.
Konfiguration
schreibgeschützt
Wie Schreibgeschützt, ist aber ein spezieller Delegierungszustand für ASP.NET-Features, die Einstellungen sowohl in der Konfiguration als auch in einem anderen Speicher ablegen, z.B. in einer Datenbank. In
diesem Fall bedeutet Konfiguration schreibgeschützt, dass delegierte Benutzer den Konfigurationsteil des
Features nicht ändern können. Die Konfigurationsabschnitte des Features werden gesperrt. Die vom
Anbieter verwalteten Daten können jedoch auch weiterhin vom Benutzer modifiziert werden.
Hinweis Die Liste der Delegierungszustände variiert abhängig vom verwalteten Feature, da jedes einzelne
Feature die Delegierungszustände und deren Einstellungen selbst definiert. Wenn Sie Features von Drittanbietern
verwenden, können deren Werte und Verhaltensweisen anders als bei den soeben beschriebenen Features implementiert sein.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
239
Wie bereits in Tabelle 8.3 erwähnt wurde, gründet die Featuredelegierung auf den Sperrmechanismen
des im vierten Kapitel, »Verstehen des Konfigurationssystems«, beschriebenen Konfigurationssystems
und auf der Erweiterbarkeit des IIS-Managers in administration.config. Besonders erwähnenswert ist,
dass der IIS-Manager das Konfigurationssystem nutzt, um zu ermitteln, wo die Konfigurationseinstellungen zu jedem Feature gespeichert werden sollen. Um anzugeben, wo die Einstellungen
gespeichert werden, zeigt der IIS-Manager in der Statusleiste die bei Änderungen zu modifizierende
Konfigurationsdatei an.
Abbildung 8.12 zeigt, wie sich die Statusleiste präsentiert, wenn Sie ein delegiertes Feature für eine
Anwendung namens BlogApp verwalten, die Default Web Site zugeordnet ist. In diesem Fall wird die
Einstellung in der web.config-Datei der Anwendung gespeichert.
Abbildung 8.12 Die Statusleiste gibt an, dass Änderungen in web.config gespeichert werden
Abbildung 8.13 zeigt, wie sich die Statusleiste präsentiert, wenn Sie ein nicht delegiertes Feature für
eine Anwendung namens BlogApp verwalten, die Default Web Site zugeordnet ist. In diesem Fall
werden die Einstellungen in applicationHost.config gespeichert und es wird der Speicherortpfad
(location-Tag) Default Web Site/BlogApp verwendet.
Abbildung 8.13 Die Statusleiste gibt an, dass Änderungen in applicationHost.config gespeichert werden
Wenn Sie den Server verwalten, finden Sie die Seite Delegierung von Features ausschließlich auf der
Serverebene. Sie können dort lediglich die Delegierungseinstellungen für die Sites konfigurieren. Um
Delegierungseinstellungen für Anwendungen anzupassen, müssen Sie eine direkte Verbindung zu der
Site herstellen, die Sie verwalten möchten. Dies ist mit der IIS-Manager-Option Mit einer Site verbinden
möglich. Nachdem die Verbindung hergestellt wurde, finden Sie die Seite Delegierung von Features auf
der Siteebene und Sie können die Einstellungen für alle Anwendungen der Site ändern. Alternativ hierzu
können Sie mit der benutzerdefinierten Anwendungsdelegierung arbeiten, um die Einstellungen einer
bestimmten Anwendung zu ändern. Um mehr über die verschiedenen Verbindungstypen zu erfahren,
lesen Sie später in diesen Kapitel den Abschnitt »Mit der Remoteverwaltung arbeiten«.
Die Seite Benutzerdefinierte Sitedelegierung ermöglicht es Ihnen, Einstellungen zwischen Sites zu
kopieren. (Diese Funktionalität ist auch auf der Seite Benutzerdefinierte Anwendungsdelegierung
verfügbar.) Auf diese Weise können Sie einfach sicherstellen, dass zwei Sites dieselbe Delegierungsebene verwenden. Die restlichen Standardeinstellungen Ihrer Sites müssen dazu nicht geändert werden.
Abbildung 8.14 zeigt das Dialogfeld Delegierung kopieren. In diesem Fall werden die Delegierungseinstellungen von IisUser1Site nach DelegatedUser1Site kopiert.
Hinweis Die Delegierungskonfiguration wird sowohl in administration.config als auch in applicationHost.config
gespeichert. Dies bedeutet, dass bei aktivierter freigegebener Konfiguration die Delegierungskonfiguration automatisch von allen Servern, die für die Arbeit mit der freigegebenen Konfiguration konfiguriert sind, gemeinsam
genutzt wird, weil die Server auch beide Dateien gemeinsam nutzen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
240 Kapitel 8: Remoteverwaltung
Abbildung 8.14 Das Dialogfeld Delegierung kopieren
Mit der Remoteverwaltung arbeiten
Möchten Sie im IIS-Manager die Remoteverwaltung nutzen, müssen Sie eine Verbindung zu einem
Remotecomputer herstellen, der den Webverwaltungsdienst ausführt. Um eine größere Flexibilität zu
bieten, hält der IIS-Manager drei Verbindungstypen bereit, die bezogen auf die Verwaltung Unterschiede hinsichtlich der Konfigurationstiefe, des Gültigkeitsbereichs und der Funktionalität aufweisen:
Mit einem Server verbinden, Mit einer Site verbinden, Mit einer Anwendung verbinden. Abbildung
8.15 zeigt diese drei Optionen im Datei-Menü des IIS-Managers. Sie finden diese Optionen ebenfalls
auf der Startseite und im Kontextmenü des Bereichs Verbindungen.
Abbildung 8.15 Verbindungsoptionen des IIS-Managers
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
241
Serververbindungen ermöglichen es dem Serveradministrator, den gesamten Server zu verwalten. Der
Administrator besitzt dann die volle Kontrolle über jede Einstellung und jedes Feature des Computers.
Nur Windows-Benutzer mit administrativen Rechten können solche Verbindungen herstellen. Für
solche Benutzer bedeutet eine Konfigurationssperrung schlimmstenfalls, dass eine Konfiguration an
anderer Stelle gespeichert wird. Es sind die einzigen Benutzer, die in applicationHost.config und der
web.config-Stammdatei Änderungen vornehmen können.
Siteverbindungen erlauben sowohl Serveradministratoren als auch Siteadministratoren (delegierte
Benutzer, denen das Recht gewährt wurde, eine Verbindung zu einer Site herzustellen), eine vollständige Site einschließlich all ihrer Anwendungen zu verwalten. Ihr Gültigkeitsbereich ist auf die
jeweilige Site beschränkt und es ist nicht möglich, eine Konfigurationsdatei der Serverebene zu modifizieren, z.B. applicationHost.config oder die web.config-Stammdatei. Wenn auf der Serverebene die
Konfiguration für einen Konfigurationsabschnitt gesperrt ist, ist das entsprechende Feature automatisch
schreibgeschützt, so dass keine Änderungen zulässig sind.
Anwendungsverbindungen ermöglichen es Serveradministratoren, Siteadministratoren und Anwendungsadministratoren (delegierte Benutzer, denen das Recht gewährt wurde, eine Verbindung zu einer
Anwendung herzustellen), eine vollständige Anwendung einschließlich aller Ordner und virtuellen
Verzeichnisse, aber mit Ausnahme untergeordneter Anwendungen zu verwalten. Ihr Gültigkeitsbereich
ist auf die Anwendung beschränkt und es ist nicht möglich, Konfigurationsdateien der Server- oder
Siteebene zu ändern. Wenn die Konfiguration auf der Siteebene oder für einen übergeordneten Ordner
gesperrt ist, ist das Feature automatisch schreibgeschützt, so dass keine Änderungen zulässig sind.
Abbildung 8.16 zeigt das Dialogfeld Mit Anwendung verbinden.
Abbildung 8.16 Anwendungsverbindungsinformationen im Dialogfeld Mit Anwendung verbinden
Sobald Sie auf Weiter klicken, werden Sie dazu aufgefordert, Anmeldeinformationen in das Dialogfeld
einzugeben, wie in Abbildung 8.17 dargestellt. Wie bereits erwähnt wurde, können dies Anmeldeinformationen für Windows- oder IIS-Manager-Benutzer sein.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
242 Kapitel 8: Remoteverwaltung
Abbildung 8.17 Benutzeranmeldeinformationen im Dialogfeld Mit Anwendung verbinden
Nachdem die Verbindung hergestellt wurde, sehen Sie im Bereich Verbindungen einen ganz neuen
Eintrag, der Aufschluss über den Verbindungstyp und den Namen des Benutzers gibt, der die Verbindung initiiert hat. In der rechten unteren Ecke der Statusleiste sehen Sie den Namen des für die
Verbindung verwendeten Servers, den Port und den Benutzernamen. Auf der Startseite sind nur die
Features zu sehen, die delegiert wurden (entweder Schreibgeschützt oder Lesen/Schreiben). Abbildung
8.18 zeigt, dass das ASP-Feature einer Anwendungsverbindung schreibgeschützt ist, weil seine
Konfiguration standardmäßig gesperrt ist.
Abbildung 8.18 Das ASP-Feature, das bei einer Anwendungsverbindung schreibgeschützt ist
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
243
Hinweis Wenn Sie einen anderen Port als 8172 verwenden, müssen Sie diesen bei der Verbindungsherstellung im
Textfeld Servername eingeben, z.B. MyMachine:8173.
Administration.config und die Featuredelegierung
Administration.config ist die Datei, die alle Einstellungen für den IIS-Manager und die Remoteverwaltung enthält. Sie verwendet wie das IIS-Konfigurationssystem Konfigurationsabschnitte,
um die Einstellungen in logische Einheiten zu unterteilen. Die wichtigsten Abschnitte sind
<moduleProviders> und <modules>. Der Abschnitt <moduleProviders> enthält die zentrale Liste der Features, die
ein Serveradministrator nutzen kann, wenn er mit dem IIS-Manager arbeitet. Er enthält somit die
Liste der Features, die verfügbar sind, wenn eine Serververbindung aktiv ist. Der Abschnitt <modules>
enthält die Liste der Module, die für delegierte Verbindungen (Site- und Anwendungsverbindungen)
verwendet werden. Wenn ein Feature ausschließlich im Abschnitt <moduleProviders> aufgelistet ist,
zeigen nur Serververbindungen dieses Feature an. Soll das Feature allen Sites zur Verfügung stehen,
können Sie es innerhalb eines location-Tags mit dem speziellen Pfad "." der <modules>-Liste hinzufügen. Der Pfad "." gibt an, dass das Feature von jedem genutzt werden kann. Alternativ hierzu
können Sie es im Namen der Site angeben, wenn es nur für diese Site verfügbar sein soll. Die Seite
Delegierung von Features modifiziert die <modules>-Liste, wenn Sie den Delegierungszustand ändern.
Erwähnenswert ist, dass für Anwendungen die Delegierung in einer anderen administration.configDatei gespeichert wird, die sich im übergeordneten physikalischen Pfad der Site befindet.
Problembehandlung
Die häufigsten Quellen für Probleme mit der Remoteverwaltung sind durch zwei Fehlermeldungen
gekennzeichnet: Die Verbindung mit dem Remoteserver kann nicht hergestellt werden und 401 - Nicht
autorisiert.
Die Verbindung mit dem Remoteserver kann nicht hergestellt werden
Wenn Sie versuchen, eine Remoteverbindung herzustellen und vom Remoteserver keine Antwort
erhalten, werden Sie mit einer Fehlermeldung wie Die Verbindung mit dem Remoteserver kann nicht
hergestellt werden konfrontiert. Sie können diese Fehlermeldung aus verschiedenen Gründen erhalten,
von denen einige nachfolgend aufgeführt sind:
Der Webverwaltungsdienst wurde auf dem Remotecomputer nicht gestartet. Wie bereits früher in
diesem Kapitel erwähnt wurde, ist der Webverwaltungsdienst dafür zuständig, eingehende Remoteanforderungen entgegenzunehmen. Er muss ausgeführt werden.
Eine Firewall blockiert die Clientanforderungen. Stellen Sie sicher, dass die Firewall nicht den Port
blockiert, den der Webverwaltungsdienst verwendet. Der Dienst nutzt standardmäßig Port 8172 und
definiert automatisch eine Windows-Firewallausnahme für diesen Port. Wenn Sie jedoch den Port
ändern, müssen Sie selbst eine solche Firewallausnahme definieren.
Der Client oder Server verwenden unterschiedliche Konfigurationen. Wenn Sie mit einem anderen
Port als 8172 arbeiten, geben Sie diesen im Dialogfeld Mit Server verbinden und dort im Textfeld
Servername an.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
244 Kapitel 8: Remoteverwaltung
Die Konfigurationseinstellungen in HTTP.sys sind nicht richtig konfiguriert. Diese Konfiguration
wird gesetzt, wenn Sie im IIS-Manager das Feature Verwaltungsdienst verwenden. In diesem Fall
müssen Sie sicherstellen, dass die URL-Reservierung und die SSL-Konfiguration richtig registriert
sind. Dazu können Sie das Befehlszeilentool Netsh.exe benutzen. Die Ausgabe eines richtig
konfigurierten Computers ist nachfolgend dargestellt. Beachten Sie, dass einige Felder
Unterschiede aufweisen können, besonders die Felder für den Port und das Zertifikathash.
netsh http show urlacl
URL-Reservierungen:
------------------Reservierte URL:
Benutzer:
Abhören:
Delegieren:
SDDL:
https://*:8172/
NT SERVICE\WMSvc
Yes
No
D:(A;;GX;;;S-1-5-80-257763619-...)
netsh http show sslcert
SSL-Zertifikatbindungen:
-----------------------IP:Port:
0.0.0.0:8172
Zertifikathash:
c2e18a3307cd594079f48870caad5131fe4204f5
Anwendungskennung:
{00000000-0000-0000-0000-000000000000}
Zertifikatspeichername:
MY
Clientzertifikatsperre überprüfen: Enabled
Sperre nur mithilfe des zwischengespeicherten Zertifikats prüfen: Disabled
Verwendungsprüfung:
Enabled
Sperraktualisierungszeit:
0
URL-Abrufzeitlimit:
0
Steuerelement-ID:
(null)
Steuerelement-Speichername:
(null)
DS-Zuordnungsverwendung:
Disabled
Clientzertifikat aushandeln:
Disabled
Wenn die HTTP.sys-Konfiguration nicht korrekt ist, können Sie versuchen, im IIS-Manager das Feature
Verwaltungsdienst zu bearbeiten, um das Problem zu beheben. Eine etwas fortgeschrittenere Option
besteht darin, Netsh.exe zu verwenden, um die Werte manuell zu konfigurieren.
401 - Nicht autorisiert
Sie können aus verschiedenen Gründen mit diesem Fehler konfrontiert werden. Einige dieser Gründe
sind nachfolgend aufgeführt:
Der Benutzername oder das Kennwort ist ungültig. Wenn ein ungültiger Benutzername oder ein
unzulässiges Kennwort für den Zugriff auf den Webverwaltungsdienst verwendet wird, wird im
Sicherheitsprotokoll der Windows-Ereignisanzeige ein entsprechender Eintrag vermerkt. Dieser
enthält alle erforderlichen Informationen, wie das folgende Beispiel zeigt:
Fehler beim Anmelden eines Kontos.
Antragsteller:
Sicherheits-ID:
Kontoname:
Kontodomäne:
Anmelde-ID:
LOCAL SERVICE
LOKALER DIENST
NT AUTHORITY
0x3e5
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
Anmeldetyp:
245
8
Konto, für das die Anmeldung fehlgeschlagen ist:
Kontoname:
Administrator
Kontodomäne:
CARLOSAG1-IIS
Fehlerinformationen:
Fehlerursache:
Status:
Unterstatus:
Unbekannter Benutzername oder ungültiges Kennwort.
0xc000006d
0xc0000064
Prozessinformationen:
Aufrufprozess-ID:
Aufrufprozessname:
0x8d8
D:\Windows\System32\inetsrv\WMSvc.exe
Der delegierte Benutzer, der entweder ein Windows- oder ein IIS-Manager-Benutzer ist, darf auf die
Site oder Anwendung nicht zugreifen. In diesem Fall wird dem Windows-Anwendungsprotokoll
ein Eintrag mit den folgenden Quellinformationen hinzugefügt: IIS-IISManager und die EreignisID 1105. Diese Daten werden im Windows-Anwendungsprotokoll protokolliert. Der entsprechende
Eintrag ist wie folgt aufgebaut:
IISWMSVC_AUTHORIZATION_FAILED
Der Benutzer 'IisUser1'ist nicht autorisiert für den Pfad '/Default Web Site'
Process:WMSvc
User=NT AUTHORITY\LOCAL SERVICE
Möchten Sie dieses Problem beheben, können Sie im IIS-Manager zu der betreffenden Site oder
Anwendung wechseln und das Feature IIS-Manager-Berechtigungen benutzen, um dem delegierten
Benutzer die Berechtigung zum Anmelden zu gewähren.
Ein delegierter Benutzer versucht, eine Serververbindung herzustellen. Wie bereits erwähnt wurde,
können nur Windows-Benutzer mit administrativen Rechten eine Verbindung zum Server herstellen. Wenn ein delegierter Benutzer versucht, sich mit einem Server zu verbinden, wird ihm dies verweigert. In diesem Fall wird dem Windows-Anwendungsprotokoll ein Eintrag mit den folgenden
Quellinformationen hinzugefügt: IISManager und die Ereignis-ID 1104. Der Eintrag ist wie folgt
aufgebaut:
IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
Nur Windows-Administratoren dürfen Verbindungen über eine Serververbindung
herstellen. Andere Benutzer müssen die Aufgabe zum Herstellen einer Verbindung mit
einer Site oder Anwendung verwenden, um Verbindungen herstellen zu können.
Prozess:WMSvc
Benutzer=IisUser1
Protokollierung
Es ist hilfreich, die Protokollierungsvorgänge des Webverwaltungsdienstes zu verstehen. Die Protokolldateien sind standardmäßig im Ordner %SystemDrive%\Inetpub\Logs\Wmsvc\ gespeichert. Auf der
Ebene darunter finden Sie einen Ordner namens W3SVC1, der alle Protokolldateien enthält, die die
Aktivität des Webverwaltungsdienstes im Einzelnen erfassen. Eine Protokolldatei verwendet das W3CProtokolldateiformat (World Wide Web Consortium), um die gesamte Aktivität des Servers zu proto-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
246 Kapitel 8: Remoteverwaltung
kollieren. Dieses Format wird von HTTP.sys verwaltet und ist ein textbasiertes ASCII-Format, das
einfach zu lesen und zu verstehen ist. Felder werden durch Leerzeichen voneinander getrennt und
Zeitangaben werden im UTC-Format (Universal Coordinated Time) aufgezeichnet. Weitere Informationen zu diesem Format finden Sie im fünfzehnten Kapitel, »Protokollierung«. Tabelle 8.4 zeigt die
Liste der Felder, die in einer Protokolldatei für jede vom Dienst verarbeitete Anforderung zur
Verfügung stehen.
Tabelle 8.4 Felder in der Protokolldatei
Feld
Beschreibung
date, time
Das Datum und die Uhrzeit der Aktivität im UTC-Format
s-ip
Die IP-Adresse des Servers
cs-method
Die verwendete HTTP-Methode, z.B. GET oder POST
cs-uri-stem
Das Ziel der Aktion; Remoteclientanforderungen verwenden meistens /service.axd als Ziel
cs-uri-query
Die Abfrageinformationen für das Ziel; für /service.axd bestehen diese Informationen aus dem verwendeten
Modul, der aufgerufenen Methode und, sofern Sie delegierte Verbindungen nutzen, dem Site- und Anwendungspfad
s-port
Der verwendete Server-Port
cs-username
Der Benutzer, der die Anforderung generiert hat
c-ip
Die IP-Adresse des Clients
cs(User-Agent)
Der Clienttyp zu diesem Aufruf, einschließlich Name und Versionsinformationen
sc-status
Der HTTP-Statuscode
sc-substatus
Der HTTP-Unterstatuscode
sc-win32-status
Der Windows-Statuscode
time-taken
Die Zeit, die für die Ausführung der Anforderung benötigt wurde
Sie untersuchen die Protokolldatei am besten mit einem Tool namens Log Parser, das es Ihnen ermöglicht, Abfragen auf einfache Weise und mithilfe einer auf SQL basierenden Syntax durchzuführen. Der
folgende Abschnitt erklärt die dazu notwendige Vorgehensweise.
Hinweis Log Parser ist ein Hilfsmittel, das die Abfrage von textbasierten Protokoll-, XML- und CSV-Dateien ermöglicht. Sie können Log Parser herunterladen, indem Sie die Seite http://www.microsoft.com/downloads aufrufen und
nach Log Parser suchen. Sie führen Abfragen innerhalb der Log Parser-Eingabeaufforderung durch. Um die Eingabeaufforderung zu öffnen, starten Sie Log Parser aus der gleichnamigen Programmgruppe heraus.
Remoteverwaltungsprotokolle mit Log Parser untersuchen
Log Parser ist ein leistungsfähiges Tool, das den Zugriff auf verschiedene Dateiformate ermöglicht und
hierfür eine einfache, universelle Abfragesyntax anbietet. Dieser Abschnitt des Kapitels stellt einige
nützliche Abfragen vor, die zeigen, wie Log Parser für das Webverwaltungsdienstprotokoll genutzt
wird. Alle folgenden Abfragen können mit dem Befehlszeilentool LogParser.exe ausgeführt werden,
das ein Bestandteil von Log Parser ist. Benutzen Sie dazu die folgende Syntax:
LogParser.exe "<ABFRAGE>" -i W3C
Das Argument -i gibt an, dass als Protokolleingabeformat W3C verwendet wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webverwaltungsdienst
247
Übersicht über die Statuscodes Die folgende Abfrage zeigt eine Tabelle an, die alle generierten
Statuscodes enthält und Aufschluss darüber gibt, wie oft jeder Statuscodes auftrat:
SELECT TOP 25
STRCAT(TO_STRING(sc-status), STRCAT('.', TO_STRING(sc-substatus))) As
Status,
COUNT(*) AS Hits
FROM c:\inetpub\logs\wmsvc\w3svc1\*.log
WHERE cs-uri-stem='/Service.axd'
GROUP BY Status ORDER BY Status ASC
Status Hits
------ ---200.0 264
401.1 7
401.2 89
403.6 2
Anzahl der Anforderungen pro Benutzer Die folgende Abfrage zeigt die Anzahl der Anforderungen, die von jedem Benutzer initiiert wurden:
SELECT TOP 25
cs-username As User,
COUNT(*) as Hits
FROM c:\inetpub\logs\wmsvc\w3svc1\*.log
WHERE User Is Not Null
GROUP BY User ORDER BY Hits DESC
User
Hits
-------------- ---administrator 219
DelegatedUser1 75
IisUser1
19
Häufigkeit der Verwendung eines Moduls Die folgende Abfrage nutzt die Informationen in der
Anforderung, um zu ermitteln, wie oft ein Modul verwendet wurde:
SELECT TOP 25
EXTRACT_VALUE(cs-uri-query,'Module') as Module,
COUNT(*) As Hits
FROM d:\inetpub\logs\wmsvc\w3svc1\*.log
WHERE Module IS NOT NULL
GROUP BY Module
ORDER By Hits DESC
Module
Hits
----------------- ---Framework
138
WebObjects
90
AppSettings
51
ConnectionStrings 16
ClassicAsp
7
Anzahl der delegierten Aufrufe pro Site Die folgende Abfrage listet die Anzahl der Aufrufe auf, die
von delegierten Verbindungen initiiert wurden. Dabei handelt es sich entweder um Site- oder Anwendungsverbindungen. Diese werden nach Site gruppiert aufgelistet.
SELECT TOP 25
TO_LOWERCASE(EXTRACT_VALUE(cs-uri-query,'Site')) as Site,
COUNT(*) As Hits
FROM c:\inetpub\logs\wmsvc\w3svc1\*.log
WHERE Site IS NOT NULL
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
248 Kapitel 8: Remoteverwaltung
GROUP BY Site ORDER By Hits DESC
Site
Hits
-------------------- ---default%20web%20site 305
delegateduser1site 8
Zusammenfassung
IIS 7.0 führt eine neue Remoteverwaltungsarchitektur ein, die es Benutzern ohne administrative Rechte
ermöglicht, eine Remoteverbindung zu einem unter Windows Server 2008 ausgeführten IIS 7.0-System
herzustellen und dieses zu verwalten. Diese Remoteverwaltung erfolgt über HTTPS, was sowohl über
das Internet als auch über das Intranet möglich ist, und sie ist flexibel, weil Windows- und IIS-ManagerBenutzer IIS 7.0 verwalten können. Darüber hinaus kann der Serveradministrator festlegen, mit
welchen Features delegierte Benutzer arbeiten dürfen.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Informationen zur Remoteverwendung von Microsoft.Web.Administration.ServerManager finden
Sie unter http://msdn2.microsoft.com/en-us/library/
Microsoft.Web.Administration.Servermanager.OpenRemote.aspx.
Weitere Informationen zum WMI-Anbieter von IIS 7.0 finden Sie unter http://
msdn2.microsoft.com/en-us/library/aa347459.aspx.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
249
K A P I T E L
9
Verwalten von Websites
Inhalt dieses Kapitels:
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools . . . . . . . . . . . . . . . . . . .
Verwaltungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Verzeichnisse verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Remoteinhalte verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
256
266
272
277
278
Die Website ist der grundlegende Baustein der Funktionalität des IIS-Servers (Internet Information
Services). Sie definiert die vom Server zur Verfügung gestellten Inhalte und Dienste und gibt an, wie
diese von anfordernden Clients genutzt werden können. IIS 7.0 hält eine Gruppe von Tools für die
Erstellung und Verwaltung von Websites bereit, z.B. den IIS-Manager und das Befehlszeilentool
Appcmd, und es bietet die Möglichkeit, die Serverkonfiguration direkt oder programmgesteuert über
APIs (Application Programming Interface) zu bearbeiten. Obwohl die Verwaltung von Websites unter
IIS 7.0 in vielerlei Hinsicht Ähnlichkeiten zur entsprechenden Vorgehensweise bei früheren IIS-Versionen aufweist, zeigt die Benutzeroberfläche des IIS-Managers deutliche Unterschiede. Wenn Sie IIS
7.0-Websites verwalten, sollten Sie verstehen, wie die verbesserte Websitedefinitionsstruktur das
Layout Ihrer Anwendungsinhalte beeinflusst und wie die Websitekonfiguration in den IIS 7.0-Konfigurationsdateien beschrieben ist.
Websites, Anwendungen, virtuelle Verzeichnisse
und Anwendungspools
Wie frühere IIS-Versionen sorgt auch IIS 7.0 dafür, dass der Serveradministrator Anwendungsinhalte
auf dem Server bereitstellen kann, indem er Websites, Webanwendungen, Anwendungspools und
virtuelle Verzeichnisse erstellt. IIS 7.0 definiert klar erkennbare Beziehungen zwischen diesen Objekten, die den Zweck eines Objekts und dessen Laufzeitverhalten präziser ausdrücken. Bei IIS 6.0 kann
eine Website beispielsweise mehrere virtuelle Verzeichnisse enthalten, die alle als Anwendungen
gekennzeichnet sein können, sofern Sie bestimmte Konfigurationseigenschaften gesetzt haben. Unter
IIS 7.0 ist eine Website ein Container für Anwendungen, die wiederum virtuelle Verzeichnisse enthalten können. Bei dieser Struktur wird eine Anwendung zu einem übergeordneten Container für Laufzeitfunktionalität und dient als isolierte logische Objekteinheit, die mit einem spezifischen Anwendungspool verknüpft ist. Das virtuelle Verzeichnis wird dabei einfach zu einem Mechanismus, der bestimmte
Teile des Anwendungs-URL-Namespace (Uniform Resource Locator) einem bestimmten physikalischen Verzeichnis zuordnet, in dem die Anwendungsinhalte gespeichert sind.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
250 Kapitel 9: Verwalten von Websites
Auch IIS 7.0 arbeitet mit Anwendungspools, um die Ausführung von Anwendungen zu isolieren.
Lassen Sie uns einen etwas genaueren Blick auf die Objekte für Webanwendunen, Anwendungspools,
virtuelle Verzeichnisse und Sites werfen.
Websites
Eine Website ist ein übergeordneter Container für IIS-Inhalte und -Funktionalität. Er enthält Anwendungen, die, bezogen auf die Laufzeit, Teile der Website voneinander abgrenzen, und die aus Gründen
der Isolation in verschiedenen Anwendungspools angeordnet werden können. Die Anwendungen
wiederum definieren virtuelle Verzeichnisse, die den Anwendungs-URL-Namespace unterteilen und
diese Teile physikalischen Verzeichnissen zuordnen, in denen sich die Anwendungsinhalte befinden
(weitere Informationen zu Anwendungen und virtuellen Verzeichnissen folgen in Kürze).
Die Website legt außerdem Bindungen fest. Dabei handelt es sich um Informationen, die den Verbindungsendpunkt beschreiben, der von den Clients verwendet wird, um auf die Website zuzugreifen. Jede
Bindung legt das Bindungsprotokoll (z.B. HTTP oder HTTPS) und die protokollspezifische Bindungskonfiguration fest (z.B. die HTTP-Bindungskonfiguration von IP-Adressen, der Port und Hostheaderdetails).
Es sind mehrere Bindungen zulässig, so dass der Zugriff auf eine Website von verschiedenen Endpunkten aus erfolgen kann, und zwar entweder mit demselben Protokoll oder mit mehreren verschiedenen Protokollen. Bezogen auf das Protokoll können Sie beispielsweise HTTPS für eine sichere
Kommunikation und zusätzlich HTTP für den Standardzugriff konfigurieren. Alternativ hierzu können
Sie mehrere Websites konfigurieren, indem Sie nur eine IP, aber verschiedene Hostheaderkonfigurationen verwenden. Seit der Einführung von WAS (Windows Process Activation Service) in IIS 7.0
können Sie außerdem gehostete Webdienste bereitstellen, wenn Sie mit WCF (Windows Communication Foundation) und Named Pipes, TCP, MSMQ (Message Queuing) oder zusätzlich zu HTTP und
HTTPS mit benutzerdefinierten Protokollen arbeiten.
Sie finden später in diesem Kapitel im Abschnitt »Die Bindungen einer Website konfigurieren« weitere
Informationen zum Konfigurieren von Websitebindungen.
Direkt von der Quelle: Ein echter Anwendungsserver
IIS 6.0 stellt Webanwendungen eine Arbeitsprozessarchitektur für die zuverlässige und sichere Verarbeitung von Anforderungen zur Verfügung. Die W3SVC-Architektur (World Wide Web Publishing
Service) von IIS trennt die vom Kernelmodustreiber HTTP.sys durchgeführte Überwachung eingehender HTTP-Anforderungen von deren Verarbeitung, die durch die in die IIS-Arbeitsprozesse geladene
IIS-Webserverengine erfolgt. Der W3SVC-Dienst ist ebenfalls für die Verwaltung der IIS-Arbeitsprozesse verantwortlich und erzeugt diese bei Bedarf, damit die von HTTP.sys eingehenden Anforderungen verarbeitet werden. Er verwaltet außerdem den Zustand und die Lebensdauer der Arbeitsprozesse, wodurch die Stabilität und Verfügbarkeit des Webservers gewährleistet wird. Bei IIS 6.0 hat
diese Architektur zu einer drastischen Verbesserung der Ausfallsicherheit von Webanwendungen
geführt, weil der Anwendungscode von den langlebigen Systemkomponenten isoliert wurde, die dafür
zuständig sind, dass die Verfügbarkeit des Servers bei einem Fehler, Speicherverlust und bei Anwendungsabstürzen bestehen bleibt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools
251
Bei IIS 7.0 nutzt auch der neue Arbeitsprozessaktivierungsdienst diese Architektur, um ein zuverlässiges Framework für das Hosten von Webanwendungen zur Verfügung zu stellen. Er geht jedoch
noch einen Schritt weiter, weil er diese Architektur verwendet, um nachrichtenorientierte Anwendungen unabhängig vom Protokoll zu aktivieren und zu hosten. Der ehemalige Webaktivierungsdienst ist deshalb nun der Windows-Prozessaktivierungsdienst. Er unterstützt die erweiterbare
Listeneradapterarchitektur, mit der Listeneradapterkomponenten Nachrichten über jedes beliebige
Protokoll empfangen und Pools von Arbeitsprozessen aktivieren können, wobei diese Prozesse die
Anwendungskomponenten hosten, die mit einem Listeneradapter kommunizieren und eingehende
Nachrichten verarbeiten können.
Der IIS 7.0-Webserver war das erste Produkt, das diese Architektur verwendet. WCF (Windows
Communication Foundation) ist das zweite Produkt und unterstützt das Hosten von Anwendungen
unter Verwendung von net.tcp, net.pipe, net.msmq und anderer Protokolle. FTP 7.0, der vom IIS-Team
stammende FTP-Server der nächsten Generation, ist das dritte Produkt und er sorgt dafür, dass IISWebsites mithilfe des FTP-Protokolls zu Publishingendpunkten werden. Wir erwarten, dass bald noch
mehr Anwendungen entwickelt werden, die dann die WAS-Architektur (Windows Process Activation
Service) nutzen, um betriebssichere Anwendungen über die Protokolle der Zukunft zu hosten.
Mike Volodarsky,
IIS-Kernserver Program Manager
Die Websitekonfiguration wird in der Datei applicationHost.config und dort im <site>-Element des
Konfigurationsabschnitts <sites> deklariert. Die folgende Konfiguration zeigt beispielsweise zwei für
den Webserver konfigurierte Websites. Die Site mit der ID 1 ist Contoso Corp zugeordnet und besitzt
zwei Bindungen (eine HTTP-Bindung an Port 80 mit http://www.contoso.com als Hostheader sowie ein
HTTPS-Protokoll, das über Port 443 verwendet wird). Die Website Fabrikam Inc. hingegen ist an alle
IP-Adressen des Webservers gebunden und verwendet den eindeutigen Hostheader http://www.fabrikam.com.
<sites>
<site name="Contoso Corp" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\contoso" />
</application>
...
<bindings>
<binding protocol="http"
bindingInformation="*:80:www.contoso.com" />
<binding protocol="https"
bindingInformation="*:443:www.contoso.com" />
</bindings>
...
</site>
<site name="Fabrikam Inc" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\fabrikam" />
</application>
<bindings>
<binding protocol="http"
bindingInformation="*:80:www.fabrikam.com" />
</bindings>
...
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
252 Kapitel 9: Verwalten von Websites
</site>
...
<siteDefaults>
<logFile logFormat="W3C"
directory="%SystemDrive%\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging
directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
Standardeinstellungen für neue Websites befinden sich im Abschnitt <sites>. Bei der Beispielkonfiguration enthält die Websitestandardkonfiguration Einstellungen zur Websiteprotokollierung und zur
Ablaufverfolgung für Anforderungsfehler.
Als Nächstes werfen wir einen Blick auf die in der Webseitedefinition enthaltene Konfiguration von
Anwendungen und virtuellen Verzeichnissen.
IPv6
Windows Server 2008 und Windows Vista haben IPv6 standardmäßig aktiviert. Die meisten Server
nutzen dieses Protokoll aber noch nicht. Es wird jedoch erwartet, dass IPv6 in den nächsten Jahren
zu-sehends mehr Verbreitung findet, da die US-Regierung und das Militär aufgrund der Flexibilität
und Sicherheit des Standards für dessen schnelle Einführung sorgen. Sowohl Vista als auch Windows
Server 2008 unterstützten IPv6 auf vielen Ebenen, vom Netzwerk bis hin zu verschiedenen Anwendungen. IIS 6.0 bietet nur eine begrenzte IPv6-Unterstützung, da Sie eine solche Adresse nicht in den
IIS-Manager eingeben können. Würden Sie einer Netzwerkkarte eine IPv6-Adresse zuweisen und
für Ihre Website die Standardeinstellung Keine zugewiesen verwenden, würde alles wie erwartet
funktionieren. Sie könnten jedoch auch mithilfe von Hostheadern oder eindeutigen Portnummern
spezifische IP-Adressen verwenden (andernfalls wären Sie auf eine Website beschränkt). Der IIS
7.0-Manager ermöglicht es Ihnen, eine IPv6-Adresse (z.B. 3ffe:ffff:101:ffff:230:6eff:fe04:d9ff) für
Websites einzugeben. Die Eingabe erfolgt genauso wie bei einer IPv4-Adresse, so dass Sie eine
Einschränkung wie bei IIS 6.0 nicht mehr befürchten müssen. Dies sind gute Neuigkeiten für diejenigen, die die vielen neuen Features von IPv6 nutzen möchten.
Unter http://technet.microsoft.com/en-us/network/bb530961.aspx erhalten Sie weitere
Informationen.
Anwendungen
Eine Anwendung ist eine Gruppe von Inhalten, Skripts und/oder ausführbaren Dateien, die den Benutzern
eine bestimmte Funktionalität bietet. Das Anwendungskonzept ist besonders für Anwendungsframeworks
wie ASP oder ASP.NET von Bedeutung, da diese eine Laufzeitausführungsumgebung für die zugehörigen
Inhalte erzeugen und gemeinsam genutzte Zustandsdaten bereitstellen können. Bei den vorherigen IISVersionen war es möglich, bestimmte virtuelle Verzeichnisse als Anwendungen zu kennzeichnen, um den
Anwendungsstamm für die entsprechenden Anwendungsframeworks anzugeben. Davon abgesehen bot
IIS keine spezielle Unterstützung von Anwendungen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools
253
Bei IIS 7.0 wird die Anwendung innerhalb der Websitestruktur zu einem übergeordneten Container,
mit dem es möglich ist, den Rahmen der Anwendungsfunktionalität für die Anwendungsframeworks
festzulegen und die jeweilige Anwendung von anderen Anwendungen zu isolieren, indem sie im
gewünschten Anwendungspool abgelegt wird. Ein eindeutiger virtueller Pfad identifiziert jede Anwendung und dient somit der Unterteilung des Website-URL-Namespace in mehrere Anwendungen.
Die Anwendung selbst enthält virtuelle Verzeichnisse, die Teile des Anwendungs-URL-Namespace
physikalischen Verzeichnissen zuordnen, in denen sich die Anwendungsinhalte befinden. Jede Anwendung enthält mindestens ein virtuelles Verzeichnis, das als virtuelles Stammverzeichnis bezeichnet wird
und das den Stamm des Anwendungs-URL-Namespace dem physikalischen Stammverzeichnis der
Anwendung zuordnet. Sie finden später in diesem Kapitel im Abschnitt »Virtuelle Verzeichnisse«
weitere Informationen zu virtuellen Verzeichnissen.
Stellen Sie sich den Unterschied zwischen Anwendungen und virtuellen Verzeichnissen wie folgt vor:
Eine Anwendung ist eine Gruppe von Inhalten und Diensten, die zusammen innerhalb derselben Ausführungsumgebung (in einem spezifischen IIS-Arbeitsprozess und vielleicht in einem spezifischen
Anwendungsframeworkkontext wie ASP oder ASP .NET) ausgeführt werden. Ein virtuelles Verzeichnis ist der physikalische Speicherort der Anwendungsinhalte. Es definiert, wo die Inhalte auf dem
Datenträger gespeichert sind und wie der Zugriff darauf erfolgen soll.
Der folgende <sites>-Abschnitt aus der applicationHost.config-Datei zeigt, wie die Definitionen von
Sites, Anwendungen und virtuellen Verzeichnissen deklariert werden können.
<sites>
<site name="Contoso Corp" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\contoso" />
<virtualDirectory path="/images" physicalPath="g:\images" />
</application>
<application path="/payment" applicationPool="MyAppPool">
<virtualDirectory path="/" physicalPath="d:\KDbank" />
</application>
...
</site>
...
</sites>
Jede Anwendung besitzt einen Startpunkt, besser bekannt als Anwendungsstamm. Wenn Sie mit dem
IIS-Manager eine neue Website erstellen, erzeugt dieser eine Stammanwendung mit dem virtuellen Pfad /.
Die Anwendungsgrenze gilt für jede Datei und für jedes Verzeichnis unterhalb des Stammverzeichnisses,
sofern Sie innerhalb der Website nicht einen anderen Anwendungsstartpunkt angeben. Gleichzeitig erzeugt der IIS-Manager auch für die Anwendung ein virtuelles Stammverzeichnis, dessen virtueller Pfad /
ist. Der physikalische Pfad ist das Stammverzeichnis der Website.
Im vorherigen Beispiel ist <application path="/"> der Stammpfad der Anwendung. Innerhalb derselben
Konfiguration sind zwei Anwendungen definiert. Das Stammverzeichnis der Website ist durch den
Eintrag für das virtuelle Verzeichnis <virtualDirectory path="/" physicalPath="d:\contoso" /> gekennzeichnet.
Die zweite Anwendung ist /payment, die mit <virtualDirectory path="/" physicalPath="d:\KDbank" /> definiert ist.
Beachten Sie, dass der Anwendungspool MyAppPool die Anwendung payment hostet, wohingegen die
Stammanwendung DefaultAppPool verwendet, der in den Standardanwendungspooleinstellungen des
Konfigurationsabschnitts <sites> definiert ist. Im nächsten Abschnitt erfahren Sie mehr über Anwendungspools.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
254 Kapitel 9: Verwalten von Websites
Virtuelle Verzeichnisse
Ein virtuelles Verzeichnis ist die Zuordnung eines Teils eines Anwendungs-URL-Namespace zu einem
physikalischen Speicherort, in dem sich die entsprechenden Inhalte befinden. Dabei kann es sich um ein
Verzeichnis im lokalen Dateisystem oder einen UNC-Pfad (Universal Naming Convention) zu einer
Netzwerkfreigabe handeln. Eine Anwendung enthält in der Regel ein virtuelles Stammverzeichnis, das
den gesamten URL-Namespace dem entsprechenden physikalischen Speicherortstamm zuordnet. Sie
können jedoch zusätzliche virtuelle Verzeichnisse erstellen, um Teile Ihrer Anwendung Ordnern zuzuordnen, die sich auf dem lokalen Computer in einem anderen Pfad bzw. auf einem anderen Volume oder
sogar in einem nicht lokalen, freigegebenen Netzwerkordner befinden. Darüber hinaus kann jedes
virtuelle Verzeichnis die Anmeldeinformationen festlegen, die für den Zugriff auf seine Inhalte
verwendet werden sollen.
Wenn Sie beispielsweise eine Intranetwebsite für die Finanzabteilung entwickeln, müssen Sie nicht alle
Standardbilddateien des Unternehmens von der Unternehmenswebsite in die neue Website kopieren.
Sie können stattdessen in der Finanzwebsite ein neues virtuelles Verzeichnis erstellen und dieses dem
physikalischen Ordner zuordnen, der sich auf dem Server der Unternehmenswebsite befindet und die
Bilddateien enthält.
Bei IIS 7.0 muss jede Website eine Stammanwendung enthalten, und jede Anwendung muss ein virtuelles Stammverzeichnis enthalten. Dies bedeutet, dass jede Website über ein virtuelles Stammverzeichnis verfügt, das auf das physikalische Stammverzeichnis der Website verweist. Sie können zusätzliche
virtuelle Verzeichnisse oder zusätzliche Anwendungen mit virtuellen Verzeichnissen hinzufügen. Die
virtuellen Verzeichnisse werden in der applicationHost.config-Konfigurationsdatei und dort in der
<site>-Konfigurationsauflistung als Children der jeweiligen Anwendung angelegt.
Hinweis Im Gegensatz zu IIS 6.0 sind virtuelle Verzeichnisse immer in Anwendungen enthalten. Darüber hinaus
können virtuelle Verzeichnisse nicht mit Anwendungspools verknüpft werden. Dies ist nur mit Anwendungen möglich. Dies zeigt einmal mehr, dass die Anwendung der Laufzeitcontainer für die Funktionalität der Website ist, und
das virtuelle Verzeichnis ist der physikalische Speicherort für die Anwendungsinhalte.
Lassen Sie uns zum vorherigen Beispiel zurückkehren, wo sich in der Contoso Corp.-Website zwei
Anwendungen befinden. Jede Anwendung enthält einen Satz virtuelle Verzeichnisse, die Teile der
Anwendung den physikalischen Speicherorten zuordnen, in denen sich die Inhalte befindet, die im
Rahmen der Anwendung bereitgestellt werden. Beachten Sie das virtuelle Verzeichnis /images in der
Stammanwendung der Website. Es ist so für die Website konfiguriert, dass es auf Dateien außerhalb des
Webanwendungsstamms verweist.
Später in diesem Kapitel hält der Abschnitt »Virtuelle Verzeichnisse verwalten« eine ausführliche
Erläuterung von virtuellen Verzeichnissen bereit.
Anwendungspools
Das Anwendungspoolkonzept wurde erstmals mit IIS 6.0 eingeführt. Ein Anwendungspool verwendet
einen separaten IIS-Arbeitsprozess (W3WP.exe), um die Anforderungen zu verarbeiten, die sich auf die
mit dem Anwendungspool verknüpften Webanwendungen beziehen. Anwendungspools dienen als
Grenze zwischen den IIS 7.0-Anwendungen, wobei alle IIS-Features und Anwendungslaufzeitumgebungen in einem separaten IIS-Arbeitsprozess gehostet werden. Dabei kümmert sich der Arbeits-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Websites, Anwendungen, virtuelle Verzeichnisse und Anwendungspools
255
prozess um die Anwendungsanforderungsverarbeitung. Jeder IIS-Arbeitsprozess ist von anderen
Arbeitsprozessen unabhängig, was bedeutet, dass jeder Prozess eine eigene Prozess-ID, einen eigenen
Arbeitsspeicherbereich und eine eigene Lebensdauer besitzt.
Anwendungen, die in verschiedenen Arbeitsprozessen ausgeführt werden, sind voneinander isoliert, so
dass sich der Absturz eines Arbeitsprozesses in der Regel nicht auf den Betrieb der anderen Prozesse
auswirkt. Dies verbessert die Stabilität und Verfügbarkeit von Anwendungen, da fehlerhafte Programme
andere, auf demselben IIS-Server ausgeführte Anwendungen nicht beeinflussen.
Außerdem kann ein Anwendungspool als Sicherheitsandbox dienen, so dass verschiedene Anwendungen in IIS-Arbeitsprozessen ausgeführt werden können, die unter verschiedenen Anwendungspoolidentitäten gestartet wurden. Aus diesem Grund können Sie Anwendungen isolieren, indem Sie den der
jeweiligen Anwendungspoolidentität gewährten Zugriff auf die entsprechenden Anwendungsinhalte
und Serverressourcen kontrollieren. Auf diese Weise werden die Anwendungen im jeweiligen Anwendungspool zur Laufzeit in separaten Speicherbereichen isoliert und die entsprechenden Anwendungsressourcen auf dem Server werden mithilfe von Windows-ACLs (Access Control List) voneinander
isoliert.
Hinweis Die Anwendungspoolisolation in Kombination mit der richtigen Ressourcenzugriffskontrolle ist der einzige
zuverlässige Mechanismus, um mehrere auf dem Server ausgeführte Anwendungen voneinander zu isolieren.
Weitere Informationen zur Konfiguration der Anwendungspoolisolation finden Sie im vierzehnten Kapitel, »Implementieren von Sicherheitsstrategien«.
Wenn Sie im IIS-Manager eine Website erstellen, wird automatisch ein neuer Anwendungspool erzeugt
und die Stammanwendung der Site wird für die Ausführung in diesem Pool konfiguriert. Wenn Sie eine
Site programmgesteuert erstellen, müssen Sie jeder Anwendung der Site den gewünschten Anwendungspool explizit zuweisen (andernfalls wird der als Standard konfigurierte Anwendungspool verwendet). Sie
können einen Anwendungspool ebenfalls manuell erstellen, sofern Sie möchten, dass bestimmte Anwendungen in diesem Pool ausgeführt werden.
Darüber hinaus können Sie verschiedene Laufzeiteinstellungen für einen Anwendungspool festlegen,
die die Ausführung der Anforderungen betreffen, die sich auf die im Pool gehosteten Anwendungen
beziehen. Einige dieser Einstellungen sind nachfolgend aufgeführt:
Die .NET Framework-Version, die angibt, welche Version der CLR (Common Language Runtime)
in den IIS-Arbeitsprozess geladen wurde und welche ASP.NET-Version somit für die ASP.NETAnwendungen im Anwendungspool verwendet wird.
Der ASP.NET-Integrationsmodus (Integriert [Standard] oder Klassisch). Wirkt sich auf die Arbeitsweise von ASP.NET-Anwendungen in diesem Anwendungspool aus.
Die Bitness des Anwendungspools bei 64-Bit-Betriebssystemen. Wirkt sich darauf aus, ob dieser
Anwendungspool unter Verwendung des SYSWOW64-Emulationsmodus native 64-Bit-Komponenten oder gewöhnliche 32-Bit-Komponenten lädt.
Bei IIS 7.0 ist somit die Auswahl eines richtig konfigurierten Anwendungspools für die Definition des
korrekten Laufzeitverhaltens von Webanwendungen sehr wichtig.
Anwendungspools werden im zehnten Kapitel, »Verwalten von Anwendungen und Anwendungspools«
ausführlich erläutert.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
256 Kapitel 9: Verwalten von Websites
Verwaltungsaufgaben
Bei der Installation von IIS wird eine Website namens Default Web Site erstellt, die eine einzelne
Stammanwendung enthält, deren virtuelles Stammverzeichnis dem Ordner %systemdrive%\inetpub\
wwwroot zugeordnet ist. Sie können diese Standardwebsite so konfigurieren, dass sie Ihre Webanwendung bereitstellt, oder Sie generieren eine neue Website, um die Anwendung zu veröffentlichen.
Hinweis Sie sollten Ihre Webinhalte auf einem Laufwerk ablegen, das nicht das Systemlaufwerk ist.
Für die typischen IIS 6.0-Verwaltungsaufgaben stehen die von der IIS 6.0-Verwaltungskonsole angebotenen Assistenten zur Verfügung. Unter IIS 7.0 können Sie die IIS-Manager-Konsole benutzen, um
Websites zu erstellen und zu verwalten.
Darüber hinaus können Sie das Befehlszeilentool Appcmd.exe verwenden, um von der Befehlszeile
aus eine Website und die zugehörige Konfiguration zu verwalten. Sie können außerdem eine der
zahlreichen programmatischen APIs für die Verwaltung der IIS-Konfiguration benutzen, z.B. Microsoft
Web Administration oder WMI (Windows Management Instrumentation), oder Sie bearbeiten direkt
die Serverkonfigurationsdateien, z.B. applicationHost.config oder web.config. Beachten Sie jedoch,
dass die direkte Bearbeitung der Konfigurationsdateien nicht empfohlen wird.
Hinweis IIS 7.0 unterstützt auch weiterhin die alten IIS 6.0-Konfigurationsskripts, zu denen ADSUTIL.VBS, IISWEB.VBS, IISVDIR.VBS und andere zählen. Diese Skripts werden ausschließlich aus Gründen der Kompatibilität
angeboten und erfordern die Installation der IIS 6.0-Kompatibilitätskomponenten. Es wird dringend empfohlen, dass
Sie das neue Befehlszeilentool Appcmd.exe oder die programmatischen APIs einsetzen, um die IIS-Konfiguration
zu verwalten, da die alten Tools in bestimmten Fällen zu einer nicht beabsichtigten Konfiguration führen können. Der
Grund hierfür besteht darin, dass sie für das neue Konfigurationssystem nicht optimiert wurden.
In diesem Abschnitt des Kapitels lernen Sie einige übliche administrativen Aufgaben für die Verwaltung von IIS-Websites kennen, für deren Bearbeitung sowohl der IIS-Manager als auch Appcmd
verwendet wird. Auch die Änderungen, die sich dadurch an den Konfigurationsdateien ergeben, werden
präsentiert.
Eine neue Website hinzufügen
Sie können mit IIS 7.0 neue Webistes erstellen, um Ihre Webanwendungen und -dienste zu veröffentlichen. Bevor Sie eine neue Website erstellen, sollten Sie darüber nachdenken, wie der Zugriff darauf
erfolgen soll. Dazu legen Sie die IP-Adressen, Ports und (optional) die Hostheader fest, die für den
Empfang von Anforderungen für die Site verwendet werden sollen. Sie nutzen diese Informationen, um
die Protokollbindungen für die Website zu konfigurieren.
Bei IIS 7.0 dient jede Website als logischer Container für Webanwendungen und virtuelle Verzeichnisse. Wenn Sie mit IIS 7.0 eine neue Website hinzufügen, erzeugt IIS vier verschiedene Objekte:
Eine Website, die den Sitenamen, die ID, Bindungen und (optional) weitere Einstellungen definiert
Eine Stammanwendung
Ein virtuelles Stammverzeichnis für die Stammanwendung, wobei der URL-Namespace / dem
physikalischen Stammverzeichnis der Website zugeordnet wird
Einen Anwendungspool (sofern Sie mit dem IIS-Manager arbeiten), der die Stammanwendung der
Website hostet (sofern Sie nicht selbst einen der bereits vorhandenen Anwendungspools auswählen)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verwaltungsaufgaben
257
Wichtig Um die Sicherheit aufrechtzuerhalten, sollten Sie sich unter Verwendung eines Kontos, das nicht über
administrative Rechte verfügt, an Ihren Computer anmelden. Benutzen Sie anschließend den Runas-Befehl, um den
IIS-Manager als Administrator auszuführen. Nehmen Sie an der Eingabeaufforderung beispielsweise die folgende
Eingabe vor:
runas /user:<admin_acct> "%windir%\system32\inetsrv\inetmgr.exe"
Um mit dem IIS-Manager eine Website zu erstellen, erweitern Sie im Bereich Verbindungen den Knoten
des IIS-Computers. Klicken Sie innerhalb der hierarchischen Struktur mit der rechten Maustaste auf den
Knoten Sites, und wählen Sie anschließend Website hinzufügen aus. Das Ergebnis ist in Abbildung 9.1
dargestellt.
Abbildung 9.1 Eine Website mit dem IIS-Manager hinzufügen
Das Dialogfeld Website hinzufügen ermöglicht es Ihnen, eine neue Website zu erstellen. Dazu geben
Sie alle grundlegenden Informationen an, die zur Erstellung der Website benötigt werden: eine einzelne
Bildung, die Stammanwendung, das virtuelle Stammverzeichnis und standardmäßig einen neuen
Anwendungspool, der die Anwendung hostet. Sie können ebenfalls bestimmte Anmeldeinformationen
festlegen, die für den Zugriff auf die Siteinhalte im virtuellen Stammverzeichnis verwendet werden
sollen. Weitere Informationen zur Erstellung und Verwaltung virtueller Verzeichnisse finden Sie später
in diesem Kapitel im Abschnitt »Virtuelle Verzeichnisse verwalten«.
Möchten Sie zusätzliche Modifizierungen an den Websiteeinstellungen vornehmen, können Sie festlegen, dass die neue Website nicht sofort gestartet werden soll. Sie wird dann im beendeten Zustand
belassen, so dass Sie zusätzliche Konfigurationen vornehmen können, bevor Sie die Site später manuell
starten. Weitere Informationen zum Starten und Beenden von Websites finden Sie später in diesem
Kapitel im Abschnitt »Websites starten und beenden«.
Sie können ebenfalls den folgenden Appcmd-Befehl benutzen, um eine neue Website hinzuzufügen.
appcmd add site /name:string /id:uint /bindings:string /physicalPath:string
Tabelle 9.1 beschreibt die Parameter dieses Befehls.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
258 Kapitel 9: Verwalten von Websites
Tabelle 9.1 Appcmd-Syntax zum Hinzufügen einer Website
Parameter
Beschreibung
name
Dieses Feld muss mindestens angegeben werden. string repräsentiert den Anzeigenamen der Website.
Wenn IIS im Wert des Elementattributs /name oder /id einen Fehler aufgrund eines doppelten Vorkommens
entdeckt, schlägt der Befehl fehl, und die Website wird nicht erstellt.
id
Eine vorzeichenlose Ganzzahl, die die Website-ID angibt. Wenn dieser Wert nicht angegeben wird, ermittelt
IIS 7.0 die höchste ID der bereits vorhandenen Websites, addiert diese mit 1 und verwendet das Ergebnis als
ID für die neue Website.
Wenn IIS im Wert des Elementattributs /name oder /id einen Fehler aufgrund eines doppelten Vorkommens
entdeckt, schlägt der Befehl fehl, und die Website wird nicht erstellt.
bindings
Eine Liste der Bindungszeichenfolgen, die durch Doppelpunkte voneinander getrennt angegeben werden.
Dazu zählen das Protokoll und die zugehörigen Bindungsinformationen. HTTP- und HTTPS-Bindungsinformationen enthalten die IP-Adresse, den Port und den Hostheader. Jede Bindungszeichenfolge wird im Format
[protocol]/[bindingInformation] angegeben, wobei [bindingInformation] für die Protokolle HTTP und HTTPS das
Format [ip|*]:[port]:[host header] aufweist. http/*:80:www.contoso.com gibt beispielsweise an, dass der Hostheadername der Website http://www.contoso.com lautet und dass die Site an alle IP-Adressen und Port 80
gebunden ist.
physicalPath
Repräsentiert den Stammanwendungspfad der Website. Der Pfad kann sich auf dem lokalen Computer
befinden, z.B. d:\fabrikamhr, oder auf einem Remoteserver, zum Beispiel \\remoteserver\share. Sie können
für einen freigegebenen Remoteserver ein eigenes Verbindungsbenutzerkonto festlegen, das über die entsprechenden Zugriffsrechte für den freigegebenen Remoteordner verfügt.
Wenn physicalPath nicht angegeben wird, werden die Stammanwendung und das virtuelle Stammverzeichnis
nicht automatisch erstellt und müssen später manuell hinzugefügt werden.
Hinweis Wenn Sie den vollständigen Pfad %windir%\system32\inetsrv\appcmd.exe angeben, können Sie die
Beispiele von jedem beliebigen Pfad aus nachvollziehen, ohne das Verzeichnis wechseln zu müssen.
Das folgende Beispiel erstellt eine neue Website mit der ID 9, dem Sitenamen Fabrikam HR (für die
Personalabteilung – engl. Human Resources – des fiktiven Unternehmens Fabrikam), hr.fabrikam.com
als Hostheader Wert und dem HTTP-Standardport als Zugriffsport. Der Stammpfad der Website wird
dem physikalischen Ordner d:\fabrikamHR zugeordnet.
appcmd add site /name:"Fabrikam HR" /id:9
/bindings:http/*:80:hr.fabrikam.com /physicalPath:"d:\fabrikamHR"
Hinweis Lange Befehle werden bisweilen in mehrere Zeilen umbrochen, damit sie auf die gedruckte Seite passen.
Beachten Sie die Befehlsausgabe, die zeigt, dass drei verschiedene Objekte erstellt wurden (für die Site,
die Anwendung und das virtuelle Verzeichnis). Wenn Sie hingegen mit dem IIS-Manager arbeiten, werden
vier Objekte erstellt, da der IIS-Manager standardmäßig eine neue Anwendung für die neue Website
erzeugt. Der Grund hierfür besteht darin, dass physicalPath angegeben wurde, und IIS generiert die Stammanwendung immer zusammen mit der Definition des virtuellen Stammverzeichnisses der Website.
Das SITE-Objekt "Fabrikam HR/" wurde hinzugefügt
Das APP-Objekt "Fabrikam HR/" wurde hinzugefügt
Das VDIR-Objekt "Fabrikam HR/" wurde hinzugefügt
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verwaltungsaufgaben
259
Wenn Sie wie im folgenden Beispiel physicalPath nicht angeben, wird nur das Siteobjekt erstellt, weil IIS
nicht über genügend Informationen verfügt, um die zugehörige Anwendung und das virtuelle Verzeichnis zu erzeugen. Deshalb wird die Website zwar erstellt, aber nicht gestartet, was erst möglich ist, wenn
Sie physicalPath konfigurieren.
appcmd add site /name:"Fabrikam Finance"
/bindings:http/*:80/finance.fabrikam.com
Vorsicht Wenn Sie mit Appcmd eine neue Website generieren, ohne Bindungsinformationen oder physicalPath
anzugeben, wird die Website erstellt, aber Sie können sie nicht starten.
Nachfolgend ist das <site>-Element der Fabrikam HR-Website zu sehen, die wie im ersten Beispiel
dieses Abschnitts mit Appcmd erzeugt wurde.
<sites>
...
<site name="Fabrikam HR" id="9">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\fabrikamHR" />
</application>
<bindings>
<binding protocol="http"
bindingInformation="*:80:hr.fabrikam.com" />
</bindings>
</site>
...
</sites>
Die Bindungen einer Website konfigurieren
Websitebindungen legen protokollspezifische Endpunkte fest, an denen die auf die jeweilige Website
bezogenen Anforderungen empfangen werden. Jede Bindung definiert das Protokoll und die protokollspezifischen Bindungsinformationen.
Hinweis Server, die zusätzliche Protokolle unterstützen, zum Beispiel net.tcp von WCF (Windows Communication
Foundation) und ftp von FTP 7.0, können unter Verwendung dieser Protokolle Bindungen einrichten. Lesen Sie die
Dokumentationen zu diesen Produkten, um die vom jeweiligen Protokoll verwendeten Bindungsinformationen in
Erfahrung zu bringen.
IIS-Websites enthalten in der Regel Bindungen, die mit den Protokollen HTTP oder HTTPS arbeiten.
Diese Bindungen legen Endpunktinformationen fest, die die IP-Adresse, die Portnummer und (sofern
vorhanden) den Hostheader bestimmen. An diese Elemente wird die Website beim Start gebunden.
Dadurch wird es möglich, dass IIS-Websites unter Verwendung der folgenden Konfigurationen gehostet
werden können:
Eine Website, die alle verfügbaren Netzwerkschnittstellen und einen bestimmten Port überwacht
Eine Website, die eine bestimmte Netzwerkschnittstelle/IP-Adresse und einen bestimmten
Port überwacht. Dies kann nützlich sein, wenn der Zugriff auf eine Website auf die Clients eines
bestimmten Netzwerks, z.B. ein internes Netzwerk oder localhost, beschränkt werden soll.
Eine Website, die einen bestimmten Port und einen bestimmten Hostheader überwacht
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
260 Kapitel 9: Verwalten von Websites
Darüber hinaus ist es möglich, auf demselben Server mehrere Websites zu hosten, indem Bindungen
verwendet werden, die unterschiedliche Ports, IP-Adressen oder Hostheader zur Unterscheidung der
Sites nutzen. Nachfolgend sind verschiedene Möglichkeiten für mehrere Websitebindungen genannt:
Mehrere Websites, die verschiedene Ports überwachen
Mehrere Websites, die denselben Port, aber verschiedene Netzwerkschnittstellen/IP-Adressen
überwachen. Dies kann z.B. geschehen, damit über interne und externe IP-Adressen des Servers auf
verschiedene Websites zugegriffen werden kann. Sie können diese Technik ebenfalls verwenden,
um mehrere Websites zu hosten, wenn jede Website eigene, an die Netzwerkschnittstellen des
Servers gebundene IP-Adressen besitzt.
Mehrere Websites, die denselben Port und dieselben Netzwerkschnittstellen/IP-Adressen, aber
unterschiedliche Hostheader überwachen. Dieses Verfahren wird meistens verwendet, um mehrere
öffentliche Websites zu hosten. Darüber hinaus nutzen Shared Webhostingserver diese Technik.
Hinweis Seien Sie vorsichtig, wenn Sie für die Liste der Netzwerkschnittstellen einer HTTP- oder HTTPS-Sitebindung Keine zugewiesen oder * verwenden. Dies führt zu einer Konfiguration, die dafür sorgt, dass die Bindung alle
Netzwerkschnittstellen überwacht, die noch nicht von anderen Bindungen genutzt werden. Die von der Bindung
überwachten Netzwerkschnittstellen sind somit davon abhängig, welche anderen gegenwärtig aktiven Sites mit
Bindungen arbeiten, die denselben Port in Verbindung mit den Netzwerkschnittstellen des Servers nutzen. Um
vorhersehbare Ergebnisse zu erhalten, sollten Sie darüber nachdenken, die Liste der Adressen anzugeben, mit
denen die jeweilige Bindung arbeiten soll.
Um schließlich durch eine Kombination dieser Konfigurationen die gewünschten Zugriffsmöglichkeiten zu erhalten, können Sie für jede Site mehrere Bindungen verwenden.
Hinweis Wenn jede Website ein separates SSL-Zertifikat (Secure Sockets Layer) erfordert, ist es nicht möglich,
mehrere Websites zu hosten, die Hostheader am selben Port/an derselben Netzwerkschnittstelle verwenden.
Weitere Informationen erhalten Sie im vierzehnten Kapitel.
Bei IIS 7.0 können Sie den IIS-Manager benutzen, um Bindungsinformationen über den Link Bindungen im Bereich Aktionen zu konfigurieren. Mit IIS 7.0 können Sie für eine Website andere Protokollbindungen als HTTP und HTTPS angeben. Es ist aber nicht mehr möglich, einen Unterstrich (_) im
Hostheadernamen zu benutzen.
Um mit dem IIS-Manager für eine Website bereits vorhandene Bindungen zu ändern oder neue
Bindungen zu konfigurieren, erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers.
Erweitern Sie anschließend auch den Knoten Sites. Markieren Sie in der hierarchischen Sites-Struktur
die Website, die Sie verwalten möchten, und klicken Sie im Bereich Aktionen auf den Link Bindungen.
Das Ergebnis ist in Abbildung 9.2 zu sehen. Markieren Sie die gewünschte Bindungskonfiguration und
klicken Sie auf Bearbeiten. Klicken Sie alternativ hierzu auf Entfernen, um die Bindung zu löschen.
Hinweis Wenn Sie eine HTTPS-Bindung konfigurieren, müssen Sie das SSL-Zertifikat für die Bindung auswählen,
wobei die möglichen SSL-Zertifikate bereits installiert sein müssen. Wenn Sie die Bindungsinformationen einer
Website bearbeiten, können Sie die Zertifikatinformationen einsehen, indem Sie im Dialogfeld Sitebindung hinzufügen auf die Schaltfläche Anzeigen klicken. Weitere Informationen zur Konfiguration von SSL unter IIS 7.0 finden
Sie im vierzehnten Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verwaltungsaufgaben
261
Abbildung 9.2 Websitebindungen mit dem IIS-Manager konfigurieren
Benutzen Sie die folgende Appcmd-Syntax, um die Bindungen einer bestimmten Website anzeigen zu
lassen.
appcmd list site SiteName
Um die Bindungen einer Website zu konfigurieren, verwenden Sie den folgenden Befehl.
appcmd set site SiteName /bindings:string
Tabelle 9.2 beschreibt die Parameter dieses Befehls.
Tabelle 9.2 Appcmd-Syntax zum Festlegen von Bindungen
Parameter
Beschreibung
SiteName
Der Anzeigename der Website
bindings
Eine Liste der Bindungszeichenfolgen, die durch Doppelpunkte voneinander getrennt angegeben werden.
Dazu zählen das Protokoll und die zugehörigen Bindungsinformationen. HTTP- und HTTPS-Bindungsinformationen enthalten die IP-Adresse, den Port und den Hostheader. Jede Bindungszeichenfolge wird im
Format [protocol]/[bindingInformation] angegeben, wobei [bindingInformation] für die Protokolle HTTP und
HTTPS das Format [ip|*]:[port]:[host header] aufweist. Der Hostheaderwert kann ausgelassen werden, wenn
kein spezifischer Hostheader angegeben werden soll.
Die Bindungsliste ersetzt den aktuellen Bindungssatz der Site.
Hinweis Weitere Informationen zur Verwendung von Appcmd, um Bindungen und das Bindungsformat festzulegen, finden Sie im siebten Kapitel, »Verwenden von Befehlszeilentools«.
Die folgende Syntax listet detaillierte Informationen zur Fabrikam HR-Website auf. Dazu zählen auch
die Bindungsinformationen.
appcmd list site "Fabrikam HR"
Wie der folgende Code zeigt, gibt die Ausgabe Aufschluss darüber, dass die Fabrikam HR-Website an
das HTTP-Protokoll, Port 80, alle IP-Adressen (*) sowie den Hostheaderwert hr.fabrikam.com gebunden
ist:
SITE "Fabrikam HR" (id:9,bindings:http/*:80:hr.fabrikam.com,state:started)
Um myhr.fabrikam.com zusätzlich zu hr.fabrikam.com als neuen Hostheader zu konfigurieren, verwenden Sie
die folgende Syntax:
appcmd set site "Fabrikam HR"
/+bindings.[protocol='http',bindingInformation='*:80:myhr.fabrikam.com']
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
262 Kapitel 9: Verwalten von Websites
Die voranstehende Syntax fügt am Ende der bereits vorhandenen Fabrikam-Bindungsinformationen
eine weitere Bindung hinzu, die einen neuen Hostheader, das HTTP-Protokoll, alle IP-Adressen und
Port 80 festlegt. Wenn Sie mit Blick auf das vorherige Beispiel die bereits vorhandenen Bindungsinformationen ändern möchten, so dass aus myhr.fabrikam.com askhr.fabrikam.com wird, können Sie die
folgende Syntax benutzen:
appcmd set site "Fabrikam HR"
/bindings.[bindingInformation=’*:80:myhr.fabrikam.com’].bindingInformation:*:80:askhr.
fabrikam.com
Die Bindungen einer Website werden in deren <site>-Element gespeichert. Nachfolgend ist das <site>Element in der applicationHost.config-Datei zu sehen, nachdem die vorherigen Appcmd-Beispiele
ausgeführt wurden:
<sites>
...
<site name="Fabrikam HR" id="9">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\fabrikamHR" />
</application>
<bindings>
<binding protocol="http"
bindingInformation="*:80:hr.fabrikam.com" />
<binding protocol="http"
bindingInformation="*:80:askhr.fabrikam.com" />
</bindings>
</site>
...
</sites>
Die Websiteverwendung einschränken
Sie können wie bei früheren IIS-Versionen Websiteeinschränkungen konfigurieren, wie z.B. die maximal verfügbare Bandbreite, die maximale Anzahl gleichzeitiger Verbindungen und den Verbindungstimeout. Sie können auf diese Möglichkeiten zurückgreifen, um dafür zu sorgen, dass die Websites
weniger intensiv genutzt werden oder dass einige Websites eine größere Anzahl gleichzeitiger Verbindungen und/oder eine größere Bandbreite als andere Sites nutzen können. Sie können drei Einschränkungen konfigurieren:
Nutzung der Bandbreite (maxBandwidth)
Maximale Anzahl gleichzeitiger Verbindungen (maxConnections)
Verbindungstimeout (connectionTimeout)
Die Bandbreitenbegrenzung legt für die Website die nutzbare Netzwerkbandbreite fest, die niemals
überschritten werden darf. Der Kerneltreiber HTTP.sys sorgt für eine dynamische Bandbreitendrosselung. Bei IIS 6.0 wird die Drosselung in Kilobytes pro Sekunde (Kbps) angegeben. Bei IIS 7.0 erfolgt
die Angabe in Bytes pro Sekunde. Dabei gilt ein Mindestwert von 1024 Bytes pro Sekunde. Wenn
die Drosselung aktiviert ist, hält sich HTTP.sys an den konfigurierten Grenzwert und stellt sicher, dass
die Site das angegebene Bandbreitenlimit niemals überschreitet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verwaltungsaufgaben
263
Wichtig IIS gewährleistet keine präzise Bandbreitenbegrenzung für einzelne, auf die jeweilige Website bezogene
Verbindungen oder Anforderungen. Es stellt lediglich sicher, dass die Bandbreitennutzung den konfigurierten
Grenzwert insgesamt nicht überschreitet.
Der Verbindungsgrenzwert legt die maximale Anzahl von gleichzeitigen Verbindungen fest, die für eine
bestimmte Website zulässig sind. Wenn Sie die Anzahl der Verbindungen zu einer Website einschränken, bedeutet dies eine Einsparung von Systemressourcen. Sie könnten beispielsweise für eine Website
mit einer niedrigen Priorität die Anzahl der Verbindungen begrenzen, so dass dem System mehr Verbindungen oder Ressourcen für Websites mit einer hohen Priorität oder für ausgelastete Websites zur
Verfügung stünden. Wenn IIS den für eine Website konfigurierten Verbindungsgrenzwert erreicht,
sendet es die HTTP 503-Fehlermeldung zum Clientbrowser, die Aufschluss darüber gibt, dass der
Dienst nicht verfügbar ist. Darüber hinaus fügt IIS dem HTTP-Fehlerprotokoll (httperr*.log unter
%windir%\system32\logfiles\httperr\) einen ConnLimit-Eintrag hinzu.
Der Verbindungstimeout legt die Zeit fest, die vergehen muss, bis IIS eine inaktive Benutzerverbindung
trennt. Durch das Schließen nicht belegter oder ungültiger Verbindungen bzw. von Verbindungen, die
sich im Leerlauf befinden, sorgt IIS dafür, dass eine größere Zahl zulässiger Benutzerverbindungen
möglich ist und dass diesen mehr Ports zur Verfügung stehen. Der Verbindungstimeout ist standardmäßig auf 120 Sekunden gesetzt.
Sie können im IIS-Manager mit nur einem Dialogfeld alle drei Einschränkungen gleichzeitig festlegen.
Um mit dem IIS-Manager für eine bestimmte Website die Anzahl der gleichzeitigen Verbindungen und
die Bandbreite zu begrenzen, erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers
und danach den Knoten Sites. Markieren Sie in der hierarchischen Sites-Struktur die Website, deren
Einstellungen Sie ändern möchten und klicken Sie im Bereich Aktionen auf den Link Limits. Das
Ergebnis ist in Abbildung 9.3 zu sehen.
Abbildung 9.3 Die Websiteverwendung mit dem IIS-Manager einschränken
Benutzen Sie den folgenden Appcmd-Befehl, um den Verbindungsgrenzwert und die Bandbreitendrosselung
einer Website anzeigen zu lassen oder zu konfigurieren:
appcmd set site SiteName /limits.connectionTimeout:integer
/limits.maxBandwidth:integer /limits.maxConnections:integer
Tabelle 9.3 beschreibt die Parameter dieses Befehls.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
264 Kapitel 9: Verwalten von Websites
Tabelle 9.3 Appcmd-Syntax zum Festlegen des Verbindungsgrenzwertes und der Bandbreitendrosselung
Parameter
Beschreibung
SiteName
Der Anzeigename der Website
limits.connectionTimeout
integer legt den HTTP-Verbindungstimeoutwert im Zeitspannenformat (hh:mm:ss) fest. 00:02:00 ist
beispielsweise der Standardwert von 2 Minuten.
limits.maxBandwidth
integer legt die Bandbreitendrosselung für die Website in Bytes fest. Der Wert muss eine Ganzzahl
zwischen 1024 und 214783647 sein.
limits.maxConnections
integer legt die maximale Anzahl gleichzeitiger Verbindungen zur Website fest. Der Wert muss eine
Ganzzahl zwischen 0 und 4294967295 sein.
Da sich die Einstellungen zu den Websiteeinschränkungen auf ein <site>-Element beziehen, können Sie
nicht Appcmd verwenden, um bestimmte Elementwerte auflisten zu lassen. Stattdessen müssen Sie das
<site>-Element der Website detailliert auflisten und die Werte mit dem /config-Parameter untersuchen.
Der folgende Befehl fragt die Fabrikam HR-Websitedetails ab:
appcmd list site /site.name:"Fabrikam HR" /config
Beachten Sie bei der Ausgabe, dass der Verbindungsgrenzwert und die Bandbreitendrosselung der
Website im <limits>-Element des <site>-Elements definiert sind. Die folgende Syntax schränkt die
Fabrikam HR-Website dahingehend ein, dass sie maximal 500 Verbindungen unterstützt und eine
Bandbreite von 10 MB nicht überschreiten darf:
appcmd set site "Fabrikam HR" /limits.maxBandwidth:10485760
/limits.maxConnections:500
Nachfolgend ist das <limits>-Element zu sehen, dessen Attribute maxBandwidth und maxConnections unter
Verwendung der vorherigen Syntax konfiguriert wurden:
<sites>
...
<site name="Fabrikam HR" id="9">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\fabrikamHR" />
</application>
<bindings>
<binding protocol="http"
bindingInformation="*:80:hr.fabrikam.com" />
<binding protocol="http"
bindingInformation="*:80:askhr.fabrikam.com" />
</bindings>
<limits maxBandwidth="10485760" maxConnections="500" />
</site>
...
</sites>
Die Websiteprotokollierung und Ablaufverfolgung
für Anforderungsfehler konfigurieren
Nachdem eine Website erstellt wurde, können Sie festlegen, wie die auf diese Website bezogenen
Anforderungen protokolliert werden sollen. Dazu können Sie das Protokollierungsformat, den
Speicherort der Protokolldateien und einen Zeitplan für die Erstellung von Protokolldateien auswählen.
Sie können die Protokollierungseinstellungen ändern, indem Sie die Website im Hierarchielistenfeld
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Verwaltungsaufgaben
265
markieren und im Featurehauptbereich einen Doppelklick auf dem Symbol des Features Protokollierung ausführen. Im fünfzehnten Kapitel, »Protokollierung«, erfahren Sie mehr über die
Konfiguration und Verwendung von Anforderungsprotokollen.
Wenn Sie außerdem Hilfe bei der Behebung von Problemen benötigen, können Sie die Ablaufverfolgung für Anforderungsfehler aktivieren, so dass für fehlgeschlagene Anforderungen detaillierte
Anforderungsausführungsprotokolle erstellt werden. Sie können im IIS-Manager auf die Einstellungen
zur Ablaufverfolgung für Anforderungsfehler zugreifen, indem Sie im Hierarchielistenfeld die Website
markieren und dann einen Doppelklick auf Ablaufverfolgung für Anforderungsfehler ausführen. Im
Dialogfeld zur Bearbeitung der Ablaufverfolgungseinstellungen können Sie die Ablaufverfolgung für
Anforderungsfehler aktivieren, den Speicherort angeben und festlegen, wie viele Ablaufverfolgungsdateien maximal für die Website generiert werden dürfen.
Um mehr darüber zu erfahren, wie Sie die Ablaufverfolgung für Anforderungsfehler nutzen können,
um Fehler schnell zu diagnostizieren und zu beheben, lesen Sie bitte das sechzehnte Kapitel,
»Ablaufverfolgung und Problembehandlung«.
Websites starten und beenden
Wenn eine Website erstellt wird, ist sie automatisch so konfiguriert, dass sie mit der Überwachung
eingehender Anforderungen beginnt, sobald der W3SVC-Dienst (World Wide Web Service Publishing
Service) gestartet wurde. Eine Website, die eingehende Anforderungen aktiv überwacht, wird als
gestartet erachtet.
Sie können eine Website beenden, um temporär zu verhindern, dass sie neue Anforderungen entgegennimmt. Das Beenden einer Website bricht keine gegenwärtig ausgeführten Anforderungen ab und
wirkt sich auch nicht auf gegenwärtig aktive IIS-Arbeitsprozesse und Anwendungen aus, die der Site
zugeordnet sind. Um mehr über das Entladen von gegenwärtig aktiven Anwendungen und IIS-Arbeitsprozessen zu erfahren, lesen Sie das zehnte Kapitel.
Das Beenden einer Website ist eine temporäre Aktion, die bei einem Neustart des W3SVC-Dienstes
hinfällig wird. Wenn Sie den automatischen Start einer Website verhindern möchten, können Sie dies
konfigurieren.
Sie sehen den aktuellen Status einer Website, wenn Sie im IIS-Manager die Websiteliste anzeigen
lassen. Sie können eine Website in der Liste starten oder beenden, indem Sie (im Hierarchielistenfeld
oder in der Websiteliste) mit der rechten Maustaste darauf klicken, das Untermenü Website verwalten
öffnen und Starten oder Beenden auswählen.
Hinweis Wenn Sie den IIS-Manager benutzen, um eine Website zu starten, kennzeichnet er die Site so, da sie
beim Start von IIS automatisch gestartet wird. Das Befehlszeilentool Appcmd.exe tut dies nicht, so dass Sie selbst
die Einstellung zum automatischen Start festlegen können.
Sie können Websites ebenfalls mit dem Befehlszeilentool Appcmd.exe starten und beenden. Um die
Statusinformationen der Websites des Servers auflisten zu lassen, verwenden Sie die folgende Syntax:
appcmd list sites
Die resultierende Siteliste gibt Aufschluss darüber, ob die jeweilige Site gestartet oder beendet ist.
SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started)
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
266 Kapitel 9: Verwalten von Websites
Sie können optional den Parameter /state mit den Werten started oder stopped verwenden, um nur die
gestarteten oder beendeten Websites anzeigen zu lassen.
Um eine beendete Website zu starten, verwenden Sie die folgende Syntax:
appcmd start site SiteName
Um eine gestartete Website zu beenden, können Sie den folgenden Befehl benutzen:
appcmd stop site SiteName
In beiden Fällen ist SiteName der Name der zu startenden oder zu beendenden Site.
Wie bereits erwähnt wurde, führt das Starten oder Beenden einer Website mit Appcmd nicht dazu, dass
eine Änderung hinsichtlich des automatischen Starts der Site beim Starten oder Herunterfahren des IISKerndienstes erfolgt. Um dies zu ändern, können Sie die serverAutoStart-Konfigurationseigenschaft der
Website setzen. Sie können beispielsweise wie folgt festlegen, dass Default Web Site nicht automatisch
gestartet werden soll:
appcmd set site "Default Web Site" /serverAutoStart:false
Sie können sowohl die Befehle Start Site und Stop Site als auch die Anweisung Set Site benutzen, um eine
Website unabhängig von den Neustarts des W3SVC-Dienstes einheitlich zu beenden und zu starten.
Virtuelle Verzeichnisse verwalten
Sie können virtuelle Verzeichnisse verwenden, um Anwendungsinhalte zu veröffentlichen, die nicht
dem virtuellen Stammverzeichnis einer Anwendung untergeordnet sind. Der Einsatz von virtuellen
Verzeichnissen stellt eine effektive Möglichkeit dar, um die URL-Struktur Ihrer Anwendung, die dem
Client präsentiert wird, von der physikalischen Struktur der Anwendungsinhalte zu trennen. Sie
benötigen virtuelle Verzeichnisse außerdem, wenn sich Ihre Anwendungsinhalte an verschiedenen
physikalischen Speicherorten befinden.
Ein neues virtuelles Verzeichnis hinzufügen
Sie können ein virtuelles Verzeichnis erstellen, um eine virtuelle Pfadzuordnung für Ressourcen festzulegen, die sich außerhalb des Stammverzeichnisses der Website finden. Wie bereits in diesem Kapitel
beschrieben wurde, sind bei IIS 7.0 virtuelle Verzeichnisse und Webanwendungen zwei verschiedene
Objekttypen, die jedoch in enger Beziehung zueinander stehen. Dies führt bei der Erstellung virtueller
Verzeichnisse zu den folgenden Überlegungen:
Jede Webanwendung muss ein virtuelles Stammverzeichnis (der Pfad /) besitzen, das einem physikalischen Pfad zugeordnet ist, der zum physikalischen Anwendungsstamm wird. Wenn Sie eine
Anwendung erstellen, erzeugen Sie ebenfalls deren virtuelles Stammverzeichnis.
Alle virtuellen Verzeichnisse müssen einer vorhandenen Anwendung zugeordnet sein. Wenn Sie
somit ein virtuelles Verzeichnis erstellen, müssen Sie es einer bereits vorhandenen Anwendung
hinzufügen oder eine neue Anwendung erstellen, die den gewünschten virtuellen Pfad aufweist.
Wenn das virtuelle Verzeichnis für ein Anwendungsframework als Anwendungsstamm dienen,
aktivierte IIS-Module konfigurieren oder mit einem bestimmten Anwendungspool verknüpft sein
soll, müssen Sie stattdessen eine Anwendung erstellen.
Um mit dem IIS-Manager ein virtuelles Verzeichnis zu erstellen, erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers und dann den Knoten Sites. Markieren Sie die Website, in der
Sie ein virtuelles Verzeichnis erstellen möchten. Sie können ebenfalls die markierte Website erweitern
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Virtuelle Verzeichnisse verwalten
267
und den Knoten einer untergeordneten Anwendung oder eines untergeordneten Ordners auswählen, der
bzw. dem Sie das virtuelle Verzeichnis hinzufügen möchten. Klicken Sie mit der rechten Maustaste auf
den gewünschten Knoten und wählen Sie Virtuelles Verzeichnis hinzufügen aus.
Im daraufhin angezeigten Dialogfeld können Sie den Alias des virtuellen Verzeichnisses angeben,
der mit dem aktuellen Pfad der Hinzufügung kombiniert wird, um den virtuellen Pfad des virtuellen
Verzeichnisses zu bestimmen. Sie können ebenfalls den physikalischen Pfad festlegen, dem der URLNamespace des virtuellen Verzeichnisses zugeordnet werden soll.
Anmeldeinformationen für den Zugriff auf das virtuelle Verzeichnis konfigurieren
Der Webserver greift standardmäßig unter Verwendung der IIS-Arbeitsprozessidentität auf die Inhalte
im physikalischen Pfad des virtuellen Verzeichnisses zu und stellt zusätzlich sicher, dass der mit der
Anforderung verknüpfte authentifizierte Benutzer, der die Anforderungsidentität darstellt, auf die
angeforderte Ressourcen zugreifen kann. Dies bedeutet, dass die folgenden Identitäten auf die Inhalte
im freigegebenen Ordner zugreifen können müssen:
Die Anwendungspoolidentität (ist standardmäßig NETZWERKDIENST)
Der anonyme Benutzer (ist standardmäßig IUSR), sofern die anonyme Authentifizierung erlaubt ist
Die Identität des authentifizierten Benutzers für alle Benutzer, die auf die Inhalte des virtuellen
Verzeichnisses zugreifen dürfen. Wenn es sich um einen Windows-Benutzer handelt, kommen die
Authentifizierungsmethoden Windows-Authentifizierung oder Standardauthentifizierung zum
Einsatz.
Hinweis Der Standard für virtuelle Verzeichnisse ist identisch mit dem Pass-Through-Authentifizierungsmechanismus, der bei IIS 6.0 für die Zuordnung von virtuellen Verzeichnissen zu UNC-Pfaden verwendet wird.
Wenn Sie möchten, dass der Webserver einen bestimmten Satz Anmeldeinformationen verwendet, über
die der Zugriff auf die Ressourcen im virtuellen Verzeichnis möglich ist, können Sie diese Anmeldeinformationen im Dialogfeld Verbinden als konfigurieren. Wenn Sie diese Anmeldeinformationen
angeben, nutzt der Webserver immer diese Identität und nicht die IIS-Arbeitsprozessidentität, um auf
alle Inhalte und Konfigurationen im entsprechenden virtuellen Verzeichnis zuzugreifen. Darüber hinaus
wird dann auch nicht mehr geprüft, ob der mit der Anforderung verknüpfte authentifizierte Benutzer auf
die physikalischen Ressourcen zugreifen kann.
Hinweis Wenn angegeben, verwendet IIS immer die Anmeldeinformationen für ein virtuelles Verzeichnis, um auf
die Inhalte und Konfigurationsdateien dieses Verzeichnisses zuzugreifen, und zwar unabhängig davon, ob es sich
bei dem physikalischen Speicherort des virtuellen Verzeichnisses um einen lokalen Ordner oder einen freigegebenen Netzwerkordner handelt. Dies ist anders als bei IIS 6.0, wo die zur Verfügung gestellten Anmeldeinformationen
nur dann zum Einsatz kommen, wenn der physikalische Speicherort eine Netzwerkfreigabe ist, die durch einen
UNC-Pfad gekennzeichnet ist.
Dies ist ein einfaches Verfahren, um Zugriff auf die Inhalte zu erhalten, die sich in freigegebenen
Netzwerkordnern befinden. Überlegungen zur Verwendung von virtuellen Verzeichnissen, die auf
die physikalischen Inhalte einer nicht lokalen Netzwerkfreigabe verweisen, werden später in diesem
Kapitel im Abschnitt »Remoteinhalte verwalten« beschrieben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
268 Kapitel 9: Verwalten von Websites
Virtuelle Verzeichnisse mit Appcmd erstellen
Sie können virtuelle Verzeichnisse ebenfalls mit dem Befehlszeilentool Appcmd und dem folgenden
Befehl erstellen:
appcmd add vdir /app.name:string /path:string /physicalPath:string /userName:string
/password:string /logonMethod:enum /allowSubDirConfig:bool
Die Parameter dieses Befehls sind in Tabelle 9.4 aufgeführt.
Tabelle 9.4 Appcmd-Syntax zum Hinzufügen eines virtuellen Verzeichnisses
Parameter
Beschreibung
app.name
Der Pfad der übergeordneten Anwendung, der das virtuelle Verzeichnis hinzugefügt wird. Dieser Parameter muss angegeben werden.
path
Der virtuelle Pfad des virtuellen Verzeichnisses. Er ist, ausgehend vom virtuellen Pfad der übergeordneten Anwendung, ein relativer Pfad. Dieser Parameter muss angegeben werden.
physicalPath
Der physikalische Pfad des virtuellen Verzeichnisses. Dieser Parameter muss angegeben werden.
userName
Der Benutzername für den Zugriff auf die Inhalte des virtuellen Verzeichnisses. Wenn Sie für die
Erstellung des virtuellen Verzeichnisses auf diese Angabe verzichten, wird standardmäßig die PassThrough-Authentifizierung verwendet.
password
Das Kennwort, das zusammen mit dem Benutzernamen verwendet werden soll, um auf die Inhalte des
virtuellen Verzeichnisses zuzugreifen.
logonMethod
Die Anmeldemethode, die zur Erstellung des Anmeldetokens für die Anmeldeinformationen des virtuellen Verzeichnisses verwendet werden soll. Kann Interactive, Batch, Network oder ClearText sein. Der
Vorgabewert ist ClearText. Weitere Informationen zu diesen Typen finden Sie im Artikel »LogonUser
Function« unter http://msdn2.microsoft.com/en-us/library/aa378184.aspx.
allowSubDirConfig
Boolescher der Wert, der angibt, ob der Webserver in den Unterverzeichnissen dieses virtuellen Verzeichnisses nach Konfigurationsdateien suchen wird. Wenn Sie diesen Wert auf false setzen, kann dies
bei Servern mit einer sehr großen Anzahl von web.config-Dateien zu einer besseren Leistung führen.
Gleichzeitig wird jedoch verhindert, dass die IIS-Konfiguration aus Unterverzeichnissen gelesen wird.
Der Vorgabewert ist true.
Das folgende Beispiel fügt innerhalb der Contoso Corp.-Website ein neues virtuelles Verzeichnis
namens images hinzu:
appcmd add vdir /app.name:"Contoso Corp/" /path:/images
/physicalPath:g:\images
Die Befehlsausgabe zeigt, dass IIS ein VDIR-Objekt erstellt, das der Contoso Corp.-Stammanwendung
zugeordnet ist. Die Zuordnung des virtuellen Verzeichnisses generiert den URL http://www.contoso.com/
images, der auf die Bilddateien im physikalischen Ordner g:\images verweist.
Das VDIR-Objekt "Contoso Corp/images" wurde hinzugefügt
Virtuelle Verzeichnisse konfigurieren
Wenn Sie ein virtuelles Verzeichnis hinzufügen oder ändern, sollten Sie dessen Beziehung zur Webanwendung verstehen. Wenn Sie beispielsweise auf einen Ordner mit Bilddateien verweisen möchte,
der sich in einem freigegebenen Netzwerkordner befindet, muss das virtuelle Verzeichnis selbst keine
Anwendung sein. Stattdessen kann es ein Teil der Stammanwendung der Website sein.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Virtuelle Verzeichnisse verwalten
269
Um Änderungen an einem bereits vorhandenen virtuellen Verzeichnis vorzunehmen, markieren Sie
dieses und klicken im Bereich Aktionen auf Grundeinstellungen. Das Ergebnis ist in Abbildung 9.4 zu
sehen. Um ein virtuelles Verzeichnis zu löschen, markieren Sie es und klicken im Bereich Aktionen auf
Entfernen.
Vorsicht Das Entfernen eines virtuellen Verzeichnisses hat keine Löschung der Inhalte zur Folge, die sich in dem
zugeordneten Pfad des physikalischen Dateisystems befinden. Lediglich die Zuordnung zwischen dem URL-Alias
und dem physikalischen Ordner wird entfernt.
Beachten Sie ebenfalls, dass es nicht möglich ist, dass virtuelle Stammverzeichnis einer Website oder Anwendung
zu entfernen.
Abbildung 9.4 Ein virtuelles Verzeichnis mit dem IIS-Manager konfigurieren
Um die Konfigurationseinstellungen zu einem bereits vorhandenen virtuellen Verzeichnis festzulegen,
verwenden Sie den folgenden Befehl:
appcmd set vdir VirtualDirectoryName /physicalPath:string
/userName:string /password:string /logonMethod:enum /allowSubDirConfig:bool
Um ein bereits vorhandenes virtuelles Verzeichnis zu löschen, nutzen Sie die folgende Syntax:
appcmd delete vdir VirtualDirectoryName
Die Parameter dieser Befehle sind in Tabelle 9.5 aufgeführt.
Tabelle 9.5 Appcmd-Syntax zum Konfigurieren eines virtuellen Verzeichnisses
Parameter
Description
VirtualDirectoryName
Der vollständige virtuelle Pfad des virtuellen Verzeichnisses, der das Verzeichnis eindeutig identifiziert.
Dieser Pfad muss angegeben werden, damit ein bereits vorhandenes virtuelles Verzeichnis bearbeitet
oder gelöscht werden kann.
physicalPath
Der physikalische Pfad der virtuellen Zuordnung
userName
Der Benutzername für den Zugriff auf die Inhalte des virtuellen Verzeichnisses. Wenn Sie für die
Erstellung des virtuellen Verzeichnisses auf diese Angabe verzichten, wird standardmäßig die PassThrough-Authentifizierung verwendet.
password
Das Kennwort, das zusammen mit dem Benutzernamen verwendet werden soll, um auf die Inhalte des
virtuellen Verzeichnisses zuzugreifen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
270 Kapitel 9: Verwalten von Websites
Tabelle 9.5 Appcmd-Syntax zum Konfigurieren eines virtuellen Verzeichnisses (Fortsetzung)
Parameter
Description
logonMethod
Die Anmeldemethode, die zur Erstellung des Anmeldetokens für die Anmeldeinformationen des virtuellen Verzeichnisses verwendet werden soll. Kann Interactive, Batch, Network oder ClearText sein. Der
Vorgabewert ist ClearText. Weitere Informationen zu diesen Typen finden Sie im Artikel »LogonUser
Function« unter http://msdn2.microsoft.com/en-us/library/aa378184.aspx.
allowSubDirConfig
Boolescher der Wert, der angibt, ob der Webserver in den Unterverzeichnissen dieses virtuellen Verzeichnisses nach Konfigurationsdateien suchen wird. Wenn Sie diesen Wert auf false setzen, kann dies
bei Servern mit einer sehr großen Anzahl von web.config-Dateien zu einer besseren Leistung führen.
Gleichzeitig wird jedoch verhindert, dass die IIS-Konfiguration aus Unterverzeichnissen gelesen wird.
Der Vorgabewert ist true.
Um ein bereits vorhandenes virtuelles Verzeichnis zu löschen, müssen Sie den vollständigen virtuellen
Pfad des virtuellen Verzeichnisses wie im folgenden Beispiel angeben:
appcmd delete vdir "Contoso Corp/oldimages"
Stellen Sie sich vor, dass die Rechtsabteilung von Contoso Corp. neue Unternehmensbilder auf ihrem
Server veröffentlicht hat. Um die Zuordnung des virtuellen Verzeichnisses zu ändern und ein benutzerdefiniertes Benutzerkonto namens Webuser anzugeben, über das der Zugriff auf die Remotefreigabe
erfolgen soll, setzen Sie den folgenden Befehl ein:
appcmd set vdir "Contoso Corp/images"
/physicalPath:\\ContosoLegal\pub\images\ /userName:"Webuser"
/password:"passw@rd1"
Die Konfiguration des virtuellen Verzeichnisses ist zusammen mit den Siteinformationen in der
applicationHost.config-Datei und dort im <virtualDirectory>-Element des <site>-Elements definiert.
Nachfolgend ist die Konfiguration aufgeführt, die sich aus der Ausführung des vorherigen Befehls
ergibt:
<site name="Contoso Corp" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\contoso" />
<virtualDirectory path="/images"
physicalPath="\\ContosoLegal\pub\images" userName:"Webuser"
password=
"[enc:AesProvider:oGSyoej3RKswi3gsrYarpbMQrx0rVIY6nFHkPmjQAhE=:enc]"/>
</application>
<application path="/payment" applicationPool="MyAppPool">
<virtualDirectory path="/" physicalPath="d:\KDbank" />
</application>
...
</site>
Beachten Sie, dass die Benutzeranmeldeinformationen für ein virtuelles Verzeichnis standardmäßig in
der applicationHost.config-Datei gespeichert und mithilfe des Microsoft-AES-Kryptografieanbieters
(Advanced Encryption Standard) verschlüsselt werden. Der Anwendungspfad / kennzeichnet die
Stammanwendung der Website und gibt an, dass das virtuelle Verzeichnis /images der Stammanwendung zugeordnet ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Virtuelle Verzeichnisse verwalten
271
Nach virtuellen Verzeichnissen suchen
Wenn Sie Websites mit hunderten von virtuellen Verzeichnissen und Anwendungen verwalten, müssen
Sie bisweilen ein bestimmtes virtuelles Verzeichnis oder eine Gruppe von virtuellen Verzeichnissen
lokalisieren, das bzw. die einer bestimmten Anwendung oder Website zugeordnet ist. IIS 6.0 bietet nur
eingeschränkte Tools und Features an, um bestimmte virtuelle Verzeichnisse aufzuspüren. Bei IIS 7.0
ermöglicht es Ihnen jedoch der IIS-Manager, die für den Webserver definierten virtuellen Verzeichnisse
schnell zu lokalisieren und auflisten zu lassen.
Um mit dem IIS-Manager virtuelle Verzeichnisse zu suchen und aufzulisten, erweitern Sie im Bereich
Verbindungen den Knoten des IIS-Computers sowie den Knoten Sites und markieren die Website, deren
virtuelle Verzeichnisse Sie auflisten lassen möchten. Klicken Sie im Bereich Aktionen auf Virtuelle
Verzeichnisse anzeigen. Das Ergebnis ist in Abbildung 9.5 dargestellt.
Wenn das virtuelle Verzeichnis selbst keine Anwendung und der Stammanwendung der Website
zugeordnet ist, wird es in der Spalte Anwendungspfad als Stammanwendung aufgeführt. Die Spalte
Identität zeigt das Anforderungsbenutzerkonto an, das für den Zugriff auf die Inhalte des virtuellen
Verzeichnisses als Anforderungsidentität verwendet wird.
Hinweis Wenn das Feld Identität keine Daten enthält, wird die Pass-Through-Authentifizierung für den Zugriff auf
die Inhalte verwendet. Bei der anonymen Authentifizierung ist beispielsweise das Konto IUSR die Anforderungsidentität.
Abbildung 9.5 Virtuelle Verzeichnisse mit dem IIS-Manager anzeigen lassen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
272 Kapitel 9: Verwalten von Websites
Benutzen Sie den folgenden Appcmd-Befehl, um die Zuordnungsinformationen für virtuelle
Verzeichnisse anzeigen zu lassen:
appcmd list vdir VirtualDirectoryPath /app.name:string
Die Parameter dieses Befehls sind in Tabelle 9.6 aufgeführt.
Tabelle 9.6 Appcmd-Syntax für die Suche nach virtuellen Verzeichnissen
Parameter
Beschreibung
VirtualDirectoryPath
Eine Zeichenfolge, die den vollständigen virtuellen Pfad des virtuellen Verzeichnisses repräsentiert.
Wird der Wert nicht angegeben, zeigt die Abfrage alle virtuellen Verzeichnisse des Webservers an.
Diese Zeichenfolge kann auch ein URL sein. In diesem Fall wird der URL in das nächstgelegene
virtuelle Verzeichnis aufgelöst.
app.name
Der virtuelle Anwendungspfad. Wenn der Wert angegeben wird, werden alle virtuellen Verzeichnisse
zurückgegeben, die der Anwendung zugeordnet sind.
Der folgende Befehl fragt die Konfigurationsdetails zum virtuellen Verzeichnis /images ab:
appcmd list vdir "Contoso Corp/images"
Wie die resultierende Ausgabe zeigt, ist das virtuelle Verzeichnis einer UNC-Freigabe zugeordnet:
VDIR "Contoso Corp/images" (physicalPath:\\ContosoLegal\pub\images)
Um alle virtuellen Verzeichnisse des Webservers aufzulisten, geben Sie den folgenden Befehl ein:
appcmd list vdir
Die resultierende Ausgabe listet alle virtuellen Verzeichnisse auf, wie das folgende Beispiel zeigt:
VDIR
VDIR
VDIR
VDIR
"Contoso Corp/" (physicalPath:d:\contoso)
"Contoso Corp/images" (physicalPath:\\ContosoLegal\pub\images)
"Contoso Corp/payment" (physicalPath:d:\KDbank)
"Fabrikam HR/" (physicalPath:d:\FabrikamHR)
Sie können ebenfalls Filterausdrücke angeben, die auf den Konfigurationseigenschaften der virtuellen
Verzeichnisse basieren (z.B. auf dem Pfad oder Benutzernamen), um alle virtuellen Verzeichnisse
aufzulisten, die diesen Filterausdrücken entsprechen. Zusätzlich können Sie nach virtuellen Verzeichnissen suchen, die einer bestimmten Site zugeordnet sind. Um mehr darüber zu erfahren, wie Appcmd
für die Suche nach Objekten eingesetzt wird, lesen Sie bitte das siebte Kapitel.
Remoteinhalte verwalten
Die Dateien, aus denen eine Webanwendung besteht, werden in der Regel im lokalen Dateisystem des IISServers gespeichert. Obwohl dies durchaus sinnvoll ist, wenn Sie mit nur wenigen Webanwendungen
arbeiten, ist es in einer großen oder komplexen Umgebung – z.B. bei einem Hostingsunternehmen, das
über viele Server verteilte Webfarmen mit tausenden von Websites unterhält, oder bei einer komplexen
Anwendung, die aus vielen kleinen Anwendungen besteht, die wiederum auf viele verschiedene Server
verteilt sind, welche von verschiedenen Parteien verwaltet werden – fast unmöglich, die Anwendungsinhalte lokal zu hosten.
Für einige Szenarien benötigen Sie möglicherweise mehr als nur einen Webserver, um eine Webanwendung bereitzustellen, die ein hohes Datenverkehrsaufkommen aufweist. Obwohl es natürlich möglich
ist, dieselben Inhalte auf viele Webserver zu kopieren, damit diese dieselbe Anwendung bereitstellen,
führt dies zu einem zusätzlichen administrativen Aufwand, weil Sie sicherstellen müssen, dass die
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Remoteinhalte verwalten
273
Inhalte auf allen Servern synchronisiert werden. Darüber hinaus könnten durch die Replikation Probleme verursacht werden, die sich möglicherweise auf die Verfügbarkeit der Anwendung und die Intaktheit der Inhalte auswirken würden. Noch wichtiger ist, dass die Verwaltung von Inhalten über verschiedene Server hinweg zu einem zusätzlichen Aufwand führt, da auch die Benutzerzugriffskonten
sowie die Zugriffsberechtigungen für die Inhaltsdateien verwaltet werden müssen. All dies steigert die
Komplexität der gesamten Bereitstellung. Das lokale Speichern von Inhalten mag zu einer Leistungssteigerung führen, weist aber hinsichtlich der Skalierung Ihrer Anwendung viele Nachteile auf.
Um diese Probleme zu umgehen, können Sie mit IIS 7.0 Webanwendungen hosten, deren Inhalt sich in
einem freigegebenen Netzwerkordner befindet. Mehrere Webserver können dann eine Verbindung zu
den Inhalten herstellen, die sich auf dem entsprechenden Dateiserver befinden. Obwohl dies oft dazu
führt, dass der mit dem Zugriff auf die Inhalte einhergehende Overhead zunimmt, gibt es wichtige
Vorteile, die für die Einrichtung eines zentralisierten Remotespeichers für Inhalte sprechen. Einige
dieser Vorteile sind nachfolgend aufgeführt:
Geringerer Verwaltungsaufwand Anstatt auf vielen Webservern die Dateisystemsicherheit
einzurichten, verwalten Sie den Zugriff auf das Dateisystem nur dort, wo sich der zentralisierte
Inhaltsspeicher befindet. Auf diese Weise werden die Verwaltungsaufgaben verringert, die sich auf
die Benutzerkonten und den Inhalt beziehen. Diese Aufgaben müssen bei einem lokalen Hosting
der Inhalte nur noch für den zentralisierten Inhaltsspeicher und nicht für viele verschiedene Server
ausgeführt werden.
Bessere Fehlertoleranz Um die Verfügbarkeit von Inhalten zu verbessern, können diese von
Microsoft Cluster, DFS (Distributed File System) oder sogar von SAN- (Storage Area Network)
bzw. NAS-Geräten (Network Attached Storage) gehostet werden.
Bessere Kosteneffizienz Bei einem Vergleich der Fehlertoleranzsysteme aller Webserver, z.B.
RAID (Redundant Array of Inexpensive Disks). Wird die Fehlertoleranz nur für den zentralisierten
Inhaltsspeicher implementiert, ist dies kostengünstiger und die Arbeit mit Dateifreigabe-Clustern
erfordert seltener eine Hardwarewartung, als der Einsatz eines RAID-Systems in jedem Server einer
Webfarm.
Dieser Abschnitt beschreibt die Schlüsselkonzepte für den Zugriff auf Remoteinhalte, die zum Einrichten vom Remoteinhalten erforderlichen Schritte, Sicherheitsüberlegungen zum Zugriff auf Remoteinhalte und die Konfiguration von Remoteinhalten. Diese Konzepte beziehen sich in der Regel auf die
Verwaltung von Remoteinhalten in verschiedenen Umgebungen, z.B. bei Dateifreigabe-Clustern und
NAS-Geräten.
Anwendungen für die Arbeit mit Remoteinhalten konfigurieren
Wenn Sie virtuelle Verzeichnisse verwenden, um eine Zuordnung zu Remoteinhalten zu erhalten,
werden diese, in einem Remotenetzwerkpfad befindlichen Inhalte zu einem Teil des AnwendungsURL-Namespace oder der gesamten Anwendung.
Um eine Anwendung für die Arbeit mit Remoteinhalten zu konfigurieren, müssen Sie Folgendes tun:
1. Setzen Sie den physikalischen Pfad des virtuellen Stammverzeichnisses der Website oder Webanwendung auf den Netzwerkpfad, der die Inhalte zur Verfügung stellt. Wenn Sie nur einen Teil
der Anwendung für die Arbeit mit Remoteinhalten zuordnen möchten, können Sie einfach innerhalb dieser bereits vorhandenen Anwendung ein virtuelles Verzeichnis mit dem gewünschten Pfad
erstellen. Das Erstellen von virtuellen Verzeichnissen ist früher in diesem Kapitel im Abschnitt
»Ein neues virtuelles Verzeichnis hinzufügen« ausführlich beschrieben.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
274 Kapitel 9: Verwalten von Websites
2. Wählen Sie das gewünschte Sicherheitsmodell für den Zugriff auf die Netzwerkinhalte. Sie können
entweder die aktuellen Anmeldeinformationen in Verbindung mit der Pass-Through-Authentifizierung verwenden oder einen festen Benutzer angeben, dessen Anmeldeinformationen für den
Zugriff genutzt werden sollen.
3. Erstellen Sie die Dateifreigabe, die die Remoteinhalte auf dem Netzwerkserver hostet, und gewähren Sie dieser Dateifreigabe die erforderlichen Rechte.
Das Sicherheitsmodell für den Zugriff auf Remoteinhalte auswählen
Um das richtige Sicherheitsmodell auszuwählen, sollten Sie berücksichtigen, wie der Webserver auf die
Remoteinhalte zugreift. Die folgenden Zugriffe sind notwendig:
Die web.config-Dateien in der Verzeichnisstruktur der Remoteinhalte – damit die delegierte
Konfiguration von Remoteinhalten korrekt durchgeführt werden kann, versucht IIS 7.0, die
web.config-Konfigurationsdateien aller Remoteinhaltsverzeichnisse zu lokalisieren und zu lesen.
IIS greift immer zuerst auf eine Konfigurationsdatei zu, bevor der Zugriff auf die Inhalte erfolgt und
der authentifizierte Benutzer bekannt ist. Deshalb müssen entweder feste Anmeldeinformationen
für die virtuellen Verzeichnisse festgelegt werden oder die IIS-Arbeitsprozessidentität muss über
das Recht verfügen, auf die Remoteinhaltsfreigabe zuzugreifen, um die Inhalte zu lesen.
Die Inhalte – IIS-Features, wie z.B. der Handler für statische Dateien, und Anwendungsframeworks
greifen ebenfalls auf die Inhaltsdateien der Remoteinhaltsfreigabe zu. Wenn für das virtuelle Verzeichnis feste Anmeldeinformationen festgelegt wurden, werden diese genutzt. Andernfalls wird
die Identität des gegenwärtig authentifizierten Benutzers verwendet, um auf diese Dateien zuzugreifen. Wenn die anonyme Authentifizierung aktiviert ist, kommt für diesen Zugriff die anonyme
Benutzeridentität zum Zuge.
Hinweis Die meisten IIS 7.0-Module und Anwendungsframeworks verwenden für den Zugriff auf Inhalte die
festen Anmeldeinformationen eines virtuellen Verzeichnisses oder die Identität des authentifizierten Benutzers. In
bestimmten Fällen kann es jedoch sein, dass die IIS-Arbeitsprozessidentität eingesetzt wird. Diese muss dann auf
die entsprechenden Inhalte zugreifen können. Bei ASP.NET ist dies standardmäßig so. Andere Anwendungsframeworks müssen Sie möglicherweise zunächst konfigurieren, damit die richtige Identität verwendet wird. Lesen Sie
das elfte Kapitel, »Hosting von Anwendungsentwicklungsframeworks«, um genaue Informationen über die Ausführungsidentität von bekannten Anwendungsframeworks zu erhalten.
In der Regel können Sie zwei verschiedene Sicherheitsmodelle für die Konfiguration des Zugriffs auf
die Remoteinhaltsfreigabe verwenden:
Pass-Through-Authentifizierung Bei diesem Modell greift der Webserver unter Verwendung der
IIS-Arbeitsprozessidentität und der Identität des mit der Anforderung verknüpften authentifizierten
Benutzers auf die Remoteinhalte zu. Dies ist das Standardmodell.
Feste Anmeldeinformationen Bei diesem Modell verwendet der Webserver immer die für ein
virtuelles Verzeichnis konfigurierten festen Anmeldeinformationen, um auf die Remoteinhalte
zuzugreifen.
Diese Optionen gleichen denen, die von IIS 6.0 angeboten werden. Die Notwendigkeit, auf web.configDateien zugreifen zu müssen, erschwert jedoch die Konfiguration des Remoteinhaltszugriffs unter Verwendung der Pass-Through-Authentifizierung, da der authentifizierte Benutzer nicht verfügbar ist,
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Remoteinhalte verwalten
275
wenn der Webserver web.config-Dateien lesen muss. Deshalb ist es notwendig, dass die IIS-Arbeitsprozessidentität auf die Remoteinhaltsfreigabe zugreifen kann. Andernfalls müssen feste Anmeldeinformationen verwendet werden.
Hinweis Es ist möglich, die Verwendung von web.config-Dateien im virtuellen Verzeichnis zu deaktivieren. Dazu
setzen Sie in der Definition des virtuellen Verzeichnisses das allowSubDirConfig-Attribut auf false. Eine verteilte
Konfiguration mithilfe von web.config-Dateien innerhalb dieses virtuellen Verzeichnisses ist dann nicht mehr möglich. Die Pass-Through-Authentifizierung kann jedoch in diesem Fall genutzt werden. Weitere Informationen erhalten Sie im vierzehnten Kapitel.
Darüber hinaus weisen verschiedene Anwendungsframeworks jeweils andere Verhaltensweisen auf,
wenn das Pass-Through-Authentifizierungsmodell genutzt wird. Einige Anwendungsframeworks, wie
z.B. ASP.NET, verwenden die IIS-Arbeitsprozessidentität. Andere, z.B. ASP, arbeiten immer mit der
Identität des authentifizierten Benutzers. Der Einsatz der Pass-Through-Authentifizierung erschwert
die Verwaltung des Zugriffs auf die Remoteinhalte. Deshalb wird meistens das Modell mit den festen
Anmeldeinformationen empfohlen, um unter IIS 7.0 den Zugriff auf Remoteinhalte einzurichten.
Das Modell mit den festen Anmeldeinformationen ist einfacher zu handhaben, da es vom Authentifizierungsmechanismus des Webservers nicht abhängig ist und nicht alle Benutzer des Webservers über
Zugriffsrechte für die Remoteinhaltsfreigabe verfügen müssen. Es verlangt außerdem keine Konfiguration der Delegierung und des Protokollübergangs, was bei vielen IIS 7.0-Authentifizierungsmechanismen notwendig ist, wenn die authentifizierte Identität für den Zugriff auf die Remotenetzwerkfreigabe verwendet werden soll. Das Modell mit den festen Anmeldeinformationen ist somit innerhalb
einer Netzwerkumgebung wesentlich einfacher zu konfigurieren und zu verwalten.
Da es jedoch nicht die Identität des authentifizierten Benutzers für den Zugriff auf die Remoteinhalte
verwendet, können für diese keine ACLs für die Autorisierung und Überwachung genutzt werden.
Hinweis Das Modell mit den festen Anmeldeinformationen lässt nicht zu, dass NTFS-ACLs (NTFS File System) für
die Überwachung und Autorisierung von authentifizierten Benutzern verwendet werden. IIS 7.0 bietet das URLAutorisierungsfeature an, mit dem innerhalb der Konfiguration deklarative Autorisierungsregeln definiert werden
können, die auf den authentifizierten Benutzer angewendet werden. Darüber hinaus ist es nun möglich, benutzerdefinierte Autorisierungslösungen mithilfe von IIS 7.0-Modulen schnell zu implementieren. Ähnlich hierzu kann eine
Überwachung erfolgen, indem die Anforderungsprotokolle untersucht oder ein benutzerdefiniertes IIS 7.0-Überwachungsmodul entwickelt wird. Weitere Informationen zur Verwendung von benutzerdefinierten IIS 7.0-Modulen
finden Sie im zwölften Kapitel, »Verwalten von Webservermodulen«.
Sie können die Pass-Through-Authentifizierung anstelle der festen Anmeldeinformationen verwenden,
wenn:
Sie aus Gründen der Autorisierung oder Überwachung mit der Identität des authentifizierten Benutzers auf die Remoteinhalte zugreifen müssen, und Sie das URL-Autorisierungsfeature von IIS und
die benutzerdefinierte Autorisierung bzw. die protokollbasierte oder benutzerdefinierte Überwachung über IIS 7.0-Module nicht nutzen können.
sich Ihr Webserver und Ihr Dateiserver in einer Domänenumgebung befinden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
276 Kapitel 9: Verwalten von Websites
Sie einen Authentifizierungsmechanismus verwenden, der das Delegieren von authentifizierten
Benutzeridentitäten (Standardauthentifizierung, auf Kerberos basierende Windows-Authentifizierung) an die Remotenetzwerkfreigabe ermöglicht, oder wenn Sie eine eingeschränkte Delegierung und den Protokollübergang konfiguriert haben, um die Delegierung für andere Authentifizierungsmechanismen zu ermöglichen.
Sie keine anonyme Authentifizierung nutzen oder diese so konfiguriert haben, dass sie eine benutzerdefinierte Identität für den Zugriff auf die Netzwerkfreigabe verwendet.
Sie die Verwendung von verteilten web.config-Konfigurationsdateien innerhalb des virtuellen
Verzeichnisses deaktiviert haben oder die Anwendungspoolidentität ein Domänenkonto, das auf die
Netzwerkfreigabe zugreifen kann, zum Lesen von web.config-Konfigurationsdateien verwendet.
Um mehr über die Konfiguration des Zugriffs auf Serverressourcen zu erfahren, lesen Sie bitte das
vierzehnte Kapitel, in dem auch erklärt wird, wie Sie mit dem Pass-Through-Authentifizierungsmodell
arbeiten, um den Zugriff auf Remoteinhalte zu konfigurieren.
Feste Anmeldeinformationen für den Zugriff
auf Remoteinhalte konfigurieren
Um feste Anmeldeinformationen für die Konfiguration des Zugriffs auf Remoteinhalte zu verwenden,
müssen Sie für das virtuelle Verzeichnis, das auf die Remotefreigabe verweist, den Benutzernamen und
das Kennwort festlegen. Dieser Benutzername und dieses Kennwort müssen einem gültigen lokalen
Konto des Dateiservers oder einem Domänenkonto entsprechen, das auf die mit dem virtuellen Verzeichnis verknüpfte Netzwerkfreigabe zugreifen kann, um Inhalte daraus zu lesen.
Sie können dies im IIS-Manager tun, wenn Sie eine neue Website oder Anwendung bzw. ein neues
virtuelles Verzeichnis erstellen oder wenn Sie ein bereits vorhandenes virtuelles Verzeichnis bearbeiten.
Sie können dies ebenfalls mithilfe des Befehlszeilentools Appcmd tun, indem Sie ein neues virtuelles
Verzeichnis erstellen oder ein bereits vorhandenes virtuelles Verzeichnis bearbeiten.
Hinweis Im Gegensatz zu IIS 6.0, das mit den Metabasiseigenschaften UNCUserName und UNCPassword arbeitet,
verwendet IIS immer die Anmeldeinformationen für das virtuelle Verzeichnis (sofern angegeben), um auf die darin
enthaltenen Inhalte und Konfigurationsdateien zuzugreifen, und zwar unabhängig davon, ob der physikalische Speicherort des virtuellen Verzeichnisses lokal oder eine Remotenetzwerkfreigabe ist. Dies bedeutet, dass Sie feste
Zugriffsanmeldeinformationen für jedes virtuelle Verzeichnis festlegen können. Dabei spielt es keine Rolle, ob das
Verzeichnis auf einen lokalen Pfad oder einen nicht lokalen UNC-Pfad verweist.
Um mehr über die Konfiguration fester Anmeldeinformationen für virtuelle Verzeichnisse zu erfahren,
lesen Sie früher in diesem Kapitel den Abschnitt »Virtuelle Verzeichnisse verwalten«.
Den Zugriff auf Remoteinhalte gewähren
Nachdem Sie das Sicherheitsmodell für den Zugriff auf die Remoteinhalte ausgewählt und den Webserver so konfiguriert haben, dass er mit diesem Modell arbeitet, müssen Sie den Zugriff auf die Netzwerkfreigabe mit den Remoteinhalten gewähren. Dazu müssen Sie die Netzwerkfreigabe auf dem
Dateiserver erstellen und die erforderlichen Zugriffsrechte sowohl für die Freigabe als auch für die
zugrunde liegenden Dateien im Dateisystem festlegen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Zusammenfassung
277
Um dies zu erreichen, gehen Sie in der Regel wie folgt vor:
1. Erstellen Sie das physikalische Verzeichnis für die Remoteinhalte, auf die später über das virtuelle
Verzeichnis zugegriffen wird.
2. Geben Sie dieses Verzeichnis mit dem gewünschten Freigabenamen frei. Benutzen Sie dazu den
Windows-Explorer.
3. Konfigurieren Sie die Freigabeberechtigungen, damit die von IIS verwendete Identität eine Verbindung zur Freigabe herstellen kann. Die Identität muss mindestens Leserechte und möglicherweise
die Rechte Schreiben bzw. Vollzugriff besitzen, sofern Sie IIS auch für die Veröffentlichung nutzen.
Wenn Sie mit festen Anmeldeinformationen für das virtuelle Verzeichnis arbeiten möchten, ist dies
die Identität, deren Anmeldeinformationen Sie für das virtuelle Verzeichnis verwenden müssen. Die
Identität muss entweder ein lokales Konto des Servers oder ein Domänenkonto sein.
Hinweis Lesen Sie das vierzehnte Kapitel, um weitere Informationen zur Konfiguration der Berechtigungen für
Pass-Through-Authentifizierungsszenarien zu erhalten.
4. Konfigurieren Sie die NTFS-Berechtigungen für das von der Freigabe verwendete Remoteinhaltsverzeichnis. Gehen Sie dazu genauso wie für die Netzwerkfreigabe vor. Behalten Sie die vorhandenen NTFS-Berechtigungen für das Verzeichnis bei, um sicherzustellen, dass Administratoren und
das lokale System auch weiterhin über alle Zugriffsrechte verfügen.
Vorsicht Es wird empfohlen, IIS keine Berechtigungen zu gewähren, die über den Lesezugriff hinausgehen. Wenn
der Webserver angegriffen wird, könnten umfassendere Rechte dazu führen, dass der Angreifer die Kontrolle über
die Remotefreigabe erhält. Vergeben Sie nur dann mehr Rechte, wenn Sie mit IIS Inhalte veröffentlichen, z.B. wenn
Sie mit WebDAV (Web-based Distributed Authoring and Versioning) arbeiten. In allen anderen Fällen sollten Sie ein
separates Konto für die Veröffentlichung von Inhalten im Remoteinhaltsverzeichnis erstellen.
Vorsicht Wenn das von IIS für den Zugriff auf die Remoteinhalte verwendete Konto auf dem Remotenetzwerkserver über administrative Rechte verfügt, kann ein Angreifer im Falle einer Gefährdung die vollständige Kontrolle
über den Dateiserver erlangen. Benutzen Sie auf dem Dateiserver niemals Identitäten mit administrativen Rechten,
um auf die Remoteinhalte zuzugreifen.
Wenn Sie die Berechtigungen für den Zugriff auf die Freigabe sowie die NTFS-Berechtigungen festlegen möchten, sollten Sie darüber nachdenken, nicht mit einzelnen Benutzern, sondern mit einer
Gruppe zu arbeiten, der die zulässigen Identitäten zugeordnet sind. Dies vereinfacht die Verwaltung des
Zugriffs auf die Remoteinhalte. Es ist besonders dann hilfreich, wenn die Pass-Through-Authentifizierung verwendet wird, um einer großen Anzahl von authentifizierten Benutzern den Zugriff zu
gewähren.
Zusammenfassung
In diesem Kapitel haben Sie das Fundament einer IIS 7.0-Website kennen gelernt. Sie haben einen
Blick darauf geworfen, wie der IIS-Manager und das Befehlszeilentool Appcmd verwendet werden,
um Websites zu erstellen und zu verwalten. Wie Sie diese Hilfsmittel benutzen, um andere wichtige
Verwaltungsaufgaben zu lösen, erfahren Sie im sechsten Kapitel, »Verwenden von IIS-Manager«, und
im siebten Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
278 Kapitel 9: Verwalten von Websites
Sie haben ebenfalls erfahren, wie virtuelle Verzeichnisse genutzt werden, um die physikalische Struktur
von Websiteinhalten zu kontrollieren und dafür zu sorgen, dass eine Website Inhalte von einer Remotefreigabe verwendet. Weitere Informationen zum Sichern von Websiteinhalten und zu fortgeschritteneren Szenarien, die sich auf den Inhaltszugriff beziehen und mit der Pass-Through-Authentifizierung und
der eingeschränkten Delegierung arbeiten, finden Sie im vierzehnten Kapitel.
Das nächste Kapitel, Kapitel 10, erläutert, wie Anwendungen und Anwendungspools verwaltet werden,
um einen zuverlässigen und sicheren Betrieb von Websites zu gewährleisten. Sie können ebenfalls das
elfte Kapitel lesen, das weitere Informationen zur Verwendung von IIS 7.0 als Anwendungsserver
bereithält. Dort ist auch das Hosten von Anwendungen unter Verwendung spezifischer Anwendungsframeworks beschrieben. Zu diesen Frameworks zählen beispielsweise ASP, ASP.NET und PHP.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Das vierte Kapitel, »Verstehen des Konfigurationssystems«, enthält Informationen zum neuen auf
XML basierenden Konfigurationssystem und zu wichtigen IIS 7.0-Konfigurationsdateien.
Das sechste Kapitel, »Verwenden von IIS-Manager«, hält Informationen über den Einsatz des IISManagers unter IIS 7.0 bereit.
Das siebte Kapitel, »Verwenden von Befehlszeilentools«, beschreibt die Arbeit mit dem Befehlszeilenhilfsmittel Appcmd unter IIS 7.0.
Das zehnte Kapitel, »Verwalten von Anwendungen und Anwendungspools«, informiert über die
Ver-waltung von Webanwendungen und Anwendungspools unter IIS 7.0.
Das elfte Kapitel, »Hosting von Anwendungsentwicklungsframeworks«, hält Informationen zur
Arbeit mit Anwendungsframeworks unter IIS 7.0 bereit.
Das zwölfte Kapitel, »Verwalten von Webservermodulen«, enthält Informationen zur Konfiguration
und Verwaltung systemeigener und verwalteter IIS 7.0-Module.
Das vierzehnte Kapitel, »Implementieren von Sicherheitsstrategien«, beschreibt die Bereitstellung
von SSL-Zertifikaten für Websites sowie verschiedene IIS 7.0-Sicherheitskonfigurationen.
Das fünfzehnte Kapitel, »Protokollierung«, informiert über die verschiedenen Protokollierungsverfahren, die von IIS 7.0 unterstützt werden.
Das sechzehnte Kapitel, »Ablaufverfolgung und Problembehandlung«, enthält Informationen zur
Aktivierung der Ablaufverfolgung für Anforderungsfehler sowie zu den Problembehandlungsmöglichkeiten von IIS 7.0.
Mike Volodarskys Blog mit dem Titel »Creating IIS 7 Sites, Applications and Virtual Directories«
beschäftigt sich mit den neuen Objektdefinitionen in IIS 7.0. Sie finden das Blog unter http://
mvolo.com/blogs/serverside/archive/2007/07/12/Creating-IIS7-sites_2C00_-applications_2C00_
-and-virtual-directories.aspx.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
279
K A P I T E L
1 0
Verwalten von Anwendungen und
Anwendungspools
Inhalt dieses Kapitels:
Webanwendungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungspools verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeitsprozesse und Anforderungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf der Begleit-CD
279
287
302
306
307
Auf der CD finden Sie weitere Tools und Ressourcen.
Im neunten Kapitel, »Verwalten von Websites«, haben Sie die grundlegende Websitestruktur kennen
gelernt und die Beziehungen zwischen den IIS-Schlüsselobjekten (Internet Information Services)
untersucht, zu denen die Objekte für Anwendungen, virtuelle Verzeichnisse und Anwendungspools
zählen.
In diesem Kapitel werden Sie sich eingehend mit der Verwaltung von IIS-Anwendungen und der Erstellung und Verwaltung von Anwendungspools beschäftigen, damit Sie Ihre IIS-Anwendungen voneinander
isolieren können, was aus Gründen der Betriebssicherheit und der Sicherheit im Allgemeinen geschieht.
Darüber hinaus werden die neuen Möglichkeiten zur Überwachung der Arbeit von Anwendungen und
Anwendungspools vorgestellt.
Webanwendungen verwalten
Eine Webanwendung ist ein Container, der aus der Perspektive der Laufzeitausführung betrachtet die
Möglichkeit bietet, einen Teil des URL-Namespace einer Website abzusondern, wodurch die Ausführung der Containerinhalte potentiell von anderen Anwendungen isoliert und/oder der Laufzeitstatus
(abhängig von der Anwendungsframeworktechnologie) von verschiedenen URLs der Anwendung
gemeinsam genutzt werden kann. Ein Beispiel hierfür ist die Zuweisung eines Anwendungspools zu
einer bestimmten Anwendung, wodurch diese durch eine Prozessgrenze von anderen Anwendungen
isoliert wird. Die Anwendung ist außerdem die Ebene, auf der ASP.NET-Anwendungsdomänen und
ASP-Anwendungen erstellt werden.
Bei IIS 7.0 muss jede Website eine Stammanwendung enthalten. Die Inhalte unterhalb dieses Stammpfades gehören ebenfalls zur Anwendung, aber nur bis zur nächsten Anwendung im selben Pfad. Das
Webanwendungsobjekt von IIS 7.0 weist deutliche Unterschiede zu einem virtuellen Verzeichnis auf,
da es einen eindeutigen virtuellen Pfad für jede Anwendung bildet, der Teil des URL-Namespace der
Website ist. Jede Anwendung enthält mindestens ein virtuelles Verzeichnis, das als virtuelles Stamm-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
280 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
verzeichnis bezeichnet wird und das den Stamm des Anwendungs-URL-Namespace dem physikalischen Stammverzeichnis der Anwendung zuordnet. Andererseits sind nicht alle virtuelle Verzeichnisse
als Anwendungsstamm definiert, weil sie einfach keine Anwendungsstartpunkte, sondern anderen
Anwendungen zugeordnet sind.
Webanwendungen erstellen
Bevor Sie dem Webserver eine neue Anwendung hinzufügen, sollten Sie darüber nachdenken, ob die
Funktionalität innerhalb einer bereits vorhandenen Anwendung gehostet werden kann oder ob hierfür
eine separate Anwendung notwendig ist. In der Regel erstellen Sie eine Anwendung unter einer der
folgenden Bedingungen:
Sie müssen Ihre Inhalte oder die Funktionalität in einem gesonderten Anwendungspool hosten, um
sie aus Gründen der Ausfallsicherheit und der Sicherheit im Allgemeinen vom Rest der Website zu
isolieren.
Sie müssen Ihre Inhalte oder die Funktionalität in einem gesonderten Anwendungspool hosten, um
den integrierten .NET-Modus konfigurieren zu können. Sie erstellen außerdem eine Anwendung,
wenn die .NET Framework-Version oder die Bitness verglichen mit der übergeordneten Anwendung Unterschiede aufweist.
Sie benötigen eine separate ASP- oder ASP.NET-Anwendung.
Sie müssen den für Ihre Inhalte oder Funktionalität aktivierten IIS-Modulsatz erweitern, verringern
oder modifizieren.
Stellen Sie sich beispielsweise vor, dass Sie neue Inhalte hinzufügen (z.B. Bilddateien), die keine eigene
ASP.NET-Anwendungsdomäne erfordern und nicht in einem gesonderten Anwendungspool verwahrt
werden müssen. Das entsprechende virtuelle Verzeichnis images sollte dann nicht als Webanwendung,
sondern als normales virtuelles Verzeichnis konfiguriert werden, das den URL dem Verzeichnis zuordnet,
das die Bilddateien enthält. Wenn Sie andererseits in einem Webportalsystem mit Einkaufswagenfunktionalität eine neue Zahlungsmethode anbieten möchten (z.B. für die Zahlung mit Kreditkarten) und Sie
mit Drittanbieterkomponenten oder alten Komponenten arbeiten, die eine benutzerdefinierte Anpassung
des Anwendungspools verlangen, dann sollten Sie eine neue Anwendung erstellen, die von einem gesonderten Anwendungspool gehostet wird. Die Anwendungsisolation hilft Ihnen, eine bessere Verfügbarkeit
zu erzielen, da eine in einem eigenen Anwendungspool gehostete Anwendung von verschiedenen Arbeitsprozessen bedient wird. Sollte dann die neue Zahlungsmethodenanwendung Probleme verursachen, hätte
dies keine Auswirkungen auf die Shopping-Webportalhautpanwendung.
Sie können Anwendungen für jeden beliebigen URL in Ihrer Website erstellen. Wenn Sie bei IIS 7.0 mit
dem IIS-Manager eine neue Website hinzufügen, erzeugt das Tool automatisch eine Stammanwendung.
Der IIS-Manager generiert außerdem standardmäßig einen neuen Anwendungspool und verknüpft
diesen mit der Stammanwendung der Website. Mit dem IIS-Manager können Sie eine neue Webanwendung erzeugen, indem Sie entweder eine neue Anwendung direkt hinzufügen oder ein bereits vorhandenes virtuelles Verzeichnis in eine Anwendung konvertieren. (Sie können auch später noch eine neue
Anwendung für eine bereits vorhandene Website erstellen, selbst wenn es dort kein virtuelles Verzeichnis gibt.) Unabhängig davon, für welche Möglichkeit Sie sich entscheiden, sollten Sie wissen, wie die
Anwendung mit anderen Anwendungen interagiert und in welchem Anwendungspool die Webanwendung zu finden ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webanwendungen verwalten
281
Wichtig Aus Sicherheitsgründen wird empfohlen, dass Sie sich an Ihrem Computer unter Verwendung eines
Kontos anmelden, das über keine Administratorrechte verfügt. Dann benutzen Sie den runas-Befehl, um den
IIS-Manager unter der Identität des Administrators ausführen zu lassen. Nehmen Sie an der Eingabeaufforderung
beispielsweise die folgende Eingabe vor:
runas /user:<admin_konto> "%windir%\system32\inetsrv\inetmgr.exe"
Um mit dem IIS-Manager eine neue Webanwendung zu erstellen, erweitern Sie im Hierarchielistenfeld
des Bereichs Verbindungen den Knoten des IIS-Computers und dann den Knoten Sites. Klicken Sie mit
der rechten Maustaste auf die Website, in der Sie eine Anwendung erstellen möchten, und wählen Sie
Anwendung hinzufügen aus. Das Ergebnis ist in Abbildung 10.1 zu sehen.
Abbildung 10.1 Mit dem IIS-Manager eine neue Webanwendung erstellen
Der IIS-Manager generiert für die Anwendung automatisch ein virtuelles Stammverzeichnis. Dazu
verwendet er den physikalischen Pfad, den Sie während der Anwendungserstellung angegeben haben.
Sie können ebenfalls die Anmeldeinformationen konfigurieren, die für den Zugriff auf die Inhalte im
Anwendungsstamm verwendet werden sollen, indem Sie die in Abbildung 10.1 dargestellte Option
Verbinden als nutzen. Weitere Informationen zur Erstellung virtueller Verzeichnisse und zum Einstellen
der Zugriffsanmeldeinformationen erhalten Sie im neunten Kapitel.
Um ein bereits vorhandenes physikalisches oder virtuelles Verzeichnis in einer Anwendung zu konvertieren, erweitern Sie im Hierarchielistenfeld des Bereichs Verbindungen den Knoten des IIS-Computers
und dann den Knoten Sites. Klicken Sie mit der rechten Maustaste auf das gewünschte Verzeichnis bzw.
virtuelle Verzeichnis der Website und wählen Sie In Anwendung konvertieren aus, wie in Abbildung
10.2 dargestellt.
Daraufhin wird für diesen virtuellen Pfad automatisch eine Anwendung erzeugt und der entsprechende
physikalische Pfad wird als virtuelles Stammverzeichnis der Anwendung eingerichtet. Ein bereits vorhandenes virtuelles Verzeichnis wird, sofern vorhanden, gelöscht und seine Einstellungen werden auf
das neue virtuelle Stammverzeichnis der Anwendung übertragen.
Sie können die folgende Appcmd-Syntax benutzen, um eine neue Webanwendung hinzuzufügen:
appcmd add app /site.name:string
/path:string /physicalPath:string /applicationPool:string
/enabledProtocols:string
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
282 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Abbildung 10.2 Ein bereits vorhandenes physikalisches oder virtuelles Verzeichnis mit dem IIS-Manager
in einen neuen Anwendungsstamm konvertieren
Tabelle 10.1 beschreibt die Parameter dieser Syntax.
Tabelle 10.1 Appcmd-Syntax zum Hinzufügen einer Webanwendung
Parameter
Beschreibung
site.name
Der Name der Website, der die Anwendung hinzugefügt wird. Dieser Parameter muss angegeben werden.
path
Der virtuelle Pfad der Anwendung. Die Pfadangabe muss mit / beginnen, z.B. /Stock. Dieser Parameter
muss angegeben werden.
physicalPath
Der physikalische Pfad des virtuellen Stammverzeichnisses der Anwendung. Bei Angabe dieses Wertes
wird ein virtuelles Stammverzeichnis erstellt.
applicationPool
Der Anwendungspool zum Hosten der Anwendung. Wird dieser Wert nicht angegeben, benutzt die
Anwendung den Standardanwendungspool (DefaultAppPool).
enabledProtocols
Eine Liste mit den Namen der Protokolle, die von dieser Anwendung benutzt werden können. Mehrere
Protokolle werden durch Kommata voneinander getrennt angegeben. Der Standard ist HTTP.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webanwendungen verwalten
283
Dieser Befehl kann nicht verwendet werden, um zusätzliche Einstellungen zu dem virtuellen Stammverzeichnis anzugeben, das erzeugt wird, wenn Sie den Parameter physicalPath angeben. Um zusätzliche
Einstellungen festzulegen, zum Beispiel den Benutzernamen und das Kennwort für das virtuelle
Verzeichnis, müssen Sie den Appcmd-Befehl SET VDIR einsetzen, mit dem Sie das virtuelle Stammverzeichnis der Anwendung bearbeiten. Weitere Informationen hierzu finden Sie im neunten Kapitel.
Sie können die folgende Appcmd-Syntax mit den in Tabelle 10.2 beschriebenen Parametern verwenden,
um eine bereits vorhandene Webanwendung zu ändern:
appcmd set app AppName /path:string
/applicationPool:string /enabledProtocols:string
Tabelle 10.2 Appcmd-Syntax zum Ändern einer Webanwendung
Parameter
Beschreibung
AppName
Der virtuelle Pfad der Webanwendung
path
Der virtuelle Pfad der Anwendung. Die Pfadangabe muss mit / beginnen, z.B. /Stock.
applicationPool
Der Anwendungspool zum Hosten der Anwendung
enabledProtocols
Eine Liste mit den Namen der Protokolle, die von dieser Anwendung benutzt werden können. Mehrere
Protokolle werden durch Kommata voneinander getrennt angegeben. Der Standard ist HTTP.
Das folgende Beispiel erzeugt für Fabrikam HR (Human Resources; Personalabteilung) eine neue
Webanwendung namens Stock. Der Anwendungsinhaltspfad wird dem physikalischen Ordner
d:\fabrikamStock zugeordnet.
appcmd add app /site.name:"Fabrikam HR"
/path:/Stock /physicalPath:"d:\fabrikamStock"
Beachten Sie die Befehlsausgabe. Zwei Objekte wurden erzeugt: ein Objekt für die Anwendung und
ein weiteres für das virtuelle Verzeichnis. Da das Beispiel den Parameter /physicalPath angibt, muss die
Webanwendung ein virtuelles Stammverzeichnis enthalten. Wenn somit die neue Anwendung erstellt
wird, wird auch automatisch eine Zuordnung zu einem virtuellen Stammverzeichnis generiert.
Das APP-Objekt "Fabrikam HR/Stock" wurde hinzugefügt.
Das VDIR-Objekt "Fabrikam HR/Stock" wurde hinzugefügt.
Wenn der Parameter /physicalPath nicht angegeben wird, erfolgt lediglich die Erstellung des APP-Objekts,
da Appcmd nicht genügend Informationen besitzt, um das zugehörige virtuelle Verzeichnis zu generieren. Nachfolgend ist ein Beispiel für einen solchen Befehl aufgeführt:
appcmd add app /site.name:"Fabrikam HR" /path:/Benefit
Appcmd ermöglicht diese Verfahrensweise für Szenarien, in denen Sie das virtuelle Verzeichnis erst im
zweiten Schritt erstellen können oder in denen Sie zusätzliche Einstellungen zum virtuellen Verzeichnis
angeben müssen, die vom Befehl ADD APP nicht unterstützt werden. Das Ergebnis ist, dass Sie, wenn Sie
diese Website mit dem IIS-Manager verwalten, eine Fehlermeldung erhalten, die Sie darüber informiert, dass für die Anwendung das entsprechende virtuelle Verzeichnis nicht vorhanden ist. Um diesen
Fehler zu beheben, benutzen Sie Appcmd und fügen der Anwendung ein virtuelles Verzeichnis hinzu.
Hinweis Es ist nicht möglich, unter Verwendung des Appcmd-Befehls SET APP und des Parameters physicalPath ein
virtuelles Stammverzeichnis für eine Anwendung zu erstellen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
284 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Um einen bereits vorhandenen Anwendungsaliasnamen zu ändern (was mit dem IIS-Manager nicht
möglich ist), können Sie den neuen Anwendungsnamen im Parameter /path angeben. Die folgende
Syntax ändert beispielsweise den Anwendungspfad, so dass aus /myImages /images wird:
appcmd set app /app.name:"Fabrikam
HR/myImages" /path:/images
Um ein bereits vorhandenes Verzeichnis in eine Anwendung zu konvertieren, müssen Sie das bereits
vorhandene virtuelle Verzeichnis zunächst löschen. Um dann die neue Anwendung zu erstellen, benutzen
Sie das ADD-Verb zusammen mit dem Parameter /physicalPath. Auf diese Weise wird das neue virtuelle
Stammverzeichnis der Anwendung automatisch generiert und verweist auf den richtigen physikalischen
Pfad. (Oder Sie führen später eine manuelle Erstellung des virtuellen Stammverzeichnisses durch.) Der
folgende Appcmd-Befehl entfernt beispielsweise das virtuelle Verzeichnis Payment aus dem Websitestamm und erzeugt es danach neu, und zwar als Anwendung, die in einem eigenen Anwendungspool
ausgeführt wird:
appcmd delete vdir "Fabrikam HR/Payment"
appcmd add app /site.name:"Fabrikam HR"
/path:/payment /physicalPath:"d:\HRPayment"
/applicationPool: "HR Payment"
Beachten Sie, dass der erste Befehl das virtuelle Verzeichnis aus der Stammanwendung der Website
entfernt. Da es sich hierbei lediglich um ein virtuelles Verzeichnis handelt, das sich in der Stammanwendung befindet, können Sie die DELETE APP-Syntax nicht benutzen, weil diese nur für Anwendungen
zur Verfügung steht. Beim Löschen einer Anwendung löscht IIS nicht die physikalischen Dateisysteminhalte des zugeordneten Pfades. Es löscht lediglich die Zuordnungsbeziehung zwischen dem Anwendungs-URL-Alias und dem physikalischen Ordner.
Vorsicht Entfernen Sie nicht die Stammanwendung einer Website. Das Löschen der Stammanwendung
mit Appcmd würde die Website beenden.
Bevor sie eine neue Webanwendung erstellen oder ein bereits vorhandenes Verzeichnis in eine Anwendung konvertieren, fügte der IIS-Webkern dem <site>-Element der applicationHost.config-Datei ein
neues <application>-Element hinzu. Gleichzeitig definiert ein <virtualDirectory>-Element unter dem
<application>-Element den Anwendungsstammspfad. Nachfolgend ist die <site>-Konfiguration der neu
erstellten Stock-Anwendung in der Website Fabrikam HR zu sehen:
<sites>
...
<site name="Fabrikam HR" id="9">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\fabrikamHR" />
<virtualDirectory path="/images" physicalPath="g:\images" />
</application>
<application path="/Stock">
<virtualDirectory path="/" physicalPath="d:\fabrikamStock" />
</application>
<application path="/payment" applicationPool="HR Payment">
<virtualDirectory path="/" physicalPath="d:\HRPayment" />
</application>
...
</site>
...
</sites>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webanwendungen verwalten
285
Webanwendungen auflisten
IIS 6.0 bietet keine Möglichkeit, um nach einer bestimmten Webanwendung zu suchen und deren Daten
anzeigen zu lassen. Bei IIS 7.0 können Sie sowohl mit dem IIS-Manager als auch mit Appcmd Webanwendungen einfach lokalisieren und abfragen.
Um im IIS-Manager eine Liste der Webanwendungen anzeigen zu lassen, erweitern Sie im Bereich
Verbindungen den Knoten des IIS-Computers und den Knoten Sites und markieren die Website, deren
Webanwendungen angezeigt werden sollen. Klicken Sie im Bereich Aktionen auf Anwendungen anzeigen, um wie in Abbildung 10.3 dargestellt die Liste der Webanwendungen zu erhalten, die Sie sortieren,
filtern und gruppieren können.
Abbildung 10.3 Webanwendungen mit dem IIS-Manager auflisten
Benutzen Sie die folgende Appcmd-Syntax, um eine Abfrage zu starten, die eine Liste von Webanwendungen zurückgibt:
appcmd list app AppPath /site.name:string /apppool.name:string
Tabelle 10.3 beschreibt die Parameter dieser Syntax.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
286 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Tabelle 10.3 Appcmd-Syntax zum Abfragen einer Webanwendungsliste
Parameter
Beschreibung
AppPath
Der Name der Webanwendung. Der Name der Anwendung ist der Websitename kombiniert mit dem virtuellen
Pfad der Anwendung. Wird der Parameter nicht angegeben, zeigt die Abfrage alle Webanwendungen des
Webservers an.
Er kann ebenfalls einen URL angeben. Appcmd zeigt dann die Anwendung an, die diesen URL enthält.
site.name
Der Name der übergeordneten Website. Bei Angabe dieses Parameters werden alle Anwendungen der
angegebenen Website aufgelistet.
apppool.name
Der Name des Anwendungspools. Bei Angabe dieses Parameters werden alle Anwendungen aufgelistet, die
diesem Anwendungspool zugeordnet sind.
Das folgende Beispiel fragt die Konfigurationsdetails der Webanwendung Stock ab:
appcmd list app "Fabrikam HR/Stock"
Wie die folgende Ausgabe zeigt, wird die Stock-Anwendung im Anwendungspool Fabrikam Stock
ausgeführt:
APP ""Fabrikam HR/Stock" (applicationPool:Fabrikam Stock)
Um alle Webanwendungen des Webservers aufzulisten, benutzen Sie den folgenden Befehl:
appcmd list app
Die resultierende Ausgabe listet wie nachfolgend gezeigt alle Webanwendungen auf:
APP
APP
APP
APP
"Contoso Corp/"" (applicationPool:DefaultAppPool)
"Contoso Corp/payment" (applicationPool:MyAppPool)
"Fabrikam HR/" (applicationPool:DefaultAppPool)
"Fabrikam HR/Stock" (applicationPool:Fabrikam Stock)
Um alle mit Fabrikam HR verknüpften Anwendungen anzeigen zu lassen, verwenden Sie den folgenden Befehl:
appcmd list app /site.name:"Fabrikam HR"
Dieses Beispiel fragt das Konfigurationssystem ab und zeigt alle Anwendungsobjekte an, die zur Website Fabrikam HR gehören. Die resultierende Ausgabe präsentiert sich wie folgt:
APP "Fabrikam HR/" (applicationPool:DefaultAppPool)
APP "Fabrikam HR/Stock" (applicationPool:Fabrikam Stock)
Um nach einer Anwendung zu suchen, die von einem bestimmten Anwendungspool gehostet wird,
können Sie den Parameter /apppool.name benutzen. Um beispielsweise alle Anwendungen aufzulisten,
die dem Anwendungspool DefaultAppPool zugeordnet sind, benutzen Sie den folgenden Befehl:
appcmd list app /apppool.name:"DefaultAppPool"
Dies würde zur folgenden Ausgabe führen:
APP "Contoso Corp/" (applicationPool:DefaultAppPool)
APP "Fabrikam HR/" (applicationPool:DefaultAppPool)
Um alle Stammanwendungen aller Websites zu finden, arbeiten Sie mit dem folgenden Befehl:
appcmd list app /path:"/"
Wenn Sie im Befehl /path:"/" angeben, weisen Sie IIS an, nach allen Anwendungen zu suchen, deren
path-Attribut / ist, oder alle Anwendungen des Servers aufzulisten, die Stammanwendungen ihrer
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
287
Websites sind. Sie können zum Filtern der Ausgabe auch jeden anderen Parameter des Anwendungsobjekts benutzen. Um weitere Informationen zur Suche nach Objekten zu erhalten, lesen Sie bitte das
siebte Kapitel, »Verwenden von Befehlszeilentools«.
Anwendungspools verwalten
Anwendungspools erleichtern das Hosten von Webanwendungen – die dieselbe Konfiguration verwenden
– in eigenen IIS-Arbeitsprozessen. Anwendungspools ermöglichen es Ihnen, Anwendungen aus Gründen
der besseren Sicherheit, Zuverlässigkeit und Verfügbarkeit zu isolieren. Der Arbeitsprozess dient als
Prozessgrenze, die die Anwendungspools voneinander trennt, so dass mögliche Probleme eines Arbeitsprozesses oder einer Anwendung keine Auswirkungen auf andere Anwendungen oder Arbeitsprozesse
haben. Stellen Sie sich beispielsweise vor, dass Sie eine alte ASP-Anwendung installieren möchten, die
ältere Komponentenobjekte verwendet. Um die anderen Anwendungen in der Websites zu schützen,
können Sie einen neuen Anwendungspool erstellen und die alte Anwendung in diesem neuen Anwendungspool hosten. In diesem Fall würde sich ein Absturz der alten Anwendung nicht auf die anderen
Anwendungen auswirken, da die alte Anwendung von einem anderen Anwendungspool bereitgestellt wird.
Jeder Anwendungspool kann mit mehreren Arbeitsprozessen arbeiten, die dem Anwendungspool ihre
Dienste zur Verfügung stellen. Jeder Arbeitsprozess kann jedoch immer nur einem Anwendungspool
zugeordnet sein.
Webgärten
Ein Anwendungspool mit mehr als einem Arbeitsprozess wird als Webgarten bezeichnet. Viele
Arbeitsprozesse, die dieselbe Anwendung bedienen, können bisweilen zu einer besseren Durchsatzleistung und Anwendungsreaktionszeit führen. Beachten Sie, dass jeder Arbeitsprozess eines Webgartens eigene Prozessthreads und einen eigenen Arbeitsspeicherbereich besitzt. Wenn die Anwendung mit prozessinternen Sitzungsvariablen arbeitet, wird sie nicht richtig funktionieren, weil
dieselben Benutzeranforderungen von verschiedenen Arbeitsprozessen entgegengenommen werden,
die wiederum nicht mit gemeinsam genutzten Sitzungsdaten arbeiten. ASP.NET-Anwendungen
können dieses Problem umgehen, indem Sie eine prozessexterne Sitzungsverwaltung nutzen, wie
zum Beispiel den Sitzungszustandsdienst oder einen auf SQL Server basierenden Sitzungszustand.
Webgärten sind meistens nicht empfehlenswert, weil sie zu Leistungseinbußen führen können, was
nur in sehr spezifischen Fällen nicht geschieht, z.B. wenn:
Ihre Anwendung synchrone Anforderungen initiiert, die über einen längeren Zeitraum ausgeführt werden und die Parallelität beeinträchtigen.
Ihre Anwendung instabil ist und oft abstürzt, so dass der Einsatz mehrerer Prozesse hilft, die
Verfügbarkeit aufrechtzuerhalten. (In diesem Fall bestünde die beste Lösung natürlich darin, die
Fehler in der Anwendung zu beheben.)
Ihre Anwendung über nicht genügende prozessweite Ressourcen verfügt oder mit prozessweiten
Sperrungen arbeitet, die die Parallelität wesentlich beeinträchtigen.
In den meisten dieser Fälle sollten Sie Ihre Anwendung überarbeiten, so dass sie Anforderungen,
die über einen längeren Zeitraum ausgeführt werden, asynchron ausführt, prozessweite Sperrungen
ausschließt und Abstürze verhindert. Dies ist längerfristig betrachtet eine bessere Lösung als der
Einsatz von Webgärten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
288 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Überlegungen zu Anwendungspools
Wenn IIS 7.0 installiert wird, gibt es standardmäßig zwei vordefinierte Anwendungspools. Wie Tabelle
10.4 zeigt, gibt es zwei Anwendungspools mit unterschiedlichen Arbeitsprozessmodellen. Die Rolle
Webserver (IIS) erzeugt den Anwendungspool DefaultAppPool, der der Standardanwendungspool für
neue Anwendungen ist. Das Setup des Rollendienstes ASP.NET generiert den klassischen .NETAnwendungspool (Classic .NET AppPool), damit ASP.NET-Anwendungen im klassischen ASP.NETIntegrationsmodus ausgeführt werden können. Sie können Anwendungen für die Ausführung in diesen
Standardanwendungspools konfigurieren, aber Sie können auch neue Anwendungspools erstellen.
Tabelle 10.4 Vordefinierte Anwendungspools
Anwendungspool
.NET Framework
Verwalteter Pipelinemodus
Identität
Classic .NET AppPool
Version 2.0
Klassisch
NetworkService
DefaultAppPool
Version 2.0
Integriert
NetworkService
Hinweis Der Anwendungspool Classic .NET AppPool wird während der Installation von ASP.NET 2.0 erstellt. Die
Installation des .NET Framework 1.1 ruft das Tool aspnet_regiis.exe auf, um ASP.NET 1.1 zu installieren. Dabei wird
der ASP.NET 1.1-Anwendungspool erzeugt.
Keiner der beiden Anwendungspools wird bei der Installation von IIS 7.0 standardmäßig erstellt. Weitere Informationen darüber, wie diese Anwendungspools verwendet werden, um die ASP.NET-Versionen von ASP.NETAnwendungen zu verwalten, finden Sie im elften Kapitel, »Hosting von Anwendungsentwicklungsframeworks«.
Bevor Sie einen neuen Anwendungspool erstellen, sollten Sie – aus verschiedenen Blickwinkeln betrachtet – darüber nachdenken, ob ein solcher Anwendungspool notwendig ist. Da jeder Anwendungspool die
Dienste von mindestens einem dedizierten Arbeitsprozess beansprucht, nimmt mit der Zahl der Anwendungspools auch die Zahl der Arbeitsprozesse zu, die im System ausgeführt werden, um auf dem Server
die Anforderungen zu verarbeiten, die sich auf die jeweiligen Anwendungen beziehen. Dies kann die
Systemleistung insgesamt beeinträchtigen, weil jeder Arbeitsprozess Systemressourcen verbraucht, wie
z.B. Prozessorzeit und Arbeitsspeicher. Dennoch führt der Einsatz von separaten Anwendungspools für
verschiedene Anwendungen bei den meisten Administratoren niemals zu irgendwelchen Problemen.
Hinweis Aus Gründen der Ausfallsicherheit sollten Sie immer versuchen, für jede Anwendung (und Website) einen
eigenen Anwendungspool zu verwenden. Dies ermöglicht es Ihnen eventuell, die Vorteile zu nutzen, die mit dem
Prinzip der Vergabe von geringstmöglichen Rechten einhergehen. Dabei gewähren Sie jeder Anwendungspoolidentität die geringstmöglichen Rechte, was dazu beiträgt, dass die Anwendungen voneinander isoliert werden. Lesen
Sie das vierzehnte Kapitel, »Implementieren von Sicherheitsstrategien«, um Techniken für die Anwendungspoolisolation kennenzulernen.
Wenn Sie mit tausenden von Pools arbeiten oder Ihre Leistungsdaten zeigen, dass die Konfiguration
mehrerer Pools zu Leistungseinbußen führt, sollten Sie den Einschub »Kapazitätsanalyse für eine große
Anzahl von Anwendungspools« lesen. Microsoft empfiehlt selbst für Shared Hostingserver eine Isolation, bei der jede Site einen eigenen Pool erhält, weil IIS 7.0 in diesem Fall eine bessere Sitedichte
bietet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
289
Kapazitätsanalyse für eine große Anzahl von Anwendungspools
Es gibt keine feste Formel, um die maximale Anzahl von Arbeitsprozessen zu ermitteln, die auf einem
Server ausgeführt werden können. Wie beim Ermitteln der maximalen Anzahl von Websites, die unter
IIS 7.0 gehostet werden können, müssen Sie für viele gleichzeitig ausgeführte Arbeitsprozesse Kapazitätsanalysen durchführen, um die Gesamtleistung des Systems zu bewerten. Die Analyse sollte darin
bestehen, einen Blick auf den Speicherverbrauch der Anwendung bei hoher Auslastung, die Auswirkungen der Wiederverwendung, die Anzahl gleichzeitiger Anforderungen pro Anwendung usw. zu
werfen. Auf die Leistung bezogene Auslastungstests helfen bei dieser Analyse. Sie können Microsoft
Visual Studio Team Edition sowie das Webkapazitätsanalysetool (Web Capacity Analysis Tool, WCAT)
benutzen, wenn Sie Unterstützung bei diesen Auswertungen benötigen. Als Webadministrator müssen
Sie einschätzen, wie wichtig dedizierte Anwendungspools sind. Danach müssen Sie für Ihren Webserver die richtige Balance zwischen Anwendungsisolation und Durchsatzleistung finden. Weitere
Informationen zu WCAT erhalten Sie unter http://www.iis.net/downloads/default.aspx?tabid=34&g=
6&i=1466.
Berücksichtigen Sie die folgenden Faktoren, bevor Sie neue Anwendungspools erstellen:
Sicherheit Sie können einen neuen Anwendungspool erstellen und eine benutzerdefinierte
Anwendungspoolidentität mit Zugriffsrechten konfigurieren, wenn eine Anwendung für bestimmte
Ressourcen einen benutzerdefinierten Zugriff verlangt. Eine benutzerdefinierte Anwendung, die die
Systemkonfiguration aktualisiert, ist ein Beispiel für solch eine Situation. Ein weiteres Beispiel sind
Anwendungen, die zwei verschiedenen Kunden zugeordnet sind, und jeder Kunde darf nur auf die
für ihn bestimmten Inhalte zugreifen. Kapitel 14 beschäftigt sich ausführlich mit diesen Themen.
Ausfallsicherheit Sie können einen neuen Anwendungspool erstellen, um instabile oder neue
Anwendungen zu isolieren. Sie können beispielsweise eine Anwendung isolieren, die mit alten
Komponenten arbeitet und gelegentlich abstürzt, oder Sie sondern neue, zu integrierende Anwendungen ab, die sich noch in der Testphase befinden. Das Isolieren solcher Anwendungen verbessert
die Ausfallsicherheit der anderen Anwendungen, da sich Fehler, die bei veralteten oder Testanwendungen auftreten, nicht auf die anderen Anwendungen auswirken werden.
Anpassung Sie können einen neuen Anwendungspool erstellen, wenn eine Anwendung andere
Anwendungspooleinstellungen erfordert. Solch eine Situation entsteht, wenn Sie mit einer alten
Anwendung arbeiten, die unter Verwendung des klassischen Prozessmodells ausgeführt werden
muss, während andere Anwendungen im integrierten Modus laufen. (Der integrierte Modus wird im
elften Kapitel erläutert.) Bei IIS 7.0 sind der ASP.NET-Integrationsmodus und die .NET Framework-Version auf der Anwendungspoolebene konfigurierbar. Darüber hinaus können Sie, wenn
Sie einen neuen Anwendungspool erstellen, einen eindeutigen Satz Arbeitsprozesseinstellungen
konfigurieren (wie z.B. das Intervall für die Wiederverwendung des Anwendungspools oder die
Warteschlangengröße), die sich von den allgemeinen Anwendungspooleinstellungen unterscheiden.
Vielleicht möchten Sie auch Anwendungen abhängig vom Anwendungstyp isolieren. Sie könnten
beispielsweise verschiedene Anwendungspools für ASP und ASP.NET verwenden.
Hinweis Obwohl IIS 7.0 die Parallelausführung von Anwendungen unterstützt, die mit verschiedenen .NET Framework-Versionen arbeiten, sollten Sie wissen, dass verschiedene .NET Framework-Anwendungen auch verschiedene Anwendungspools erfordern, da jeder Anwendungspools immer nur einer .NET Framework-Laufzeitversion
zugeordnet ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
290 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Einen neuen Anwendungspool hinzufügen
Um mit dem IIS-Manager einen neuen Anwendungspool zu erstellen, erweitern Sie im Bereich Verbindungen den Knoten des IIS Computers und navigieren zum Knoten Anwendungspools. Klicken Sie mit
der rechten Maustaste auf den Knoten Anwendungspools und wählen Sie Anwendungspool hinzufügen.
Alternativ hierzu klicken Sie im Bereich Aktionen auf Anwendungspool hinzufügen. Das Ergebnis ist in
Abbildung 10.4 dargestellt.
Abbildung 10.4 Mit dem IIS-Manager einen neuen Anwendungspool hinzufügen
Hinweis Wenn Sie den IIS-Manager benutzen, um einen Anwendungspool hinzuzufügen, aktivieren Sie das
Kontrollkästchen Anwendungspool sofort starten, sofern Sie den Anwendungspool direkt nach seiner Erstellung
starten möchten.
Wenn eine Anwendung eine Anforderung von einem nicht ausgeführten Anwendungspool entgegennimmt, gibt
IIS 7.0 den HTTP-Fehler 503 an den Clientbrowser zurück. Dieser Fehler informiert darüber, dass ein Dienst nicht
verfügbar ist.
Nachdem Sie einen Anwendungspool erstellt haben, können Sie entweder eine neue Anwendung darin
ausführen lassen oder Sie weisen den neuen Anwendungspool einer bereits vorhandenen Anwendungen
zu. Um einen Anwendungspool einer bereits vorhandenen Anwendung zuzuweisen, benutzen Sie den IISManager. Erweitern Sie im Hierarchielistenfeld des Bereichs Verbindungen den Knoten des IIS-Computers und dann den Knoten Sites. Erweitern Sie auch den Knoten der Website, die die gewünschte Anwendung enthält. Markieren Sie diese Anwendung und klicken Sie im Bereich Aktionen auf Grundeinstellungen. Klicken Sie auf die Schaltfläche Auswählen, um den neuen Anwendungspool aus der Liste der
verfügbaren Anwendungspools auszuwählen, wie in Abbildung 10.5 dargestellt.
Abbildung 10.5 Einen Anwendungspool mit dem IIS-Manager
einer bereits vorhandenen Anwendung zuweisen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
291
Vorsicht Wird einer ausgeführten Anwendung ein neuer Anwendungspool zugewiesen oder erfolgt für solch eine
Anwendung ein Anwendungspoolwechsel, kann dies dazu führen, dass die Anwendung zwar in den neuen Arbeitsprozess des neu zugewiesenen Anwendungspools geladen wird, dieser aber die Anwendungsdaten oder -variablen im
alten Arbeitsprozess nicht sehen kann. Die Anwendung wird dann die begonnene Bearbeitung der Anforderungen aus
dem alten Arbeitsprozess abschließen. Nachdem jedoch die Änderungen vorgenommen und vom ursprünglichen
Arbeitsprozess erkannt wurden, empfängt die Anwendung von dort keine weiteren Folgeanforderungen mehr.
Benutzen sie die folgende Appcmd-Syntax, um einen neuen Anwendungspool zu erstellen:
appcmd add apppool /name:string /managedPipelineMode:enum /managedRuntimeVersion:string
Um die Eigenschaften eines bereits vorhandenen Anwendungspools zu setzen, verwenden Sie die
folgende Syntax:
appcmd set apppool ApppoolName /managedPipelineMode:enum /managedRuntimeVersion:string
Tabelle 10.5 beschreibt die Parameter von ADD
APPPOOL
und SET
APPPOOL.
Tabelle 10.5 Appcmd-Syntax zum Konfigurieren von Anwendungspooleigenschaften
Parameter
Beschreibung
name
Der Name des neuen Anwendungspools. Muss zum Hinzufügen eines Anwendungspools angegeben werden.
AppPoolName
Der Anwendungspoolname. Muss zur Bearbeitung eines bereits vorhandenen Anwendungspools
angegeben werden.
managedRuntimeVersion
Gibt die .NET-Laufzeitversion für den Anwendungspool an. Kann "v1.1", "v2.0" oder "" für keine CLR
(Common Language Runtime) sein. Zukünftige Versionen des .NET Frameworks werden neue
Versionszeichenfolgen unterstützen. Der Standard ist v2.0.
managedPipelineMode
Der ASP.NET-Integrationsmodus des Anwendungspools. Zulässige Werte sind Classic und
Integrated. Die Vorgabe ist Integrated.
Der folgende Befehl erzeugt einen neuen Anwendungspool mit dem Namen Fabrikam Stock:
appcmd add apppool /name:"Fabrikam Stock"
Die nachfolgend gezeigte Ausgabe verrät, dass dem Konfigurationsspeicher ein neues
Anwendungspoolobjekt hinzugefügt wurde:
Das APPPOOL-Objekt "Fabrikam Stock" wurde hinzugefügt
Um die Grundeinstellungen des neuen Anwendungspools zu ändern, z.B. das Prozessmodell und die
.NET-Laufzeitversion, benutzen Sie den SET-Befehl. Die folgende Anweisung rekonfiguriert den neu
erstellten Farbrikam Stock-Anwendungspool für die Ausführung unter .NET, Laufzeitversion 1.1 und
sie ändert das Prozessmodell, so dass der klassische ISAPI-Modus genutzt wird.
appcmd set apppool /apppool.name:"FabrikamStock"
/managedRuntimeVersion:"v1.1" /managedPipelineMode:"Classic"
Hinweis Damit das .NET Framework, Version 1.1, unterstützt werden kann, müssen Sie es installieren. Während
dieser Installation wird standardmäßig ein neuer Anwendungspool namens ASP.NET 1.1 erzeugt. Dieser neue
Anwendungspool ist so konfiguriert, dass er für die Ausführung das klassische Arbeitsprozessmodell und das .NET
Framework, Laufzeitversion 1.1, verwendet. Weitere Informationen zur ASP.NET-Versionsverwaltung finden Sie im
elften Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
292 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Sobald der neue Anwendungspool bereit ist, können Sie entweder eine neue Anwendung darin ausführen lassen oder den Pool einer bereits vorhandenen Anwendung zuweisen. Die folgende Syntax
konfiguriert beispielsweise die bereits vorhandene Stock-Anwendung, so dass sie im Anwendungspool
Farbrikam Stock ausgeführt wird:
appcmd set app "Fabrikam HR/Stock"
/applicationPool:"Fabrikam Stock"
Vorsicht Wenn Sie mit Appcmd arbeiten, um den Anwendungspool einer Anwendung festzulegen, prüft das
Befehlszeilentool nicht, ob der angegebene Anwendungspool im Konfigurationssystem vorhanden ist. Gibt es den
Anwendungspool nicht, kann die Anwendung zur Laufzeit nicht geladen werden.
Wenn Sie einen neuen Anwendungspool hinzufügen, erzeugt das Konfigurationssystem in der
applicationHost.config-Datei im Abschnitt <applicationPools> ein neues Anwendungspoolelement. Das
Element enthält den Namen des Anwendungspools, das Arbeitsprozessmodell und die Prozessidentität,
sofern sich diese Angaben von den Standardeinstellungen unterscheiden. Nachfolgend ist die <applicationPools>-Konfiguration des neu erstellten Farbrikam Stock-Anwendungspools aufgeführt, die sich in
dem Abschnitt für die .NET Framework-Laufzeitversion 1.1 befindet:
<applicationPools>
<add name="DefaultAppPool" />
<add name="Classic .NET AppPool" managedPipelineMode="Classic" />
<add name="ASP.NET 1.1" managedRuntimeVersion="V1.1"
managedPipelineMode="Classic" />
<add name="Fabrikam Stock" managedRuntimeVersion="V1.1"
managedPipelineMode="Classic" />
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
</applicationPools>
Wenn Sie einer bereits vorhandenen Anwendung einen neuen Anwendungspool zuweisen, wird
innerhalb des <site>-Elements das <application>-Element vom IIS-Webkern aktualisiert. Weitere
Informationen finden Sie später in diesem Kapitel, im Abschnitt »Webanwendungen verwalten«.
Anwendungspoolidentitäten verwalten
Sie können die Identität, unter der Arbeitsprozesse im Anwendungspool ausgeführt werden, konfigurieren,
indem Sie dem Anwendungspool ein Konto zuweisen. Die Konfiguration der Anwendungspoolidentität
ist ein wichtiger Aspekt der IIS 7.0-Sicherheit, da sie die Identität des Arbeitsprozesses bestimmt, wenn
dieser auf Ressourcen zugreift. Bei IIS 5.0 wird der Prozess unter dem Konto LocalSystem ausgeführt. Dies
wirkt sich wesentlich auf die Sicherheit aus, weil das Benutzerkonto über umfassende Zugriffsrechte
verfügt. Bei IIS 6.0 änderte sich dies mit der Einführung eines Anwendungspools, für den NetworkService
die Standardanwendungspoolidentität ist. IIS 7.0 verwendet dieselben vordefinierten Arbeitsprozessidentitäten wie IIS 6.0. Tabelle 10.6 zeigt die integrierten Anwendungsidentitäten von IIS 7.0.
Sie können basierend auf den integrierten Konten benutzerdefinierte Benutzerkonten erstellen, unter
deren Identitäten die Arbeitsprozesse ausgeführt werden sollen. Kapitel 14 beschäftigt sich ausführlich
hiermit. Sie erfahren später in diesem Kapitel im Abschnitt »Die Anwendungspoolidentität
konfigurieren« mehr über die Konfiguration eines benutzerdefinierten Kontos als
Anwendungspoolidentität.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
293
Tabelle 10.6 Integrierte Anwendungspoolidentitäten
Identität
Beschreibung
LocalSystem
LocalSystem ist ein integriertes Konto, das auf dem Server über administrative Rechte verfügt. Es kann sowohl
auf lokale Ressourcen als auch auf Remoteressourcen zugreifen. Das Konto besitzt im Prinzip ähnliche Zugriffsrechte wie das Konto des Systemadministrators. Es kann uneingeschränkt auf lokale Ressourcen zugreifen.
Anwendungspools sollte diese Identität niemals zugewiesen werden. (Wenn eine Anwendung diese Identität verlangt, ist das ein Zeichen dafür, dass sie schlecht geplant wurde, und Sie sollten in diesem Fall ernsthaft darüber
nachdenken, die Anwendung zu überarbeiten, so dass sie nicht mehr administrative Rechte erfordert.)
LocalService
Das Konto LocalService ist ein spezielles integriertes Konto, das ähnlich wie ein authentifiziertes lokales
Benutzerkonto über reduzierte Rechte verfügt. Es besitzt keine Netzwerkzugriffsrechte.
NetworkService
NetworkService ist ein integriertes Konto, das ähnlich wie ein authentifiziertes lokales Benutzerkonto über
reduzierte Rechte verfügt. Es kann als Computerkonto auf Remoteressourcen zugreifen. Es ist das Standardkonto, das von IIS-Anwendungspools verwendet wird, und es kann eingeschränkt auf Ressourcen zugreifen,
die sich auf dem lokalen Computer und auf Remotecomputern befinden.
Sicherheitskontenänderungen bei IIS 7.0
Bei IIS 7.0 wurde sowohl das anonyme Benutzerkonto (IUSR_computername) als auch die Benutzergruppe IIS_WPG entfernt und durch integrierte Systemkonten anstelle normaler Benutzer- und Gruppenkonten ersetzt. Die Nutzung einer integrierten vordefinierten SID (Security Identifier) gewährleistet, dass
bei einem IIS 7.0-Remotecomputer dieselben Konten vorhanden sind. Der Einsatz integrierter Konten
trägt außerdem dazu bei, dass Sie sich nicht mit Problemen beschäftigen müssen, die Benutzeranmeldeinformationen betreffen, wie z.B. die Gültigkeitsdauer von Kennwörtern. Während der IIS 7.0-Installation
werden die folgenden integrierten Konten erstellt:
IUSR Das Standardbenutzerkonto für die anonyme Identität; ersetzt das Konto IUSR_computername
IIS_IUSRS Neue integrierte Benutzergruppe; ersetzt die Gruppe IIS_WPG
Hinweis IUSR_computername wird erzeugt, wenn unter Windows Server 2008 der Rollendienst FTP-Publishingdienst (früher unter IIS 6.0 der FTP-Dienst) installiert ist.
IIS 7.0 für zwei zusätzliche Erweiterungen ein, die sich auf die Anwendungspoolidentität beziehen und
auf die Änderungen aufsetzen, die die Sicherheitsbenutzer- und Sicherheitsgruppenkonten betreffen:
Anonymes Konto als Anwendungspoolidentität Legt das anonyme Konto als Anwendungspoolidentität fest. (Setzen Sie einfach im Konfigurationsabschnitt anonymousAuthentication das userNameAttribut auf einen leeren Wert. Um dieses neue Feature kennen zu lernen, lesen Sie bitte das vierzehnte Kapitel.) Der Hauptvorteile der Konfiguration des anonymen Benutzers als Anwendungspoolidentität besteht darin, dass Sie nicht die Sicherheit für ein separates Konto verwalten müssen.
Automatische IIS_IUSRS-Mitgliedschaft Wenn Sie bei IIS 6.0 eine benutzerdefinierte Anwendungspoolidentität konfigurieren, muss das benutzerdefinierte Konto ein Mitglied von IIS_WPG
sein, weil diese Benutzergruppe über vorkonfigurierte Zugriffsberechtigungen und das Recht
verfügt, Arbeitsprozesse zu starten. Bei IIS 7.0 besitzt die Benutzergruppe IIS_IUSRS ähnliche
Zugriffsberechtigungen und Rechte. Das benutzerdefinierte Konto muss jedoch nicht explizit der
Gruppe IIS_IUSRS hinzugefügt werden, da dies bei IIS 7.0 implizit geschieht. (Die Anwendungspoolidentität wird aber nicht der Gruppe IIS_IUSRS hinzugefügt. Die Gruppen-SID wird zur
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
294 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Laufzeit in das Arbeitsprozesstoken eingefügt, so dass es als Mitglied von IIS_IUSRS agiert. An der
lokalen Benutzerdatenbank oder an der Active Directory-Verzeichnisdienst-Domänengruppenmitgliedschaft werden keine Änderungen vorgenommen.)
Wünschen Sie das IIS 6.0-Verhalten, können Sie die IIS_IUSRS-Gruppenmitgliedschaft manuell
konfigurieren. Diese Einstellung wird für einzelne Anwendungspools vorgenommen, so dass Sie
für den Anwendungspool, dessen Gruppenmitgliedschaft manuell konfiguriert werden soll, das
benutzerdefinierte Konto der Gruppe IIS_IUSRS explizit hinzufügen müssen. Die folgende
Appcmd-Syntax konfiguriert DefaultAppPool für die manuelle IIS_IUSRS-Gruppenmitgliedschaft:
appcmd set apppool "DefaultAppPool" /processModel.manualGroupMembership:True
Direkt von der Quelle: Anwendungspools für Sandbox-Anwendungen verwenden
Der Anwendungspool ist für IIS-Anwendungen das grundlegende Isolationselement, weil er den
Anwendungscode in einem gesonderten IIS-Arbeitsprozess isoliert und die Abschirmung des externen
Zugriffs von den Ressourcen innerhalb des Prozesses ermöglicht, indem ACLs (Access Control List)
auf die Anwendungspoolidentität angewendet und dieser Identität Rechte gewährt oder verweigert
werden. Der Einsatz von Anwendungspools macht es möglich, eine gründlichere Isolation zwischen
den Anwendungen desselben Servers zu erzielen, als dies mit anderen Techniken, z.B. dem Identitätswechsel oder dem teilweise vertrauenswürdigen ASP.NET-Sandboxing, möglich ist.
IIS 7.0 geht noch einen Schritt weiter und sorgt dafür, dass Anwendungspools in Isolationsszenarien
effektiv genutzt werden können. Dazu stellt es automatisch eine eindeutige Konto-SID (Security
Identifier) für jeden Anwendungspool zur Verfügung. Diese SID kann für die Sicherung der Ressourcen des Anwendungspools mithilfe von ACLs verwendet werden. Der Windows-Prozessaktivierungsdienst (auch bekannt als WAS) generiert solche SIDs automatisch, so dass Sie nicht gezwungen sind,
benutzerdefinierte Anwendungspoolidentitäten zu erstellen und zu benutzen. Noch wichtiger ist, dass
IIS 7.0 ebenfalls die globale Serverkonfiguration automatisch isoliert, indem es für jeden Anwendungspool gefilterte Kopien der Konfigurationsdatei applicationHost.config generiert, die nur die Konfigurationen enthalten, die den jeweiligen Anwendungspool betreffen. Konfigurationen für andere Anwendungspools, z.B. deren Anwendungspooldefinitionen und Identitätsinformationen, sind darin nicht
enthalten.
Zusammen mit der größeren Arbeitsprozessdichte tragen diese Verbesserungen dazu bei, dass es
noch nie einfacher war, mithilfe von Anwendungspools echte Sandbox-Anwendungsumgebungen zu
schaffen.
Mike Volodarsky
IIS-Kernserver Program Manager
Die Anwendungspoolidentität konfigurieren
NetworkService ist ein Konto mit reduzierten Zugriffsrechten. Vielleicht möchten Sie deshalb die Arbeitsprozessidentität gemäß Ihren geschäftlichen Anforderungen ändern. Eine Sicherheitsanwendung könnte
beispielsweise den Zugriff auf Systemressourcen erfordern, für die NetworkService nicht die notwendigen Rechte besitzt. In diesem Fall könnten Sie den Arbeitsprozess unter der Identität eines benutzerdefinierten Kontos mit den erforderlichen Zugriffsrechten ausführen lassen. Das vierzehnte Kapitel
beschäftigt sich mit der Verwaltung von Anwendungspoolidentitäten, wobei auch die Sicherheit behandelt
wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
295
Um mit dem IIS-Manager die Anwendungspoolidentität zu konfigurieren, erweitern Sie im Bereich
Verbindungen den Knoten des IIS-Computers und markieren den Knoten Anwendungspools. Markieren
Sie auf der Seite Anwendungspools den Anwendungspool, für den Sie das Identitätskonto ändern
möchten. Klicken Sie im Bereich Aktionen auf Erweiterte Einstellungen. Markieren Sie im Dialogfeld
Erweiterte Einstellungen und dort im Abschnitt Prozessmodell die Eigenschaft Identität und klicken
Sie auf die Schaltfläche zum Durchsuchen (...), um das Dialogfeld Identität des Anwendungspools
anzeigen zu lassen, das in Abbildung 10.6 dargestellt ist.
Abbildung 10.6 Die Anwendungspoolidentität mit dem IIS-Manager konfigurieren
Vorsicht Wenn Sie die Anwendungspoolidentität ändern, fährt IIS 7.0 den aktuellen Arbeitsprozess herunter,
sofern er ausgeführt wird, und initiiert einen neuen Arbeitsprozess mit der ausgewählten Benutzeridentität. Dies
wirkt sich auf die Verfügbarkeit der Anwendung aus, und während des Anwendungspoolwechsels gehen Sitzungsdaten verloren.
Benutzen Sie die folgende Appcmd-Syntax und die in Tabelle 10.7 beschriebenen Parameter, um die
Anwendungspoolidentität zu konfigurieren:
appcmd set apppool ApppoolName /processModel.identityType:enum
/processModel.userName:string /processModel.password:string
Tabelle 10.7 Appcmd-Syntax zum Konfigurieren der Anwendungspoolidentität
Parameter
Beschreibung
ApppoolName
Der Name des Anwendungspools
processModel.identityType
Der Identitätstyp (identityType) repräsentiert entweder ein integriertes Konto wie LocalService,
LocalSystem oder NetworkService bzw. ein benutzerdefiniertes Konto (SpecificUser), das für den
Anwendungspool verwendet werden soll
processModel.userName
Der Benutzerkontoname für die benutzerdefinierte Anwendungspoolidentität
processModel.password
Das Benutzerkontokennwort für die benutzerdefinierte Anwendungspoolidentität
Das folgende Beispiel ändert die Arbeitsprozessstandardidentität des Anwendungspools Fabrikam
Stock, so dass aus NetworkService LocalService wird:
appcmd set apppool "Fabrikam Stock"
/processModel.identityType:LocalService
Die identityType-Enumeration unterscheidet innerhalb des Konfigurationsspeichers zwischen Groß- und
Kleinschreibung. Wenn Sie den richtigen Wert eingeben, führt Appcmd den Befehl erfolgreich aus und
gibt eine ähnliche Ausgabe wie die folgende zurück:
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
296 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Das APPPOOL-Objekt "Fabrikam Stock" wurde geändert.
Wenn Sie einen falschen Wert eingeben, erhalten Sie die folgenden Fehlermeldungen:
FEHLER (Meldung: Unbekanntes Attribut "identityType". Grund: Enumeration muss einen der Werte von LocalSystem,
LocalService, NetworkService, SpecificUser aufweisen.)
Um eine benutzerdefinierte Anwendungsarbeitsprozessidentität zu konfigurieren, geben Sie SpecificUser
als identityType-Attributwert an. Dann legen Sie die Benutzeranmeldeinformationen mit den Eigenschaften userName und password fest.
appcmd set apppool /apppool.name:"Fabrikam Stock"
/processModel.identityType:SpecificUser
/processModel.userName:"MyAppUsr"
/processModel.password:"passw@rd1"
Das vorherige Beispiel konfiguriert das Benutzerkonto MyAppUsr als Fabrikam Stock-Anwendungspoolidentität und legt als Kontokennwort passw@rd1 fest.
IIS speichert Änderungen an der Anwendungspoolidentität in der applicationHost.config-Datei und
dort im Abschnitt <applicationPools>. Der Elementwert enthält den Namen des Anwendungspools, das
Arbeitsprozessmodell und die Prozessidentität, sofern sich diese Angaben von den Standardeinstellungen unterscheiden. Nachfolgend ist die <applicationPools>-Konfiguration der benutzerdefinierten
Arbeitsprozessidentität aufgeführt, die für den Anwendungspool Farbrikam Stock konfiguriert wurde.
<applicationPools>
...
<add name="Fabrikam Stock" managedRuntimeVersion="V1.1"
managedPipelineMode="Classic">
<processModel identityType="SpecificUser" userName="MyAppUsr"
password="[enc:AesProvider:oGSyoej3RKswi3gsrYarpbMQrx0rVIY6nFHkPmjQAhE=
:enc]/>
</add>
...
</applicationPools>
Erweiterte Anwendungspoolkonfiguration
Obwohl die Anwendungspoolkonfiguration von IIS 7.0 der von IIS 6.0 gleicht, wurde die Konfigurationsoberfläche zusammen mit dem IIS-Manager überarbeitet. Alle Einstellungen sind nun innerhalb
dieser Oberfläche sichtbar und konfigurierbar. Die meisten Konfigurationseinstellungen, die z.B. die
Anwendungswiederverwendung und den Schutz vor schnellen Fehlerfolgen betreffen, unterscheiden
sich nicht von ihren IIS 6.0-Pendants. Dieser Abschnitt beschreibt einige wichtige Konfigurationen, die
bei IIS 7.0 neu sind.
Das Laden von Benutzerprofilen ermöglichen
Die Anwendungslogik einer typischen Webanwendung enthält in der Regel Code zum Lesen und
Schreiben von Daten. Solche Anwendungen benötigen meistens Lese- und Schreibzugriffsrechte für
das temporäre Windows-Verzeichnis %Temp%. Stelle Sie sich beispielsweise vor, eine ASP-Anwendung arbeitet mit einer Microsoft Access-Datenbank. Bei IIS 6.0 gewährt das Betriebssystem standardmäßig allen Benutzern – auch dem Arbeitsprozesskonto, und zwar unabhängig von der Prozessidentität
– Lese- und Schreibzugriffsrechte für das temporäre Verzeichnis. Obwohl dieses Standardverhalten von
IIS 6.0 dazu führt, dass Webanwendungen ohne Probleme ausgeführt werden, kann die Sicherheit
beeinträchtigt werden, weil alle Arbeitsprozesse dasselbe temporäre Verzeichnis gemeinsam nutzen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
297
Um das Sicherheitsrisiko zu vermindern, bietet Ihnen IIS 7.0 die Möglichkeit, das Benutzerkontoprofil
während des Starts eines Arbeitsprozesses zu laden. Daraus ergibt sich eine eigene Umgebung mit verschiedenen temporären Ordnern für jede Prozessidentität. Doch nur das Prozesskonto kann standardmäßig auf das temporäre Verzeichnis der Prozessidentität zugreifen. Muss eine Webanwendung auf ein
temporäres Verzeichnis zugreifen, müssen Sie den entsprechenden Benutzerkonten Zugriff gewähren.
Das Laden von Benutzerprofilen ist bei IIS 7.0 standardmäßig deaktiviert, was zu einem Verhalten wie
bei IIS 6.0 führt. Wenn Benutzerprofile aktiviert sind, ist es möglich, dass einige Anwendungen nicht
mehr funktionieren, z.B. Anwendungen, die mit Microsoft Access-Datenbanken arbeiten. Der Grund
hierfür besteht darin, dass die Standardanwendungspoolidentität, NetworkService, nicht auf das TempVerzeichnis zugreifen kann, das von der Access-Datenbankengine verwendet wird.
Hinweis Das Laden von Benutzerprofilen ist unter Windows Vista standardmäßig aktiviert. Unter Windows Server
2008 und Windows Vista Service Pack 1 (SP1) ist es jedoch deaktiviert. Sie sollten ebenfalls wissen, dass das
Laden von Benutzerprofilen für jeden Anwendungspool einzelnen konfiguriert wird.
Nach der Installation von Windows Vista SP1 und der Neuinstallation von IIS 7.0 ist die Einstellung loadUserProfile
standardmäßig deaktiviert.
Um unter IIS 7.0 mit dem IIS-Manager Benutzerprofile zu aktivieren, erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers und markieren den Knoten Anwendungspools. Markieren
Sie auf der Seite Anwendungspools den Anwendungspool, dessen Einstellung zum Laden eines Benutzerprofils Sie ändern möchten, und klicken Sie im Bereich Aktionen auf Erweiterte Einstellungen.
Markieren Sie im Dialogfeld Erweiterte Einstellungen und dort im Abschnitt Prozessmodell die
Eigenschaft Benutzerprofil laden und wählen Sie im Dropdown-Listenfeld den Eintrag True, wie in
Abbildung 10.7 dargestellt.
Abbildung 10.7 Benutzerprofile mit dem IIS-Manager aktivieren
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
298 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Nachdem Sie die Einstellung Benutzerprofil laden aktiviert haben, müssen Sie den entsprechenden
Benutzerkonten den Zugriff auf das temporäre Verzeichnis des Kontoprofils gewähren, weil standardmäßig nur die Prozessidentität auf die Profilverzeichnisse zugreifen kann. Der integrierte Kontoprofilordner ist standardmäßig im Verzeichnis %systemRoot%\ServiceProfiles\ gespeichert. Der Ordner der
Arbeitsprozessstandardidentität (NetworkService) befindet sich unter %systemRoot%\ServiceProfiles\
NetworkService\AppData\Local\Temp. Weitere Informationen zum Gewähren von Zugriffsberechtigungen für das temporäre Verzeichnis finden Sie im Microsoft Knowledge Base-Artikel unter http://
support.microsoft.com/kb/926939/.
Benutzen Sie die folgende Appcmd-Syntax und die in Tabelle 10.8 beschriebenen Parameter, um für
einen Anwendungspool das Laden eines Benutzerprofils zu aktivieren:
appcmd set apppool "apppool name"
/processModel.loadUserProfile:Boolean
Tabelle 10.8 Appcmd-Syntax zum Aktivieren des Ladens von Benutzerprofilen
Parameter
Beschreibung
apppool name
Die Zeichenfolge repräsentiert den Anwendungspoolnamen
processModel.loadUserProfile
Gibt an, ob der Arbeitsprozess das Benutzerprofil während des Starts laden soll
Der folgende Code aktiviert das Laden von Benutzerprofilen für den Anwendungspool DefaultAppPool.
appcmd set apppool /apppool.name:"DefaultAppPool"
/processModel.loadUserProfile:true
Bei einer erfolgreichen Ausführung des Befehls sehen Sie die folgende Ausgabe. Nachdem Sie das
Benutzerprofil aktiviert haben, sollten Sie nicht vergessen, die notwendigen Kontozugriffsrechte wie
zuvor beschrieben zu gewähren.
Das APPPOOL-Objekt "DefaultAppPool" wurde geändert
Genauso wie alle anderen Änderungen, die an einem Anwendungspool vorgenommen werden, wird
auch die Profileinstellung zusammen mit dem Anwendungspool im <applicationPools>-Abschnitt der
applicationHost.config-Datei definiert. Der loadUserProfile-Attributwert wird mit dem processModelElement deklariert. Nachfolgend ist die <applicationPools>-Konfiguration der Einstellung zum Laden
von Benutzerprofilen für den Anwendungspool DefaultAppPool aufgeführt:
<applicationPools>
<add name="DefaultAppPool">
<processModel loadUserProfile="true" />
</add>
<add name="Classic .NET AppPool" managedPipelineMode="Classic" />
...
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
</applicationPools>
Die Wiederverwendung von Anwendungspools überwachen
Die effektive Überwachung der Wiederverwendung von Anwendungspools ermöglicht es Ihnen, den
Zustand eines Anwendungspools einzuschätzen. Sie erhalten außerdem eine detaillierte Beschreibung
zu jedem Wiederverwendungsereignis und die Überwachung hilft Ihnen, Probleme mit der Anwenungsverfügbarkeit zu beheben. Bei IIS 6.0 können ähnliche Ereignisprotokollierungen ausschließlich
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
299
über ein Befehlszeilentool konfiguriert werden und nicht alle Anwendungspoolereignisse werden
erfasst. Beispielsweise wird das Herunterfahren eines Anwendungspools nach einer bestimmten Leerlaufzeit nicht registriert. Weitere Informationen zu IIS 6.0-Anwendungspoolwiederverwendungsereignissen finden Sie im Microsoft Knowledge Base-Artikel unter http://support.microsoft.com/kb/
332088/. Bei IIS 7.0 kann die Überwachung von Wiederverwendungsereignissen nun mit dem IISManager konfiguriert werden. Das schließt auch die auf Anwendungspools bezogenen Wiederverwendungsereignisse mit ein. Tabelle 10.9 zeigt die Ereignisprotokoll-ID und Detailinformationen zu jedem
Wiederverwendungsereignis.
Tabelle 10.9 Wiederverwendungsereignisse für Anwendungspools
Ereignis/Attributwert
Beschreibung
Ereignis-ID
Geänderte Anwendungspoolkonfiguration (ConfigChange)
Die Arbeitsprozesse für Anwendungspool '%1' werden aufgrund mindes- System
tens einer Konfigurationsänderung in den Anwendungspooleigenschaften, 5080
die zum Starten der Prozesse erforderlich sind, wieder verwendet
ISAPI-Fehlermeldung
(IsapiUnhealthy)
ISAPI '%1' hat sich selbst aufgrund des folgenden Fehlers als fehlerhaft
gemeldet: '%2'
ISAPI '%1' hat sich selbst als fehlerhaft gemeldet. ISAPI hat keine Fehlerursache angegeben.
Modul-Fehlermeldung
(ReportUnhealthy)
Eine Anwendung hat gemeldet, dass sie fehlerhaft ist. Der Arbeitsprozess Anwendung
fordert eine Wiederverwendung an. Grund: %1. Fehler in den Daten.
2299
Manuelle Wiederverwendung
(OnDemand)
Ein Administrator hat einen Löschvorgang aller Arbeitsprozesse in
Anwendungspool '%1' angefordert
System
5079
Überschrittenes Limit für den
privaten Speicher
(PrivateMemory)
Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2'
hat die Wiederverwendung angefordert, da das Bytelimit für den privaten
Speicher erreicht wurde
System
5117
Regelmäßige Zeitintervalle
(Time)
Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2'
hat die Wiederverwendung angefordert, da der Arbeitsprozess das
zulässige Verarbeitungszeitlimit erreicht hat
System
5074
Anforderungslimit überschritten
(Requests)
Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2' System
hat die Wiederverwendung angefordert, da das zulässige Anforderungslimit 5075
erreicht wurde
Bestimmte Zeit (Schedule)
Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2'
hat die Wiederverwendung angefordert, da die geplante Wiederverwendungszeit erreicht wurde
System
5076
Limit für den virtuellen Speicher
überschritten (Memory)
Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2'
hat die Wiederverwendung angefordert, da das Limit für den virtuellen
Speicher erreicht wurde
System
5077
Anwendung
2262
Anwendung
2263
Wird ein Arbeitsprozess herutergefahren, weil die Leerlaufzeit (die Vorgabe ist 20 Minuten) überschritten wurde, vermerkt WAS das folgende Ereignisprotokoll:
Ereignis-ID: 5186
Beschreibung: Ein Arbeitsprozess mit der Prozess-ID '%1' für den Anwendungspool '%2' wurde aufgrund von Inaktivität
heruntergefahren. Das Timeout für den Anwendungspool wurde auf %3 Minuten festgelegt. Bei Bedarf wird ein neuer
Arbeitsprozess gestartet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
300 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Die folgenden Wiederverwendungsereignisse werden standardmäßig protokolliert:
Überschrittenes Limit für den privaten Speicher (Standardwert 0 [KB], kein Limit)
Regelmäßige Zeitintervalle (Standardwert 1740 [Minuten], 29 Stunden)
Limit für den virtuellen Speicher überschritten (Standardwert 0 [KB], kein Limit)
Um mit dem IIS-Manager die Protokollierung weiterer Wiederverwendungsereignisse für Anwendungspools zu aktivieren, erweitern Sie im Bereich Verbindungen den Knoten des IIS-Computers und
markieren den Knoten Anwendungspools. Markieren Sie auf der Seite Anwendungspools den Anwendungspool, für den Sie die Protokollierung bestimmter Wiederverwendungsereignisse aktivieren möchten.
Klicken Sie anschließend im Bereich Aktionen auf Erweiterte Einstellungen. Blättern Sie im Dialogfeld
Erweiterte Einstellungen nach unten zum Abschnitt Wiederverwendung, erweitern Sie den Knoten
Protokolleintrag für Wiederverwendungsereignis generieren, markieren Sie den gewünschten Ereignisprotokolleintrag und wählen Sie im Dropdown-Listenfeld True, um die Protokollierung dieses Ereignisses
zu aktivieren (siehe Abbildung 10.8).
Hinweis Sie müssen alle relevanten Eigenschaften konfigurieren, wenn ein Wiederverwendungsereignis protokolliert werden soll. Wenn Sie beispielsweise die Option Anforderungslimit überschritten aktivieren, müssen Sie für
die Eigenschaft Anforderungslimit ein Limit angeben. Andernfalls wird der Vorgabewert 0 verwendet, der angibt,
dass für den Anwendungspool kein Anforderungslimit konfiguriert ist. Ein Ereignisprotokoll würde dann nicht
generiert, weil es kein Limit gäbe, dessen Überschreitung überprüft werden könnte.
Abbildung 10.8 Anwendungswiederverwendungsereignisse mit dem IIS-Manager aktivieren
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungspools verwalten
301
Benutzen Sie die folgende Appcmd-Syntax und die in Tabelle 10.10 beschriebenen Parameter, um die
Protokollierung verschiedener Wiederverwendungsereignisse für Anwendungspools zu konfigurieren:
appcmd set apppool "ApppoolName"
/recycling.logEventOnRecycle:flags
Tabelle 10.10 Appcmd-Syntax zum Konfigurieren der Protokollierung von Wiederverwendungsereignissen
Parameter
Beschreibung
ApppoolName
Die Zeichenfolge repräsentiert den Anwendungspoolnamen.
recycling.logEventOnRecyle
Legt die Wiederverwendungsereignisoptionen fest. Zu den Flags zählen Time, Requests,
Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange und PrivateMemory.
Die folgende Syntax aktiviert für den Anwendungspool DefaultAppPool die Protokollierung aller
Wiederverwendungsereignisse:
appcmd set apppool "DefaultAppPool"
/recycling.logEventOnRecycle:"Time, Requests, Schedule, Memory,
IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"
Um die gesamte Ereignisprotokollierung zu deaktivieren, entfernen Sie einfach alle Attributflags. Der
folgende Befehl deaktiviert beispielsweise für den Anwendungspool Test die Protokollierung aller
Wiederverwendungsereignisse:
appcmd set apppool "Test" /recycling.logEventOnRecycle:""
Wie bereits erwähnt wurde, ist es wichtig, dass Sie zugehörige Einstellungen konfigurieren, wenn Sie
für Anwendungspools die Protokollierung von Wiederverwendungsereignissen aktivieren. Sie müssen
z.B. für einen Anwendungspool ein Anforderungslimit angeben, wenn ein Ereignisprotokoll generiert
werden soll, sobald die Arbeitsprozesse des Anwendungspools bei Erreichen des Limits wiederverwendet werden. Die folgende Syntax setzt das Anforderungslimit auf 500 und aktiviert für den Anwendungspool Test die Protokollierung des Ereignisses Anforderungslimit überschritten:
appcmd set apppool "Test"
/recycling.periodicRestart.requests:500
/recycling.logEventOnRecycle:"Requests"
Beachten Sie den Parameter /recycling.periodicRestart. Alle Wiederverwendungsoptionen eines Anwendungspools werden unter diesem Element konfiguriert. Es enthält die folgenden Knoten zum Festlegen der Wiederverwendungsoptionen eines Anwendungspools: .memory für virtuelle Speicherlimits,
.privateMemory für die Begrenzung des privaten Speichers, .schedule für regelmäßige Zeitintervalle und
.time für bestimmte Zeiten.
Genauso wie alle anderen Änderungen, die an einem Anwendungspool vorgenommen werden, wird
auch die Protokollierung von Wiederverwendungsereignissen zusammen mit dem Anwendungspool im
<applicationPools>-Abschnitt der applicationHost.config-Datei definiert. Der Typ des Ereignisprotokolleintrags wird im <recycling>-Element deklariert und die Limits oder Einschränkungen zu jeder Einstellung werden im Unterelement <periodicRestart> definiert. Nachfolgend ist die <applicationPools>-Konfiguration aufgeführt, die sich aus dem vorherigen Beispiel ergibt:
<applicationPools>
<add name="DefaultAppPool">
<recycling logEventOnRecycle="Requests">
<periodicRestart request="500" />
</recycling>
</add>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
302 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
<add name="Classic .NET AppPool" managedPipelineMode="Classic" />
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
</applicationPools>
Arbeitsprozesse und Anforderungen verwalten
Der Arbeitsprozess ist bei IIS 7.0 das Herz und die Seele einer Webanwendung. Er wird in W3WP.exe
ausgeführt und ist für die Verarbeitung von Anwendungsanforderungen verantwortlich. Bei IIS 6.0
werden Arbeitsprozesse vom WWW-Publishingdienst (World Wide Web) verwaltet, bei IIS 7.0
hingegen wurde die Kernengine überarbeitet, so dass nun WAS im Besitz der Arbeitsprozesse ist.
Bei IIS 6.0 kann eine Abfrage von Arbeitsprozessinformationen, wie z.B. die PID (Prozess-ID) der
gegenwärtig ausgeführten Arbeitsprozesse samt dem dazugehörigen Anwendungspool, ausschließlich
über das Befehlszeilenskript lisapp.vbs erfolgen. Mit IIS 6.0 ist es außerdem nicht möglich, das Innere
eines Arbeitsprozesses zu untersuchen, um einen Blick auf den gegenwärtigen Anforderungsstatus zu
werfen. Wenn Sie jedoch mit ETW (Event Tracing for Windows; Ereignisnachverfolgung für Windows)
vertraut sind, können Sie IIS-Komponenten als Anbieter benutzen, die Nachverfolgungsdaten und
Ereignisse an ETW senden, so dass Sie einen Blick auf die Anforderungsverarbeitungsdetails in einem
Arbeitsprozess werfen können. Obwohl ETW ein leistungsfähiges Hilfsmittel für die auf Anforderungen basierende Nachverfolgung ist, ist seine Implementierung nicht einfach. Es besitzt keine
Benutzeroberfläche und ist nicht wirklich Bestandteil der IIS-Kernarchitektur.
IIS 7.0 gestaltet die Verwaltung von Arbeitsprozessen einfacher als jemals zuvor. Möglich ist dies
mit dem IIS-Manager und Appcmd. Dank der neuen Kernarchitektur ist nun ein auf Anforderungen
basierendes Nachverfolgungsfeature in IIS 7.0 integriert. Sie können im IIS-Manager die in einem
bestimmten Arbeitsprozess befindlichen aktuellen Anforderungen mit einigen wenigen Mausklicks
einfach abfragen. Alternativ hierzu können Sie Appcmd benutzen, um den Laufzeitstatus abzufragen.
Zu den zur Verfügung gestellten Informationen zählen das HTTP-Verb der jeweiligen Anforderungen,
der Name der angeforderten Resource, der Verarbeitungsstatus der Anforderung und das Modul, das die
Anforderungen gegenwärtig verarbeitet.
Arbeitsprozesse und Anforderungen überwachen
Durch die Überwachung von Arbeitsprozessen erhalten Sie eine Übersicht über den Verbrauch der
Webserverressourcen. Sie können diese Informationen ebenfalls nutzen, um einen fehlerhaften Arbeitsprozess zu beenden, der ständig die gesamten CPU-Ressourcen beansprucht, oder um eine fehlerhafte
Anwendung zu stoppen, die die Arbeitsprozesse mit Anforderungen konfrontiert, die über einen langen
Zeitraum ausgeführt werden. Um mit dem IIS-Manager die aktuellen Arbeitsprozesse und den Anforderungsstatus abzufragen, markieren Sie im Bereich Verbindungen den Knoten des IIS-Computers und
führen im Bereich der Ansicht Features einen Doppelklick auf Arbeitsprozesse aus. Die Seite Arbeitsprozesse ist in Abbildung 10.9 dargestellt.
Um eine Liste der gegenwärtig ausgeführten Anforderungen zu erhalten, markieren Sie einen Arbeitsprozess und klicken im Bereich Aktionen auf Aktuelle Anforderungen anzeigen. Alternativ hierzu
klicken Sie mit der rechten Maustaste auf einen Arbeitsprozess und wählen Aktuelle Anforderungen
anzeigen aus. Die Seite Anforderungen ist in Abbildung 10.10 dargestellt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Arbeitsprozesse und Anforderungen verwalten
303
Abbildung 10.9 Aktuelle Arbeitsprozesse mit dem IIS-Manager abfragen
Benutzen Sie die folgende Appcmd-Syntax, um eine Liste der Arbeitsprozesse anzeigen zu lassen:
appcmd list wp PID /apppool.name:string
Abbildung 10.10 Aktuelle Anforderungen mit dem IIS-Manager anzeigen lassen
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
304 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Die in der Regel verwendeten Parameter sind in Tabelle 10.11 beschrieben.
Tabelle 10.11 Appcmd-Syntax zum Auflisten von Arbeitsprozessen
Parameter
Beschreibung
PID
Die Prozess-ID des aufzulistenden Arbeitsprozesses. Erfolgt keine Angabe, werden alle Arbeitsprozesse
aufgelistet.
apppool.name
Der Name des Anwendungspools, dessen Arbeitsprozesse angezeigt werden sollen
Sie können den folgenden Appcmd-Befehl benutzen, um eine Liste der gegenwärtig ausgeführten
Anforderungen anzeigen zu lassen:
appcmd list request RequestId /apppool.name:string
/elapsed:integer /site.name:string /wp.name:integer
Die in der Regel verwendeten Parameter sind in Tabelle 10.12 beschrieben.
Tabelle 10.12 Appcmd-Syntax zum Auflisten ausgeführter Anforderungen
Parameter
Beschreibung
RequestId
Der eindeutige Bezeichner der Anforderung, sofern bekannt. Erfolgt keine Angabe, werden alle Anforderungen aufgelistet.
apppool.name
Der Name des Anwendungspools, dessen Anforderungen angezeigt werden sollen
elapsed
Die Verarbeitungszeit in Millisekunden, die vergangen sein muss, damit eine Anforderung aufgelistet wird
site.name
Der Name der Website, für die die Anforderungen angezeigt werden sollen. Alternativ hierzu können Sie
über /site.id eine Website-ID angeben.
wp.name
integer repräsentiert die Prozess-ID eines bestimmten Arbeitsprozesses, dessen Anforderungen angezeigt
werden sollen.
Wenn Sie Appcmd benutzen, um Arbeitsprozessinformationen abzufragen, ist die Ausgabe weniger
umfangreich als beim IIS-Manager. Appcmd zeigt nur die Prozess-ID und den Namen des Anwendungspools an, der vom Arbeitsprozess bedient wird. Um alle Arbeitsprozesse eines IIS 7.0-Servers
aufzulisten, verwenden Sie den folgenden Befehl:
appcmd list wp
Wenn Webanwendungen ausgeführt werden, listet der vorherige Befehl die gegenwärtig ausgeführten
Arbeitsprozesse auf. Die folgende Ausgabe zeigt beispielsweise drei ausgeführte Arbeitsprozesse, die
alle unterschiedliche Anwendungspools bedienen:
WP "1120" (applicationPool:DefaultAppPool)
WP "3918" (applicationPool:MyAppPool)
WP "3320" (applicationPool:Fabrikam Stock)
Hinweis Die RSCA-Objekte (Runtime State and Control API) innerhalb der IIS-Webserverkernengine stellen Laufzeitinformationen zu den Arbeitsprozessen zur Verfügung.
Um die Arbeitsprozessdaten zu einem bestimmten Anwendungspool abzufragen, benutzen Sie den
folgenden Befehl:
appcmd list wp /apppool.name:"DefaultAppPool"
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Arbeitsprozesse und Anforderungen verwalten
305
In einem Webgarten, wo mehr als ein Arbeitsprozess denselben Anwendungspool bedient, könnten Sie
eine ähnliche Ausgabe wie die folgende erhalten, weil drei verschiedene Arbeitsprozesse den Anwendungspool DefaultAppPool bedienen:
WP "1951" (applicationPool:DefaultAppPool)
WP "3593" (applicationPool:DefaultAppPool)
WP "3039" (applicationPool:DefaultAppPool)
Um alle Arbeitsprozesse aufzulisten, die zu einer Website gehören, listen Sie zunächst alle Anwendungen dieser Website auf und leiten dann die Ergebnisse an eine andere Abfrage weiter. Der folgende
Befehl zeigt beispielsweise alle Arbeitsprozesse, die Contoso Corp. zugeordnet sind:
appcmd list app /site.name:"Contoso Corp" /xml |
appcmd list wp /in
Wären den Anwendungen von Contoso Corp. gegenwärtig zwei ausgeführte Anwendungspools
(DefaultAppPool und MyAppPool) zugeordnet, würde die Ausgabe zwei Arbeitsprozesse mit den
entsprechenden Detailinformationen anzeigen.
WP "1120" (applicationPool:DefaultAppPool)
WP "3918" (applicationPool:MyAppPool)
Um Webanwendungen oder Anwendungspools zu ermitteln, in denen ein bestimmter Arbeitsprozess
seine Dienste verrichtet, verwenden Sie den folgenden Befehl:
appcmd list wp "1120" /xml | appcmd list app /in
Der erste Teil des Befehls listet wie im vorherigen Code die Arbeitsprozessdetails in XML-Format auf.
Dazu zählt auch der Anwendungspoolname. Eine mögliche Beispielausgabe dieses Zwischenschritts ist
nachfolgend aufgeführt:
<?xml version="1.0" encoding="UTF-8"?>
<appcmd>
<WP WP.NAME="1120" APPPOOL.NAME="DefaultAppPool" />
</appcmd>
Die XML-Ausgabe wird dann als Eingabe an den zweiten Teil des Befehls übergeben, der alle zum
Anwendungspool gehörenden Anwendungen auflistet. Wenn die Stammanwendungen von Contoso
Corp. und Fabrikam HR im Anwendungspool DefaultAppPool ausgeführt werden, erhalten Sie die
folgende endgültige Ausgabe des vorherigen vollständigen Befehls:
APP "Contoso Corp/" (applicationPool:DefaultAppPool)
APP "Fabrikam HR/" (applicationPool:DefaultAppPool)
Um einen Blick in einen Arbeitsprozess auf die gegenwärtig ausgeführten Anforderungen zu werfen,
können Sie mit Appcmd das LIST-Verb zum Abfragen des REQUEST-Objekts benutzen. Die folgende Syntax
zeigt beispielsweise alle gegenwärtig ausgeführten Anforderungen eines IIS 7.0-Webservers:
appcmd list request
Die resultierende Ausgabe, die nachfolgend aufgeführt ist, verrät, dass IIS gegenwärtig drei ASPAnforderungen verarbeitet:
REQUEST "f80000008000000e" (url:GET /profile.asp, time:330 msec,
client:10.10.29.12, stage:ExecuteRequestHandler, module:IsapiModule)
REQUEST "f80000008000000f" (url:POST /loginform.asp, time:123 msec,
client:10.11.3.99, stage:ExecuteRequestHandler, module:IsapiModule)
REQUEST "f800000080000010" (url:GET /account.asp, time:200 msec,
client:10.10.29.88, stage:ExecuteRequestHandler, module:IsapiModule)
Sie können den Parameter /text:* benutzen, um alle zurückgegebenen Anforderungsattribute anzeigen zu
lassen. Sie erhalten dann mehr nützliche Informationen, als in der zuvor gezeigten einfachen Ansicht.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
306 Kapitel 10: Verwalten von Anwendungen und Anwendungspools
Um für einen bestimmten Anwendungspool alle aktuellen Anforderungen aufzulisten, benutzen Sie den
folgenden Befehl:
appcmd list request /apppool.name:"DefaultAppPool"
Alternativ hierzu können Sie die folgende Anweisung verwenden, um die aktuellen, auf die Website
Contoso Corp. bezogenen Anforderungen anzeigen zu lassen, die seit mehr als 60 Sekunden verarbeitet
werden:
appcmd list request /elapsed:"$>60000" /site.name:"Contoso Corp"
Das Abfragen eines REQUEST-Objekts versorgt Sie mit Echtzeitinformationen über die gegenwärtig verarbeiteten Anforderungen und es kann Ihnen helfen, Anforderungen zu identifizieren, die seit langer Zeit
ausgeführt werden, was für die Behandlung von Anwendungsproblemen besonders wichtig ist. Der
folgende Befehl listet die Arbeitsprozesse aller Anwendungspools auf, bei denen die Anforderungsverarbeitung viel Zeit beansprucht (Anforderungen, deren Verarbeitung länger als 60 Sekunden dauert).
Diese Anwendungspools werden recycelt.
appcmd list request /time:"$>60000"
/xml | appcmd list apppool /in /xml | appcmd recycle apppool /in
Beachten Sie die vorherige Syntax. Obwohl sie die Anwendungsverfügbarkeit durch das Recyceln von
Anwendungspools verbessert, geben bereits vorhandene Anforderungen und Sitzungsdetails während
des Recyclings verloren. Um den Verlust von Sitzungsvariablen zu verhindern, empfehlen wir, dass Sie
für Ihre Webanwendungen auf eine prozessexterne Sitzungsverwaltung zurückgreifen. Obwohl die auf
Anforderungen basierende Nachverfolgung über das REQUEST-Objekt Sie mit Echtzeitinformationen versorgt, erhalten Sie nicht alle Informationen zu den Ereignissen, die im Rahmen der Anforderungsverarbeitung auftreten. Um Probleme mit Anforderungen zu beheben, sollten Sie die Ablaufverfolgung für
Anforderungsfehler aktivieren, so dass Sie detaillierte Ereignisbenachrichtigungen abfangen können,
die innerhalb der Verarbeitungspipeline generiert wurden. Weitere Informationen zur Ablaufverfolgung
für Anforderungsfehler finden Sie im sechzehnten Kapitel, »Ablaufverfolgung und Problembehandlung«.
Zusammenfassung
Das Webanwendungskonzept ist ein sehr wichtiges IIS 7.0-Konzept, das einen Container für die Funktionalität von IIS 7.0-Websites definiert. Sie können Anwendungen erstellen und verwalten, um die
Ausführungsparameter für die Funktionalität Ihrer Website zu kontrollieren. Sie können ebenfalls
Anwendungen isolieren, indem Sie sie mit einem Anwendungspool verknüpfen. Der Anwendungspool
wird auch weiterhin aus Gründen der Zuverlässigkeit und Sicherheit für die Isolation der Anwendungsausführung verwendet.
In diesem Kapitel haben Sie sich mit der grundlegenden Erstellung und Verwaltung von IIS-Anwendungen und Anwendungspools sowie mit dem Einsatz von Tools zur Überwachung des Betriebs solcher
Anwendungen und Pools beschäftigt.
Lesen Sie auch das vierzehnte Kapitel, um mehr über die Nutzung von Anwendungspools zur
Abschirmung von Webanwendungen und zur Einschränkung von Rechten zu erfahren. Weitere Informationen zum Konfigurieren von Anwendungsframeworks für Ihre Anwendungen finden Sie im elften
Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Weitere Informationen
307
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Das vierte Kapitel, »Verstehen des Konfigurationssystems«, enthält Informationen zum neuen auf
XML basierenden Konfigurationssystem und zu wichtigen IIS 7.0-Konfigurationsdateien.
Das neunte Kapitel, »Verwalten von Websites«, enthält Informationen zur Verwaltung von Websites
und virtuellen Verzeichnissen unter IIS 7.0.
Das elfte Kapitel, »Hosting von Anwendungsentwicklungsframeworks«, hält Informationen zur
Konfi-guration verschiedener Anwendungsframeworks unter IIS 7.0 bereit. Dazu zählen z.B. ASP,
ASP.NET und CGI.
Das vierzehnte Kapitel, »Implementieren von Sicherheitsstrategien«, beschreibt die Konfiguration
von Anwendungspools mit Blick auf die Sicherheit sowie andere Sicherheitsüberlegungen, die der
Sicherung von IIS 7.0 dienen.
Das sechzehnte Kapitel, »Ablaufverfolgung und Problembehandlung«, enthält Informationen zur
Aktivierung der Ablaufverfolgung für Anforderungsfehler sowie zur Nachverfolgungsprotokolldatei von IIS 7.0.
WCAT (Web Capacity Analysis Tool) ist ein kostenlos erhältliches Tool von Microsoft, mit dem auf
einem IIS-Webserver Kapazitätsanalysen durchgeführt werden können. Um dieses Tool herunterzuladen, besuchen Sie bitte http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1466.
Der Microsoft Knowledge Base-Artikel 332088, "How to Modify Application Pool Recycling
Events in IIS 6.0" (für den eine maschinelle Übersetzung in die deutsche Sprache vorliegt), hält
Informationen zur Konfiguration der Überwachung von IIS 6.0-Anwendungspoolwiederverwendungsereignissen bereit. Sie finden diesen Artikel unter http://support.microsoft.com/kb/332088.
Der Microsoft Knowledge Base-Artikel 926939, "Error Message when You Request an ASP Page
That Connects to an Access Database in IIS 7.0" (für den eine maschinelle Übersetzung in die
deutsche Sprache vorliegt), informiert über Probleme mit Access-Datenbanken, die sich auf die
loadUserProfile-Einstellung von IIS 7.0 beziehen. Sie finden diesen Artikel unter http://
support.microsoft.com/kb/926939.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
309
K A P I T E L
1 1
Hosting von Anwendungsentwicklungsframeworks
Inhalt dieses Kapitels:
IIS als Anwendungsentwicklungsplattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP.NET-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASP-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PHP-Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anwendungsframeworks ermöglichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf der Begleit-CD
309
313
327
330
337
348
348
Auf der CD finden Sie weitere Tools und Ressourcen.
IIS als Anwendungsentwicklungsplattform
Wie viele andere Webservertechnologien diente auch IIS (Internet Information Services) ursprünglich nur
einem Zweck: der Bedienung von Browsersclients mit statischen Inhalten, wie z.B. HTML-Dokumenten und Bildern. Dazu wurde das HTTP-Protokoll verwendet. Neue Anforderungen an Webseiteanwendungen verlangten schließlich die Einbindung dynamischer Inhalte. Daraufhin wurde IIS eine einfache
CGI-Unterstützung (Common Gateway Interface) hinzugefügt, die die dynamische Generierung von
Webinhalten durch die Ausführung von Programmen ermöglichte. Die Programme, die gewöhnlich in
C oder C++ verfasst waren, basierten in der Regel auf keinem Anwendungsentwicklungsframework.
Das Web heute ist sehr viel komplexer, mit einer Vielzahl von Entwicklungsframeworks und Anwendungsumgebungen zur Erstellung dynamischer Webanwendungen, einschließlich ASP (Active Server
Pages), PHP (PHP Hypertext Preprocessor), Perl, Python, Flash Server, Java Servlets und ASP.NET.
Diese Frameworks fangen den größten Teil der Komplexität ab, die mit der Entwicklung von Webanwendungen einhergeht, und sie bieten außerdem umfassende Bibliotheken und Steuerelemente für
eine nachhaltige Benutzererfahrung. Darüber hinaus implementieren sie Schlüsselfunktionen, wie z.B.
die Verwaltung des Sitzungszustand, den Zugriff auf Datenbanken, die Anpassung von Inhalten usw.
IIS hat sich mit dem Web zu einer Plattform für das Hosting verschiedener Anwendungsentwicklungsframework-Technologien entwickelt. IIS 3.0 hat die ASP-Skriptumgebung eingeführt, die für die Erstellung von Windows-basierten, dynamischen Serveranwendungen oft genutzt wurde (die letzte ASPVersion war 3.0, die zusammen mit IIS 5.0 veröffentlicht wurde). Beginnend mit IIS 5.0 unter Windows
2000 wurde erstmals ASP.NET durch das .NET Framework 1.0 unterstützt. Dies ist seither das bevorzugte
Webanwendungsentwicklungsframework für Windows. Mittlerweile hat das ISAPI-Erweiterungsmodell
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
310 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
(Internet Server Application Programming Interface) auch andere Anwendungsframeworks möglich
gemacht, z.B. PHP und Perl, so dass diese ihren Weg in die IIS-Umgebung finden können.
Abgesehen vom Hosten der Webanwendungsframeworks unter Windows bietet die IIS-Umgebung
weitere wertvolle Leistungsmerkmale. Sie stellt ein fehlertolerantes Modell zum Hosten solcher
Anwendungen im Rahmen von IIS-Websites und Anwendungspools zur Verfügung, wodurch eine
ausfallsichere Ausführung und Verfügbarkeit gewährleistet wird. Dieses Modell ermöglicht außerdem das Hosten vieler Anwendungen auf demselben Server und bildet die Grundlage für die Isolation
dieser Anwendungen voneinander, so dass sie nicht die Ausführung der jeweils anderen Anwendungen
beeinflussen oder auf deren Inhalte zugreifen können. Da dies auf der IIS-Ebene geschieht, stellt
das Modell den Administratoren einen vereinheitlichten Mechanismus zur Verfügung, um Anwendungsinhalte bereitzustellen und die damit verbundene Konfiguration zu verwalten. Dazu wird eine
einzelne Gruppe von Tools und Technologien verwendet.
IIS implementiert außerdem ein breites Spektrum an Anforderungsverarbeitungfunktionalität. Dazu
zählen die Authentifizierung, die sichere Kommunikation über SSL (Secure Sockets Layer), die
Antwortkomprimierung, die Anforderungsprotokollierung usw. Wenn Webanwendungen von IIS
gehostet werden, können sie unabhängig von der Anwendungsframeworktechnologie den größten Teil
dieser Funktionalität nutzen.
Hinweis Um eine Übersicht über die Webserververbesserungen zu erhalten, die unter IIS 7.0 Anwendungen
betreffen, lesen Sie das erste Kapitel, »Einführung in IIS 7.0«.
IIS 7.0 hebt das Konzept eines Anwendungsservers auf eine neue Ebene. Es bietet erstens ein leistungsfähiges modulares Erweiterbarkeitsmodell an, mit dem es möglich ist, den Server selbst zu erweitern,
indem beliebige Teile seines integrierten Featuresatzes ersetzt oder neue Funktionalität hinzugefügt wird.
Es bietet außerdem die Möglichkeit, den Server mit dem .NET Framework zu erweitern, und zwar über
die Nutzung der integrierten ASP.NET-Plattform. Auf diese Weise können neue leistungsfähige Umgebungen für die Zusammenarbeit realisiert werden, z.B. eine Website, die selbst unter Verwendung anderer
Anwendungsframeworktechnologien vollständig mit der formularbasierten ASP.NET-Authentifizierung
geschützt wird. Diese Verbesserungen machen IIS 7.0 zu einer attraktiven Entwicklungsplattform und sie
ermöglichen es den Entwicklern, die Funktionalität einer Webanwendung unabhängig von der Anwendungsframeworktechnologie einfach zu erweitern. Zweitens führen die auf die Erweiterbarkeit bezogenen
Verbesserungen dazu, dass Entwickler IIS 7.0 sehr viel einfacher mit neuen Anwendungsframeworks
verbinden können, indem sie die Plattform zur Erweiterung des IIS-Kerns nutzen.
IIS 7.0 geht noch weiter und bietet eine integrierte Unterstützung neuer Webanwendungsframeworks.
Dies wird durch das FastCGI-Protokoll möglich. Viele Anwendungsframeworks von Drittanbietern
nutzen das FastCGI-Protokoll, zum Beispiel PHP und Ruby on Rails. FastCGI bietet beim Hosten
dieser Anwendungen eine bessere Ausfallsicherheit und Leistung als gewöhnliche CGI-Programme
oder ISAPI-Erweiterungen. Während der Entwicklung von Windows Server 2008 arbeitete das IISTeam sogar direkt mit Zend und der PHP-Community zusammen, um mithilfe des FastCGI-Protokolls
ein zuverlässiges PHP-Hosting über die IIS-Plattform zu ermöglichen. Aufgrund des Erfolgs der PHPInitiative werden in nächster Zukunft sicherlich noch mehr Anwendungsframeworks von Drittanbietern
erstmals von der IIS-Plattform unterstützt.
Anwendungsframeworks unterstützen
Die Standardinstallation von IIS 7.0 stellt lediglich die Mindestfunktionalität zur Verfügung, die für
einen statischen Webserver erforderlich ist. Bei einer Standardinstallation kann der Webserver somit für
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS als Anwendungsentwicklungsplattform
311
den Client statische Dateien, wie z.B. HTML-Dokumente oder Bilder, direkt bereitstellen, ohne eine
dynamische Verarbeitung durchführen zu müssen. Diese Funktionalität wird von dem IIS 7.0-Modul für
statische Dateien unterstützt, das so konfiguriert ist, dass es bestimmte statische Dateien unterstützt,
deren Dateinamenserweiterungen in der MIME-Typen-Konfiguration von IIS aufgelistet sind.
Wenn Sie nach der Standardinstallation versuchen, auf dem Webserver zusätzliche Anwendungsinhalte
bereitzustellen, kann sich bei einer Anforderung dieser Inhalte eine der folgenden Situationen ergeben:
Die angeforderte Ressource hat eine Dateinamenserweiterung, die sie als statische Datei kennzeichnet, weil sie als solche in der entsprechenden Webserverkonfiguration vermerkt ist. Diese
Ressource wird ohne Verarbeitung in der vorliegenden Form an den Client übermittelt.
Die angeforderte Ressource wird nicht als statische Datei erkannt. Das Modul für statische Dateien
weist die Anforderung mit dem Fehler 404.3 (Nicht gefunden) ab, wie in Abbildung 11.1 dargestellt. (Wenn Sie die Datei remote anfordern, erhalten Sie aus Sicherheitsgründen – die benutzerdefinierte Fehler betreffen – standardmäßig einen allgemeinen 404-Fehler.)
Abbildung 11.1 Ein 404.3-Fehler, der Aufschluss darüber gibt, dass eine Resource anhand der
Dateinamenserweiterung nicht als statische Datei erkannt wurde
Mit diesem in Abbildung 11.1 dargestellten Fehler können Sie immer rechnen, wenn Sie Inhalte
anfordern, die der Webserver nicht kennt. Auf diese Weise wird vermieden, dass Ressourcen, die dem
Webserver nicht bekannt sind, als statische Dateien bereitgestellt werden. Würden die dem Webserver
unbekannten Ressourcen in der vorliegenden Form übermittelt, könnte dies eine unerwünschte Offenlegung von Anwendungsquellcode oder anderer nicht verarbeitbarer Ressourcen zur Folge haben. Um
dieses Problem zu beheben, können Sie eine der folgenden Lösungen nutzen:
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
312 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Wenn die Ressource eine statische Datei ist, registrieren Sie ihre Dateinamenserweiterung und den
entsprechenden MIME-Typ, damit sie bereitgestellt werden kann.
Wenn die Ressource ein Skript oder eine andere Anwendungsressource ist, die von einem Anwendungsframework dynamisch verarbeitet werden muss, müssen Sie dieses Anwendungsframework
installieren und eine Handlerzuordnung konfigurieren, um das Anwendungsframework den gewünschten Inhalten zuzuordnen.
Die verbleibenden Abschnitte dieses Kapitels beschreiben, wie gebräuchliche Anwendungsframeworks
– einschließlich ASP, ASP.NET und PHP – installiert und konfiguriert werden. Es werden außerdem
allgemeine Techniken zur Konfiguration anderer Anwendungsframeworks vorgestellt.
Um mehr darüber zu erfahren, wie neue Inhaltstypen als statische Dateien bereitgestellt werden, lesen
Sie später in diesem Kapitel den Abschnitt »Die Verarbeitung von neuen statischen Dateien
konfigurieren«.
Unterstützte Anwendungsframeworks
Durch die Beibehaltung der Unterstützung alter ISAPI-Erweiterungen und CGI-Programme ermöglicht IIS 7.0 auch weiterhin den Einsatz aller Anwendungsframeworktechnologien, die bereits mit
früheren Versionen von IIS zusammenarbeiteten. Darüber hinaus stellt IIS 7.0 das FastCGI-Protokoll
zur Verfügung, mit dem es möglich ist, Frameworks wie PHP, Python usw. innerhalb der IIS-Umgebung
zu hosten. Tabelle 11.1 listet einige Anwendungsframeworks auf, die heute von IIS 7.0 offiziell
unterstützt werden (dabei handelt es sich um die Frameworks, die vom IIS-Team getestet wurden).
Tabelle 11.1 Unterstützte Anwendungsframeworks
Framework
Unterstützte Versionen
Integrationsmodell
ASP.NET
ASP.NET 1.1, ASP.NET 2.0 und zukünftige
Versionen
Klassisch (ISAPI-Erweiterung): ASP.NET 1.1, ASP.NET 2.0
Integriert: ASP.NET 2.0+
ASP
ASP 3.0
ISAPI-Erweiterung
PHP
PHP 4.4.6+, PHP 5.2.1+ für FastCGI, PHP 3.0+
für ISAPI- und CGI-Modi
FastCGI (empfohlen)
ISAPI-Erweiterung (für Produktionsumgebungen nicht
empfohlen)
ASP.NET nimmt eine besondere Stellung unter diesen Anwendungsframeworks ein, da es mit dem
neuen Integrationsmodus arbeitet, der es Ihnen ermöglicht, ASP.NET zu benutzen, um den IIS-Webserver mithilfe von verwaltetem Code zu erweitern. Auf diese Weise wird ASP.NET zum .NETErweiterbarkeitsmodell für die Entwicklung von IIS-Features. Außerdem können bereits vorhandene
ASP.NET-Features von einem IIS-Anwendungsframework genutzt werden. Die Änderungen, die an der
ASP.NET-Unterstützung vorgenommen wurden, um dies zu ermöglichen, sind später in diesem Kapitel
näher erläutert. Dort erfahren Sie auch, wie diese Änderungen genutzt werden.
Zusätzlich zu den in Tabelle 11.1 aufgeführten Frameworks wird IIS auch von den Anwendungsframeworks vieler Drittanbieter unterstützt. Dies geschieht mithilfe des alten ISAPI-Erweiterungsmechanismus. Zu diesen Frameworks zählen Cold Fusion, Perl, Python und Tcl. Die Unterstützung
des FastCGI-Protokolls führt dazu, dass viele Open Source-Frameworks, die für Apache und andere
Webserver entwickelt wurden, auch unter IIS ausgeführt werden können, z.B. Ruby on Rails usw. Sie
sind in Tabelle 11.1 nicht aufgelistet, weil das IIS-Team sie zur Drucklegung dieses Buches noch nicht
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
313
offiziell getestet hatte. Viele dieser Anwendungsframeworks arbeiten problemlos mit IIS 7.0 zusammen, andere weisen bestimmte Probleme auf, die in zukünftigen Versionen behoben sein werden, so
dass auch hier eine korrekte Funktionsweise gewährleistet sein wird. Das IIS-Team plant, die entsprechenden Anbieter und Communities zu beauftragen, diese Anwendungstechnologien zu erstellen,
um zu gewährleisten, dass sie innerhalb der IIS-Umgebung ausgeführt werden können und die Features
der IIS-Plattform effektiv nutzen.
In diesem Kapitel konzentrieren wir uns auf den Einsatz von ASP.NET-, ASP- und PHP-Anwendungen
in IIS 7.0 und erörtern bestimmte Überlegungen zum Hosting dieser Frameworks. Am Ende dieses
Kapitels werden außerdem Techniken zum Hosten zusätzlicher Frameworks vorgestellt, mit deren Hilfe
Sie die Nutzung bereits vorhandener und zukünftiger Anwendungsframeworks unter IIS 7.0 planen
können.
ASP.NET-Anwendungen hosten
ASP.NET ist die Anwendungsframeworkplattform, die für die Entwicklung funktionsreicher Webanwendungen, welche innerhalb einer IIS-Umgebung eingesetzt werden sollen, besonders geeignet ist. IIS
7.0 geht hierbei noch einen Schritt weiter, weil es ASP.NET 2.0 in seine Anforderungsverarbeitungspipeline integriert. Dies führt dazu, dass ASP.NET nicht mehr nur ein Anwendungsframework ist, das
auf dem Webserver aufsetzt, sondern eine originalgetreue .NET-API für die Erweiterung des Webserverkerns.
Dieses Design weist viele Vorteile für die IIS 7.0-Plattform auf. Erstens ermöglicht es die Entwicklung
modularer Webserverfeatures, wozu die Leistungsfähigkeit des .NET Frameworks und die umfassenden ASP.NET-Features genutzt werden. Zweitens trägt es dazu bei, dass auf dem Webserver viele der
bereits vorhandenen ASP.NET-Anwendungsdienste unabhängig vom Framework verwendet werden
können. Dies gilt sowohl für ASP.NET- als auch für andere Anwendungsframeworks. Serveradministratoren können somit beispielsweise nur jeweils eine Logik für die Authentifizierung, den Sitzungszustand und andere ASP.NET-Features einheitlich für eine vollständige Website verwenden, und zwar
unabhängig davon, mit welchem Anwendungsframework die Site arbeitet.
Direkt von der Quelle: Gewährleisten der Abwärtskompatibilität
mit ASP.NET-Anwendungen
Um die Integration von ASP.NET zu ermöglichen, mussten wir die ASP.NET 2.0-Engine von Grund
auf überarbeiten. Die neue Architektur machte viele Designänderungen erforderlich, die die Arbeitsweise von ASP.NET unter IIS 7.0 und die Konfigurationsweise von ASP.NET-Anwendungen
betrafen. Diese Änderungen mussten sich zwangsläufig auf die Kompatibilität mit bereits vorhandenen ASP.NET-Anwendungen auswirken.
Wir wollten jedoch sicherstellen, dass bereits vorhandene ASP.NET-Anwendungen im neuen ASP.NETIntegrationsmodus auch weiterhin richtig arbeiten würden. Die Gewährleistung der Abwärtskompatibilität war ein wichtiges Design- und Implementierungsziel für die integrierte ASP.NET-Pipeline. Während der Entwicklung des Projekts erwies sich dies als große Herausforderung.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
314 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Letztendlich wurde dieses Ziel größtenteils für IIS 7.0 erreicht. Bestimmte Bereitstellungs- und
Entwicklungsaspekte wirken sich jedoch auf das Verhalten von ASP.NET-Anwendungen unter IIS
7.0 aus. Wenn Sie mit diesen Änderungen konfrontiert werden, sollten Sie daran denken, dass sie zur
Unterstützung der neuen Funktionalitätsebenen von ASP.NET-Anwendungen und des Webservers
im Allgemeinen erforderlich waren. Für die meisten dieser Änderungen existieren einfache Workarounds, die es Ihren Anwendungen ermöglichen, die Vorzüge des integrierten Modus zu nutzen.
In einigen wenigen Fällen werden Sie dazu tendieren, Ihre Anwendungen für die Ausführung im
klassischen Modus zu konfigurieren, um diesen Änderungen aus dem Weg zu gehen – in diesem Fall
werden Sie jedoch die vielen Verbesserungen, die sich durch den integrierten Modus ergeben,
nicht nutzen können.
Mike Volodarsky
IIS-Kernserver Program Manager
Der Rest dieses Abschnitts erläutert die wichtigsten Konzeptänderungen, die die Arbeitsweise von
ASP.NET unter IIS 7.0 betreffen und bei deren Erarbeitung das Ziel im Vordergrund stand, die neue
Form der Webservererweiterbarkeit zu ermöglichen und gleichzeitig die Kompatibilität mit bereits
vorhandenen ASP.NET-Anwendungen beizubehalten.
Den integrierten und den klassischen ASP.NET-Modus verstehen
IIS 7.0 bietet zwei Modi für das Hosting von ASP.NET-Anwendungen an: Integriert und Klassisch. Der
integrierte Modus ist der neue Modus, der eine enge Verflechtung mit dem IIS-Webserver bietet und der
es ASP.NET-Anwendungen ermöglicht, als vom Anwendungsframework unabhängige Webserverfeatures verwendet zu werden. Dieser Modus ist der IIS 7.0-Standardmodus und bietet in den meisten
Fällen eine Abwärtskompatibilität mit bereits vorhandenen ASP.NET-Anwendungen. Die Konfiguration einiger bereits vorhandener ASP.NET-Anwendungen muss bisweilen ein wenig geändert werden,
damit diese im integrierten Modus richtig funktionieren. Der Server erkennt viele dieser notwendigen
Änderungen automatisch und hilft bei der Migration, indem er solche Anwendungen in nur einem
Schritt auf den integrierten Modus vorbereitet. Wir werden später in diesem Kapitel die Migration
ausführlich erörtern.
Der klassische Modus bietet die Option, ASP.NET-Anwendungen auf dieselbe Weise auszuführen, wie
dies in früheren Versionen von IIS geschah. Der klassische Modus hält keinen der zusätzlichen Vorzüge
bereit, die mit dem integrierten Modus einhergehen. Er ist als Ausweichlösung für solche ASP.NETAnwendungen gedacht, auf die sich die mit dem integrierten Modus verbundenen Änderungen auswirken.
Hinweis Verwechseln Sie die Integrationsmodi von ASP.NET (Integriert und Klassisch) nicht mit dem IIS-Arbeitsprozessisolationsmodus. Dabei handelt es sich um zwei ganz unterschiedliche Konzepte. IIS 7.0 unterstützt nur den
IIS 6.0-Prozessisolationsmodus. Der IIS 5.0-Isolationsmodus wird nicht mehr unterstützt. ASP.NET wird unabhängig
vom ASP.NET-Integrationsmodus immer prozessintern ausgeführt.
Die Unterschiede zwischen den beiden ASP.NET-Integrationsmodi sind in Abbildung 11.2 dargestellt.
Im klassischen Modus wird ASP.NET als ISAPI-Erweiterung in IIS integriert, die nur die ihr zugeordneten Anforderungen verarbeitet. Diese Erweiterung richtet eine zweite Anforderungsverarbeitungspipeline für ASP.NET-Anforderungen ein. Im integrierten Modus werden die von den ASP.NET-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
315
Modulen und -Handlern bereitgestellten ASP.NET-Features an die Anforderungsverarbeitungspipeline
von IIS angeschlossen, so dass mehrere Pipelines vermieden werden und die einzelne Pipeline für alle
an den Server gerichteten Anforderungen ausgeführt wird.
Abbildung 11.2 Integration von ASP.NET in IIS 7.0
Der integrierte Modus bietet mehrere wichtige Vorteile – sowohl für bereits vorhandene als auch für
neue ASP.NET-Anwendungen –, die ihn für den Betrieb unter IIS 7.0 prädestinieren:
ASP.NET-Anwendungsdienste können in der gesamten Website einheitlich verwendet werden und
sind nicht ausschließlich auf ASP.NET-Inhalte beschränkt. Dazu zählen solche ASP.NET-Features
wie die Formularauthentifizierung, Rollen, die Ausgabezwischenspeicherung und alle von Modulen
zur Verfügung gestellten benutzerdefinierten ASP.NET-Dienste, die Teil der Anwendung sind.
Diese Möglichkeit verringert auch die Verwaltungskomplexität, da nur ein Satz Funktionalität für
die gesamte Website verwaltet werden muss.
Es ist möglich, ASP.NET anstelle von maschinennahen C++-Schnittstellen zu benutzen, um mit
verwaltetem Code solche Module zu entwickeln, die Kernwebserverfeatures bereitstellen. Auf
diese Weise wird die Zeit, die zur Entwicklung und Bereitstellung neuer Serverfunktionen notwendig ist, drastisch verringert.
Wichtige ASP.NET- und IIS-Konfigurationen werden vereinheitlicht, was die Verwaltung von
Anwendungen vereinfacht.
Bei Shared Server-Umgebungen, z.B. Shared Hostingservern oder Abteilungsservern, kann der
Administrator dafür sorgen, dass Anwendungen wichtige Webserverfunktionen bereitstellen
dürfen. Dies geschieht unter Verwendung von verwalteten Modulen. Administrative Rechte oder
die globale Installation von Webserverfeatures auf dem Server sind hierfür nicht notwendig.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
316 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Hinweis Der integrierte Modus ist nicht erforderlich, um IIS- und ASP.NET-Konfigurationseinstellungen in denselben web.config-Dateien zu speichern. Er ist ebenfalls nicht erforderlich, um neue IIS 7.0-Features wie die URLAutorisierung und die Ausgabezwischenspeicherung nutzen zu können. Diese Fähigkeiten sind Bestandteil der
Webserverplattform und sie sind nicht vom ASP.NET-Integrationsmodus abhängig.
Mit IIS 7.0 ist es möglich, auf demselben Server mehrere ASP.NET-Anwendungen gleichzeitig auszuführen, die verschiedene Modi verwenden (Integriert bzw. Klassisch). Der ASP.NET-Integrationsmodus kann somit für jeden Anwendungspool ausgewählt werden. Deshalb ist es einfach, die meisten
ASP.NET-Anwendungen im integrierten Standardmodus ausführen zu lassen, während für die Anwendungen, denen dieser Modus Probleme bereitet, der klassische Modus verwendet wird. Später in diesem
Kapitel wird die Auswahl des Integrationsmodus für Anwendungen ausführlich erläutert.
Selbst wenn Ihre Anwendung nicht sofort die Vorzüge des integrierten Modus nutzt, sollten Sie sich
dennoch für diesen entscheiden – auch dann, wenn bestimmte Änderungen am Code notwendig sind.
Der Grund hierfür besteht darin, dass die Arbeit im integrierten Modus gewährleistet, dass die Anwendung darauf vorbereitet ist, heute und in Zukunft verfügbare spezifische Webserverfeatures des integrierten Modus zu nutzen. Darüber hinaus werden zukünftige Versionen von IIS den klassischen Modus
möglicherweise nicht mehr unterstützen. Alle Schritte, die Sie heute einleiten können, um alle Abhängigkeiten vom klassischen Modus auszuschließen, tragen somit dazu bei, dass künftige Migrationen zu
neuen IIS-Versionen einfacher sein werden. Der klassische Modus ist eher als temporäre Lösung
gedacht, um Anwendungen die Möglichkeit zu bieten, sich in Richtung IIS 7.0 zu bewegen. Er stellt
keinesfalls eine langfristige Option dar.
Mehrere ASP.NET-Versionen gleichzeitig ausführen
IIS hat schon immer die gleichzeitige Ausführung verschiedener ASP.NET-Versionen unterstützt, damit
ASP.NET-Anwendungen gehostet werden konnten, die mit verschiedenen Versionen des .NET Frameworks arbeiteten. Dies wurde durch die Zuordnung der im entsprechenden .NET Framework-Versionsverzeichnis enthaltenen ISAPI-Erweiterung Aspnet_isapi.dll zu den ASP.NET-Inhaltstypen der jeweiligen Anwendung ermöglicht. Das folgende Skript führt beispielsweise dazu, dass ASP.NET 2.0
verwendet wird, um Anforderungen zu verarbeiten, die sich auf .aspx-Seiten beziehen:
.aspx,E:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
Administratoren verwendeten oft das Tool Aspnet_regiis.exe, das sich im Verzeichnis %systemRoot%\
Microsoft.NET\Framework\version befand, um ASP.NET für ältere IIS-Versionen zu installieren. Dazu
wurden entweder auf dem gesamten Server oder für eine bestimmte Anwendung Handlerzuordnungen
für die entsprechende Version erstellt. Mit diesem Tool konnten Administratoren Skriptzuordnungen
von verschiedenen ASP.NET-Versionen zu den jeweiligen ASP.NET-Anwendungen erzeugen, so dass
diese unterschiedlichen ASP.NET-Versionen Seite an Seite ausgeführt werden konnten.
Dieser Ansatz war jedoch für Fehlkonfigurationen anfällig, die zu Problemen führten, welche dem
ASP.NET-Produktsupport-Team besonders häufig gemeldet wurden. Das berüchtigtste dieser Probleme
trat auf, wenn zwei Anwendungen, die mit verschiedenen ASP.NET-Versionen arbeiteten, im selben
Anwendungspool abgelegt wurden. Da pro Prozess nur eine Version der CLR (Common Language
Runtime) möglich ist, wurde die Anwendung, die als zweite angefordert wurde, nicht geladen. Das
hatte unerwartete und unvorhersehbare Fehler zur Folge.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
317
IIS 7.0 arbeitet mit einer neuen Form der ASP.NET-Versionsverwaltung, die sich des Umstandes bewusst
ist, dass in jedem IIS-Arbeitsprozess nur eine ASP.NET-Version genutzt werden darf. Bei IIS 7.0 wird
deshalb die für jeden IIS-Anwendungspool verwendete ASP.NET-Version mit dem Konfigurationsattribut
managedRuntimeVersion explizit konfiguriert. Die ASP.NET-Handlerzuordnungen werden nicht für die Versionsauswahl verwendet. Stattdessen werden sie auf dem Server vom ASP.NET-Setup global registriert
und mit den entsprechenden Versionsvorbedingungen konfiguriert, so dass sie in jedem Anwendungspool
basierend auf ihrer konfigurierten CLR-Version automatisch ausgewählt werden. Nachfolgend ist für ein
System, das mit ASP.NET 1.1 und ASP.NET 2.0 arbeitet, ein Auszug aus dem Konfigurationsabschnitt
system.webServer/handlers aufgeführt.
<add name="ASPNET-ISAPI-1.1-PageHandlerFactory" path="*.aspx"
verb="GET,HEAD,POST,DEBUG" modules="IsapiModule"
scriptProcessor="C:\Windows\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi
dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" />
<add name="PageHandlerFactory-Integrated" path="*.aspx"
verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory"
preCondition="integratedMode" />
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx"
verb="GET,HEAD,POST,DEBUG" modules="IsapiModule"
scriptProcessor="%systemroot%\Microsoft.NET\Framework\v2.0.50727\
aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32"/>
Die Vorbedingung runtimeVersion wird verwendet, um die *.aspx-Handlerzuordnung auf eine bestimmte
ASP.NET-Version vorzubereiten, so dass sie in Anwendungspools, die mit der entsprechenden Version
der verwalteten Laufzeit arbeiten, automatisch ausgewählt werden kann. Da diese Handlerzuordnungen
global installiert werden, müssen Sie nicht Aspnet_regiis.exe benutzen, um die ASP.NET-Version für
eine Anwendung auszuwählen oder ASP.NET-Handlerzuordnungen für die richtige Version manuell zu
erstellen.
Wenn Sie das managedRuntimeVersion-Konfigurationsattribut eines jeden IIS-Anwendungspools auf die
gewünschte Version setzen, gewährleisten Sie, dass alle Anwendungen in diesem Pool die korrekte
ASP.NET-Version verwenden. Somit wird der Anwendungspool zu der Stelle, an der die Versionsverwaltung für ASP.NET-Anwendungen erfolgt.
Hinweis Benutzen Sie nicht das Tool Aspnet_regiis.exe, um die ASP.NET-Versionen für Ihre Anwendungen zu
installieren und zu verwalten. Wählen Sie die gewünschte Version stattdessen mithilfe der Anwendungspools aus.
Dem Konfigurationsattribut managedRuntimeVersion können die folgenden Werte zugewiesen werden: v1.1,
v2.0 und "" (leer). Wenn Sie es auf einen leeren Wert setzen, wird keine CLR-Version in den Anwendungspool geladen, so dass darin keine ASP.NET-Anwendung ausgeführt werden kann.
Um sicherzustellen, dass Ihre Anwendung eine bestimmte ASP.NET-Version verwendet, können Sie
entweder einen neuen IIS-Anwendungspool generieren, den Sie so einrichten, dass er mit der richtigen
ASP.NET-Version arbeitet, oder Sie nutzen einen der bereits vorhandenen Anwendungspools, der für
die gewünschte Version konfiguriert wurde. Weitere Informationen zur Auswahl eines vorinstallierten
Anwendungspools mit der richtigen ASP.NET-Version finden Sie später in diesem Kapitel im Abschnitt
»Den richtigen Anwendungspool für die benötigte ASP.NET-Version und den entsprechenden
Integrationsmodus auswählen«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
318 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
ASP.NET installieren
Bevor Sie ASP.NET-Anwendungen mit IIS 7.0 hosten können, müssen Sie ASP.NET installieren. IIS
7.0 unterstützt die folgenden Versionen des ASP.NET-Frameworks:
ASP.NET 2.0
Dies ist die unter Windows Vista und Windows Server 2008 verfügbare ASP.NET-Standardversion,
die Bestandteil des .NET Frameworks, Version 3.0, ist und unter Windows Vista über Programme und
Funktionen und unter Windows Server 2008 über den Server-Manager als Rollendienst installiert
werden kann. ASP.NET 2.0 unterstützt sowohl den integrierten als auch den klassischen Modus.
ASP.NET 1.1
Ist kein Bestandteil des Betriebssystems. Sie können jedoch die .NET Framework 1.1-Redistributable zusammen mit dem .NET Framework 1.1 Service Pack 1 (SP1) herunterladen und installieren,
um ASP.NET 1.1 zu installieren. ASP.NET 1.1 unterstützt lediglich den klassischen Betriebsmodus.
ASP.NET 1.0 und das .NET Framework 1.0 werden nicht mehr unterstützt. Wenn Sie ASP.NET 1.0Anwendungen ausführen lassen möchten, müssen Sie diese upgraden, so dass sie unter ASP.NET 1.1
laufen.
Nach der Installation von ASP.NET müssen Sie eine IIS 7.0-Anwendung erstellen, die Ihre ASP.NETAnwendung hostet. Sie müssen außerdem möglicherweise einen gesonderten Anwendungspool erstellen,
so dass Sie den integrierten oder klassischen ASP.NET-Betriebsmodus auswählen können. Vielleicht
müssen Sie auch die Konfiguration Ihrer Anwendung migrieren, so dass diese im integrierten Modus
korrekt ausgeführt wird. Wir werden später in diesem Kapitel im Abschnitt »ASP.NET-Anwendungen
bereitstellen« einen genauen Blick auf diese Aufgaben werfen.
ASP.NET 2.0 installieren
ASP.NET 2.0 kann unter Windows Vista über Programme und Funktionen und unter Windows Server
2008 über den Server-Manager als Rollendienst installiert werden. Die Installation führt alle Schritte
zum Einrichten der IIS-Konfiguration aus, die benötigt wird, um ASP.NET 2.0 sowohl im klassischen
als auch im integrierten Modus auszuführen. Aspnet_regiis.exe muss dann nicht mehr verwendet
werden, um ASP.NET für IIS zu registrieren. Unter IIS 7.0 sollten Sie dieses Tool generell nicht
benutzen, um ASP.NET zu installieren.
Vorsicht Benutzen Sie nicht Aspnet_regiis.exe, um ASP.NET 2.0 unter IIS 7.0 zu installieren.
Sie können außerdem eine weitere Option nutzen. Wenn Sie nicht die gesamte ASP.NET-Funktionalität
benötigen, wie z.B. die Unterstützung von ASPX-Seiten und die integrierten ASP.NET-Handler und
-Module, müssen Sie ASP.NET nicht vollständig installieren. Sie können stattdessen die .NET-Erweiterbarkeitskomponente installieren, die dafür sorgt, dass auf dem Server benutzerdefinierte ASP.NET-Module
und -Handler von Anwendungen genutzt werden können, die im integrierten Modus ausgeführt werden.
Dies ist eine nützliche Option, wenn Sie im integrierten ASP.NET-Modus arbeiten möchten, um andere
Anwendungsframeworks mit benutzerdefinierten ASP.NET-Modulen zu erweitern und das ASP.NETAnwendungsframework selbst nicht benötigen.
Hinweis Wenn Sie anstelle von ASP.NET die .NET-Erweiterbarkeitskomponente installieren, können Anwendungen, die im integrierten Modus arbeiten, ASP.NET-Handler und -Module nutzen. Das ASP.NET-Anwendungsframework selbst (Unterstützung von ASPX-Seiten usw.) wird nicht installiert, so dass auch keine ASP.NET-Anwendungen
möglich sind, die den klassischen Modus nutzen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
319
Weitere Informationen zur Installation von IIS 7.0-Komonenten über das Windows-Setup finden Sie im
fünften Kapitel, »Installieren von IIS 7.0«.
ASP.NET 1.1 installieren
Im Gegensatz zu ASP.NET 2.0 ist ASP.NET 1.1 kein Bestandteil des Betriebssystems. Um es zu
installieren, müssen Sie die .NET Framework 1.1-Redistributable und das .NET Framework Service
Pack 1 (SP1) herunterladen und installieren. Das Update ist notwendig, um ASP.NET 1.1-Anwendungen ausführen zu können.
Um ASP.NET 1.1 zu installieren, gehen Sie wie folgt vor:
1. Installieren Sie die Komponente IIS 6-Metabasiskompatibilität. Mit dieser Komponente werden die
Metabasiskompatibilitäts-APIs installiert, die ASP.NET 1.1 benutzt, um sich selbst zu installieren
und zur Laufzeit die IIS-Konfiguration zu lesen. Sie können die IIS 6-Metabasiskompatibilität unter
Windows Vista über Programme und Funktionen und unter Windows Server 2008 über den ServerManager als Rollendienst installieren.
2. Laden Sie die .NET Framework 1.1-Redistributable herunter und installieren Sie diese.
3. Laden Sie das .NET Framework 1.1 Service Pack 1 (SP1) herunter und installieren Sie dieses.
4. Aktivieren Sie in den ISAPI- und CGI-Einschränkungen den Eintrag ASP.NET v1.1.4322. Sie können
dies mit dem IIS-Manager oder wie folgt mit Appcmd.exe tun:
%systemroot%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis –enable
5. Fügen Sie der machine.config-Datei des Frameworks 1.1 und dort dem Abschnitt system.webServer den
Handler IgnoreSection hinzu. Dies ist notwendig, weil ASP.NET 1.1 nicht die IIS 7.0-Konfiguration
kennt, die in web.config-Dateien gespeichert werden kann. Fügen Sie dem <configSections>-Element
die folgenden Einstellungen hinzu:
</configSections>
…
<section name="system.webServer"
type="System.Configuration.IgnoreSection" />
</configSections>
Die Installation des .NET Frameworks ruft automatisch Aspnet_regiis.exe -i auf, um ASP.NET 1.1 zu
installieren. Windows Server 2008 und Windows Vista SP1 verwenden einen Anwendungskompatibilitätsshim, um den Aufruf dieses Tools abzufangen und die erforderliche IIS 7.0-Konfiguration für die
Registrierung von ASP.NET 1.1 zu generieren. Diese Konfiguration setzt sich wie folgt zusammen:
ASP.NET 1.1-Handlerzuordnungen, die auf der Serverebene erzeugt werden und für die Vorbedingungen definiert sind, die dafür sorgen, dass diese Zuordnungen nur in solchen Anwendungspools
verwendet werden, die für das .NET Framework 1.1 konfiguriert sind.
Der Anwendungspool ASP.NET 1.1, der standardmäßig von ASP.NET 1.1-Anwendungen genutzt
werden kann. Dieser Anwendungspool ist immer (auch bei 64-Bit-Betriebssystemen) für die Ausführung im 32-Bit-Modus und die Nutzung des klassischen ASP.NET-Integrationsmodus konfiguriert.
Vorsicht Benutzen Sie nicht das Tool Aspnet_regiis.exe, um ASP.NET 1.1 unter IIS 7.0 zu installieren oder eine
bestimmte Anwendung für die Arbeit mit ASP.NET 1.1 zu konfigurieren. Legen Sie stattdessen jede Anwendung, die
mit dieser ASP.NET-Version arbeiten soll, im angebotenen ASP.NET 1.1-Anwendungspool ab oder erstellen Sie
einen neuen Anwendungspool, der das .NET Framework 1.1 verwendet. Weitere Informationen finden Sie früher
in diesem Kapitel im Abschnitt »Mehrere ASP.NET-Versionen gleichzeitig ausführen«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
320 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Wenn Sie neue Anwendungspools erstellen, um ASP.NET 1.1-Anwendungen zu hosten, muss für jeden
Anwendungspool:
das managedRuntimeVersion-Konfigurationsattribut auf v1.1 gesetzt werden.
das managedPipelineMode-Konfigurationsattribut auf Classic gesetzt werden. ASP.NET 1.1 unterstützt
nicht die Ausführung im integrierten Modus.
bei 64-Bit-Betriebssystemen das Konfigurationsattribut enable32BitAppOnWin64 auf true gesetzt werden.
ASP.NET 1.1 unterstützt keine Ausführung im nativen 64-Bit-Modus.
ASP.NET-Anwendungen bereitstellen
Nachdem Sie die korrekte ASP.NET-Version installiert haben, können Sie ASP.NET-Anwendungen auf
dem Server bereitstellen. Gehen Sie dazu wie folgt vor:
1. Erstellen Sie eine IIS-Anwendung.
2. Platzieren Sie die Anwendung in einem Anwendungspool mit der richtigen ASP.NET-Version und
dem entsprechenden Integrationsmodus.
3. Stellen Sie die ASP.NET-Anwendungsinhalte bereit.
4. Migrieren Sie die ASP.NET-Anwendungskonfiguration, damit die Anwendung im integrierten
Modus ausgeführt werden kann (dies ist optional und nur für ASP.NET 2.0-Anwendungen erforderlich, die im integrierten Modus ausgeführt werden und migriert werden müssen).
Eine IIS-Anwendung erstellen
Obwohl Sie ASP.NET-Seiten für jede Anwendung, jedes virtuelle Verzeichnis und jedes Unterverzeichnis bereitstellen können, möchten Sie eine ASP.NET-Anwendung und all ihre Inhalte in der Regel
in einer gesonderten IIS-Anwendung zur Verfügung stellen. Der Grund hierfür besteht darin, dass sich
die Elemente einer ASP.NET-Anwendung – z.B. Global.asax, das /BIN-Verzeichnis, das /App_CodeVerzeichnis und andere /App_-Verzeichnisse – im Stamm einer IIS-Anwendung befinden müssen.
Ähnlich hierzu müssen viele ASP.NET-Konfigurationseinstellungen in der web.config-Stammdatei
der Anwendung vorgenommen werden, damit sie Wirkung zeigen. Darüber hinaus werden Sie oft die
Inhalte einer ASP.NET-Anwendung von anderen Inhalten isolieren wollen, weil sie auf einer anderen
Anwendungsebene konfiguriert werden müssen oder Zustandsdaten verwenden, die mit der aktuellen
Anwendungsebene nicht kompatibel sind.
Diese Anforderung ist nicht neu, obwohl IIS 7.0 Anwendungen strenger definiert als vorherige IISVersionen. Deshalb müssen Sie sicherstellen, dass die ASP.NET-Anwendung im virtuellen Stammverzeichnis einer IIS-Anwendung bereitgestellt wird, und manchmal müssen Sie zu diesem Zweck eine
neue Anwendung erzeugen. Sie können dies mit dem IIS-Manager oder wie folgt mit Appcmd tun:
%systemroot%\system32\inetsrv\appcmd.exe add app "/site.name:SiteName"
"/path:VirtualPathOfApplication"
"/physicalPath:PhysicalRootDirectoryOfApplication"
Sie müssen möglicherweise ebenfalls eine gesonderte IIS-Anwendung erstellen, so dass diese in dem
Anwendungspool platziert werden kann, der die richtige .NET Framework-Version und den entsprechenden ASP.NET-Integrationsmodus verwendet. Dies wird gleich im Anschluss erläutert.
Weitere Informationen zur Erstellung und Verwaltung von Anwendungen erhalten Sie im zehnten
Kapitel, »Verwalten von Anwendungen und Anwendungspools«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
321
Den richtigen Anwendungspool für die benötigte ASP.NET-Version und den entsprechenden
Integrationsmodus auswählen
Nachdem Sie die Anwendung erstellt haben, müssen Sie sie so konfigurieren, dass sie einen Anwendungspool nutzt, der mit der richtigen ASP.NET-Version und dem entsprechenden Integrationsmodus
arbeitet. Im Gegensatz zu IIS 6.0 wird die von der Anwendung verwendete ASP.NET-Version nun auf
der Anwendungspoolebene festgelegt, was mit dem Konfigurationsattribut managedRuntimeVersion geschieht.
Dies gewährleistet eine vorab festgelegte Zuordnung zwischen IIS-Arbeitsprozessen und den von diesen
Prozessen geladenen CLR-Versionen. Ähnlich hierzu wird auch der ASP.NET-Integrationsmodus für
jeden einzelnen Anwendungspool gesetzt, was mit dem Konfigurationsattribut managedPipelineMode
geschieht. Sie müssen diese Einstellungen Ihren Absichten entsprechend konfigurieren, um sicherzustellen, dass Ihre Anwendung im richtigen Anwendungspool platziert wird. Tabelle 11.2 beschreibt diese
Einstellungen.
Tabelle 11.2 Standardanwendungspools für verschiedene ASP.NET-Versionen
Gewünschte Umgebung
Anwendungspooleinstellungen
ASP.NET 1.1
managedRuntimeVersion: v1.1
managedPipelineMode: Classic
Kann den Anwendungspool ASP.NET 1.1 verwenden
Integrierter ASP.NET 2.0-Modus
managedRuntimeVersion: v2.0
managedPipelineMode: Integrated
Kann den Standardanwendungspool DefaultAppPool verwenden
Klassischer ASP.NET 2.0-Modus
managedRuntimeVersion: v2.0
managedPipelineMode: Classic
Kann den Anwendungspool Classic .NET AppPool verwenden
Da alle neuen Anwendungen standardmäßig den Anwendungspool DefaultAppPool verwenden, arbeiten
sie im integrierten ASP.NET 2.0-Modus, weil DefaultAppPool für diesen Modus konfiguriert ist. Soll eine
ASP.NET 2.0-Anwendung im klassischen Modus ausgeführt werden, können Sie den vorinstallierten
Anwendungspool Classic .NET AppPool nutzen.
%systemroot%\system32\inetsrv\appcmd.exe set app "ApplicationPath"
"/applicationPool:Classic .NET AppPool"
Wenn Sie eine ASP.NET 1.1-Anwendung ausführen lassen möchten, können Sie diese im bereits
vorhandenen Anwendungspool ASP.NET 1.1 platzieren (der während der Installation von ASP.NET 1.1
vom .NET Framework 1.1-Setup erstellt wird).
%systemroot%\system32\inetsrv\appcmd.exe set app "ApplicationPath"
"/applicationPool:ASP.NET 1.1"
Sie können auch neue Anwendungspools erstellen und deren Konfigurationsattribute managedPipelineMode
und managedRuntimeVersion setzen, damit Ihre neue Anwendung richtig gehostet wird. Weitere Informationen zur Erstellung und Verwaltung von Anwendungspools finden Sie im zehnten Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
322 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
ASP.NET 2.0-Anwendungen für die Verwendung des integrierten Modus migrieren
Nachdem Sie eine IIS-Anwendung erstellt und im richtigen Anwendungspool platziert haben, können
Sie im Stammverzeichnis dieser Anwendung die entsprechenden Inhalte bereitstellen. Ihre Anwendung
sollte dann bereit für die Ausführung sein.
Wie bereits erwähnt wurde, arbeiten die meisten bereits vorhandenen ASP.NET 2.0-Anwendungen
ohne Probleme im integrierten Modus. In einigen Fällen sind jedoch Konfigurationsänderungen erforderlich, damit die Anwendung korrekt funktioniert. Diese Änderungen müssen vorgenommen werden,
weil IIS 7.0 im integrierten Modus einige ASP.NET-Konfigurationen übernimmt, damit die Integration
erfolgen kann. Wenn Ihre ASP.NET-Anwendung einen der betroffenen und in Tabelle 11.3 aufgeführten
Konfigurationsabschnitte definiert, erhalten Sie eine Fehlermeldung, sobald Sie die Inhalte dieser
Anwendung anfordern, wie in Abbildung 11.3 dargestellt.
Abbildung 11.3 Serverfehler, der Aufschluss darüber gibt, dass eine Migration erforderlich ist, damit die
Anwendung im integrierten Modus arbeiten kann
Der Fehler gibt an, dass die Anwendung eine nicht unterstützte ASP.NET-Konfiguration enthält. Im
Bereich Wahrscheinlichste Ursachen ist zu sehen, dass es sich dabei um den Konfigurationsabschnitt
system.web/httpModules handelt. Die Fehlerseite schlägt außerdem Schritte zur Behebung des Problems vor
(die in Abbildung 11.3 nicht dargestellt sind). Einer dieser Vorschläge bezieht sich auf das Migrieren der
Anwendungskonfiguration mit dem Befehlszeilentool Appcmd.exe (näheres hierzu folgt gleich).
Tabelle 11.3 beschreibt Fälle, in denen dieser Fehler ausgelöst wird, und nennt die zur
Problembehebung notwendigen Migrationsschritte.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
323
Tabelle 11.3 ASP.NET-Konfiguration, die für den integrierten Modus migriert werden muss
Situation
Empfohlene Aktion
Die Anwendung definiert im Konfigurationsabschnitt system.web/httpModules benutzerdefinierte Module
Entfernen Sie die Moduleinträge aus dem Abschnitt system.web/httpModules und
ordnen Sie sie im IIS-Abschnitt system.webServer/modules an. Das Migrationstool
kann dies automatisch tun.
Die Anwendung definiert im Konfigurationsabschnitt system.web/httpHandlers benutzerdefinierte Handlerzuordnungen
Entfernen Sie die Handlereinträge aus dem Abschnitt system.web/httpHandlers
und ordnen Sie sie im IIS-Abschnitt system.webServer/handlers an. Das Migrationstool kann dies automatisch tun.
Die Anwendung ermöglicht im Konfigurationsabschnitt system.web/identity den Anforderungsidentitätswechsel
Konfigurieren Sie die Anwendung für den klassischen Modus oder so, dass sie
diesen Fehler ignoriert
Die ersten beiden Fälle beziehen sich auf die Integration von ASP.NET-Handlern und -Modulen in die
IIS-Handler- und Modulkonfiguration. Im integrierten Modus werden ASP.NET-Module und -Handler
direkt in der IIS-Webserverpipeline ausgeführt und nicht in den ASP.NET-Konfigurationsabschnitten
system.web/httpModules und system.web/httpHandlers, sondern in den IIS-Abschnitten system.webServer/modules und
system.webServer/handlers konfiguriert. Sie können die notwendige Konfigurationsmigration automatisch
durchführen lassen, indem Sie den Appcmd-Befehl Migrate Config benutzen.
%systemroot%\system32\inetsrv\AppCmd Migrate Config "ApplicationPath"
ist der Konfigurationspfad der zu migrierenden Anwendung. Dieser Befehl führt eine
automatische Konfigurationsmigration durch, so dass die Anwendung im integrierten Modus korrekt
arbeitet.
Der letzte Fall bedarf einer näheren Erläuterung. ASP.NET-Anwendungen, die so konfiguriert sind, dass
sie für eine Anforderung die Identität des authentifizierten Benutzers annehmen, können diese Identitätsübernahme traditionell für die Dauer der gesamten Anforderung aufrechterhalten. Im integrierten Modus
ist die Identitätsübernahme erst nach der AuthenticateRequest-Phase möglich, aber ASP.NET-Module können
bereits früher in der Anforderungsverarbeitungspipeline ausgeführt werden. Dies ist in der Regel kein
Problem, da ASP.NET-Module zu Beginn der Anforderungsverarbeitungspipeline üblicherweise nicht auf
die Identitätsübernahme zurückgreifen müssen. IIS empfiehlt jedoch, Anwendungen, die die Identitätsübernahme nutzen, sicherheitshalber im klassischen Modus auszuführen. Wenn Sie wissen, dass Sie nicht
mit benutzerdefinierten ASP.NET-Modulen arbeiten, die in den Phasen BeginRequest und AuthenticateRequest
darauf angewiesen sind, eine bestimmte Identität anzunehmen, können Sie diese Empfehlung ignorieren,
indem Sie die Konfigurationsvalidierung für Ihre Anwendung deaktivieren. Die dazu notwendige
Vorgehensweise wird gleich erläutert.
Nachdem die Migration durchgeführt wurde, generiert Appcmd eine spezielle Konfiguration, die eine
weitere Validierung der Anwendung ausschließt. (Sie können diese Konfiguration nach der Migration
auch selbst manuell erstellen.) Die ASP.NET-Anwendung kann dann ihre frühere ASP.NET-Konfiguration, die für den klassischen Modus oder frühere IIS-Versionen verwendet wurde, beibehalten. Zusätzlich
wird die migrierte Konfiguration zur Verfügung gestellt, so dass ein sicherer Wechsel zwischen klassischem und integriertem Modus und zu Vorgängerplattformen möglich ist. Sie können diese Konfiguration
ebenfalls verwenden, um die Validierung zu deaktivieren, so dass <identity impersonate="true" /> zu keinem
Validierungsfehler führt. Eine solche Konfiguration ist wie folgt aufgebaut:
ApplicationPath
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
324 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Sobald diese Konfiguration der web.config-Datei der Anwendung hinzugefügt wurde, versucht IIS 7.0
nicht mehr, die ASP.NET-Konfiguration zu validieren. Nachdem Sie die Anwendung somit einmal
migriert haben, müssen Sie sicherstellen, dass Konfigurationsänderungen in den Konfigurationsabschnitten sowohl für den klassischen als auch für den integrierten Modus gespeichert werden.
Die Vorzüge des integrierten ASP.NET-Modus nutzen
Wenn Sie Ihre Anwendung im integrierten Modus bereitstellen, können Sie die Vorzüge der ASP.NETIntegration nutzen. Der Hauptvorteil ist die Möglichkeit, innerhalb Ihrer Anwendung die von den
ASP.NET-Modulen angebotenen Dienste für alle Anforderungen in Anspruch zu nehmen, und zwar
unabhängig davon, ob sich diese Anforderungen auf ASP.NET-Inhalte, statische Dateien oder andere
Anwendungsinhalte wie ASP oder PHP beziehen. Dies ist besonders für Entwickler von Bedeutung, die
nun schnell neue Module unter Verwendung vertrauter ASP.NET-APIs erstellen können, um Dienste für
die gesamte Website zur Verfügung zu stellen. Die Entwicklung mit komplizierten nativen und auf C++
basierenden Webserver-APIs, wie z.B. ISAPI, ist dazu nicht mehr notwendig. Diese Module können in
Form von Webserverfeatures, die Dienste wie die Authentifizierung anbieten, oder kleineren anwendungsspezifischen Modulen vorliegen, deren Dienstleistungen z.B. Umleitungen oder serverseitige
URL-Umschreibungen sind.
Weiterführende Informationen Weitere Informationen zur Entwicklung verwalteter Module und verwaltete
Beispielmodule finden Sie unter http://mvolo.com/blogs/serverside/archive/2007/08/15/Developing-IIS7-Webserver-features-with-the-.NET-framework.aspx.
Darüber hinaus können bereits vorhandene Anwendungen mithilfe des integrierten ASP.NET-Modus
sofort damit beginnen, ihre bereits vorhandenen Module oder die bereits vorhandenen Module, die
Bestandteil von ASP.NET sind, zu nutzen. Ein bekanntes Beispiel hierfür ist der Einsatz des integrierten
ASP.NET-Formularauthentifizierungsmoduls, um eine formularbasierte Authentifizierung für die
gesamte Website zur Verfügung zu stellen, so dass die leistungsfähigen ASP.NET-Anmeldesteuerelemente und die Mitgliedschaftsfunktionalität für die Benutzerverwaltung verwendet werden können.
Weiterführende Informationen Weitere Informationen zur Verwendung der Formularauthentifizierung für den
Schutz einer ganzen Website finden Sie unter http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/GettingStarted/How-to-Take-Advantage-of-the-IIS7-Integrated-Pipel.
Tabelle 11.4 listet die ASP.NET-Module auf, die innerhalb von im integrierten Modus arbeitenden Anwendungen verwendet werden können, um Dienste für die gesamte Website zur Verfügung zu stellen.
Alle integrierten ASP.NET-Module sind standardmäßig so konfiguriert, dass sie nur für ASP.NETInhaltstypen ausgeführt werden. Dies geschieht, um für Anwendungen, die im integrierten Modus
ausgeführt werden, eine Abwärtskompatibilität zu gewährleisten. Damit ein ASP.NET-Modul für alle
auf Ihre Anwendung bezogenen Anforderungen ausgeführt wird, müssen Sie innerhalb der Anwendung
die managedHandler-Vorbedingung aus dem entsprechenden Konfigurationselement des Konfigurationsabschnitts system.webServer/modules entfernen. Sie können dies mit dem IIS-Manager tun, indem Sie
im Hierarchielistenfeld Ihre Anwendung markieren, einen Doppelklick auf dem Symbol Module ausführen, auf das gewünschte Modul doppelklicken, um es zu bearbeiten, und das Kontrollkästchen Nur
für ASP.NET-Anwendungen und verwaltete Handler aufrufen deaktivieren, wie in Abbildung 11.4
dargestellt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP.NET-Anwendungen hosten
325
Tabelle 11.4 Module, die im integrierten Modus für alle Webseiteinhalte zur Verfügung stehen
Modul
Verwendungszweck
FormsAuthentication
Schützt die gesamte Website mit der formularbasierten Authentifizierung von ASP.NET. Dazu werden die
ASP.NET-Anmeldesteuerelemente und der Mitgliedschaftsdienst verwendet.
UrlAuthorization
Schützt die gesamte Website mit deklarativen Zugriffsteuerungsregeln für Benutzer und Rollen, die in der
Konfiguration festgelegt sind (Sie können ebenfalls das IIS-Modul UrlAuthorization benutzen)
RoleManager
Bietet eine umfassende Rollenunterstützung für jede Authentifizierungsmethode, die den ASP.NET-Rollendienst verwendet. Wird in der Regel zusammen mit UrlAuthorization für eine deklarative Zugriffssteuerung
oder ein benutzerdefiniertes Autorisierungsschema benutzt.
OutputCache
Speichert Anwendungsantworten zur Wiederverwendung im ASP.NET-Ausgabecache, um wesentliche
Leistungssteigerungen zu erzielen. Dies erfordert in der Regel zusätzlichen Code zum Konfigurieren des
Ausgabecaches.
Abbildung 11.4 Mit dem IIS-Manager das Formularauthentifizierungsmodul
für die Ausführung bei allen Anforderungen konfigurieren
Neue auf der Anwendungsebene hinzugefügte Module werden standardmäßig für alle Anforderungen
ausgeführt, sofern Sie dies nicht explizit verbieten. Weitere Informationen zur Aktivierung der Ausführung von ASP.NET-Modulen für alle Anforderungen finden Sie im zwölften Kapitel, »Verwalten von
Webservermodulen«.
Zusätzliche Überlegungen zur Bereitstellung
Dieser Abschnitt beschreibt einige zusätzliche Überlegungen zur Bereitstellung von ASP.NET-Anwendungen, die unter IIS 7.0 ausgeführt werden.
Grundlegende Veränderungen im integrierten ASP.NET 2.0-Modus
Die meisten ASP.NET 2.0-Anwendungen arbeiten korrekt, wenn sie nach der notwendigen Konfigurationsmigration im integrierten Modus gehostet werden. An einigen Anwendungen müssen jedoch grundlegende
Änderungen vorgenommen werden. Möglicherweise sind Änderungen am Anwendungscode notwendig,
oder die Anwendung muss im klassischen Modus ausgeführt werden. Weitere Informationen zur Auswahl
des ASP.NET-Integrationsmodus für eine Anwendung finden Sie früher in diesem Kapitel im Abschnitt
»ASP.NET-Anwendungen bereitstellen«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
326 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Die erforderlichen grundlegenden Änderungen und Workarounds sind unter http://mvolo.com/blogs/
serverside/archive/2007/12/08/IIS-7.0-Breaking-Changes-ASP.NET-2.0-applications-Integratedmode.aspx beschrieben.
ASP.NET-Anwendungen über Remote-UNC-Freigaben hosten
ASP.NET-Anwendungen werden standardmäßig mit der Anwendungspoolidentität ausgeführt. In
einigen Fällen können ASP.NET-Anwendungen ebenfalls konfiguriert werden, um die Identität des
authentifizierten Benutzers anzunehmen. In diesem Fall nehmen Anwendungen, die den anonymen
Zugriff gestatten, die Identität des anonymen Benutzers an, bei dem es sich standardmäßig um das
integrierte Konto IUSR handelt. Andernfalls nehmen sie die Identität des authentifizierten Benutzers an.
Wenn die Anwendung über eine UNC-Freigabe (Universal Naming Convention) gehostet wird,
besitzen der anonyme Standardbenutzer (IUSR) und die standardmäßige Anwendungspoolidentität
(Netzwerkdienst) nicht die notwendigen Rechte, um auf die Remotenetzwerkfreigabe zuzugreifen.
Deshalb müssen Sie sich für eine der folgenden Optionen entscheiden, um eine ASP.NET-Anwendung
so zu konfigurieren, dass sie über eine UNC-Freigabe problemlos genutzt werden kann:
Konfigurieren Sie feste Anmeldeinformationen für das virtuelle Stammverzeichnis der Anwendung, auf das über eine UNC-Freigabe zugegriffen wird. Diese Anmeldeinformationen müssen
über das Recht verfügen, auf die Remotefreigabe zuzugreifen. Der Webserver und die ASP.NETAnwendung nehmen dann immer die mit diesen Anmeldeinformationen verbundene Identität und
nicht die Prozessidentität oder die Identität des authentifizierten Benutzers an. Diese Option wird
für die meisten Fälle empfohlen.
Konfigurieren Sie eine benutzerdefinierte Anwendungspoolidentität, die auf die Freigabe zugreifen
kann. Wenn Sie mit der anonymen Authentifizierung arbeiten, richten Sie diese so ein, dass sie die
Anwendungspoolidentität verwendet, um auf die Anwendungsressourcen zuzugreifen. Sie können
diese Option für solche Situationen nutzen, in denen Sie Ihren Anwendungspool für die Verwendung eines Domänenkontos konfigurieren und dieses Domänenkonto einsetzen, um die Anwendung zu isolieren und den Zugriff auf die Netzwerkressourcen zu kontrollieren.
Wenn Sie eine benutzerdefinierte Anwendungspoolidentität benutzen, sollten Sie ebenfalls mit dem
Tool Aspnet_regiis.exe arbeiten, um sicherzustellen, dass die benutzerdefinierte Anwendungspoolidentität über die notwendigen Berechtigungen zur Ausführung von ASP.NET verfügt.
Aspnet_regiis.exe -ga Domain\UserName
ist die Domäne und UserName ist der Benutzername des benutzerdefinierten Kontos. Dies gewährleistet, dass das benutzerdefinierte Konto auf dem Webserver über alle notwendigen Berechtigungen
verfügt, um ASP.NET-Anwendungen auszuführen.
Darüber hinaus sollten Sie die folgenden Einschränkungen kennen, die sich auf das Hosting von
ASP.NET-Anwendungen über eine UNC-Freigabe beziehen:
ASP.NET-Anwendungen unterstützen keine Aufteilung von virtuellen Verzeichnissen in RemoteUNC-Freigaben und lokale Verzeichnisse. Das virtuelle Stammverzeichnis muss sich in einer
UNC-Freigabe befinden, damit diese untergeordnete virtuelle Verzeichnisse besitzen kann.
Domain
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP-Anwendungen hosten
327
Wenn die ASP.NET-Anwendung im Konfigurationsabschnitt system.webServer/identity eine benutzerdefinierte Anwendungsidentität festlegt, wird diese Identität für eine UNC-Freigabe angenommen,
weshalb sie ebenfalls Zugriffsrechte für diese Freigabe besitzen muss.
Sollen die in den ASP.NET-Anwendungen von UNC-Freigaben enthaltenen .NET-Assemblies (im
Verzeichnis /BIN oder /App_Code) korrekt arbeiten, müssen Sie ebenfalls die UNC-Codezugriffsicherheitsrichtlinie für den freigegebenen Netzwerkpfad bearbeiten. Dazu können Sie wie folgt das Befehlszeilenhilfsmittel Caspol.exe benutzen (wobei \\myshare\mydir\ der Pfad zum virtuellen Verzeichnis ist):
%systemroot%\Microsoft.NET\Framework\version\Caspol.exe –m –ag 1. –url
"file://\\myshare\mydir\*" FullTrust
Denken Sie daran, dass andere von der Website oder Anwendung genutzte Anwendungsframeworks
anders auf die jeweiligen Inhalte zugreifen können, so dass Sie das Zugriffsmodell auswählen müssen,
das für alle Anwendungskomponenten sinnvoll ist und das den mit der Berechtigungsverwaltung
einhergehenden Overhead auf ein Mindestmaß reduziert. Dies ist in der Regel das Modell mit den
festen Anmeldeinformationen für ein virtuelles Verzeichnis. Weitere Informationen zur Zugriffskonfiguration finden Sie im vierzehnten Kapitel, »Implementieren von Sicherheitsstrategien«.
ASP-Anwendungen hosten
IIS 7.0 unterstützt auch weiterhin ASP-Anwendungen, verbessert oder verändert die ASP-Unterstützung aber nicht, wie dies bei ASP.NET der Fall ist. ASP-Anwendungen profitieren jedoch von
der besseren Konfigurierbarkeit und den neuen Webserverfeatures, die von IIS 7.0 angeboten werden.
Darüber hinaus bietet die integrierte ASP.NET-Pipeline die Möglichkeit, nützliche ASP.NET-Features
für ASP-Anwendungen einzusetzen, so dass innerhalb kürzester Zeit eine Funktionalitätserweiterung
möglich ist, ohne die gesamte Anwendung in ASP.NET neu schreiben zu müssen.
Hinweis ASP.NET stellt Webanwendungen einen sehr viel reichhaltigeren Satz Webserverfunktionalität zur
Verfügung, ermöglicht mithilfe von Microsoft Visual Studio-Tools eine schnelle Entwicklung und bietet eine bessere
Interoperabilität mit den Features des .NET Frameworks und der Windows-Plattform.
In den nächsten Abschnitten dieses Kapitels werden wir die Schritte erörtern, die notwendig sind, um
ASP zu installieren und ASP-Anwendungen unter IIS 7.0 bereitzustellen.
ASP installieren
Aufgrund der modularen Natur von IIS 7.0 ist die ASP-Unterstützung eine eigenständige Komponente,
die installiert werden muss, bevor ASP-Anwendungen auf dem Server ausgeführt werden können. ASP
kann unter Windows Vista mithilfe der Komponente Programme und Funktionen und unter Windows
Server 2008 unter Verwendung des Server-Managers als Rollendienst installiert werden. Weitere Informationen zur Installation von IIS 7.0-Komponenten über das Windows-Setup oder die Befehlszeile
finden Sie im fünften Kapitel.
Die Installation von ASP führt automatisch zur Installation der ISAPI-Erweiterungsfunktionalität, weil
ASP in Form der ISAPI-Erweiterung ASP.dll implementiert wird. Außerdem wird die ISAPI-Erweiterung ASP.dll im Konfigurationsabschnitt system.webServer/security/isapiCgiRestriction automatisch aktiviert,
damit sie auf dem Server ausgeführt werden kann. Nachdem die ASP-Komponente installiert wurde,
sollten Ihre ASP-Anwendungen funktionieren.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
328 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
ASP-Anwendungen bereitstellen
Die Arbeitsweise von ASP-Anwendungen unter IIS hat sich bei IIS 7.0 nicht verändert. Demzufolge
sollten ASP-Anwendungen problemlos funktionieren. Sie müssen Handlerzuordnungen für ASP nicht
manuell erstellen, weil dies das Windows-Setup für Sie auf der Serverebene übernimmt, sobald die
ASP-Unterstützung installiert wird. Es fügt außerdem dem Konfigurationsabschnitt system.webServer/
security/isapiCgiRestriction die ISAPI-Erweiterung ASP.dll hinzu, damit diese ausgeführt werden kann.
Deshalb ist es nicht notwendig, diese Aufgabe wie bei IIS 6.0 (wo Sie in der Einschränkungsliste für
Webdiensterweiterungen eine entsprechende Aktivierung vornehmen müssen) manuell zu lösen. Um
eine ASP-Anwendung bereitzustellen, müssen Sie lediglich die folgenden Schritte ausführen:
1. Erstellen Sie eine IIS-Anwendung.
2. Stellen Sie die Inhalte der ASP-Anwendung bereit.
ASP-Anwendungen müssen ähnlich wie ASP.NET-Anwendungen innerhalb einer IIS-Anwendung
angeordnet werden. Diese Anforderung ist nicht neu, obwohl IIS 7.0 Anwendungen strenger definiert
als vorherige IIS-Versionen. Deshalb müssen Sie sicherstellen, dass die ASP.NET-Anwendung im
virtuellen Stammverzeichnis einer IIS-Anwendung bereitgestellt wird, und manchmal müssen Sie zu
diesem Zweck eine neue Anwendung erzeugen. Sie können dies dem IIS-Manager oder wie folgt mit
Appcmd tun:
%systemroot%\system32\inetsrv\appcmd.exe add app "/site.name:SiteName"
"/path:VirtualPathOfApplication"
"/physicalPath:PhysicalPathOfApplication"
Weitere Informationen zur Erstellung und Verwaltung von Anwendungen finden Sie im zehnten Kapitel.
Sie können ebenfalls einzelne ASP-Seiten für bereits vorhandene Anwendungen oder virtuelle Verzeichnisse Ihres Servers bereitstellen. In diesem Fall werden diese Seiten zu einem Bestandteil der
jeweiligen Anwendung. Wenn Ihre ASP-Anwendung jedoch Funktionalität auf der Anwendungsebene
enthält, z.B. die Datei Global.asa, müssen Sie sicherstellen, dass die Anwendungsinhalte im Stamm der
entsprechenden IIS-Anwendung bereitgestellt werden. In einigen Fällen werden Sie außerdem eine
gesonderte Anwendung erstellen wollen, um Ihre Anwendungsfunktionalität von anderen Anwendungen zu isolieren – z.B. wenn Ihre ASP-Seiten Zustandsdaten im ASP-Objekt Application speichern.
Hinweis Die .NET Framework-Version und der ASP.NET-Integrationsmodus des Anwendungspools, der eine ASPAnwendung hostet, haben keine Auswirkungen auf diese ASP-Anwendung. Deshalb können ASP-Anwendungen
unabhängig von diesen Einstellung in allen Anwendungspools ausgeführt werden. Damit jedoch ASP-Anwendungen die von den verwalteten Modulen angebotenen Dienste nutzen können, müssen sie sich in Anwendungspools
befinden, die den integrierten ASP.NET-Modus unterstützen.
Schließlich möchten Sie vielleicht die Vorzüge der Erstellung einer gesonderten Anwendung nutzen,
um Ihre Anwendung durch die Anordnung in einem separaten Anwendungspool zu isolieren. Dies kann
zu einer zusätzlichen Stabilität führen, weil zwischen Ihrer ASP-Anwendung und anderen Anwendungen auf dem Server eine Prozessgrenze errichtet wird. Sie können dann Berechtigungen für die
Anwendungsinhalte festlegen, so dass nur Ihr Anwendungspool darauf zugreifen darf.
Weitere Informationen zum Isolieren von Anwendungen erhalten Sie im vierzehnten Kapitel.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
ASP-Anwendungen hosten
329
Zusätzliche Überlegungen zur Bereitstellung
Dieser Abschnitt beschreibt zusätzliche Überlegungen zur Bereitstellung von ASP-Anwendungen, so
dass diese unter IIS 7.0 gehostet werden können.
Skriptfehler anzeigen lassen
Aus Gründen der Sicherheit verhindert IIS 7.0 standardmäßig, dass Skriptfehler zum Browser gesendet
werden. Sie können dieses Verhalten aktivieren, indem Sie im Konfigurationsabschnitt system.webServer/
asp das Konfigurationsattribut scriptErrorSentToBrowser setzen. Dies ist wie folgt mit Appcmd.exe möglich:
%systemroot%\system32\inetsrv\Appcmd set config ConfigurationPath
/section:system.WebServer/asp /scriptErrorSentToBrowser:true
ConfigurationPath ist der optionale Konfigurationspfad, für den diese Einstellung gesetzt werden soll.
Wenn Sie auf die Angabe verzichten, ist der Standard der gesamte Server.
Sie können zusätzlich das IIS 7.0-Feature Benutzerdefinierte Fehler konfigurieren, damit detaillierte
Fehlerinformationen zum Browser gesendet werden. IIS 7.0 sendet standardmäßig nur dann detaillierte
Fehlerantworten, wenn die entsprechende Anforderung vom lokalen Server aus erfolgte. Remoteclients
erhalten eine allgemeine Fehlermeldung. Weitere Informationen zur Konfiguration benutzerdefinierter
Fehler finden Sie im vierzehnten Kapitel.
Standardmäßige Deaktivierung von übergeordneten Pfaden
Seit IIS 6.0 ist die Möglichkeit, übergeordnete Pfadsegmente ("..") in Aufrufen von ASP-Funktionen
wie Server.MapPath zu verwenden, nicht mehr gegeben. Auf diese Weise soll verhindert werden, dass
Dateien außerhalb des Anwendungsstamms geöffnet werden. Dies kann bei einigen Anwendungen, die
solche übergeordneten Pfade zur Erstellung von Dateipfaden oder in #include-Direktiven verwenden, zu
Problemen führen.
Trifft dies auch auf Ihre Anwendung zu, erhalten Sie Fehlermeldungen wie »Die Include-Datei 'Dateiname' darf kein '..' zur Angabe des übergeordneten Verzeichnisses enthalten« oder »Im Pfadparameter
für die MapPath-Methode dürfen die Zeichen '..' nicht verwendet werden«. Wenn Sie mit einem solchen
Fehler konfrontiert werden, können Sie die Anwendung modifizieren, damit sie übergeordnete Pfade
nicht mehr benutzt. Oder Sie aktivieren übergeordnete Pfade, sofern Sie sicher sind, dass deren Einsatz
kein Sicherheitsrisiko darstellt. Dazu setzen Sie im Konfigurationsabschnitt system.webServer/asp das
Konfigurationsattribut enableParentPaths. Dies ist mit Appcmd.exe wie folgt möglich:
%systemroot%\system32\inetsrv\Appcmd set config ConfigurationPath
/section:system.WebServer/asp /enableParentPaths:true
Wie zuvor ist ConfigurationPath der optionale Konfigurationspfad, für den diese Einstellung gesetzt werden
soll. Wenn Sie auf die Angabe verzichten, ist der Standard der gesamte Server.
ASP-Anwendungen über Remote-UNC-Freigaben hosten
ASP-Anwendungen nehmen wie alle ISAPI-Erweiterungen standardmäßig die Identität des authentifizierten Benutzers an, wenn sie Skripts ausführen und auf Ressourcen zugreifen. Bei Anwendungen, die
den anonymen Zugriff gestatten, ist der authentifizierte Benutzer standardmäßig das integrierte Konto
IUSR. Sie können die anonyme Authentifizierung auch so konfigurieren, dass die Anwendungspoolidentität anstelle eines gesonderten Kontos genutzt wird.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
330 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Wenn die Anwendung über eine UNC-Freigabe (Universal Naming Convention) gehostet wird, besitzen
der anonyme Standardbenutzer (IUSR) und die standardmäßige Anwendungspoolidentität (Netzwerkdienst) nicht die notwendigen Rechte, um auf die Remotenetzwerkfreigabe zuzugreifen. Deshalb müssen
Sie sicherstellen, dass der Anwendungspool und der authentifizierte Benutzer das Recht für den Zugriff
auf die Netzwerkfreigabe erhalten. Dazu nutzen Sie in der Regel eine der folgenden Optionen:
Konfigurieren Sie feste Anmeldeinformationen für die virtuellen Verzeichnisse der Anwendung,
auf die über eine UNC-Freigabe zugegriffen wird. Diese Anmeldeinformationen müssen über das
Recht verfügen, auf die Remotefreigabe zuzugreifen. Die ASP-Anwendung nimmt dann immer die
mit diesen Anmeldeinformationen verbundene Identität und nicht die Identität des authentifizierten
Benutzers an.
Konfigurieren Sie eine benutzerdefinierte Anwendungspoolidentität, die auf die Freigabe zugreifen
kann. Wenn Sie mit der anonymen Authentifizierung arbeiten, richten Sie diese so ein, dass sie die
Anwendungspoolidentität verwendet. Wenn Sie mit anderen Authentifizierungsverfahren arbeiten,
sollten Sie sicherstellen, dass alle authentifizierten Benutzer auf die Netzwerkfreigabe zugreifen
können.
Weitere Informationen zur Zugriffskonfiguration finden Sie im vierzehnten Kapitel.
PHP-Anwendungen hosten
IIS 7.0 bietet eine integrierte Unterstützung des FastCGI-Protokolls, das hinsichtlich des Hostens von
PHP-Anwendungen effizienter und zuverlässiger als CGI oder ISAPI (die beiden anderen von PHP
unterstützen Verfahren) ist. Beim FastCGI-Protokoll entsteht nicht der Overhead, der mit der Erstellung
von Prozessen für einzelne Anforderungen einhergeht und kennzeichnend für das CGI-Protokoll unter
Windows ist. Dieser Overhead wird vermieden, indem Prozesse in Pools verwahrt und für die Verarbeitung von Anforderungen wiederverwendet werden. Dadurch, dass gewährleistet ist, dass gleichzeitig
nur eine Anforderung pro FastCGI-Prozess verarbeitet wird, bleibt die notwendige Single-ThreadedUmgebung erhalten, die von nicht-threadsicheren Anwendungsframeworks benötigt wird.
Direkt von der Quelle: Die Geschichte der PHP-Unterstützung in IIS
IIS unterstützt schon lange das PHP-Anwendungsframework. Die PHP-Standarddistributionen
bieten zwei Schnittstellen für IIS an: eine mit CGI kompatible ausführbare Datei und eine ISAPIErweiterung. Beide Modi weisen jedoch bestimmte Einschränkungen auf, die das IIS 7.0-Hosting
von PHP-Anwendungen in einer Produktionsumgebung oft unmöglich machen.
Der CGI-Modus ist oft mit Leistungseinbußen verbunden, weil für die Verarbeitung jeder Anforderung ein neuer PHP-CGI-Prozess gestartet werden muss. Diese erhöhte Prozessgenerierung
schränkt die Leistung auf der Windows-Plattform drastisch ein. Der ISAPI-Modus leidet nicht unter
Leistungsproblemen, weil ISAPI eine prozessinterne Multithreadingkomponente ist, die keine neuen
Prozesse startet und deshalb eine hohe Leistung bieten kann. Die PHP-Skriptengine und die meisten
vorwiegend verwendeten PHP-Erweiterungen wurden früher nicht unter dem Aspekt der Threadsicherheit entwickelt, was in der ISAPI-Multithreadingumgebung oft zu Instabilitäten und Abstürzen
führte. Selbst nachdem die PHP-Skriptengine threadsicher gestaltet worden war, blieben viele häufig
genutzte OpenSource-Erweiterungen nicht threadsicher, weshalb viele im ISAPI-Modus gehostete
PHP-Anwendungen weiterhin Instabilitäten aufwiesen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
PHP-Anwendungen hosten
331
Bei IIS 7.0 dachten wir lange darüber nach, was notwendig ist, damit IIS zu einer optimalen Anwendungsplattform wird. Wir kamen überein, dass hierzu die Unterstützung einer breiten Palette von
Anwendungsframeworks notwendig sei und dass sichergestellt werden müsse, dass diese Frameworks nicht nur zuverlässig unter IIS arbeiten, sondern ebenfalls die leistungsfähigen IIS 7.0- und
integrierten ASP.NET-Features nutzen können. Wir stellten fest, dass die PHP-Probleme auch bei
anderen Open Source-Anwendungsframeworks üblich waren, und so wurde das FastCGI-Projekt
geboren. Ich kündigte zusammen mit Bill Staples, dem IIS-Product Unit Manager, im September
2006 dieses Projekt als integralen Bestandteil unserer Zusammenarbeit mit Zend an, dem Entwickler
von PHP. Unser Ziel bestand darin, die IIS-Plattform mit einer äußerst stabilen PHP-Unterstützung
zu versorgen. Sie finden den ersten Blogeintrag hierzu unter http://mvolo.com/blogs/serverside/
archive/2006/09/29/Making-PHP-rock-on-Windows_2F00_IIS.aspx. Weitere Informationen zur
Geschichte des FastCGI-Projekts erhalten Sie im unter http://mvolo.com/blogs/serverside/archive/
2007/11/12/FastCGI-for-IIS-6.0-is-released-on-Download-Center.aspx.
Mittlerweile wurde Windows Server 2008 mit einer FastCGI-Unterstützung ausgestattet. Für IIS 6.0
kann diese Unterstützung heruntergeladen werden. Sie öffnet die Türen zum IIS-Hosting von PHPAnwendungen in Produktionsumgebungen. Wir arbeiten auch mit anderen AnwendungsframeworkCommunities zusammen, um sicherzustellen, dass sie die FastCGI-Umgebung erfolgreich nutzen
können, und wir hoffen, dass immer mehr Anwendungsframeworks FastCGI verwenden werden, um
besser mit IIS zusammenzuarbeiten.
Mike Volodarsky
IIS-Kernserver Program Manager
Im Rest dieses Abschnitts werfen wir einen Blick auf die Schritte, die notwendig sind, damit PHPAnwendungen unter IIS 7.0 ausgeführt werden können.
PHP-Anwendungen bereitstellen
Um die Arbeit mit PHP zu ermöglichen, müssen Sie zunächst FastCGI auf dem Server installieren.
Danach müssen Sie das PHP-Framework selbst herunterladen und installieren.
FastCGI installieren
Bevor Sie PHP im FastCGI-Modus ausführen können, müssen Sie FastCGI auf dem Server installieren.
Hinweis FastCGI kann ebenfalls verwendet werden, um andere mit FastCGI kompatible Anwendungsframeworks
zu hosten. Später in diesem Kapitel, im Abschnitt »Mit FastCGI arbeitende Frameworks bereitstellen«, erfahren Sie
mehr über den Einsatz von FastCGI zum Hosten von Anwendungsframeworks.
Die FastCGI-Unterstützung ist Bestandteil von Windows Vista SP1 und Windows Server 2008.
FastCGI kann unter Windows Vista mithilfe der Komponente Programme und Funktionen als Teil der
CGI-Komponente und unter Windows Server 2008 mithilfe des Server-Managers als Rollendienst
installiert werden.
Hinweis Die FastCGI-Unterstützung war unter Windows Vista kein Bestandteil von IIS 7.0, wurde aber mit dem
SP1 nachträglich hinzugefügt. Sie müssen somit SP1 installieren, um unter Windows Vista FastCGI nutzen zu
können. In Windows Server 2008 ist es standardmäßig enthalten.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
332 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Sobald die CGI-Komponente installiert ist, steht FastCGI auf dem Webserver zur Verfügung. Das
FastCGI-Modul ist ein eigenständiges Modul, das vom CGI-Modul getrennt ist, aber beide werden als
Teil des CGI-Setups installiert (die Gründe hierfür sind historisch bedingt). Die alleinige Installation
von FastCGI und CGI führt nicht automatisch dazu, dass Sie auf Ihrem Server CGI- oder FastCGIProgramme ausführen lassen können. Sie müssen die ausführbare PHP-FastCGI-Datei zunächst manuell aktivieren, damit eine entsprechende Ausführung möglich ist.
PHP installieren
Sie können die PHP-Framework-Builds von http://www.php.net/downloads herunterladen. Sie können
von derselben Site ebenfalls die PECL-Bibliothek (PHP Extension Community Library) herunterladen.
Dabei können Sie zwischen den folgenden beiden Optionen wählen:
Die Win32-Standardbinärdateien herunterladen
Die nicht-threadsicheren Win32-Binärdateien herunterladen
Hinweis Sie können ebenfalls einen auf MSI basierenden Installer herunterladen. Dieser Installer kann jedoch
problematische Konfigurationen generieren, weshalb diese Vorgehensweise nicht empfohlen wird.
Die nicht-threadsicheren Binärdateien sind für die FastCGI-Ausführungsumgebung optimiert. Diese
Umgebung verlangt keine Threadsicherheit, weil pro Anforderung ein Prozess ausgeführt wird. Die
Binärdateien verursachen somit eine drastische Leistungssteigerung, weil der mit der Threadsicherheit
einhergehende Overhead nicht mehr gegeben ist. Deshalb werden sie für die FastCGI-Umgebung von
IIS 7.0 empfohlen.
Vorsicht Benutzen Sie die threadsicheren Standardbibliotheken, wenn Sie beabsichtigen, PHP in der ISAPIUmgebung einzusetzen. Dies kann jedoch zu Instabilitäten führen und wird nicht empfohlen, da nicht alle PHPErweiterungen threadischer sind. Benutzen Sie FastCGI mit den nicht-threadsicheren PHP-Binärdateien, um eine
optimale Leistung und Stabilität zu erzielen.
Nach dem Herunterladen der PHP-Binärdateien können Sie sie einfach in ein Verzeichnis Ihres
Computers entpacken und eine Standardinstallation durchführen, bei der bisweilen die empfohlene
php.ini-Konfigurationsdatei im PHP-Verzeichnis in Php.ini umbenannt und modifiziert werden muss,
damit Ihre PHP-Anwendungen ausgeführt werden können. Sie sollten mindestens die in Tabelle 11.5
aufgeführten .INI-Einstellungen von PHP konfigurieren.
Tabelle 11.5 PHP-.INI-Einstellungen für FastCGI unter IIS 7.0
PHP-.INI-Einstellung
Beschreibung
cgi.fix_pathinfo=1
Gewährleistet, dass für die CGI-Servervariablen PATH_INFO und PATH_TRANSLATED die richtigen
Werte verwendet werden. Früher setzte PHP PATH_TRANSLATED auf SCRIPT_FILENAME und ignorierte
PATH_INFO. Die aktuelle Einstellung veranlasst PHP, pfadbezogene Variablen so zu setzen, dass sie
der CGI-Spezifikation entsprechen.
fastcgi.impersonate = 1
Diese Einstellung ermöglicht es PHP, die Identität des authentifizierten Benutzers anzunehmen.
Vielleicht möchten Sie diese Einstellung nutzen. Weitere Informationen hierzu finden Sie später in
diesem Kapitel im Abschnitt »Konfigurieren der PHP-Ausführungsidentität«.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
PHP-Anwendungen hosten
333
Sie müssen möglicherweise weitere Einstellungen konfigurieren, die sich auf die von Ihnen verwendete
PHP-Anwendung beziehen, um beispielsweise eine benötigte PHP-Erweiterungsbibliothek zu laden.
Darüber hinaus möchten Sie vielleicht einige FastCGI-Einstellungen setzen, um die Leistung an die
Bedürfnisse Ihrer PHP-Anwendung anzupassen. Dies wird später in diesem Kapitel im Abschnitt »Die
Verfügbarkeit von PHP-Anwendungen sicherstellen« beschrieben.
Um schließlich zuzulassen, dass PHP von IIS aus verwendet werden kann, müssen Sie sicherstellen,
dass IIS über Lesezugriffsrechte für das Verzeichnis verfügt, das die PHP-Framework-Dateien und die
Anwendungsinhalte enthält. IIS-Anwendungspools werden standardmäßig unter der Identität Netzwerkdienst ausgeführt und sind somit Mitglieder der Gruppe Benutzer, die über Lesezugriffsrechte für
die meisten Verzeichnisse des Servers verfügt. Wenn Netzwerkdienst jedoch nicht auf das entsprechende Verzeichnis zugreifen kann oder Sie eine benutzerdefinierte Anwendungspoolidentität verwenden, können Sie der Gruppe IIS_IUSRS die Rechte Lesen und Ausführen gewähren, damit IIS auf die
PHP-Frameworkdateien zugreifen kann.
PHP-Anwendungen bereitstellen
Damit PHP-Anwendungen unter Verwendung von FastCGI ausgeführt werden können, müssen Sie wie
folgt vorgehen:
1. Erstellen Sie einen FastCGI-Anwendungseintrag für jede PHP-Version.
2. Erstellen Sie eine FastCGI-Handlerzuordnung, damit *.php-Skripts von der ausführbaren PHPDatei verarbeitet werden, die mit FastCGI kompatibel ist.
Da der IIS-Manager den ersten Schritt automatisch ausführt, wenn Sie die entsprechende Handlerzuordnung erstellen, werden wir lediglich das Generieren dieser Zuordnung erörtern.
FastCGI-Handlerzuordnungen für PHP erstellen
Wenn die FastCGI-Unterstützung und das PHP-Framework auf dem Server installiert sind, können Sie
dafür sorgen, dass PHP-Skripts unter Verwendung von FastCGI ausgeführt werden. Erstellen Sie dazu
eine IIS-Handlerzuordnung, die das FastCGI-Modul benutzt, um auf PHP-Skripts bezogene Anforderungen unter Verwendung der ausführbaren PHP-FastCGI-Datei zu verarbeiten. Diese Zuordnung kann
dem Server global hinzugefügt werden, damit PHP-Skripts in allen Websites des Servers ausgeführt
werden können. Sie kann aber auch für eine bestimmte Site oder einen spezifischen URL hinzugefügt
werden, damit die Ausführung von PHP-Skripts nur dort möglich ist.
Das Erstellen dieser Handlerzuordnung ist mit dem IIS-Manager schnell erledigt. Markieren Sie zunächst
im Hierarchielistenfeld den Knoten des Servers oder der gewünschten Site, je nachdem, welchen Gültigkeitsbereich Sie für die Handlerzuordnung vorgesehen haben. Führen Sie anschließend einen Doppelklick
auf Handlerzuordnungen aus. Weitere Informationen zur Erstellung und Verwaltung von IIS-Handlerzuordnungen finden Sie im zwölften Kapitel und dort im Abschnitt »Handlerzuordnungen hinzufügen«.
Sie können die Handlerzuordnung für PHP erstellen, indem Sie wie in Abbildung 11.5 dargestellt
die Aktion Modulzuordnung hinzufügen verwenden, im Dropdown-Listenfeld Modul den Eintrag
FastCGIModule auswählen und den Pfad zur ausführbaren Datei PHP-CGI.EXE angeben, die sich in
Ihrem PHP-Installationsverzeichnis befindet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
334 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Abbildung 11.5 Mit dem IIS-Manager eine FastCGI-Handlerzuordnung für PHP hinzufügen
Wenn Sie auf OK klicken, um die Zuordnung zu erstellen, wird ein Dialogfeld angezeigt, das von Ihnen
wissen möchte, ob für die ausführbare Datei Php-cgi.exe ein FastCGI-Anwendungseintrag erzeugt
werden soll, wie in Abbildung 11.6 dargestellt. Dies ist notwendig, um Php-cgi.exe mit FastCGI
ausführen zu können (dies ist vergleichbar mit dem Hinzufügen einer ausführbaren CGI-Datei zur
Einschränkungsliste für Weberweiterungen bei IIS 6.0).
Abbildung 11.6 Dialogfeld zum Bestätigen der Modulzuordnung
Wenn Sie in diesem Dialogfeld auf OK klicken, wird die erforderliche FastCGI-Anwendungskonfiguration automatisch erzeugt. Eine manuelle Konfiguration ist nicht erforderlich. Dieses Dialogfeld
wird nur einmal angezeigt, wenn ein Pfad zur ausführbaren Datei Php-cgi.exe zum ersten Mal angegeben wird. Es bietet die Generierung eines globalen FastCGI-Anwendungseintrags für die jeweilige
ausführbare Datei an. Dies bedeutet, dass Sie das Dialogfeld nur einmal für jede PHP-Version zu
Gesicht bekommen, die Sie auf dem Server im Rahmen einer Handlerzuordnung einrichten. Da für jede
eindeutige ausführbare Datei ein eigener FastCGI-Anwendungseintrag erzeugt wird, können Sie auf
Ihrem Server PHP-Anwendungen hosten, die mit verschiedenen PHP-Frameworkversionen arbeiten.
Um mit mehreren Versionen gleichzeitig zu arbeiten, erstellen Sie einfach separate PHP-Handlerzuordnungen, indem Sie die jeweiligen Versionen der ausführbaren Datei Php-cgi.exe für verschiedene Sites
auf dem Server konfigurieren. Der IIS-Manager bietet Ihnen für jede Version an, einen FastCGIAnwendungseintrag zu erzeugen.
Der FastCGI-Anwendungseintrag definiert zusätzliche Einstellungen, die z.B. Aufschluss über die
maximale Anzahl von Anforderungen geben, die eine einzelne Instanz des Php-cgi.exe-Prozesses
ausführen kann, aber auch darüber, wie viele dieser Prozesse gleichzeitig erzeugt werden dürfen. Später
in diesem Kapitel im Abschnitt »Mit FastCGI arbeitende Frameworks bereitstellen« erfahren Sie mehr
über die Konfiguration anderer FastCGI-Anwendungseinstellungen über die Befehlszeile.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
PHP-Anwendungen hosten
335
Zusätzliche Überlegungen zur Bereitstellung
Wenn PHP in der FastCGI-Umgebung ausgeführt wird, sollten Sie auch einige weitere Überlegungen
zur Bereitstellung berücksichtigen. Diese sind nachfolgend aufgeführt:
Das Festlegen der Ausführungsidentität für PHP-Skripts
Das Gewährleisten der Verfügbarkeit von PHP-Anwendungen durch Konfigurieren der Parallelität
und Prozesslebensdauer
Diese Überlegungen beziehen sich auf das FastCGI-Prozessmodell, das sich darauf auswirkt, wie PHPProzesse im FastCGI-Modus erzeugt und zur Verarbeitung von PHP-Anforderungen verwendet werden.
Das FastCGI-Prozessmodell ist später in diesem Kapitel im Abschnitt »Mit FastCGI arbeitende
Frameworks bereitstellen« ausführlich erläutert. Wenn Sie mit FastCGI nicht besonders vertraut sind,
sollten Sie diesen Abschnitt lesen, bevor sie sich dem Abschnitt »Konfigurieren der PHPAusführungsidentität« zuwenden.
Konfigurieren der PHP-Ausführungsidentität
PHP-Skripts werden standardmäßig unter der Prozessidentität des Php-cgi.exe-Arbeitsprozesses
ausgeführt. Im Gegensatz zu CGI, das für die Verarbeitung jeder Anforderung einen neuen Prozess
startet und diesen Prozess unter der Identität des von IIS authentifizierten Benutzers ausführt, sind
FastCGI-Arbeitsprozesse langlebig und werden immer unter derselben Identität wie der übergeordnete
Anwendungspool ausgeführt. Dies bedeutet, das PHP-Skripts mithilfe der Identität des Anwendungspools ausgeführt werden, dem die IIS-Anwendung zugeordnet ist, die das Skript enthält. Dies lässt sich
sehr gut mit dem IIS-Modell vereinbaren und es ermöglicht Ihnen, in der gesamten Site den Zugriff auf
Ressourcen einheitlich zu verwalten. Es ermöglicht Ihnen außerdem, PHP-Anwendungen unter Verwendung der Anwendungspoolisolation sicher zu isolieren, also in derselben Weise wie dies auch für
andere Siteinhalte geschieht. Weitere Informationen zur Anwendungspoolisolation finden Sie im
vierzehnten Kapitel.
Hinweis Im Gegensatz zu CGI werden FastCGI-Anwendungsprozesse, wozu auch der PHP-Prozess Php-cgi.exe
zählt, immer unter der Identität des Anwendungspools ausgeführt, dem die PHP-Anwendung zugeordnet ist.
Einige PHP-Anwendungen sind jedoch darauf angewiesen, PHP-Skripts unter der Identität des authentifizierten Benutzers auszuführen. Dies wird oft als Möglichkeit genutzt, um mithilfe des von IIS authentifizierten Benutzers den Zugriff auf andere von der Anwendung verwendete Ressourcen zu autorisieren
und Benutzer voneinander zu isolieren. PHP-Anwendungen, die im CGI- oder ISAPI-Modus ausgeführt
werden, nehmen sogar standardmäßig die Identität des authentifizierten Benutzers an. Historisch betrachtet war dieser Identitätswechsel sehr wichtig, um die Ausführungsberechtigungen von PHP-Skripts einzuschränken. Dies geschah, weil es möglich war, dass der übergeordnete IIS-Prozess unter der Identität des
Kontos LocalSystem ausgeführt wurde (bei IIS 5.0 und vorherigen Versionen). Diese Anforderung ist bei
IIS 7.0 hinfällig, weil IIS-Anwendungspools standardmäßig so konfiguriert sind, dass sie mit den eingeschränkten Berechtigungen des Kontos Netzwerkdienst ausgeführt werden.
Sollen PHP-Skripts in der FastCGI-Umgebung unter der Identität des authentifizierten Benutzers ausgeführt werden, können Sie PHP entsprechend konfigurieren. Obwohl der Php-cgi.exe-Prozess in diesem
Fall auch weiterhin unter der Identität des übergeordneten Anwendungspools ausgeführt wird, nimmt die
PHP-Engine bei der Ausführung von PHP-Skripts die Identität des authentifizierten Benutzers an. Dazu
wird in der PHP-Konfigurationsdatei Php.ini die fastcgi.impersonate-Einstellung auf 1 gesetzt.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
336 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
; FastCGI unter IIS (bei auf WINNT basierenden Betriebssystemen) unterstützt die
; Möglichkeit, einen Identitätswechsel auf Grundlage des Sicherheitstokens des
; aufrufenden Clients durchzuführen. Dies ermöglicht es IIS, den Sicherheitskontext zu
; definieren, in dem die Anforderung ausgeführt wird. Setzen Sie die Einstellung auf 1,
; wenn eine Ausführung unter IIS erfolgt. Die Vorgabe ist 0.
fastcgi.impersonate = 1
Hinweis Der Identitätswechsel zeigt nur dann Auswirkungen, wenn ein authentifizierter Benutzer verfügbar ist
und dieser einen gültigen Windows-Prinzipal repräsentiert. Authentifizierungsschemata, die nicht auf Windows
basieren, z.B. die Formularauthentifizierung, unterstützen keinen Identitätswechsel.
Wenn der Identitätswechsel und die anonyme Authentifizierung zum Einsatz kommen, werden PHPSkripts standardmäßig unter der IUSR-Identität ausgeführt (bei IIS 7.0 ist dies der anonyme Benutzer).
Sie können die Identität des anonymen Benutzers im Konfigurationsabschnitt system.webServer/security/
authentication/anonymousAuthentication ändern und dafür sorgen, dass der anonyme Benutzer zur Identität
eines Arbeitsprozesses wird. Das vierzehnte Kapitel hält weitere Informationen zur anonymen IIS 7.0Authentifizierung bereit.
Hinweis FastCGI unter IIS 7.0 unterstützt die Annahme der Identität des authentifizierten Benutzers. Zur Drucklegung dieses Buches wurde dies jedoch ausschließlich vom PHP-Framework unterstützt. Andere Frameworks,
die FastCGI nutzen, werden unter der Identität des übergeordneten Anwendungspools ausgeführt.
PHP-Anwendungen über Remote-UNC-Freigaben hosten
Wenn PHP-Anwendungen über Remote-UNC-Freigaben ausgeführt werden, müssen Sie sicherstellen,
das der Php-cgi.exe-Prozess auf die Anwendungsinhalte in der UNC-Freigaben zugreifen kann. Aufgrund der beiden früher in diesem Kapitel beschriebenen Mechanismen zur Ausführung von PHP
können Sie zwischen zwei Optionen wählen, um diesen Zugriff zu konfigurieren:
Wenn Sie den Identitätswechsel nutzen, konfigurieren Sie feste Anmeldeinformationen für das
virtuelle Verzeichnis, das die PHP-Anwendungsinhalte über eine Remote-UNC-Freigabe hostet.
PHP nimmt dann die zu diesen Anmeldeinformationen passende Identität an, wenn es auf die
Inhalte zugreift und Skripts ausführt. Diese Option wird empfohlen.
Wenn Sie den Identitätswechsel nicht nutzen, stellen Sie sicher, dass die Anwendungspoolidentität
auf die UNC-Freigabe zugreifen kann.
Weitere Informationen zur Zugriffskonfiguration finden Sie im vierzehnten Kapitel.
Die Verfügbarkeit von PHP-Anwendungen sicherstellen
Der FastCGI-Hostingsmodus bietet mehrere Einstellungen an, die konfiguriert werden können, um die
Leistung und Verfügbarkeit von PHP-Anwendungen anzupassen. Diese Einstellungen sind im globalen
Konfigurationsabschnitt system.webServer/fastCgi und dort im jeweiligen FastCGI-Anwendungseintrag
verfügbar, der für jede eindeutige vom System verwendete Php-cgi.exe-Version definiert ist.
Weiterführende Informationen Um mehr über diese Einstellungen und darüber zu erfahren, wie sie konfiguriert
werden, lesen Sie später in diesem Kapitel den Abschnitt »FastCGI-Anwendungseinstellungen modifizieren«.
Diese Einstellungen müssen bisweilen konfiguriert werden, um die Verfügbarkeit von PHPAnwendungen zu gewährleisten. Dazu wird das FastCGI-Poolverhalten angepasst. Besonders die
instanceMaxRequests-Einstellung der PHP-FastCGI-Anwendungen, die die maximale Anzahl der von
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
337
jedem Php-cgi.exe-Prozess verarbeiteten Anforderungen vor dem Herunterfahren des Prozesses
festlegt, muss auf eine Zahl unter dem PHP-Anforderungslimit gesetzt werden. Dieses Limit ist
standardmäßig 500 und Sie können es ändern, indem Sie in der FastCGI-Anwendungskonfiguration die Umgebungsvariable PHP_FCGI_MAX_REQUESTS setzen (Lesen Sie den Abschnitt »FastCGIAnwendungseinstellungen modifizieren«, um weitere Informationen darüber zu erhalten, wie in der
Konfigura-tion Umgebungsvariablen für FastCGI- Anwendungen gesetzt werden). Der
instanceMaxRequests-Vorgabe-wert ist 200, der unter dem PHP-Standard liegt. Es wird jedoch
empfohlen, beide auf 10.000 zu setzen, um eine optimale Leistung zu erzielen.
Lesen Sie später in diesem Kapitel den Abschnitt »FastCGI-Anwendungseinstellungen modifizieren«,
um mehr über die verfügbaren Einstellungen zu erfahren. Lesen Sie auch den Abschnitt »Die
Verfügbarkeit von FastCGI-Anwendungen sicherstellen«, um zu erfahren, wie Sie diese Einstellungen
setzen müssen, um die Verfügbarkeit von FastCGI-Anwendungen zu verbessern.
Anwendungsframeworks ermöglichen
IIS 7.0 bietet mehrere Optionen für das Hosting von Anwendungsframeworks von Drittanbietern an, die
davon abhängig sind, welchen Weg die Entwickler dieser Anwendungsframeworks gewählt haben, um
eine Schnittstelle zu IIS anzubieten. Die Optionen sind nachfolgend aufgeführt:
Native IIS 7.0-Module
Anwendungsframeworks, die mit nativen IIS 7.0-Modul-APIs in IIS integriert werden, um Anforderungen zu verarbeiten
ASP.NET-Handler
Anwendungsframeworks, die unter Verwendung von ASP.NET-Handler-APIs in IIS integriert werden
ISAPI-Erweiterungen
Anwendungsframeworks, die unter Verwendung alter ISAPI-Erweiterungs-APIs in IIS integriert
werden
FastCGI-Anwendungen
Anwendungsframeworks, die ausführbare Dateien anbieten, die über das offene FastCGI-Protokoll
in IIS integriert werden
CGI-Anwendungen
Anwendungsframeworks, die ausführbare Dateien anbieten, die über das offene CGI-Protokoll in
IIS integriert werden
Um mit einer der zuvor aufgeführten Optionen dafür zu sorgen, dass Anwendungsframeworks mit
IIS 7.0 zusammenarbeiten, müssen Sie eine Handlerzuordnung erstellen, die die Anforderungen den
spezifischen Erweiterungen der Handlerkomponente des Anwendungsframeworks zuweist. Diese
Komponente kann eine der zuvor aufgeführten Optionen nutzen, um eine Schnittstelle zu IIS zur Verfügung zu stellen. Wie Sie Handlerzuordnungen für jeden dieser Handlertypen erstellen, erfahren Sie
im zwölften Kapitel und dort im Abschnitt »Handlerzuordnungen hinzufügen«.
Sie können die Handlerzuordnung auf der Serverebene oder für eine bestimmte Website, Anwendung, ein
virtuelles Verzeichnis oder einen URL erstellen. Danach können Anforderungen, die sich auf die Ebene
der Zuordnung beziehen, zur Verarbeitung an das Anwendungsframework weitergeleitet werden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
338 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Hinweis Dieser Abschnitt beschreibt allgemeine Verfahren zur Integration von Anwendungsframeworks in IIS 7.0.
Sie sollten die Dokumentation zum jeweiligen Framework lesen, um sich über mögliche frameworkspezifische
Konfigurationsschritte zu informieren. Dieses Kapitel enthält spezielle Informationen zu den Frameworks ASP.NET,
ASP und PHP.
Sie können für all diese Optionen IIS-Module benutzen, um zusätzliche Anforderungsverarbeitungsdienste zur Verfügung zu stellen. Dazu zählen auch die von IIS angebotenen Authentifizierungsmechanismen, die Autorisierung, die Ausgabezwischenspeicherung, die Antwortkomprimierung und die
Protokollierung. Darüber hinaus können Sie ebenfalls für Anwendungen, die im integrierten Modus
ausgeführt werden, die Dienste nutzen, die von verwalteten (ASP.NET) Modulen bereitgestellt werden.
Die dazu notwendige Vorgehensweise ist unabhängig vom Anwendungsframework für alle Anforderungen gleich. Weitere Informationen hierzu finden Sie früher in diesem Kapitel im Abschnitt »Die
Vorzüge des integrierten ASP.NET-Modus nutzen«.
Der Rest dieses Abschnitts erläutert die Besonderheiten der Optionen zur Integration von Anwendungsframeworks. Dazu zählt auch der Einsatz des neuen FastCGI-Moduls zum Hosten von Anwendungsframeworks, die mit FastCGI kompatibel sind, z.B. PHP.
Weiterführende Informationen Spezifische Informationen zur PHP-Bereitstellung finden Sie früher in diesem
Kapitel im Abschnitt »PHP-Anwendungen hosten«.
Die Verarbeitung von neuen statischen Dateien konfigurieren
Die Standardinstallation von IIS 7.0 bietet eine grundlegende Dateiserverfunktionalität, die von StaticFileVerfügung gestellt wird. Dieses Modul ist standardmäßig so konfiguriert, dass es sich um alle
Anforderungen kümmert, die von anderen Handlern außer Acht gelassen werden. Dies bedeutet, dass jede
Anforderung einer Ressource, die keinem Handler zugeordnet ist, von StaticFileModule behandelt wird.
StaticFileModule bedient nur Anforderungen, die sich auf solche Ressourcen beziehen, deren Dateinamenserweiterungen hierfür konfiguriert sind. Dies ist sehr wichtig, da andernfalls alle unbekannten
Ressourcen im bedienbaren Namespace der Anwendung, einschließlich aller Datendateien und Anwendungsskripts, als statische Dateien bereitgestellt werden.
Die Liste der zulässigen statischen Dateien befindet sich im Konfigurationsabschnitt system.webServer/
staticContent. Dies ist das Äquivalent zur MIME-Typkonfiguration von IIS 6.0. Bei IIS 7.0 wurde die
Liste der zulässigen statischen Dateien erweitert und enthält nun moderne Dateitypen wie diejenigen,
die von Shockwave, Microsoft Silverlight und Microsoft Office 2007 verwendet werden. Sie können
die Liste der statischen Dateien auf jeder Konfigurationsebene bearbeiten, so dass Anwendungen
benutzerdefinierte Dateitypen ohne Auswirkungen auf den gesamten Server hinzufügen oder entfernen
können.
Wenn Ihre Anwendung einen Dateityp enthält, der als statische Datei bereitgestellt werden soll, aber im
genannten Abschnitt noch nicht registriert ist, müssen Sie seine Dateinamenserweiterung und den damit
verbundenen MIME-Inhaltstypen hinzufügen, bevor eine Bereitstellung erfolgen kann.
Sie können hierzu den IIS-Manager benutzen. Erweitern Sie im Bereich Verbindungen den Knoten des
IIS-Computers und den Knoten Sites, und markieren Sie die Ebene, auf der Sie MIME-Typen konfigurieren möchten. (Sie können MIME-Typen auf der Ebene einer Site, eines Verzeichnisses und eines
virtuellen Verzeichnisses konfigurieren.) Führen Sie einen Doppelklick auf dem Feature MIME-Typ
aus, um die gleichnamige Seite anzeigen zu lassen, wie in Abbildung 11.7 dargestellt.
Module zur
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
339
Abbildung 11.7 MIME-Typen mit dem IIS-Manager konfigurieren
Sie können MIME-Typen auch mit Appcmd konfigurieren. Um einen MIME-Typeintrag hinzuzufügen,
benutzen Sie die folgende Syntax:
%systemroot%\system32\inetsrv\Appcmd set config
/section:system.WebServer/staticContent "ConfigurationPath"
"/+[fileExtension='string',mimeType='string']"
Um einen MIME-Typeintrag zu löschen und auf diese Weise zu verhindern, dass die damit verknüpfte
Dateinamenserweiterung als statische Datei bereitgestellt wird, benutzen Sie die folgende Syntax:
%systemroot%\system32\inetsrv\Appcmd set config
/section:system.WebServer/staticContent "ConfigurationPath"
"/-[fileExtension=’string’]"
Die Parameter dieser Befehle sind in Tabelle 11.6 beschrieben.
Tabelle 11.6 Parameter zum Hinzufügen von MIME-Typen
Parameter
Beschreibung
ConfigurationPath
Der Konfigurationspfad, auf den diese Konfiguration angewendet werden soll
fileExtension
Die hinzuzufügende oder zu löschende Dateinamenserweiterung
mimeType
Der MIME-Typ der Dateinamenserweiterung. Dieser wird im Header der Antwort als Inhaltstyp (contenttype) versendet, wenn die Inhalte der verknüpften Ressourcen zum Client übermittelt werden.
Die MIME-Typkonfiguration wird nur dann verwendet, wenn in der IIS 7.0-Handlerzuordnungskonfiguration die Dateinamenserweiterung nicht bereits einem anderen Handler zugeordnet ist.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
340 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Vorsicht Fügen Sie keine MIME-Typeinträge für Ressourcen hinzu, die nicht als statische Datei bereitgestellt
werden dürfen, z.B. Anwendungsskriptdateien oder Datendateien. Wenn das Framework, das in der Regel für diese
Ressourcen zuständig ist, entfernt wird, kann der Webserver diese Dateien versehentlich so bereitstellen, als wären
ihre MIME-Typen in der Konfiguration für statische Inhalte registriert.
Frameworks basierend auf systemeigenen IIS 7.0-Modulen bereitstellen
Das systemeigene IIS 7.0-Modul stellt die bevorzugte Vorgehensweise zur Integration von Anwendungsframeworks in IIS 7.0 und zukünftige Versionen von IIS dar, weil es die höchste Leistung und
eine maximale Funktionalität für das jeweilige Anwendungsframework bietet. Es ist außerdem einfacher, in Anlehnung an ein solches Modul zu entwickeln, zumal es sehr viel leistungsfähiger als die für
frühere IIS-Versionen verfügbare ISAPI-Erweiterungs-API ist. Da es sich jedoch bei diesem Modul um
die neueste mit IIS 7.0 eingeführte API handelt, wird sie noch relativ selten genutzt (was sich ändern
wird, sobald die Entwickler IIS 7.0 angenommen haben). Das Hinzufügen von Anwendungsframeworks, die auf systemeigenen IIS 7.0-Modulen basieren, erfordert administrative Rechte auf dem
Server.
Um ein Anwendungsframework bereitzustellen, das diesen Mechanismus nutzt, gehen Sie wie folgt vor:
1. Installieren Sie auf dem Server das systemeigene Modul. Dazu sind administrative Rechte erforderlich.
2. Aktivieren Sie das systemeigene Modul (was in der Regel im Rahmen der Installation automatisch
geschieht) auf dem Server oder für eine bestimmte Anwendung, für die das Modul verwendet werden soll.
3. Erstellen Sie einen modulbasierten Handlerzuordnungseintrag, der dem Modul den gewünschten
URL-Pfad zuordnet. Tun Sie dies auf der Serverebene oder für eine bestimmte Site, Anwendung
oder einen URL.
4. Installieren Sie optional das entsprechende Konfigurationsschema und die Benutzeroberflächenerweiterungen für die Konfiguration Ihres Moduls. Legen Sie anschließend die spezifische Modulkonfiguration fest. Die dazu notwendige Vorgehensweise ist im dreizehnten Kapitel, »Konfigurations- und Benutzeroberflächenerweiterungen verwalten«, beschrieben.
Detaillierte Informationen zum Ausführen jeder dieser Schritte finden Sie im zwölften Kapitel.
Da IIS 7.0-Module von einem IIS-Arbeitsprozess prozessintern geladen werden, wird das Anwendungsframework standardmäßig unter der Identität des übergeordneten IIS-Anwendungspools ausgeführt
(sofern nicht das Framework speziell die Fähigkeit implementiert, die Identität des authentifizierten
Benutzers anzunehmen oder beliebige Anmeldeinformationen zu verwenden, wie dies bei ASP.NET
der Fall ist). Dies bedeutet, dass Sie Berechtigungen für die Anwendungsframeworkdateien festlegen
müssen, damit ein IIS-Arbeitsprozess diese lesen kann. Dazu gewähren Sie der Gruppe IIS_IUSRS
Lesezugriffsrechte.
Wenn Sie darüber hinaus Ihre Anwendungen aus Gründen der Ausfallsicherheit oder der Sicherheit im
Allgemeinen isolieren möchten, müssen Sie die IIS-Anwendung als Isolationseinheit verwenden, indem
Sie verschiedene Anwendungen in verschiedenen IIS-Anwendungspools platzieren. Im vierzehnten
Kapitel erfahren Sie mehr über die Anwendungsisolation aus Sicherheitsgründen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
341
Frameworks basierend auf ASP.NET-Handlern bereitstellen
Der Einsatz von ASP.NET-Handlern ist verglichen mit der Verwendung systemeigener Module die
zweitbeste Option, weil die Entwickler auf den größten Teil der Funktionalität von systemeigenen IIS
7.0-Modulen zurückgreifen können und die Entwicklungszyklen sehr kurz sind. ASP.NET-Handler
bilden wie IIS 7.0-Module eine Multithreadingumgebung, so dass sie vorwiegend für threadsichere
Anwendungsframeworks geeignet sind. Im Gegensatz zu den anderen Anwendungsframeworkoptionen sind für das Einrichten von ASP.NET-Handlern in der Anwendungskonfiguration keine
administrativen Rechte erforderlich.
Die Schritte zur Bereitstellung eines Anwendungsframeworks, das ASP.NET-Handler verwendet, sind
nachfolgend aufgeführt:
1. Stellen Sie die ASP.NET-Handlerassembly auf dem Server bereit (im globalen Assemblycache).
Alternativ hierzu können Sie sie als Teil einer bestimmten Anwendung bereitstellen (in den Verzeichnissen /BIN oder /App_Code). Die letzte Option ist besonders dann geeignet, wenn Sie Anwendungsframeworks auf Servern bereitstellen, für die Sie keine administrativen Berechtigungen besitzen.
2. Erstellen Sie einen Zuordnungseintrag für einen verwalteten Handler, der auf der Serverebene oder
auf der Ebene einer bestimmten Site, Anwendung oder eines URLs dem ASP.NET-Handlertyp den
gewünschten URL-Pfad zuordnet.
3. Installieren Sie optional das entsprechende Konfigurationsschema und die Benutzeroberflächenerweiterungen für die Konfiguration Ihres Handlers. Legen Sie anschließend die handlerspezifische
Konfiguration fest. Die dazu notwendige Vorgehensweise ist im dreizehnten Kapitel beschrieben.
Genaue Informationen zu jedem dieser Schritte finden Sie im zwölften Kapitel. Beachten Sie, dass
der Ort, an dem ASP.NET-Handlerzuordnungen hinzugefügt werden, davon abhängig ist, ob die Zielanwendung den klassischen oder integrierten .NET-Integrationsmodus nutzt. Im integrierten Modus
können Sie die Handlerzuordnung direkt der IIS-Handlerzuordnungsliste im Konfigurationsabschnitt
system.webServer/handlers oder mithilfe des IIS-Managers hinzufügen. Im klassischen Modus müssen Sie
die Handlerzuordnung dem ASP.NET-Konfigurationsabschnitt system.web/httpHandlers hinzufügen, und
Sie müssen (was ebenfalls mit dem IIS-Manager möglich ist) in den IIS-Handlerzuordnungen eine
Skriptzuordnung der entsprechenden Dateinamenserweiterung zur ISAPI-Erweiterung ASPNET_
ISAPI.dll konfigurieren.
ASP.NET-Handler sind wie systemeigene IIS 7.0-Module prozessinterne Komponenten, die von einem
IIS-Arbeitsprozess geladen werden. Im Gegensatz zu systemeigenen IIS 7.0-Modulen werden ASP.NETHandler jedoch innerhalb einer ASP.NET-Anwendung geladen und ausgeführt. Die ASP.NET-Anwendung kann zusätzlich die Inhalte und die Anforderungsausführung mithilfe der teilweisen Vertrauenswürdigkeit isolieren.
Obwohl ASP.NET-Handler standardmäßig unter der Identität des IIS-Arbeitsprozesses ausgeführt
werden, können sie ebenfalls mithilfe der ASP.NET-Konfiguration system.webServer/identity so konfiguriert werden, dass sie die Identität des authentifizierten Benutzers oder eine beliebige andere Identität
annehmen. Um sicherzustellen, dass Ihr Anwendungsframework auf die gewünschten Dateien zugreifen kann, sollten Sie dafür sorgen, dass diese Dateien vom IIS-Arbeitsprozess gelesen werden können,
indem Sie der Gruppe IIS_IUSRS Lesezugriffsrechte gewähren.
Wenn Sie darüber hinaus Ihre Anwendungen aus Gründen der Ausfallsicherheit oder der Sicherheit
im Allgemeinen isolieren möchten, müssen Sie die IIS-Anwendung als Isolationseinheit verwenden,
indem Sie verschiedene Anwendungen in verschiedenen IIS-Anwendungspools platzieren. Im vierzehnten Kapitel erfahren Sie mehr über die Anwendungsisolation aus Sicherheitsgründen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
342 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Frameworks basierend auf ISAPI-Erweiterungen bereitstellen
ISAPI-Erweiterungen stellten bisher die bevorzugte Vorgehensweise dar, um Schnittstellen zwischen
Anwendungsframeworks und früheren Versionen von IIS zu bilden. Aus diesem Grund verwenden viele
der heutigen Anwendungsframeworks eine ISAPI-Erweiterung, wenn sie innerhalb der IIS-Umgebung
gehostet werden. ISAPI-Erweiterungen bilden wie IIS 7.0-Module und ASP.NET-Handler eine Multithreadingumgebung, so dass sie vorwiegend für threadsichere Anwendungsframeworks geeignet sind.
Für das Hinzufügen von ISAPI-Erweiterungen sind administrativen Rechte erforderlich.
Die Schritte zur Bereitstellung eines Anwendungsframeworks, das ISAPI-Erweiterungen verwendet,
sind nachfolgend aufgeführt:
1. Erstellen Sie einen auf einer Skriptzuordnung basierenden Handlerzuordnungseintrag, der den
gewünschten URL-Pfad der ISAPI-Erweiterung zuordnet.
2. Dies kann auf der Serverebene oder für eine bestimmte Site, Anwendung oder einen URL geschehen.
Dazu sind administrative Rechte erforderlich.
Hinweis Der IIS-Manager kann den ISAPI-Erweiterungseintrag im Konfigurationsabschnitt system.webServer/
security/isapiCgiRestriction automatisch erstellen, wenn Sie die Handlerzuordnung generieren. Dazu müssen
Sie als Serveradministrator verbunden sein.
Genaue Informationen zu jedem dieser Schritte finden Sie im zwölften Kapitel.
ISAPI-Erweiterungen sind wie systemeigene IIS 7.0-Module prozessinterne Komponenten, die von
einem IIS-Arbeitsprozess geladen werden. Im Gegensatz zu systemeigenen IIS 7.0-Modulen nehmen
sie jedoch standardmäßig die Identität des authentifizierten Benutzers an, sofern dieser verfügbar ist.
Deshalb werden sie in der Regel unter der Identität des anonymen IIS-Benutzers (standardmäßig IUSR)
ausgeführt oder es wird die Identität des authentifizierten Benutzers verwendet, wenn dieser verfügbar
und mit einem Windows-Prinzipal verknüpft ist.
Einige Anwendungsframeworks könnten jedoch auf diesen Identitätswechsel zurückgreifen und stattdessen unter der Identität des IIS-Arbeitsprozesses ausgeführt werden. Bei IIS 7.0 ist es außerdem
möglich, dafür zu sorgen, dass der anonyme Benutzer die Identität des IIS-Arbeitsprozesses annimmt,
so dass für anonyme Anforderungen ein entsprechendes Verhalten erzielt wird.
Wenn Sie wie zuvor Ihre Anwendungen aus Gründen der Ausfallsicherheit oder der Sicherheit im Allgemeinen isolieren möchten, müssen Sie die IIS-Anwendung als Isolationseinheit verwenden, indem Sie
verschiedene Anwendungen in verschiedenen IIS-Anwendungspools platzieren. Im vierzehnten Kapitel
erfahren Sie mehr über die Anwendungsisolation aus Sicherheitsgründen.
Mit FastCGI arbeitende Frameworks bereitstellen
FastCGI ist bei IIS 7.0 eine neue Anwendungsframeworkoption. Im Gegensatz zu ISAPI-Erweiterungen,
IIS 7.0-Modulen und ASP.NET-Handlern – bei den letzten beiden handelt es sich um spezifische IISErweiterungsmechanismen – benutzt FastCGI das FastCGI-Protokoll, um eine Schnittstelle zu den
Anwendungsframeworks zur Verfügung zu stellen. Auf diese Weise können verschiedene bereits vorhandene Anwendungsframeworks, die schon auf anderen Webserverplattformen FastCGI unterstützen,
mit IIS zusammenarbeiten. Das FastCGI-Protokoll weist gegenüber CGI, das schon lange von IIS unterstützt wird, eine wesentlich bessere Leistung auf. Dabei hält es sich an die Bedingung, die eine Anforderung pro Prozess verlangt. Diese Bedingung existiert aufgrund der fehlenden Threadsicherheit im jeweiligen Anwendungsframework oder in der Anwendung, die das Framework verwendet.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
343
Die FastCGI-Unterstützung wird über das FastCGI-Modul implementiert. Dieses Modul verwaltet
einen Pool, der aus einem oder mehreren FastCGI-Prozessen für jede ausführbare FastCGI-Anwendungsdatei besteht, die global auf dem Server konfiguriert ist. Wenn eine Anforderung, die dem
FastCGI-Modul und der entsprechenden FastCGI-Anwendung zugeordnet ist, eingeht, wird sie unter
Verwendung des FastCGI-Protokolls an einen der Prozesse im entsprechenden FastCGI-Prozesspool
weitergeleitet. Der FastCGI-Anwendungsprozess verarbeitet dann die Anforderung und gibt die Antwort an das FastCGI-Modul zurück, das sie in die eigentliche Antwort schreibt. Im Gegensatz zu CGI
sind die FastCGI-Anwendungsprozesse langlebig und werden für aufeinander folgende Anforderungen wiederverwendet, wodurch der Overhead vermieden wird, der mit dem Starten und Zerstören
von Anwendungsprozessen für jede Anforderung einhergeht.
Um ein Anwendungsframework bereitzustellen, das FastCGI verwendet, gehen Sie wie folgt vor:
1. Erstellen Sie einen modulbasierten Handlerzuordnungseintrag, der den gewünschten URL-Pfad
dem Modul FastCGIModule zuordnet. Dazu geben Sie den Pfad der ausführbaren FastCGI-Datei und die
Argumente an, die an diese ausführbare Datei (der Skriptverarbeiter) übergeben werden sollen. Sie
können dies auf der Serverebene oder für eine bestimmte Site, Anwendung oder einen URL tun.
2. Erstellen Sie einen FastCGI-Anwendungseintrag für die ausführbare FastCGI-Datei. Wenn Sie die
Handlerzuordnung mit dem IIS-Manager hinzufügen, wird dieser Eintrag nach einer entsprechenden Bestätigung automatisch erzeugt, sofern Sie als Serveradministrator verbunden sind. Sie müssen ein Serveradministrator sein, um diesen Eintrag erzeugen zu können.
Nachdem der FastCGI-Anwendungseintrag für die angegebene ausführbare FastCGI-Datei auf dem
Server erstellt wurde (dies erfordert administrative Rechte), kann er genutzt werden, um auf jeder
entsprechenden Konfigurationsebene Handlerzuordnungen zu erstellen. Dies bedeutet, dass jede
Anwendung auf dem Server eine bestimmte ausführbare FastCGI-Datei des Anwendungsframeworks
nutzen kann, nachdem diese vom Serveradministrator zugelassen wurde.
Im Gegensatz zu CGI, das für die Verarbeitung jeder Anforderung einen neuen Prozess startet und
diesen Prozess unter der Identität des von IIS authentifizierten Benutzers ausführt, sind FastCGIArbeitsprozesse langlebig und werden immer unter derselben Identität wie der übergeordnete Anwendungspool ausgeführt. Dies bedeutet, das die ausführbaren Dateien des FastCGI-Anwendungsframeworks und deren Skripts mithilfe der Identität des Anwendungspools ausgeführt werden, dem die IISAnwendung zugeordnet ist, die die Skripts enthält. Dies lässt sich sehr gut mit dem IIS-Modell vereinbaren, und es ermöglicht Ihnen, in der gesamten Site den Zugriff auf auf Ressourcen einheitlich zu
verwalten. Es ermöglicht Ihnen außerdem, FastCGI-Anwendungen unter Verwendung der Anwendungspoolisolation sicher zu isolieren, also in derselben Weise, wie dies auch für andere Siteinhalte
geschieht. Weitere Informationen zur Anwendungspoolisolation finden Sie im vierzehnten Kapitel.
FastCGI-Anwendungseinstellungen modifizieren
Wenn Sie für die ausführbare FastCGI-Datei einen FastCGI-Anwendungseintrag erstellen, steht
Ihnen eine Vielzahl von Optionen zur Verfügung, die Sie konfigurieren können, um das Verhalten des
entsprechenden FastCGI-Prozesspools zu bearbeiten. Tabelle 11.7 beschreibt diese Optionen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
344 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Tabelle 11.7 Parameter für die Bearbeitung von FastCGI-Anwendungsdefinitionen
Einstellung
Beschreibung
fullPath
Der vollständige Pfad zur ausführbaren FastCGI-Datei
Arguments
Die Argumente, die an die ausführbare FastCGI-Datei übergeben werden sollen
maxInstances
Die maximale Anzahl der Prozesse, die für diese Anwendung gestartet werden können. Der Vorgabewert ist 4.
idleTimeout
Die Zeit in Sekunden, die nach der Verarbeitung der letzten Anforderung durch einen FastCGI-Prozess
vergehen muss, bevor der Prozess aufgrund von Inaktivität heruntergefahren wird. Der Standard ist
300 Sekunden.
activityTimeout
Die Zeit in Sekunden, die während der Anforderungsverarbeitung auf eine Aktivität vom FastCGIProzess gewartet werden soll. Danach wird ein Deadlock vorausgesetzt und der Prozess wird zwangsweise heruntergefahren. Dabei handelt es sich gewissermaßen um ein Skripttimeout. Der Standard ist
30 Sekunden.
requestTimeout
Die Zeit in Sekunden, die einem FastCGI-Prozess maximal zur Verfügung steht, um eine Anforderung
zu verarbeiten. Der Standard ist 90 Sekunden.
instanceMaxRequests
Die Anzahl der Anforderungen, die jeder FastCGI-Prozess verarbeiten darf, bevor er heruntergefahren
wird. Der Standard ist 200.
Protocol
Das FastCGI-Protokoll, das verwendet werden soll, um eine Verbindung zum FastCGI-Prozess herzustellen. Die beiden zulässigen Werte sind NamedPipe und Tcp. Der Standard ist NamedPipe.
queueLength
Die maximale Anzahl der Anforderungen, die während des Wartens auf den nächsten verfügbaren FastCGI-Prozess in die Warteschlange gestellt werden dürfen. Wird diese Zahl überschritten, werden die
Anforderung mit dem Fehlercode 503 zurückgewiesen. Der Vorgabewert ist 1000.
flushNamedPipe
Gibt an, ob bei der Nutzung von Named Pipes die Daten im Rahmen einer Flushoperation zum FastCGIProzess gesendet werden sollen. Dies kann für einige FastCGI-Anwendungen notwendig sein, die
andernfalls nicht mehr reagieren würden, während sie auf die Daten von FastCgiModule warteten.
Der Vorgabewert ist false.
rapidFailsPerMinute
Gibt an, wie viele FastCGI-Prozessfehler pro Minute zulässig sind. Wenn die Anzahl der Fehler diesen
Wert innerhalb von 60 Sekunden überschreitet, generiert FastCGI keine weiteren Prozesse für die
FastCGI-Anwendung. Der Standard ist 10.
environmentVariables
Ermöglicht die Angabe einer Auflistung mit zusätzlichen Umgebungsvariablen für den FastCGIAnwendungsprozess. Jedes environmentVariable-Elemente innerhalb der Auflistung kann den Namen
der Umgebungsvariablen und deren Wert angeben.
Unter Windows Server 2008 bietet der IIS-Manager keine Möglichkeit, um diese Einstellungen zu
modifizieren. Wenn Sie diese Einstellungen somit ändern möchten, müssen Sie die Konfiguration direkt
bearbeiten oder Appcmd bzw. eine der programmatischen APIs verwenden. Um beispielsweise mit
Appcmd einen neuen FastCGI-Anwendungseintrag zu erstellen, dessen instanceMaxRequests-Attribut auf
10 gesetzt wird, können Sie die folgende Syntax verwenden:
%systemroot%\system32\inetsrv\AppCmd.exe Set Config
/section:system.webServer/fastCgi
"/+[fullPath='Path',arguments='Arguments'instanceMaxRequests='10']"
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
345
Path muss
angegeben werden und ist der Pfad zur ausführbaren Datei. Arguments sind die optionalen zu
übergebenden Argumente. Sie können ebenfalls jedes der anderen in Tabelle 11.7 aufgeführten Attribute
angeben, um dieses wie bei instanceMaxRequests auf einen bestimmten Wert zu setzen.
Um die bereits vorhandenen Einträge aufzulisten, können Sie die folgende Syntax verwenden:
%systemroot%\system32\inetsrv\AppCmd.exe List Config
/section:system.WebServer/fastCgi
Sie können ebenfalls bestimmte Attribute eines bereits vorhandenen Elements setzen. Um z.B. das
idleTimeout-Attribut auf 60 Sekunden zu setzen, können Sie die folgende Syntax benutzen:
%systemroot%\system32\inetsrv\AppCmd.exe Set Config
/section:system.WebServer/fastCgi
"/[fullPath='Path',arguments='Arguments'].idleTimeout:60"
Path und Arguments sind Schlüssel, die zum Auffinden eines entsprechenden bereits vorhandenen Anwendungseintrags verwendet werden. Sie können diese Syntax benutzen, um jedes der in Tabelle 11.7
aufgeführten Attribute zu setzen.
Die Verfügbarkeit von FastCGI-Anwendungen sicherstellen
Das Verhalten Ihres Anwendungsframeworks, die jeweilige Anwendung und die gesamte Webserverkonfigurationen bestimmen, wie Sie die FastCGI-Anwendungseinstellungen anpassen müssen, damit
Ihre Anwendung eine optimale Leistung erbringt und immer verfügbar ist. Sie müssen möglicherweise
Folgendes tun:
Anpassen der maxInstances-Standardeinstellung, die auf mindestens vier Prozesse gesetzt werden
sollte, um eine bessere Anforderungsparallelität zu erzielen. Obwohl dies auf Ihrem Server zu einer
größeren CPU-Auslastung führen kann, weil mehr Prozesse erzeugt werden, kann es dazu beitragen, dass die Ansprechempfindlichkeit Ihrer Anwendung zunimmt. Dies gilt besonders dann, wenn
die Anwendung zeitintensive Datenbank- oder Netzwerkoperationen initiiert.
Verkleinern der idleTimeout-Einstellung, um nicht genutzte FastCGI-Prozesse in Zeiten geringer
Aktivität herunterzufahren. Dies kann besonders für Shared Hostingserver erforderlich sein, die mit
mehreren Anwendungspools und damit auch mit mehreren FastCGI-Prozesspools pro FastCGIAnwendung arbeiten.
Wenn Ihre Anwendung außerdem mit vielen Anforderungen konfrontiert wird, die ein temporäres
Queuing zur Folge haben, müssen Sie möglicherweise queueLength heraufsetzen, um in Zeiten starker
Anforderungsaktivitäten für eine höhere Warteschlangengröße zu sorgen.
Anpassen von instanceMaxRequests zur Verbesserung der Leistung. Dazu erhält jeder Prozess die
Möglichkeit, eine größere Zahl von Anforderungen zu bearbeiten, bevor er heruntergefahren wird.
Dies kann die Anwendungsstabilität beeinflussen, wenn Ihre Anwendung über zu wenig Speicher
verfügt oder im Laufe der Zeit ein instabiles Verhalten entwickelt. Es ist außerdem wichtig, dass
instanceMaxRequests unter dem entsprechenden internen Anforderungslimit der ausführbaren FastCGIDatei bleibt. Andernfalls könnte es geschehen, dass das FastCGI-Modul nicht mehr korrekt arbeitet,
sobald der FastCGI-Prozess aufgrund seines internen Anforderungslimits unerwartet beendet wird.
Anpassen von activityTimeout und requestTimeout, um Fehler bei Skripts zu vermeiden, die viel Zeit
benötigen, um eine Antwort zurückzugeben oder ihre Arbeit abzuschließen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
346 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Weiterführende Informationen PHP weist standardmäßig ein internes Anforderungslimit von 500 Anforderungen
auf, das mit der Umgebungsvariablen PHP_FCGI_MAX_REQUESTS global auf dem Server oder speziell für den FastCGIAnwendungseintrag geändert werden kann. Lesen Sie früher in diesem Kapitel den Abschnitt »Die Verfügbarkeit
von PHP-Anwendungen sicherstellen«, um weitere Informationen zu erhalten.
Der exakte Wert dieser Einstellung ist von den Besonderheiten des Anwendungsframeworks, der Anwendung, der gesamten Webserverumgebung und der Serverhardware abhängig. Deshalb ist es schwierig,
spezifische Empfehlungen auszusprechen. Sie müssen Leistungstests durchführen, um zur gewünschten
Einstellungen zu gelangen und Ihren Leistungs- und Verfügbarkeitsanforderungen gerecht zu werden.
Weitere Informationen zum Testen der Leistung erhalten Sie im siebzehnten Kapitel, »Optimieren der
Leistung«.
Mit CGI arbeitende Frameworks bereitstellen
IIS 7.0 unterstützt auch weiterhin CGI-Anwendungen, die das offene CGI-Protokoll verwenden, um
mit dem Webserver zu kommunizieren. Das CGI-Protokoll verlangt, dass für jede neue Anforderung ein
neuer CGI-Prozess gestartet wird, der die Anforderung bearbeitet. Dies wirkt sich sehr nachteilig auf die
Windows-Leistung aus. FastCGI ist eine Alternative, die anstelle von CGI verwendet werden sollte, weil
sie aufgrund der Wiederverwendung von Prozessen eine bessere Leistung bietet. Für Anwendungsframeworks, die FastCGI nicht unterstützen, und für die nativen IIS-Mechanismen ist CGI jedoch eine Option.
Um einen CGI-Programm bereitzustellen, gehen Sie wie folgt vor:
1. Erstellen Sie einen auf einer Skriptzuordnung basierenden Handlerzuordnungseintrag, der den
gewünschten URL-Pfad und alle benötigten Argumente der ausführbaren CGI-Datei zuordnet. Dies
kann auf der Serverebene oder für eine bestimmte Site, Anwendung oder einen URL geschehen.
2. Fügen Sie der Konfiguration system.webServer/security/isapiCgiRestriction die ausführbare CGI-Datei
hinzu. Dazu sind administrative Rechte erforderlich. Dies ist ein notwendiger Schritt, damit auf
dem Webserver die Kombination aus eindeutigem Pfad zur ausführbaren CGI-Datei und Argumenten ausgeführt werden kann.
Alternativ hierzu unterstützt CGI auch die Möglichkeit, .exe-Dateien zu starten, die sich innerhalb Ihrer
Anwendung befinden, sofern der Client die jeweilige ausführbare Datei direkt anfordert. Dazu müssen
für das Verzeichnis Ausführungsberechtigungen gewährt werden und der authentifizierte Benutzer
muss Ausführungsberechtigungen für die ausführbaren Dateien erhalten.
Verwenden Sie stattdessen eine Handlerzuordnung und einen Skriptprozessor, der so konfiguriert ist,
dass er auf das CGI-Programm verweist, sind nur Skriptberechtigungen erforderlich. In beiden Fällen
müssen die genauen Befehlszeilen (der Pfad zum CGI-Programm und alle zu übergebenden
Argumente) im Konfigurationsabschnitt system.webServer/security/isapiCGIRestriction aufgeführt werden.
Hinweis Der IIS-Manager kann im Konfigurationsabschnitt system.webServer/security/isapiCgiRestriction den
Eintrag für die ausführbare CGI-Datei nach einer entsprechenden Bestätigung automatisch erstellen, wenn Sie
die Handlerzuordnung erzeugen. Dazu müssen Sie als Serveradministrator verbunden sein.
Genaue Informationen zu jedem dieser Schritte finden Sie im zwölften Kapitel.
Hinweis Es ist nicht möglich, für den CGI-Prozess benutzerdefinierte Umgebungsvariablen zu setzen. CGI
übergibt dem CGI-Prozess immer einen festen Satz Servervariablen als Umgebungsvariablen, wie dies in der
CGI-Protokollspezifikation definiert ist. Wenn Ihr Anwendungsframework das FastCGI-Protokoll unterstützt und Sie
FastCGI verwenden, können Sie benutzerdefinierte Umgebungsvariablen verwenden.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Anwendungsframeworks ermöglichen
347
Da CGI immer dann, wenn eine Anforderung eingeht, einen neuen Prozess startet, wird dieser unter der
Identität des authentifizierten Benutzers ausgeführt (sofern verfügbar). Dies ist das Standardverhalten.
Deshalb werden die CGI-Prozesse und die von diesen Prozessen ausgeführten Skripts standardmäßig
unter der Identität des authentifizierten Benutzers oder bei anonymen Anforderungen unter der Identität
des anonymen IIS-Benutzers (IIS_IUSR) ausgeführt. Sie können dieses Verhalten auf dem Computer
global deaktivieren, indem Sie das createProcessAsUser-Attribut im Konfigurationsabschnitt system.webServer/cgi auf false setzen.
Sie können CGI-Konfigurationseinstellungen mit dem IIS-Manager, mit Appcmd von der Befehlszeile
aus oder unter Verwendung der Konfigurations-APIs festlegen. Der Konfigurationsabschnitt system.webServer/cgi ist global und kann deshalb nur einen Satz Einstellungen für den gesamten Server aufweisen.
Sie können eine Konfiguration in diesem Abschnitt festlegen, indem Sie die folgende Appcmd-Syntax
verwenden:
%systemroot%\system32\inetsrv\Appcmd set config
/section:system.WebServer/cgi [/createCGIWithNewConsole:bool]
[/createProcessAsUser:bool] [/timeout:timespan]
Die zum Setzen von CGI-Konfigurationen benötigten Parameter sind in Tabelle 11.8 aufgeführt.
Tabelle 11.8 Parameter zum Setzen von CGI-Konfigurationen
Einstellung
Beschreibung
createCGIWithNewConsole
Gibt an, ob ein CGI-Prozess mit einer neuen Konsole erstellt werden soll. Der Vorgabewert ist false.
createProcessAsUser
Gibt an, ob ein CGI-Prozess unter der Identität des authentifizierten Benutzers erstellt werden soll.
Der Vorgabewert ist true.
Timeout
Das Anforderungstimeout in Sekunden, nach dessen Ablauf der CGI-Prozess beendet wird. Der
Standard ist 15 Minuten.
Hinweis Wenn Sie für den Anwendungspool ein benutzerdefiniertes Konto verwenden, müssen Sie dem benutzerdefinierten Konto die Benutzerrechte Anpassen von Speicherkontingenten für einen Prozess und Ersetzen eines
Tokens auf Prozessebene gewähren. Sie können dies mit der Konsole für die Einstellungen der lokalen Sicherheitsrichtlinie tun.
Darüber hinaus können Sie ein CGI-Prozesslimit konfigurieren, das für alle IIS-Arbeitsprozesse gleichzeitig aktiv sein kann. Wird die Zahl überschritten, werden alle folgenden eingehenden CGI-Anforderungen, die an den jeweiligen Arbeitsprozess gerichtet sind, in die Warteschlange gestellt, bis die Anzahl
der CGI-Prozesse das Limit unterschreitet. Diese Einstellung kann ausschließlich in der WindowsRegistrierung konfiguriert werden, indem im Registrierungsschlüssel HKLM\System\CurrentControlSet\
Services\W3SVC\Parameters\ der DWORD-Wert MaxConcurrentCgisExecuting erstellt wird. Wird dieser Wert
nicht gesetzt, beträgt das Limit standardmäßig 256 CGI-Prozesse pro IIS-Arbeitsprozess.
Vorsicht Denken Sie daran, dass das Starten einer großen Anzahl von CGI-Prozessen einen Webserver schnell
überfordern kann. Der Grund hierfür ist der Speicheroverhead eines jeden Prozesses und der mit dem Starten
neuer Prozesse verbundene Aufwand. Eine solche Überlastung zeigt sich besonders dann, wenn Sie mit mehreren
Anwendungspools arbeiten, da das Limit für jeden einzelnen IIS-Arbeitsprozess gilt. Deshalb müssen Sie das
MaxConcurrentCgisExecuting-Limit möglicherweise auf einen sehr viel geringeren Wert setzen. Denken Sie darüber
nach, FastCGI anstelle von CGI zu benutzen, um diesen Overhead zu verringern.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
348 Kapitel 11: Hosting von Anwendungsentwicklungsframeworks
Zusammenfassung
IIS 7.0 bietet viele Optionen für das Hosting von Anwendungsframeworktechnologien. Dabei wurde die
Anzahl dieser Optionen im Vergleich zu früheren IIS-Versionen noch vergrößert, indem die integrierte
Unterstützung des FastCGI-Protokolls eingeführt wurde. Zusammen mit anderen Anwendungsframeworkschnittstellen, z.B. ISAPI-Erweiterungen, ASP.NET-Handler und systemeigene IIS 7.0-Module,
öffnet dies die Tür zu vielen Anwendungsframeworks, die früher nicht auf IIS abzielten.
IIS ermöglicht aber nicht bloß das Hosting von Anwendungsframeworktechnologien, sondern bietet
einen umfassenden Satz Features und Verwaltungsfunktionen an, die die Möglichkeiten eines jeden
Anwendungsframeworks erweitern. Zusammen mit dem neuen ASP.NET-Integrationsmodus, der die
IIS-Erweiterbarkeit auf der Webserverebene ermöglicht, können diese Technologien die Leistungsfähigkeit des .NET Frameworks und von ASP.NET nutzen, ohne zu diesen Technologien migrieren zu
müssen. Weitere Informationen zur Erweiterung von IIS 7.0 erhalten Sie im zwölften Kapitel.
In diesem Kapitel haben Sie erfahren, wie IIS als Anwendungsframeworkplattform verwendet wird und
wie gebräuchliche Anwendungsplattformen, wie z.B. ASP.NET, ASP und PHP, installiert und bereitgestellt werden. Sie haben außerdem erfahren, wie Sie unter IIS die allgemeinen Optionen zum Hosten
von Anwendungsframeworks nutzen, um Anwendungsframeworks von Drittanbietern hinzuzufügen.
Um mehr über das Sichern und Isolieren von Anwendungen unter IIS 7.0 zu erfahren, sollten Sie im
vierzehnten Kapitel die empfohlenen Vorgehensweisen lesen.
Weitere Informationen
Diese Quellen enthalten zusätzliche, auf dieses Kapitel bezogene Informationen und Tools:
Die offizielle IIS-Website finden Sie unter http://www.iis.net.
Die offizielle ASP.NET-Website finden Sie unter http://www.asp.net.
Die offizielle PHP-Website finden Sie unter http://www.php.net.
Um mehr über die Installation und Verwaltung von Webservermodulen zu erfahren, lesen Sie bitte
das zwölfte Kapitel, »Verwalten von Webservermodulen«.
Um zu erfahren, wie Sie die Sicherheit des Webservers und der Anwendungsframeworks verbessern
können, lesen Sie das vierzehnte Kapitel, »Implementieren von Sicherheitsstrategien«.
Um einen Blog zu lesen, der regelmäßig Informationen zum Hosting von Anwendungen wie
ASP.NET und PHP unter IIS bereitstellt, besuchen Sie bitte http://mvolo.com.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
349
K A P I T E L
1 2
Verwalten von Webservermodulen
Inhalt dieses Kapitels:
IIS 7.0-Erweiterbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webservererweiterbarkeit zur Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
349
353
399
400
IIS 7.0-Erweiterbarkeit
Innerhalb des IIS 7.0-Teams (Internet Information Services) gibt es den Running Gag, dass jede IISVersion eine vollständige Neufassung der vorherigen Version sein muss. Wenn man jedoch einen Blick
auf die Geschichte dieses Produkts wirft, gab es für jede Neufassung einen ernsten Grund. IIS 6.0, das
mit Windows Server 2003 ausgeliefert wurde, war in Folge der bedenklichen Sicherheitslücken, die im
Sommer 2001 durch CodeRed und Nimbda verursacht wurden, eine Neufassung von IIS 5.1 (Windows
XP). Diese Neufassung, deren Hauptaugenmerk darin bestand, einen extrem zuverlässigen, schnellen
und sicheren Webserver zu generieren, war ein überwältigender Erfolg – wie die durch die extreme
Zuverlässigkeit und Sicherheit bedingte IIS 6.0-Erfolgsgeschichte bis heute bestätigt.
Auch IIS 7.0 ist wieder eine vollständige Neufassung des Webservers, diesmal jedoch aus einem anderen
Grund – um die zuverlässige und sichere Codebasis von IIS 6.0 in eine leistungsfähige Webanwendungsplattform der nächsten Generation zu transformieren. Um dies zu erreichen, unternimmt die IIS 7.0Version jede Anstrengung, um eine vollständige Plattformerweiterbarkeit zur Verfügung zu stellen. Das
Ergebnis? Der Webserver mit der bestmöglichen Funktionsfülle, Flexibilität und Erweiterbarkeit, die
Microsoft umsetzen konnte.
Die erweiterbare Architektur von IIS 7.0 verbirgt sich hinter fast allen wichtigen Verbesserungen, die
diese Version bietet. Fast die gesamte Funktionalität des Webservers, beginnend mit den Webserverlaufzeitfeatures bis hin zur Konfiguration und den IIS-Manager-Features, können durch Drittanbieter
entfernt oder ersetzt werden. Dies ermöglicht es den Kunden, vollständige Lösungen zu erstellen, die
die von den jeweiligen Anwendungen benötigte Funktionalität liefern.
Darüber hinaus gründet auch der Featuresatz von IIS 7.0 auf demselben Erweiterbarkeitsmodell, das
von Drittanbietern verwendet werden kann, um den Server weiter anzupassen. Dies ist ein Schlüsselkonzept, das gewährleistet, dass das den Drittanbietern zur Verfügung stehende Erweiterbarkeitsmodell
so leistungsfähig und flexibel ist, dass selbst die integrierten Features damit erstellt werden können.
Außerdem gibt es eine einheitliche Vorgehensweise zur Verwaltung von Webserverfeatures, und zwar
unabhängig davon, ob es sich dabei um die integrierten IIS 7.0-Features oder Features von Drittanbietern handelt. Dies ist der Kern der Modularität von IIS 7.0. Diese Modularität in Verbindung mit
dem Erweiterbarkeitsmodell ermöglicht es Ihnen, Ihren Webserver in einen effizienten, spezialisierten
Server zu verwandeln, der genau das bietet, was Sie benötigen, und sonst nichts.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
350 Kapitel 12: Verwalten von Webservermodulen
Mit IIS 7.0 können Sie erstmals:
einen Webserver mit einem geringen Ressourcenbedarf und einer kleinen Angriffsfläche erstellen,
der für einen bestimmten Arbeitsschwerpunkt optimiert ist.
jedes integrierte Feature durch ein benutzerdefiniertes Feature ersetzen, das Sie selbst entwickelt
oder von einem externen unabhängigen Softwareanbieter erworben haben.
vollständige End-to-End-Lösungen erstellen, die sich nahtlos in den Webserver integrieren. Beispiel hierfür sind Anforderungsverarbeitungfunktionalität sowie die Konfiguration, Diagnose und
Verwaltung.
Bisher betraf die Erweiterbarkeit hauptsächlich die Entwickler. Bei IIS 7.0 ist sie jedoch ebenfalls für die
Bereitstellung und den Betrieb des Webservers von Bedeutung. Deshalb müssen die IT-Mitarbeiter in
diesem Bereich über ein solides Fachwissen verfügen. Die Fähigkeit, die Features, aus denen der Webserver besteht, richtig bereitzustellen, zu konfigurieren und anzupassen, ist wichtig, um eine funktionelle,
skalierbare und sichere IIS-Produktionsumgebung zu erhalten. Die richtige Nutzung der Flexibilität von
IIS 7.0 ermöglicht es Ihnen, Webserverbereitstellungen zu realisieren, die nur wenige Ressourcen verbrauchen und schnell und sicher sind. Andererseits muss die mit dieser Flexibilität einhergehende
Komplexität richtig verwaltet werden, so dass Sie einen fehlerfreien Betrieb gewährleisten und die
Gesamtbetriebskosten Ihrer Webserverfarm verringern können.
Dieses Kapitel wirft aus der Sicht des IT-Experten einen Blick auf die von IIS 7.0 zur Verfügung
gestellte End-to-End-Erweiterbarkeitsplattform. In diesem Kapitel erfahren Sie, wie der modulare
Featuresatzes von IIS 7.0 verwaltet wird, um eine effiziente, zuverlässige und sichere IIS-Umgebung
einzurichten.
Die IIS 7.0-Erweiterbarkeitsarchitektur auf einen Blick
Die IIS 7.0-Webserverplattform ist ein komplexes System, das aus vielen Bestandteilen besteht, die für
den Betrieb, die Verwaltung und die Unterstützung der darauf ausgeführten Webanwendungen notwendig
sind. Dazu zählen der Webserver selbst, das Konfigurationssystem, das den Webserver und seine Features
unterstützt, der Verwaltungsstack, der ein Objektmodell für die Verwaltung des Servers bereitstellt, APIs
(Application Programming Interface) für die Laufzeitstatusüberwachung und verschiedene Verwaltungstools und APIs, mit deren Hilfe der Benutzer auf die Konfiguration- und Verwaltungsfunktionalität zugreifen kann. Jedes dieser Subsysteme stellt eine öffentliche Erweiterbarkeitsschicht zur Verfügung, auf
die die integrierte Funktionalität in Form von modularen Komponenten aufsetzt. Dieses Design unterstützt
sowohl die Serverspezialisierung als auch die Anpassung des Servers mithilfe zusätzlicher Features von
Drittanbietern bzw. durch das Ersetzen integrierter Features. Abbildung 12.1 zeigt eine Übersicht über die
Erweiterbarkeitsarchitektur.
Die Erweiterbarkeitsfunktionalität konzentriert sich in der Webserverengine, die HTTP-Anforderungen
empfängt, diese verarbeitet (oft mithilfe eines Anwendungsframeworks wie ASP.NET oder PHP) und
Antworten an den Client zurückgibt. Hier findet das eigentliche Geschehen statt – IIS 7.0 wird mit mehr
als vierzig Webservermodulen ausgeliefert, die für alles verantwortlich sind, von der Authentifizierung,
Sicherheit und Antwortkomprimierung bis hin zu Leistungserweiterungen und zur Unterstützung von
Anwendungsframeworks wie ASP. Diese Module nutzen eines der beiden von IIS 7.0 zur Verfügung
gestellten Laufzeiterweiterbarkeitsmodelle – das neue C++-Kernerweiterbarkeitsmodell oder das integrierte ASP.NET-Erweiterbarkeitsmodell –, die beide die Flexibilität bieten, die integrierte IIS 7.0Funktionalität zu ersetzen oder eine eigene neue Funktionalität hinzuzufügen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
IIS 7.0-Erweiterbarkeit
351
Abbildung 12.1 Die IIS 7.0-Erweiterbarkeit erstreckt sich über den Webserver,
das Konfigurationssystem und den IIS-Manager
Wie Sie jedoch wissen, ist IIS weitaus mehr als eine Laufzeitengine für die Verarbeitung von Anforderungen. Es bietet ebenfalls ein brandneues verteiltes Konfigurationssystem für die Konfiguration der
Funktionalität des Webservers und seiner Module, das viele Features aufweist, die entwickelt wurden,
um die Konfiguration zu vereinfachen, die Konfiguration an Nicht-Administratoren zu delegieren und
Konfigurationseinstellungen zusammen mit den jeweiligen Anwendungen per xcopy bereitzustellen.
In Angesicht der zunehmenden Webserverkomplexität ist das Konfigurationssystem wichtiger als jemals
zuvor und es muss die Vielzahl individueller Konfigurationen und betriebsbedingter Anforderungen, die
von modernen Anwendungen festgelegt werden, unterstützen.
Das IIS 7.0-Team hat das Konfigurationssystem so entwickelt, dass es jede dieser Herausforderungen
meistert und dies auch den Lösungen von Drittanbietern durch den Einsatz der Konfigurationserweiterbarkeit ermöglicht. Die Konfigurationskomponenten greifen genauso wie die Webserverfeatures auf
dieselbe Konfigurationserweiterbarkeitsschicht zurück, die genutzt werden kann, um benutzerdefinierte
Konfigurationen für die Webservermodule von Drittanbietern zu erstellen. Dies bedeutet, dass jedes
benutzerdefinierte Webservermodul seine eigenen Konfigurationseinstellungen einfach offen legen
kann, die dann in denselben Konfigurationsdateien gespeichert und mit denselben Standard-APIs und
-Tools verwaltet werden können wie der Rest der IIS 7.0-Konfiguration.
Zusätzlich zu einer statischen dateibasierten Konfiguration unterstützt IIS 7.0 Verwaltungsobjekte, die
eine dynamische Konfiguration und die Verwaltungsfunktionalität über das IIS 7.0-Konfigurationsobjektmodell ermöglichen. Auf diese Weise können neue IIS-Verwaltungsobjekte hinzugefügt oder
eine benutzerdefinierte Verwaltungsfunktionalität über bereits vorhandene IIS-Objekte, z.B. das Siteoder Anwendungspoolobjekt, offen gelegt und von den Standard-APIs und -Tools verwendet werden.
Der Verwaltungsstack ist ebenfalls erweiterbar und auch die IIS-Verwaltungsobjekte nutzen das
Erweiterbarkeitsmodell.
Schließlich bietet selbst der IIS-Manager (der das alte MMC-Programm InetMgr.exe ersetzt) eine eigene
Erweiterbarkeitsfunktionalität, damit ihm Verwaltungseiten mit einer grafischen Benutzeroberfläche
hinzugefügt werden können, die wiederum die Navigations-, Delegierungs- und Remoteverwaltungsmöglichkeiten nutzen.
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
352 Kapitel 12: Verwalten von Webservermodulen
Zusammen bilden diese Erweiterbarkeitsmechanismen die Grundlage für End-to-End-Lösungen, die
für IIS 7.0 entwickelt werden können, wobei benutzerdefinierte Webserverfeatures eine benutzerdefinierte Konfiguration und Verwaltungsfunktionalität aufweisen und gleichzeitig die Möglichkeiten
nutzen können, die von der Benutzeroberfläche des IIS-Managers geboten werden.
Direkt von der Quelle
IIS 7.0 repräsentiert eine Systemarchitektur, die auf ihrer eigenen Erweiterbarkeit basiert, anstatt
diese nachträglich hinzuzufügen. Fast alle Komponenten des Servers, einschließlich der Webserverfeatures, der Konfiguration dieser Features und der Verwaltungsseiten des IIS-Managers, gründen
auf denselben Erweiterbarkeitsmodellen, die auch von Drittanbietern genutzt werden können. Im
Laufe der vier Jahre, die ich an diesem Projekt arbeitete, konnte ich dieses Leistungsvermögen selbst
erleben, da sich mir die einmalige Gelegenheit bot, sowohl den Kern der Erweiterbarkeitsplattform
als auch die Features, die diese Plattform nutzen, zu konzipieren und zu entwickeln. In gewisser
Weise war IIS 7.0 selbst unser bester Kunde, weil es uns dabei half, die Plattform richtig aufzubauen,
bevor die ersten echten Kunden damit arbeiteten.
Mike Volodarsky
Program Manager, IIS 7.0
Die Erweiterbarkeit verwalten
Die modulare Architektur dient als Grundlage für viele neue aufregende IIS 7.0-Funktionen, von der
Möglichkeit, spezialisierte Server einzurichten, bis hin zur Sicherung und Optimierung der Serverleistung.
Sie hält aber auch ein hohes Maß an Komplexität für den Administrator bereit. Diese Komplexität gilt es
zu verwalten, um sich die Vorzüge des Komponentensystems nutzbar zu machen. Das führt zu einer
Verlagerung der Erweiterbarkeitsplanung und -verwaltung in Richtung der IT-Abteilung, so dass nicht
mehr allein die Entwickler für diese Aufgaben verantwortlich sind, wie dies früher der Fall war. Diesbezüglich konzentriert sich dieses Kapitel auf alle Aufgaben, die mit der Verwaltung der Erweiterbarkeit
und weniger mit der Entwicklung unter Verwendung von Erweiterbarkeitskomponenten zu tun haben.
Das erste Thema von Interesse ist natürlich die Installation der Erweiterbarkeitskomponenten, so
dass Sie sie auf dem Server verwenden können. Die integrierten IIS 7.0-Features sind vollständig im
Windows-Setup enthalten und können unter Windows Server 2008 mithilfe des Server-Managers und
unter Windows Vista mit der Option Windows-Funktionen ein- oder ausschalten installiert werden
(weitere Informationen hierzu finden Sie im fünften Kapitel, »Installieren von IIS 7.0«). Das WindowsSetup besitzt alle Informationen, die notwendig sind, um diese Komponenten zu installieren und unter
Verwendung der IIS 7.0-Konfigurations-APIs zu konfigurieren. Deshalb erfordert die Installation dieser
Komponenten in der Regel kein zusätzliches Eingreifen, obwohl in einigen Fällen eine zusätzliche
Konfiguration notwendig ist, damit die Verfügbarkeit der Komponenten für bestimmte Anwendungen
auf dem Server bestimmt werden kann.
Dies gilt jedoch nicht für Drittanbieterkomponenten, die von unabhängigen Softwareanbietern oder
hausintern von Ihrem Entwicklungsteam erstellt wurden. Ohne die Unterstützung des Windows-Setups
müssen Drittanbieterkomponenten unter direkter Verwendung der IIS 7.0-Konfiguration installiert werden.
Dabei ist es oft notwendig, spezielle Bereitstellungs- und Installationsoptionen für Ihre Komponenten zu
berücksichtigen. Da die Möglichkeit, IIS 7.0 an spezifische Anwendungslösungen anzupassen, oft auf der
IIS 7.0-Modularität beruht, ist es besonders wichtig, die Erweiterbarkeitskomponenten von IIS 7.0 richtig
zu installieren und den auf dem Server aktivierten Featuresatz ordnungsgemäß zu verwalten. Glücklicher-
Microsoft Internetinformationsdienste (IIS) 7.0 – Die technische Referenz, © 2008 Microsoft Press Deutschland, ISBN 978-3-86645-924-3
Webservererweiterbarkeit zur Laufzeit
353
weise bietet IIS 7.0 viele Verwaltungstools an, die zur Durchführung der Installationsaufgaben verwendet
werden können. Ausgerüstet mit dem richtigen Fachwissen können Sie somit zu einem Experten werden,
wenn es um die Bereitstellung der IIS 7.0-Erweiterbarkeit geht. In dieser Hinsicht beschreibt dieses Kapitel,
wie Webservermodule installiert und verwaltet werden. Sie erfahren im dreizehnten Kapitel,
»Konfigurations- und Benutzeroberflächenerweiterungen verwalten«, wie die Konfiguration und die
IIS-Manager-Erweiterungen verwaltet werden.
Nachdem die Bereitstellung behandelt wurde, lernen Sie einige häufige Konfigurations- und Verwaltungsaufgaben für jeden

Documentos relacionados