Bernhard Frank's Blog

heiter und wolkig - zu den Themen Windows Server 2012, PowerShell, Private Cloud und Web (IIS)

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

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

  • Comments 11
  • Likes

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

IUSR

 Siehe 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_IUSRS

 Siehe 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 IPs

192.168.2.1 IPv4  Adresse

2a01: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 http

443 Standardport für https

Oder 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 Name

bfrank7 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.

Attachment: IIS für Einsteiger-Teil2.docx
Comments
  • Sehr übersichtlich und verständlich ! Klasse, vielen Dank, ist sehr hilfreich.

    Gruss

    Mario

  • Schließe mich an. Sehr hilfreich! Danke für die Mühen.

    LG,

    Tom

  • Bin ein Fan von deiner Arbeit

  • Super Doku.

    Sehr übersichtlich, informativ und hilfreich.

    Danke

    Grüße

    Stephan

  • Hallo,

    ich freue mich über eine Deutsche Anleitung zum IIS. Habe mir zum ersten Mal in dene letzten Tagen hiermit einen Webserver für CMS Typo3 angelegt. Habe jetzt jedoch beim Aufruf des Installationsmoduls ein Problem. Eine Fehlermeldung erscheint im Browser, bei der ich mir nicht zu helfen weiß:

    "HTTP-Fehler 500.0 - Internal Server Error

    C:\PHP\php-cgi.exe - Der FastCGI-Prozess wurde unerwartet

    abgebrochen.

    Modul FastCgiModule

    BenachrichtigungExecuteRequestHandler

    Handler PHP-FastCGI

    Fehlercode 0x000000ff

    Angeforderte

    URL

    http://localhost:80/typo3/install

    /index.php?mode=123&step=1&

    password=xxxxxxxx

    Physikalischer

    Pfad

    E:\Server\Sites\t3bl602\typo3\install

    \index.php

    AnmeldemethodeAnonym

    Angemeldeter

    Benutzer

    Anonym"

    Können Sie helfen? Gibt es eine Deutsche ISS-Dokumentation, wo man sich selbst auch als Anfänger helfen könnte?

    Gruß

    robin-miriam(at)arcor.de

    -----------------------------

    Hallo,

    hmm schwer auf Anhieb zu sagen wo es da scheitert. Das Problem hat seinen Ursprung bei der Install Seite aus PHP heraus. Der Fehlercode steht für mehrere Sachen s.u.

    C:\Users\bfrank>err 0x000000ff
    # for hex 0xff / decimal 255 :
      BTH_ERROR_UNSPECIFIED                                         bthdef.h
      RESERVE_QUEUE_OVERFLOW                                        bugcodes.h
    # An attempt was made to insert an entry in a reserve queue
    # that was already full.
      LLC_STATUS_PENDING                                            dlcapi.h
      NRC_PENDING                                                   nb30.h
    # /* asynchronous command is not yet finished   */
      SQL_255_severity_16                                           sql_err
    # Pseudocolumns are not allowed in the column list of a PIVOT
    # operator.
      ERROR_EA_LIST_INCONSISTENT                                    winerror.h
    # The extended attributes are inconsistent.
    # 6 matches found for "0x000000ff"

    vielleicht gibt das ja eine Richtung.

    Ich könnte mir vorstellen das die Datenbank ein Problem hat. Wenn PHP generell funktioniert, einfach mal eine test.php mit inhalt

    <?php

    // Show all information, defaults to INFO_ALL
    phpinfo();

    ?>

    erzeugen, in ein webverzeichnis legen und vom browser mit http://localhost/.../test.php aufrufen.

    Ansonsten hilft nur Failed Request Tracing einschalten und überwachungsregel für Ihren Fehlercode "500" anlegen (http://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis) und log Datei ansehen.

    sorry - geht leider nicht einfacher.

    hth

    Bernhard

  • super ding. Vielen dank für das klasse tutorial

  • Vielen Dank für diese super Doku !

    Es macht Spaß sie zu lesen.

  • danke, toll

  • sehr gut gemacht. DANKE

  • Danke für das Tutorial!

    Leider fehlt unter der neuen Website 'myothersite' der Benutzter IUSRS wenn ich auf edit permissions klicke.

    außerdem kommt der fehler 403.14 wenn ich mit dem browser auf diese Seite möchte.

    Irgendjemand eine Idee woran das liegt?

    Grüße

    ------

     

    Hi,

    hab ich vielleicht nicht deutlich geschrieben - wenn man eine neue Website im IIS anlegt dann werden nicht automatisch die benötigten Benutzer z.B. IUSR mit Rechten aufs Verzeichnis versorgt, das muss man selber machen. Was auch zu konfigurieren ist, ist die Standardseite (Default document) siehe im blog post weiter oben - sonst gibt's den 403.14.

     

    hth,

    Bernhard

     

  • Hallo, habe folgendes Problem, vielleicht kann mir ja jemand helfen.

    Ich möchte die Windows Authentifikation nutzen. Wenn ich auf dem Server localhost angebe, funktioniert das durchschleusen auch. Gebe ich aber di IP an, erscheint das Windows Anmeldefenster.

    Vielen Dank im Voraus

     

    -----------------

    Hi,

    das Password prompt kommt bei Windows Auth immer dann wenn der Client (Browser) sich nicht sicher ob er eine Automatische Anmeldung durchführen soll (wg. Sicherheit).

    Der IE nutzt dafür AFAIK das Zonen-Konzept. Websites in der Intranet Zone erlauben einen Automatische Anmeldung - bei Websites in der Internet Zone frägt er lieber nochmal nach. Wahrscheinlich nimmt der IE an dass bei der IP Adresse es sich um eine Website in der Internet Zone handelt.

    2 Dinge die ich probieren würde. Entweder die Site/IP in die Intranet Zone aufnehmen oder (weniger toll) die Automatische Anmeldung für die betroffene Zone erlauben.

    wie man das macht sollte in

    http://support.microsoft.com/kb/258063/en-us oder hier stehen

    http://support.microsoft.com/kb/174360/EN-US

    hth,

    Bernhard

     

     

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment