blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

Autopilot in IIS7

Web-Development auf der lokalen Maschine ist dank Visual Studio und integriertem Webserver sehr bequem. Irgendwann muss die WebApp auf einem Webserver deployed werden. Das kann über mehrere Wege erfolgen.

Nun, Windows Server 2008 ist eine perfekte, stabile Applikations-Plattform und bietet mit IIS7 eine Vielzahl an Möglichkeiten zur Konfiguration und Bereitstellung von Web-Anwendungen. Die Bits zum Testen gibt es hier: Download Windows Server 2008 R2 with Service Pack 1.

Und nachdem IIS7 so viel kann, gibt es wirklich viele Tipps und Tricks dafür. Eine gute Anlaufstelle dafür ist http://learn.iis.net.

Wenn der Deployment-Prozess manuell erfolgt oder dokumentiert oder automatisiert werden soll, kann das IIS7-Command-Line Tool APPCMD helfen.

Für alle Developer, die das Tool noch nicht kennen hier ein paar Informationen dazu. APPCMD kann beim (automatisierten) Deployment helfen und wiederkehrende Aktionen beschleunigen.

APPCMD stellt die wichtigsten IIS-Verwaltungsfunktionen für Kommandozeile oder Scripts bereit (nur für IIS7). APPCMD.EXE liegt im Verzeichnis des Internet Information Servers in %windir%\System32\inetsrv.

Getting Started with AppCmd.exe zeigt eine Übersicht der wichtigsten Funktionen.

Hier ein paar Befehle, die ich immer wieder verwende:

APPCMD LIST SITE

zeigt alle Websites mit ihren Bindungen an, z.B.:

appcmd-list-site

Das entspricht damit der Anzeige im Internetinformationsdienste-Manager.

iis7-some-webs

Netterweise können die Webs so auch in ein File umgeleitet werden, etwa für eine rasche Dokumentation:

APPCMD LIST SITE > C:\Tasks\Websites.log

Sehr praktisch zur Anzeige aller HTTP-Requests ist dieser Befehl:

APPCMD LIST REQUEST

zeigt alle aktuellen Anfragen an den Webserver:

appcmd-list-request

Damit kann man beispielsweise mit einem kleinen Script nachsehen, was der Webserver für einen bestimmten Application Pool so zu tun hat und welche Seiten in welcher Antwortzeit ausgeliefert werden.

Das sieht dann mit meinem Beispiel als Script für den AppPool "nopCommerce" so aus:

@echo off
:endlos
%windir%\system32\inetsrv\APPCMD LIST REQUEST /apppool.name:nopCommerce >> C:\Tasks\iisperformance_nopCommerce.log
goto endlos

Das Script wird gestartet und nach ein paar Sekunden Laufzeit (und einigem Herumklicken in der Website) mit STRG+C abgebrochen. Das erzeugte Logfile (iisperformance_nopCommerce.log mit Zeilenumbruch zur vollständigen Lesbarkeit) liefert die Requests mit ihrer Antwortzeit:

appcmd-list-request-logfile

Auch wenn es für Performance und Stress-Tests viele Tools gibt: Diese Methode ist quasi "eingebaut" und sehr rasch einsetzbar. Ich habe damit bereits in langsamen Webs einige Performance-Indikatoren identifizieren können.

Übrigens funktioniert nicht nur der App-Pool-Name, sondern auch der Site-Name:

APPCMD LIST REQUEST /site.name:nopCommerce

(An dieser Stelle ein kurzer Hinweis zum Fiddler2 Tool - der Web Debugging Proxy hilft ebenso für die Analyse von Web-Traffic...)

Die Anzeige von config-Einstellungen kann so erfolgen:

APPCMD LIST CONFIG "Default Web Site/app1" -section:defaultDocument

appcmd-list-config

Nachdem APPCMD mit Objekten umgehen kann, können damit nicht nur Informationen aus IIS ausgelesen, sondern auch Websites, virtuelle Verzeichnisse, App-Pools angelegt und konfiguriert werden. Die Übersicht zeigt die möglichen Funktionen:

appcmd-commands

"AppCmd enables you to easily control the server without using a graphical administration tool and to quickly automate server management tasks without writing code."

Genau dafür ist APPCMD da: Für die rasche Anwendung und zum Automatisieren von IIS Web-Konfigurationen. Praktisch!

Weitere Funktionen und Beschreibungen von APPCMD findet ihr in Getting Started with AppCmd.exe.

Happy scripting!



Loading