IIS für Einsteiger Teil 2: Erste Schritte nach der Installation

Was sind die wichtigsten Verzeichnisse und Dateien für den IIS, welche Benutzerkonten werden angelegt bzw. verwendet und wie heißen die IIS-Dienste welche bei der Installation des IIS7 erzeugt werden:

Wichtige Verzeichnisse und Dateien.

C:\Windows\System32\inetsrv

Hauptverzeichnis des IIS beeinhaltet z.B. die Dateien zur IIS Konfiguration, Verwaltung (z.B.MMC), IIS-Module, Executables für die IIS Dienste.

 

C:\Windows\System32\inetsrv\config\applicationHost.config

ApplicationHost.config ist eine editierbare XML Datei welche die Root-|Hauptdatei des IIS 7.0 Konfigurationssystems darstellt. Sie beeinhaltet Definitionen für alle Websites , Anwendungen, virtuelle Verzeichnisse und Anwendungspools , sowie globale Standards für die Web-Server -Einstellungen. Die Konfiguration sollte in regelmässigen Abständen gebackupt werden, z.B. mit dem Commando:

C:\Windows\System32\inetsrv>appcmd add backup

BACKUP object "20100623T150732" added

Die Backups landen im Verzeichnis: C:\Windows\System32\inetsrv\backup

Mehr unter Introduction to ApplicationHost.config und Arbeiten mit Konfigurationsdateien in IIS 7.0

 

Web.config

Der IIS erlaubt das Delegieren von Einstellungen. D.h. es können IIS Einstellungen außerhalb der applicationHost.config überschrieben | modifiziert werden, um das Verhalten des IIS auf z.B. Website-, Anwendungs- und Verzeichnis-Ebene zu verändern. Beispiel (s.u.): Caching für einen Untordner deaktivieren. Die Einträge werden in eine web.config Datei geschrieben und im selben Order der Webinhalte abgelegt (i.d.R).

IIS7: feature delegation sample - caching settings are stored in local web.config file

 

Inetpub-Verzeichnis

Das C:\inetpub Verzeichnis ist das Lese- und Schreibverzeichnis des IIS. Es enthält folgende Unterverzeichnisse:

Ordner Beschreibung
IIS7: inetpub folder extended C:\inetpub\AdminScripts VB Skript zur Administration der IIS Vorgängerversion (IIS6) - wg. Kompatibilität - kommt mit den „IIS 6 Scripting Tools"
C:\inetpub\custerr Enthält die Fehler-Seiten welche der IIS im Fehlerfall (z.B. File not found 404) dem Websiten Besucher schickt. Unterstützt Mehrsprachigkeit. Mehr unter How to Use HTTP Detailed Errors in IIS 7.0
C:\inetpub\history Sicherheitsnetz: Die IIS Konfiguration wird automatisch bei Änderungen gesichert. Ermöglicht den „rollback" zu einer früheren funktionierenden Konfiguration falls Fehler bei Einstellungen gemacht wurden.
C:\inetpub\logs Ordner für IIS Log-Dateien aller Art, u.a. Web Zugriff- Log-Dateien und Fehlerlogs
C:\inetpub\temp Zwischenspeicher-Verzeichnis u.a. um komprimierte Web-Dateien vorzuhalten oder für bereits kompilierte ASP.NET Dateien
C:\inetpub\wwwroot Beherbergt das Verzeichnis für die IIS7 Default Web Seite.

Anm.: Standardmäßig wird der Inetpub Ordner auf der Systempartition installiert. Aus Sicherheitsgründen mag es evtl. Sinn machen diesen Ordner zu Verschieben siehe hierzu: IIS7: Moving the INETPUB directory to a different drive

 

Welche Dienste bringt die IIS Installation?

Dienstname Prozessname Beschreibung
Application Host Helper Service (AppHostSvc) svchost.exe -k apphost(C:\Windows\system32\) Verantwortlich u.a. für automatische Konfigurationssicherung. App -Pool -Konto -Mapping. (-> C:\inetpub\history)Sinnvoller Dienst.
IIS Admin Services inetinfo.exe(C:\Windows\system32\inetsrv\) Für Kompatibilität: Bestandteil der „IIS6 Management Kompatibility" Features. Verantwortlich für das schreiben in das „alte" IIS6 Konfig-System „metabase.xml". Nur erforderlich wenn der Windows SMTP Dienst oder der „alte" FTP-Dienst betrieben wird (also vor FTP7.5).
Web Management Service (WMSVC) wmsvc.exe(C:\Windows\system32\inetsrv\) Ermöglicht die remote Verwaltung des IIS7 (via https). Nicht gestartet bei Default.
Windows Process Activation Service (WAS) svchost.exe -k iissvcs(C:\Windows\system32\) Verwaltet Anwendungs-Pool Konfiguration und Web-Arbeitsprozesse (w3wp.exe) und startet diese ggf. (Prozess Aktivierung). Dieser Service ist für den IIS unerlässlich! Benötigt auch für WCF Anwendungen.
World Wide Web Publishing Service (W3SVC) svchost.exe -k iissvcs(C:\Windows\system32\) Konfiguriert und updated den HTTP.sys. Informiert den WAS wenn eine http Anfrage eintrifft. Sammelt Performance Counter für Websites.Dieser Service ist für den IIS unerlässlich!

 

Wichtige IIS7 Benutzer Konten & Gruppen:

Die unten aufgeführten Benutzerkonten benötigen Rechte auf die Ordner mit Website Inhalten siehe hierzu Secure Content in IIS Through File System ACLs

Name Typ Bedeutung | Verwengungszweck
IUSRSiehe Understanding Built-In User and Group Accounts in IIS 7 Benutzer Der IIS greift standardmäßig unter diesen Benutzerkontext für anonyme Website Besucher auf html Dateien zu.
IIS_IUSRSSiehe Understanding Built-In User and Group Accounts in IIS 7 Gruppe Webseiten verrichten ihre Arbeiten auf dem System in w3wp.exe Prozessen und sind, da i.d.Regel mehrere w3wp.exe's, voneinander isoliert (Prozessisolation).Die w3wp.exe Prozesse können mit verschiedenen Benutzern betrieben werden um die Isolation der Seiten durch unterschiedliche Benutzerrechte weiter zu erhöhen (z.B. durch unterschiedliche Rechte für w3wp.exeUser1 auf Verzeichnis X zu w3wp.exeUser2 auf Verzeichnis Y ).Benutzer welche dieser Gruppe zugeteilt sind haben die notwendigen Rechte auf Dateien und Systemressourcen um für den IIS als Anwendungs-Pool Identität (und damit w3wp.exe User) zu fungieren.
ApplicationPoolIdentity z.B. "IIS APPPOOL\DefaultAppPool" Mehr dazu unter Application Pool Identities Benutzer Neuer Benutzeraccount , eingeführt (für IIS7.x) ab SP2 für Windows Vista und Windows Server 2008.Ab diesen SP Stand können Application Pools je unter einer eigenen quasi dynamisch für ihn erzeugten Identität laufen. Vergibt man Zugriffsrechte auf Ordner pro Application Pool Identität, erreicht man eine einfache Isolation der Application Pools untereinander und kann somit Websites voneinander sicher abgrenzen.Ist automatisch Mitglied in der IIS_IUSRS Gruppe.Sollte man sich ansehen grade wenn man Isolation von mehreren Websiten auf ein und demselben System sicherstellen muss (z.B. in Hosting Szenarien bzw. Betreiben von Websites von Dritten)

 

Jetzt geht’s los – „Die erste Webseite.“

Start -> Eingabe von „inetmgr" öffnet die IIS Verwaltungskonsole. Wir wählen die Default Web Site aus und gelangen über einen rechten Mouseklick + Explore in den für die Website konfigurierten Inhalts-Ordner. Wir tauschen die vorhandenen Dateien gegen eine Beispiel Site bestehend aus statischen Inhalten (Html, Bilder, Stylesheet u.ä):

IIS7: Exchanging the contents of the default website

Die Beispielseite finden Sie hier zum download.

Zum Anzeigen der Seite im Browser wählen wir die Option „Browse" vom Action-Menü:

IIS7: browse web site

Der Internet Explorer startet und wir bekommen wahrscheinlich folgende Fehlermeldung:

403.13 error when no default document configured and directory browsing is disabled

Grund für diese Fehlermeldung ist:

Der Besucher hat ein Verzeichnis angesurft (siehe URL http://localhost/), daher wird versucht dem Besucher eine Start Seite (z.b. index.htm) zurückzuspielen. Dazu hat der IIS eine Liste an Default Dokumenten (aka Webserver directory index), die definiert welche Dateien einer Seite als mögliche Startseiten in Betracht kommen. Findet der IIS im Verzeichnis keine Datei welche in der Liste aufgeführt wird versucht er das Verzeichnis als Ganzes aufzulisten, da dies aus Sicherheitsgründen standardmäßig untersagt ist bekommen wir die Fehlermeldung 403 Forbidden.

Abhilfe: Wir teilen dem IIS mit dass er die Seite start.html in die Default Document Liste aufnehmen soll:

Default Web Site auswählen -> Doppelklick auf Default Document -> Add -> start.html

IIS7: configuring a default document (aka directory index)

Anm.: Dieser Eintrag wird in eine lokale (also im Ordner der Website) web.config Datei geschrieben, d.h. man hätte auch die Einstellung direkt mit einem Texteditor machen können. Das ist kein absonderlicher Weg und dazu ist kein Neustart der Website notwendig - sondernd der IIS reagiert automatisch Änderungen in der web.config Datei. Warum?:  Damit haben Entwickler welche z.B. nur Dateien per FTP hochladen können (und keinen anderen Zugang zu Verwaltungstools haben) die Möglichkeit dem Webserver Einstellungen für die eigene Website selbst zu regeln.

Greifen wir nun auf unsere Website mit http://localhost/ zu, erscheint folgende gewünschte Ansicht:

sample site 1

 

„Noch eine Website anlegen!“

Auf einem IIS lassen sich natürlich mehrere Websites anlegen. Die Frage „Wieviele?" läßt sich nicht generell beantworten, da dies davon abhängig ist wie stark die Websites den Server beanspruchen. Soviel sei jedoch gesagt, bei Internet Service Providern können das schon mal hunderte bis wenige tausende sein.

Es gibt 3 Parameter welche eine IIS-Website eindeutig bestimmen: Die IP Adresse, den Port und Host Namen. Das Triplet IP:Port:Hostname wird als Binding bezeichnet:

Binding Parameter Beispiele Bedeutung
IP Adresse All Unassigned  oder *   Alle auf dem Server vohandenen IPs192.168.2.1 IPv4  Adresse2a01:110:8:f001:200:5efe:65.53.236.86 Ipv6 Adresse Die IP ist quasi die ‚Telefonnummer' des Servers, davon kann ein Server mehrere haben. Einzelne Websites können auf eine, mehrere oder alle IP Adressen ‚hören'.  Egal ob Ipv4 oder Ipv6.
Port 80 Standardport für http443 Standardport für httpsOder andere Die ‚Durchwahlnummer'I.d. Regel würde man im Browser den Port mit bei der URL angeben z.B. http://www.microsoft.com:80 macht kein Mensch - außer wenn kein Standardport verwendet wird (z.B. AdministrationsSite welche nicht für jedermann gleich sichtbar sein soll)
Host Name www.microsoft.com   Fully Qualified Domain Namebfrank7 Host Name Kann ich bitte den Klaus sprechen? ":Beim Aufruf von http://www.microsoft.com im Browser wird in einem Teils des Nachrichtenkopfes der http Anfrage dem sog. Host Header mit dem String „www.microsoft.com"  geschrieben.  Der IIS wertet diesen Header aus leitet die Anfrage an die entsprechende Website weiter. D.h diverse Websites können dieselbe IP haben müssen aber unterschiedliche Hostnamen haben. Als Host Header funktionieren FQDN's (Internet). Im Intranet finden auch Host | Maschine-Namen Verwendung.Vorsicht: Host Namen lassen sich nur mit Einschränkung für https verwenden. Siehe dazu: SSL certificates on Sites with Host Headers

Bei der Erstellung von mehreren Websites auf einem IIS ist darauf zu achten, daß die Bindings sich voneinander unterscheiden. Ansonsten läßt der IIS die Website erst gar nicht starten, z.B.:

IIS7: Error message cannot start website

 

Mögliche Konstellation von mehreren Websites auf einem IIS:

Konstellation Beispielszenarien
Gleiche IP, gleicher Port und unterschiedlicher Hostname Häufig anzutreffen auf Internet Webservern mit einer IP auf dem mehrere unterschiedliche Domains gehostet sind, welche alle über den http Standardport angesprochen werden sollen.
Gleiche IP, unterschiedlicher Port  und gleicher (oder kein) Hostname Seltener anzutreffen, gut zum mal schnell testen. Die Ports müssen explizit in der URL im Browser angegeben werden z.B. http://www.xyz.de:8080 und http auf nicht Standardports werden ggf. von Firewalls blockiert bzw. müssen explizit erlaubt weren.
Unterschiedliche IP, gleicher Port, und gleicher (oder kein) Hostname Z.B. Wenn mehrere Websites auf einem Server via verschlüsseltem https erreichbar sein müssen  (z.B. mehrere Internet shops auf einem Server)Anm.: Bei Verwendung von https machen Hostnamen nur im Ausnahmefall Sinn. Siehe dazu: SSL certificates on Sites with Host Headers

 

Wir erstellen nun eine 2te Website die sich zur 1sten bei im Port (80 vs. 8080) unterscheidet. Default Web Site auswählen -> rechter Mouseklick auf Sites  -> Add Web Site -> Folgende Einstellungen:

Site name: myothersite

Physical path: c:\webs\myothersite

Port: 8080

IIS7: add a 2nd web site

Die neu erstellte myothersite bekommt die ID 2 zugewiesen und ist bereits gestartet. Man beachte, daß als Website Verzeichnis ein neu angelegter Ordner (c:\webs\myothersite) angegeben worden ist.

Dieser Ordner wird mit Inhalten gefüllt (Beispiesite download hier):

IIS7: exchange content for second website

Und bekommt abschließend noch die für den IIS notwendigen Benutzerrechte:

Jeweils Read & Execute für den Benutzer IUSR und die Gruppe IIS_IUSRS auf den Ordner mit den Web-Inhalten:

IIS7: IUSR Permissions for a website folder

Ein Aufruf von http://localhost:8080/im lokalen Internet Explorer liefert:

sample site 2

Damit haben wir erstmal was es braucht um mehrere anonyme Websites auf einer IIS Installation einzurichten. Weitere Einstellungen des IIS gibt es in nachfolgenden Einträgen.

IIS für Einsteiger-Teil2.docx