Blog (215)
Komentarze (2.9k)
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
bDUsjQif

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) 
bDUsjQil

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
bDUsjQim

listitemlista 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).

itemdodanie witryny/itemappcmd add site /name:Test /id:10 /bindings:"http/:95:" /physicalPath:"c:\PUB\d1" 

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

bDUsjQin

itemzmiana parametrów/itemappcmd set site Test /id:20

itemusuwanie/itemappcmd delete site Test

/list

Aplikacje

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

bDUsjQio

list itemdodanie 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

listitem/itemitemdodanie puli aplikacji/item

Dodaliśmy własną pulę aplikacji o nazwie apool.itempodgląd puli aplikacji/itemappcmd list apppool "apool" /text:

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" (...)

itemedycja/itemDowolny 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"

listitemtworzenie folderu/item

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

itemlistowanie/itemappcmd list vdir /physicalPath:"c:\PUB"

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"

listitembackup/item

itemprzywrócenie kopii/itemappcmd restore backup "b20120116"

/list

Procesy

list itemanaliza procesów/itemObiekt 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

listitemdodanie witryny do śledzenia/item

Dodaliśmy śledzenie dla witryny Test. itempodgląd logu/itemAby 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

listitemszybkie uruchomianie nieaktywnych witryn/item

Listujemy witryny nieaktywne (wyjście w formacie /xml) i wrzucamy je jako wejście (/in) do polecenia uruchomienia witryn. itemrecycling 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.

bDUsjQjb