Blog (218)
Komentarze (4k)
Recenzje (1)

AppCmd - zarządzanie IIS z wiersza poleceń w Windows Server

Strona główna@djfoxerAppCmd - zarządzanie IIS z wiersza poleceń w Windows Server
16.01.2013 20:48

Zarządzanie usługami IIS z poziomu GUI jest dziecinnie proste. Od wersji 7.0 wszystkie opcje są łatwo dostępne i zarządzanie jest niezmiernie proste. Oczywiście interfejs graficzny nie zawsze jest wygody w pewnych zastosowaniach. Do napisania skryptu zarządzającego witryną czy pulą aplikacji łatwiej użyć oczywiście wiersza poleceń. W tym momencie z pomocą przychodzi narzędzie AppCmd - administracja IIS z poziomu konsoli bez użycia graficznego środowiska Menadżera.

AppCmd pozwala na na:

  • Tworzenie i konfigurowanie witryn, pól aplikacji, katalogów wirtualnych
  • Zatrzymywanie i wznawianie witryn
  • Zatrzymywanie, wznawianie i odtwarzanie pól aplikacji
  • Podgląd procesów
  • Analiza reqestów aplikacji na serwerze IIS
  • Zarządzanie i backup konfiguracji aplikacji
  • Mechanizm potoków
bEDZPOLb

AppCmd.exe znajduje się w folderze %windir%\system32\inetsrv. Powyższa ścieżka nie istnieje w zmiennej path, a zatem aby ułatwić pracę, można ją tam dopisać. Dzięki temu zabiegowi uzyskamy dostęp do aplikacji z każdej lokacji.

Składnia

Narzędzie AppCmd działa poprzez wydanie odpowiednich poleceń (command) dla obiektów (object-type) z opcjonalnymi parametrami (parameter1:value1 ...):

appcmd (command) (object-type) <identifier></parameter1:value1 ...>
bEDZPOLh

Obiektem może być: SITE, APP, VDIR, APPPOOL, CONFIG, WP, REQUEST, MODULE, BACKUP, TRACE. W zależności od wybranego obiektu, posiada on własną listę komend, jaką można użyć. Najłatwiej przejrzeć ją poprzez zapytanie:

appcmd (object-type) /?

O parametrach do komend, najszybciej dowiemy się poprzez polecenie:

appcmd (command) (object-type) /? 

Przykłady

Teoria już za nami. Przejdźmy do kilku przykładów które pokarzą możliwości AppCmd, a także najbardziej przydatne polecenia. Część poleceń np. delete, czy set, jest analogiczna dla większości obiektów i nie ma potrzeby powtarzania ich dla każdej z opcji.

Witryny

appcmd list sites
bEDZPOLi

[list][item]lista witryn[/item]

Jeśli dodamy np. parametr /state:Started, otrzymamy listę z tylko aktywnymi witrynami. Listę możemy filtrować również za pomocą innych parametrów (patrz następny podpunkt).

[item]dodanie witryny[/item][code=shell]appcmd add site /name:Test /id:10 /bindings:"http/*:95:" /physicalPath:"c:\PUB\d1" [/code]

name - nazwa witryny, id - identyfikator witryny, bindings - powiązania (w tym przypadku dostęp przez port 95)

bEDZPOLj

[item]zmiana parametrów[/item][code=shell]appcmd set site Test /id:20 [/code]

[item]usuwanie[/item][code=shell]appcmd delete site Test[/code]

[/list]

Aplikacje

Mając już witrynę możemy pobawić się z aplikacjami w jej obrębie.

bEDZPOLk

[list] [item]dodanie aplikacji[/item]

appcmd add app /site.name:Test /path:/a1 /physicalPath:"c:\PUB\d1\a1"

site.name - witryna, path - ścieżka wirtualna (w tym przypadku będzie to a1, czyli dostęp będzie poprzez adres: http://adres:95/a1), physicalPath - ścieżka fizyczna do folderu z plikami [/list]

Pule aplikacji

appcmd add apppool /name:apool

[list][item][/item][item]dodanie puli aplikacji[/item]

Dodaliśmy własną pulę aplikacji o nazwie apool. [item]podgląd puli aplikacji[/item][code=shell]appcmd list apppool "apool" /text:*[/code]

Na wyjściu otrzymamy podgląd konfiguracji puli aplikacji:


APPPOOL
  APPPOOL.NAME:"apool"
  PipelineMode:"Integrated"
  RuntimeVersion:"v4.0"
  state:"Started"
  [add] 
    name:"apool" 
    queueLength:"1000" 
    autoStart:"true" 
    enable32BitAppOnWin64:"false" 
    managedRuntimeVersion:"v4.0" 
(...)

[item]edycja[/item]Dowolny parametr edytujemy w następujący sposób:

appcmd set apppool "apool" /autoStart:"false"

[/list]

Foldery wirtualne

appcmdadd vdir /app.name:"Test/a1" /path:/a2 /physicalPath:"c:\PUB\d1\a2"

[list][item]tworzenie folderu[/item]

Powyższe polecenie w naszym przypadku utworzyło wirtualną ścieżkę dla Test/a1.

[item]listowanie[/item][code=shell]appcmd list vdir /physicalPath:"c:\PUB"[/code]

Pomimo, iż listowanie, w każdym przypadku wygląda podobnie, to dzięki parametrom, można odfiltrować dane wg potrzeb. Tutaj tylko te witryny, które znajdują się fizycznie, w określonym folderze.

[/list]

Backup

Dzięki appcmd w prost sposób wykonany backup konfiguracji serwera:

appcmd add backup "b20120116"

[list][item]backup[/item]

[item]przywrócenie kopii[/item][code=shell]appcmd restore backup "b20120116"[/code]

[/list]

Procesy

[list] [item]analiza procesów[/item]Obiekt wp pozwala w prosty sposób na podgląda działających procesów. Poniższe polecenia listują wszystkie procesy działające na domyślnej puli aplikacji:

appcmd list wps /apppool.name:DefaultAppPool

lub dziłające na okreslonym numerze PID:

appcmd list wp "35674"

[/list]

Śledzenie witryn

Ciekawym obiektem jest trace to śledzenia witryn. Można w prosty sposób przeanalizować działanie witryn pod kątem błędów.

appcmd configure trace "Test" /enablesite

[list][item]dodanie witryny do śledzenia[/item]

Dodaliśmy śledzenie dla witryny Test. [item]podgląd logu[/item]Aby podejrzeć działanie trace, na początku należy wylistować logi (pliki XML):

appcmd list traces

Z logów wybieramy ten, który nas interesuje i wyświetlamy go

appcmd list trace "id_logu.xml" /text:path

[/list]

Potoki

Dzięki zaimplementowanemu mechanizmowi potoków, można jeszcze więcej wycisnąć z appcmd. Oto kilka bardziej zaawansowanych przykładów, które wykorzystują potoki (dla ułatwienia analizy, dodałem linie nowych znaków pomiędzy potokami):

appcmd list site /state:stopped /xml 
| appcmd start site /in

[list][item]szybkie uruchomianie nieaktywnych witryn[/item]

Listujemy witryny nieaktywne (wyjście w formacie /xml) i wrzucamy je jako wejście (/in) do polecenia uruchomienia witryn. [item]recycling puli aplikacji, dla witryn które generują błąd 500[/item]

appcm list trace /statusCode:500 /xml 
| appcmd list apppool /in /xml 
| appcmd recycle apppool /in

W tym przypadku listujemy witryny, generujące błąd 500, następnie przekazujemy je do list apppool w celu uzyskania odpowiednich pól aplikacji i na koniec robimy recycling tych puli.

[/list]

Podsumowanie

AppCmd to potężne narzędzie do zarządzania IIS z konsoli, w przypadku gdy np. nie możemy skorzystać z graficznego odpowiednika. Przedstawiłem zaledwie kilak podstawowych i najprzydatniejszych funkcji. Jeszcze jest wiele do odkrycia. Cieszy duża gama opcji i co najważniejsze, mechanizm potoków, który jest tu wręcz niezbędny.

bEDZPOLX