bernhard frank’s blog
Hauptverzeichnis des IIS beeinhaltet z.B. die Dateien zur IIS Konfiguration, Verwaltung (z.B.MMC), IIS-Module, Executables für die IIS Dienste.
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
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).
Das C:\inetpub Verzeichnis ist das Lese- und Schreibverzeichnis des IIS. Es enthält folgende Unterverzeichnisse:
Ordner
Beschreibung
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
Dienstname
Prozessname
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
Ermöglicht die remote Verwaltung des IIS7 (via https). Nicht gestartet bei Default.
Windows Process Activation Service (WAS)
svchost.exe -k iissvcs
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)
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!
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
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
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)
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.ä):
Die Beispielseite finden Sie hier zum download.
Zum Anzeigen der Seite im Browser wählen wir die Option „Browse" vom Action-Menü:
Der Internet Explorer startet und wir bekommen wahrscheinlich folgende Fehlermeldung:
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
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:
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.:
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
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):
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:
Ein Aufruf von http://localhost:8080/im lokalen Internet Explorer liefert:
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.
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
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
-----------------------------
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_ALLphpinfo();
?>
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.