Windows Server IIS

6 Kernbereiche
Die wichtigsten IIS-Tools und -Befehle unter Windows Server: inetmgr · appcmd · PowerShell · Websites & App-Pools · SSL-Zertifikate · Diagnose & Fehlersuche IIS (Internet Information Services) ist der Webserver von Microsoft für das Hosting von Websites, Webanwendungen und APIs. Diese Cheatsheet fasst die wichtigsten Tools, Befehle und Konzepte für die tägliche Administration zusammen.

GUI-Tools – IIS grafisch verwalten

inetmgr
Win + R"inetmgr"Enter

IIS-Manager ist das grafische Hauptwerkzeug für die IIS-Verwaltung. Hier können Sie Websites, App-Pools, Zertifikate und Module konfigurieren.

Tipp: Der IIS-Manager kann auch von einem Client aus gestartet werden, um einen entfernten IIS-Server zu verwalten – wählen Sie im Menü "Datei → Verbindung mit Server herstellen".

Websites & Bindings – Hosting konfigurieren

Website · Binding · Hostname · Port
appcmd add site /name:"MeineWebseite" /physicalPath:"C:\inetpub\wwwroot\meineseite" /bindings:"http/*:80:www.meineseite.local"

Websites sind die grundlegenden Hosting-Einheiten in IIS. Jede Website hat einen physischen Pfad und Bindings (Hostname, Port, Protokoll).

Binding-Typen

Typ Beschreibung Beispiel
HTTP Unverschlüsselte Verbindung (Port 80) http://www.domain.local:80
HTTPS Verschlüsselte Verbindung mit SSL (Port 443) https://www.domain.local:443
Net.TCP TCP-basierte Kommunikation (WCF) net.tcp://server:808
Net.Pipe Named Pipes (lokal) net.pipe://localhost
Net.Msmq Message Queuing net.msmq://localhost
Beispiele
# appcmd: Neue Website erstellen
appcmd add site /name:"MeineWebseite" /physicalPath:"C:\inetpub\wwwroot\meineseite" /bindings:"http/*:80:www.meineseite.local"
# appcmd: Alle Websites anzeigen
appcmd list site
# appcmd: Website stoppen
appcmd stop site "MeineWebseite"
# appcmd: Website starten
appcmd start site "MeineWebseite"
# PowerShell: Website mit HTTPS-Binding erstellen
New-IISSite -Name "SecureSite" -PhysicalPath "C:\inetpub\wwwroot\secure" -BindingInformation "*:443:secure.domain.local" -CertificateThumbprint "THUMBPRINT"
Tipp: Hostname-Bindings ermöglichen das Hosting mehrerer Websites auf einem Server (Virtual Hosting). Stellen Sie sicher, dass der Hostname im DNS aufgelöst wird.

Application Pools – Isolation & Leistung

AppPool · .NET CLR · Recycling · Identity
appcmd add apppool /name:"MeinAppPool" /managedRuntimeVersion:"v4.0"

Application Pools isolieren Webanwendungen voneinander. Jeder AppPool läuft in einem eigenen Worker-Prozess und kann individuell konfiguriert werden.

AppPool-Einstellungen

Einstellung Beschreibung
.NET CLR Version v2.0 oder v4.0 (oder "Kein verwalteter Code" für PHP/Node.js)
Pipeline-Modus Integrated (empfohlen) oder Classic
Identity ApplicationPoolIdentity (Standard), LocalSystem, NetworkService, Custom
Recycling Zeitgesteuerte oder bedarfsgesteuerte Neustarts
CPU-Limit Maximale CPU-Auslastung
Start-Modus OnDemand (Standard) oder AlwaysRunning
Beispiele
# appcmd: AppPool erstellen
appcmd add apppool /name:"MeinAppPool" /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated"
# appcmd: Alle AppPools anzeigen
appcmd list apppool
# appcmd: AppPool-Identity setzen
appcmd set apppool "MeinAppPool" /processModel.identityType:"LocalSystem"
# appcmd: AppPool recyceln
appcmd recycle apppool "MeinAppPool"
# PowerShell: AppPool konfigurieren
Get-IISAppPool -Name "MeinAppPool" | Set-IISAppPool -ManagedPipelineMode "Integrated"
Tipp: Verwenden Sie separate Application Pools für verschiedene Anwendungen, um Stabilität und Sicherheit zu erhöhen. Ein Absturz eines AppPools beeinflusst dann nicht andere Anwendungen.

SSL-Zertifikate – Verschlüsselung für HTTPS

Zertifikat · HTTPS · SNI · Bindings
appcmd set site "MeineWebseite" /+bindings.[protocol='https',bindingInformation='*:443:www.meineseite.local',sslFlags=1]

SSL-Zertifikate ermöglichen die verschlüsselte HTTPS-Kommunikation. Sie werden in IIS mit Bindings verknüpft und können mit SNI (Server Name Indication) für mehrere Domains verwendet werden.

Beispiele
# PowerShell: Zertifikat anzeigen
Get-ChildItem -Path "Cert:\LocalMachine\My"
# PowerShell: Zertifikat in IIS-Binding einbinden
New-IISSiteBinding -Name "MeineWebseite" -Protocol "https" -BindingInformation "*:443:www.meineseite.local" -CertificateThumbprint "THUMBPRINT"
# appcmd: HTTPS-Binding hinzufügen
appcmd set site "MeineWebseite" /+bindings.[protocol='https',bindingInformation='*:443:www.meineseite.local']
# appcmd: Zertifikat mit Thumbprint zuweisen
appcmd set site "MeineWebseite" /bindings.[protocol='https',bindingInformation='*:443:www.meineseite.local'].certificateHash "THUMBPRINT"
# IIS-Manager: Zertifikat importieren (GUI)
Server-Zertifikate → Aktion "Importieren..." → .pfx-Datei auswählen
Tipp: Für die Verwendung von Let's Encrypt mit IIS können Sie das Tool "Certify" oder "win-acme" verwenden, um automatische Zertifikatsverlängerungen einzurichten.

PowerShell-Cmdlets – IIS mit PowerShell verwalten

Get-IISSite · New-IISSite · Get-IISAppPool · Set-IISAppPool
Get-IISSite Get-IISAppPool New-IISSite -Name "Website" -PhysicalPath "C:\inetpub\wwwroot"

PowerShell-Cmdlets für die IIS-Verwaltung – die moderne und automatisierbare Alternative zu GUI-Tools und appcmd.

IIS-PowerShell-Cmdlets

Cmdlet Beschreibung
Get-IISSite Alle Websites anzeigen
New-IISSite Website erstellen
Remove-IISSite Website löschen
Get-IISAppPool Alle AppPools anzeigen
New-IISAppPool AppPool erstellen
Set-IISAppPool AppPool konfigurieren
Get-IISSiteBinding Bindings einer Website anzeigen
New-IISSiteBinding Binding hinzufügen
Start-IISSite Website starten
Stop-IISSite Website stoppen
Restart-IISAppPool AppPool neu starten
Beispiele
# Alle Websites anzeigen
Get-IISSite | Format-Table Name,State,PhysicalPath
# Neue Website erstellen
New-IISSite -Name "PowerShellSite" -PhysicalPath "C:\inetpub\wwwroot\ps-site" -BindingInformation "*:80:ps.local"
# AppPool erstellen
New-IISAppPool -Name "MyAppPool"
# AppPool starten
Restart-IISAppPool -Name "MyAppPool"
# Website deaktivieren
Stop-IISSite -Name "PowerShellSite"
Tipp: Das IIS-PowerShell-Modul (WebAdministration) muss geladen sein. Auf Servern mit IIS ist es standardmäßig verfügbar. Mit Import-Module WebAdministration laden Sie es bei Bedarf.

Diagnose & Fehlersuche – IIS-Probleme beheben

Failed Request Tracing · IIS-Logs · Health · iisreset
appcmd list site /config /xml iisreset /status

Diagnose-Tools für die Überprüfung und Fehlersuche in der IIS-Infrastruktur.

IIS-Diagnose-Befehle

Tool / Befehl Beschreibung
appcmd list site /config Komplette Konfiguration einer Website anzeigen
appcmd list apppool /config Komplette Konfiguration eines AppPools anzeigen
iisreset /status Status aller IIS-Dienste anzeigen
iisreset IIS komplett neustarten (alle Dienste)
Get-IISSiteState PowerShell: Status aller Websites
%SystemDrive%\inetpub\logs\LogFiles IIS-Log-Dateien (standardmäßig)
%windir%\system32\inetsrv\config\applicationHost.config Hauptkonfigurationsdatei von IIS
Beispiele
# IIS-Konfiguration anzeigen (XML)
appcmd list site /config /xml
# IIS-Logs öffnen
explorer C:\inetpub\logs\LogFiles
# IIS-Manager: Failed Request Tracing
Website → Erweiterte Einstellungen → Failed Request Tracing → Aktivieren
# PowerShell: Website-Status prüfen
Get-IISSite | Select-Object Name,State
Tipp: Bei 500-Fehlern aktivieren Sie Failed Request Tracing für die betroffene Website, um detaillierte Fehlerinformationen zu erhalten. Die Logs finden Sie in C:\inetpub\logs\FailedReqLogFiles.

IIS-Kernkonzepte

Website Hosting-Einheit mit Bindings
Virtual Hosting
AppPool Isolierte Prozessumgebung
Worker-Prozess
Binding Protokoll, Port, Hostname
HTTP/HTTPS
SSL HTTPS-Verschlüsselung
Zertifikate
Module Erweiterungen
ASP.NET, PHP, etc.
SNI Server Name Indication
Mehrere SSL-Domains

Quick Summary

inetmgr
IIS-Manager (GUI)
Website
Hosting
AppPool
Isolation
SSL
HTTPS
Get-IIS
PowerShell
iisreset
Diagnose
appcmd add site /name:"Site" /physicalPath:"C:\path" /bindings:"http/*:80:host" · Get-IISSite · iisreset