IIS7 jako serwer stron WWW – cz. 1     Microsoft Server 2008

IIS7 jako serwer stron WWW – cz. 2 Udostępnij na: Facebook

Autor: Grzegorz Tworek

Opublikowano: 7 lutego 2008

Zawartość strony
Wstęp  Wstęp
Opcja SSL  Opcja SSL
Serwery i katalogi wirtualne  Serwery i katalogi wirtualne
Serwer wirtualny  Serwer wirtualny
Wirtualny katalog  Wirtualny katalog
Dziedziczenie konfiguracji  Dziedziczenie konfiguracji
Rady dla początkujących  Rady dla początkujących
Zarządzanie z linii poleceń  Zarządzanie z linii poleceń
IIS7 w Windows Server 2008 CORE  IIS7 w Windows Server 2008 CORE
Podsumowanie  Podsumowanie
Przeczytaj pozostałe części tego artykułu  Przeczytaj pozostałe części tego artykułu

Wstęp

W poprzedniej części mówiliśmy, jak się instaluje erwer IIS7. W tej zajmiemy się omówieniem opcji SSL oraz wirtualnymi serwerami i katalogami. Powiemy także o dziedziczeniu konfiguracji i zarządzaniu z linii poleceń.

 Do początku strony Do początku strony

Opcja SSL

Opcja ta dostępna jest jedynie w ustawieniach wirtualnych serwerów i katalogów. Nie jest dostępna dla całego serwera IIS7. Zaznaczenie checkboxu oznacza, że dla danego obiektu dozwolony będzie jedynie dostęp przez HTTPS. Aby opcja była aktywna, obiekt musi być wcześniej skonfigurowany tak, żeby istniało powiązanie (binding) z HTTPS.

 Do początku strony Do początku strony

Serwery i katalogi wirtualne

Aby zrozumieć działanie serwera IIS7, konieczna jest wiedza na temat tego, jak wygląda wewnątrz jego struktura. W IIS7 ma ona trzy poziomy:

  • Serwer IIS;
  • Serwery wirtualne (Sites);
  • Katalogi wirtualne (Virtual Directories).

Rys. 1. Trzy katalogi struktury serwera IIS7.

Rys. 1. Trzy katalogi struktury serwera IIS7.

Serwer IIS7 może zawierać jeden lub więcej serwerów wirtualnych, a każdy z nich ma katalog główny i ewentualnie katalogi wirtualne. Pierwszy serwer wirtualny nazywany jest domyślnie „Default Web Site”.

 Do początku strony Do początku strony

Serwer wirtualny

Serwer wirtualny (zwany często „site”) jest przez użytkowników z sieci widziany jako samodzielny serwer WWW. Na pierwszy rzut oka wcale nie widać, że kilka adresów WWW działa na tym samym komputerze. Każdy ma swój adres, swoją stronę domyślną, swoje ustawienia itp. Warto zastanowić się, jak to możliwe, że na jednym komputerze dostępne są serwery pod wieloma nazwami. Jest to możliwe na trzy różne sposoby:

  • Serwer IIS7 ma wiele adresów IP i każdy serwer wirtualny ma przydzielony swój adres. Dzięki temu żądanie strony, przychodząc do IIS7, kierowane jest do właściwego serwera wirtualnego, który je obsługuje. Rozwiązanie to wymaga wielu adresów IP przypisanych do serwera. Przez to w sieci Internet sprawdza się dość słabo, natomiast świetnie działa w serwerach udostępniających strony tylko dla sieci LAN.
  • Serwer IIS7 nie ma tylu adresów IP, ile ma serwerów wirtualnych, ale każdy serwer wirtualny działa na własnym porcie TCP/IP. W efekcie strony mają adresy http://mojastrona.pl:1234/ itp. W sieci LAN działa to poprawnie, ale w Internecie wielu klientów nie będzie mogło skorzystać ze strony ze względu na filtrowanie ruchu przez rozmaite firewalle. Poza tym, adres taki jest mniej elegancki, a jak ktoś zapomni podać numer portu, to trafi na zupełnie inny serwer wirtualny i w efekcie inne strony.
  • Serwer IIS7 ma jeden adres IP a wszystkie serwery wirtualne używają portu 80. Rozwiązanie takie używa tzw. host headers. Przeglądarka internetowa, komunikując się z serwerem WWW, poza pytaniem o stronę wysyła dane na temat tego, z jakim serwerem chciałaby się połączyć. Serwer IIS7 wykrywa takie żądanie i kieruje je do tego serwera, który ma przypisany odpowiedni host header. Ten sposób jest w chwili obecnej najczęściej spotykany w Internecie. W sieci LAN również działa to bardzo dobrze.

Rys. 2. W oknie konfiguracyjnym wirtualnego serwera należy wypełnić odpowiednie pola.

Rys. 2. W oknie konfiguracyjnym wirtualnego serwera należy wypełnić odpowiednie pola.

Aby utworzyć nowy serwer wirtualny, należy z menu kontekstowego serwera wybrać opcję „Add Web Site”.

W oknie konfiguracyjnym należy wypełnić odpowiednie pola:

  • Site name oznacza nazwę wirtualnego serwera. Tak, jak chce ją widzieć administrator IIS7, żeby łatwo poznać, który to site. „Mój serwer testowy” albo „serwer dla uciążliwych klientów” są nazwami jak najbardziej akceptowalnymi, ponieważ klient w przeglądarce nie widzi tej nazwy.
  • Application pool i przycisk Select nie mają praktycznie zastosowania w przypadku statycznych stron WWW.
  • Physical Path (ścieżka fizyczna) oznacza lokalizację, w której na dysku komputera znajdują się pliki *.html mające być serwowane jako strony WWW.
  • Connect as pozwala na wybranie konta, którym posłuży się IIS7, żeby odczytać pliki z dysku. W normalnych warunkach, do czasu naprawdę dobrego poznania założeń bezpieczeństwa w systemach Windows, najlepiej pozostawić tam wartość domyślną.

Sekcja „Bindings” (powiązania) definiuje metody, którymi ma kierować się IIS7, żeby przesłać żądanie do tego właśnie serwera wirtualnego. Ustawić można protokół HTTP lub HTTPS, adres IP serwera wirtualnego (domyślnie są to wszystkie adresy serwera IIS7), port TCP oraz host header.

Jeżeli serwer IIS7 ma obsługiwać tylko jeden serwer wirtualny, wskazane jest pozostawienie wartości domyślnych. Można wprawdzie wybrać HTTPS zamiast nieszyfrowanego HTTP, ale w takiej sytuacji, konieczne jest posiadanie certyfikatu, nabytego jedną z opisanych w niniejszym artykule metod. Jeżeli nie jest to konieczne (nie są planowane wirtualne serwery rozróżniane przez host headers), to nie należy podawać żadnej wartości host header, ponieważ może to prowadzić do niezrozumiałych na pierwszy rzut oka sytuacji, kiedy serwer IIS7 nie chce obsłużyć połączenia.

Checkbox na końcu okna dialogowego określa czy tak stworzony serwer wirtualny ma być uruchomiony natychmiast po utworzeniu, czy też utworzony i pozostawiony jako nieaktywny.

Warto zwrócić uwagę, że jeżeli parametry (a dokładniej bindings czyli powiązania) serwera wirtualnego są takie, że IIS7 nie będzie mógł określić, gdzie przekierować ruch – pojawi się ostrzeżenie.

Rys. 3. Ostrzeżenie pojawiające się, gdy wirtualny serwer nie wie, gdzie przesłać ruch.

Rys. 3. Ostrzeżenie pojawiające się, gdy wirtualny serwer nie wie, gdzie przesłać ruch.

W tym konkretnym przypadku istnieje już serwer wirtualny (Default Web Site) przypisany do wszystkich adresów, na porcie 80 i bez host header. Gdyby został uruchomiony drugi taki serwer wirtualny, IIS7 nie mógłby na podstawie żądania klienta określić dokąd przesłać zapytanie. Dlatego pojawia się ostrzeżenie, a jeżeli administrator chce koniecznie utworzyć taki wirtualny serwer – utworzy się on jako zatrzymany i nie będzie możliwe uruchomienie go równocześnie z Default Web Site.

 Do początku strony Do początku strony

Wirtualny katalog

W ramach jednego serwera wirtualnego możliwe jest utworzenie katalogów wirtualnych. Katalog taki, to część przekazywana w zapytaniu HTTP do serwera po nazwie hosta. Przykładowo, w zapytaniu http://mojeforum.firma.pl/admin - parametr admin definiuje katalog wirtualny. Katalog może wskazywać na inną ścieżkę fizyczną niż wirtualny serwer oraz mieć inny sposób uwierzytelniania.

Warto też przyzwyczaić się, do traktowania serwera wirtualnego jako katalogu wirtualnego o pustej nazwie, zlokalizowanego na tym serwerze. Aby utworzyć katalog wirtualny, z menu kontekstowego wirtualnego serwera należy wybrać „Add Virtual Directory” i w wyświetlonym oknie dialogowym podać nazwę i ścieżkę fizyczną. Dodatkowo, zmienić można parametry uwierzytelniania.

Należy wiedzieć, że jeżeli nie jest potrzebna inna ścieżka fizyczna, inny sposób uwierzytelniania, ani inne pozostałe parametry nie różnią się od parametrów serwera wirtualnego – tworzenie wirtualnego katalogu nie jest niezbędne. W takiej sytuacji, lepiej w folderze zawierającym pliki *.html utworzyć podfolder i w nim umieścić zasoby. Z punktu widzenia użytkownika przeglądarki, nie widać różnicy czy wyspecyfikowana w URL ścieżka odwołuje się do faktycznie istniejących na dysku katalogów, czy do katalogów wirtualnych.

 Do początku strony Do początku strony

Dziedziczenie konfiguracji

Jeżeli serwer IIS7 ma ustawiony domyślny dokument na mojastrona.htm, w serwerze IIS7 jest wirtualny serwer, a w wirtualnym serwerze jeszcze wirtualny katalog, to jaki jest domyślny dokument w tym katalogu? Pytanie jest tylko pozornie proste, ponieważ tak naprawdę wcale nie wiadomo. Jeżeli tworzy się nowy obiekt, to ustawienia dziedziczone są z obiektu nadrzędnego. To znaczy, że dla nowego serwera wirtualnego ustawienia są takie, jak dla całego IIS7, a dla katalogu wirtualnego takie, jak dla serwera wirtualnego, w którym folder ów jest tworzony.

Taki nowy obiekt ma wszystkie parametry odziedziczone po obiekcie nadrzędnym. Dlatego na liście parametrów, jako „Entry Type” (typ wpisu), wszystkie parametry oznaczone są jako „Inherited” (odziedziczone).

Rys. 4. Wszystkie parametry na liście parametrów oznaczone są jako „Inherited”.

Rys. 4. Wszystkie parametry na liście parametrów oznaczone są jako „Inherited”.

Oznacza to, że w konfiguracji katalogu wirtualnego znalazły się dlatego, że było tak w obiekcie nadrzędnym. Jeżeli teraz ktoś doda własną stronę do listy w katalogu wirtualnym – strona się pojawi, ale jako „local”.

Rys. 5. Dodanie własnej strony do listy w katalogu wirtualnym.

Rys. 5. Dodanie własnej strony do listy w katalogu wirtualnym.

Jeżeli coś jest „local” dla serwera wirtualnego, staje się „inherited” dla katalogów wirtualnych. Choć brzmi to w pierwszym momencie dziwnie, po chwili zastanowienia jest oczywiste.

Warto wiedzieć, że zawsze można wrócić do ustawień obiektu nadrzędnego, klikając na „Revert to Inherited” z prawej strony konsoli zarządzającej.

Właśnie ze względu na taką a nie inną metodę dziedziczenia ustawień, jedną z najważniejszych operacji administracyjnych w IIS7 jest poprawne skonfigurowanie parametrów w obiekcie nadrzędnym dla wszystkich innych, czyli właśnie w serwerze IIS7.

 Do początku strony Do początku strony

Rady dla początkujących

Poprawne skonfigurowanie IIS7 do obsługi statycznych stron WWW nie jest trudne, ale mnogość opcji konfiguracyjnych sprawia, że nietrudno coś zepsuć. Przy braku doświadczenia znalezienie problemu może być sporą trudnością. Dlatego, samodzielnie konfigurując serwer, warto stosować następujące reguły:

  • Zaraz po instalacji serwera IIS7 należy na tym samym komputerze wejść na stronę https://localhost. Powinna się otworzyć strona powitalna. Jeżeli się nie otwiera – trzeba wrócić do instalacji i dokładnie sprawdzić wybrane opcje;
  • Jeżeli serwer ma mieć tylko jeden serwer wirtualny, należy wgrać pliki html do katalogu c:\inetpub\wwwroot i przestawić domyślną stronę na właściwą. Po tej operacji należy sprawdzić czy https://localhost działa poprawnie i pokazuje nową stronę;
  • Jeżeli serwer IIS7 ma mieć kilka serwerów wirtualnych, należy ich katalogi fizyczne umieścić w katalogu c:\inetpub\wwwroot lub umieścić w innym miejscu (ale nie na pulpicie ani w dokumentach!) i ustawić im prawa takie, jak ma c:\inetpub\wwwroot. Dopiero później do tych folderów należy skopiować (nie przenieść!) pliki html;
  • Na początku nie należy eksperymentować z host headers, póki nie opanuje się wszystkich innych opcji. Warto pamiętać, że dla ustawionego host header nie zadziała link https://localhost. Do lokalnych testów host header, najprościej dodać stosowny wpis w pliku hosts. Jeżeli brzmi to niejasno, naprawdę lepiej wcześniej doczytać niż rozpoznawać działanie host headers w IIS7 metodą prób i błędów;
  • Każdą wprowadzoną zmianę należy testować. Po jednej na raz. Dzięki temu możliwe będzie wychwycenie ustawienia, przy którym coś nie działa;
  • Jeżeli serwer wirtualny przestał działać i nie wiadomo dlaczego, być może najprostszą metodą jest wyłączenie go i stworzenie nowego o właściwych parametrach;
  • Warto pamiętać, że IIS7 ma mechanizmy backup i odtwarzania całej konfiguracji. Wprawdzie w chwili pisania niniejszego artykułu, dostępna wersja nie oferowała tego przez GUI i konsolę zarządzającą, to jednak poprzez zarządzanie z linii poleceń (omówione poniżej) można łatwo backup wykonać. Dzięki temu, w razie nieudanego eksperymentu, zawsze można wrócić do poprzedniego, działającego stanu.

 Do początku strony Do początku strony

Zarządzanie z linii poleceń

Poza konsolą zarządzającą IIS7, istnieje również narzędzie %windir%\system32\inetsrv\appcmd.exe Narzędzie to pozwala na wykonanie praktycznie wszystkich operacji administracyjnych poprzez wiersz poleceń. Dzięki temu, żmudne powtarzalne działania można umieścić w skryptach i wykonać bez monotonnego klikania w opcje. Podstawowe działania takie, jak dodanie serwera wirtualnego, dodanie katalogu wirtualnego mogą być łatwo wykonane przez wprowadzenie stosownego polecenia. Składnia polecenia wygląda następująco: %windir%\system32\inetsrv\appcmd.exe <polecenie> <obiekt>. Obiekty wyświetlane są po wydaniu polecenia %windir%\system32\inetsrv\appcmd.exe /?, a polecenia dla konkretnego obiektu poprzez %windir%\system32\inetsrv\appcmd.exe <obiekt> /?.

W szczególnym przypadku, obiektem może być wspomniany wcześniej backup konfiguracji. Dla obiektu backup dostępne polecenia to list (wyświetlające kopie zapasowe), add (wykonujące kopię), delete (usuwające wskazaną kopię zapasową) oraz restore (odtwarzające wskazaną kopię).

Aby wykonać kopię zapasową konfiguracji, należy wprowadzić polecenie %windir%\system32\inetsrv\appcmd.exe add backup ”kopia z dnia 20080101”

Rys. 6. Wprowadzenie polecenia do utworzenia zapasowej kopii konfiguracji.

Rys. 6. Wprowadzenie polecenia do utworzenia zapasowej kopii konfiguracji.

Po takim zapisaniu konfiguracji można spokojnie eksperymentować z serwerem, a jeżeli coś się nie uda, poleceniem %windir%\system32\inetsrv\appcmd.exe restore backup ”kopia z dnia 20080101” wrócić szybko do oryginalnej konfiguracji.

Rys. 7. Powrót do oryginalnej konfiguracji za pomocą odpowiedniego polecenia.

Rys. 7. Powrót do oryginalnej konfiguracji za pomocą odpowiedniego polecenia.

 Do początku strony Do początku strony

IIS7 w Windows Server 2008 CORE

Pisząc o IIS7 nie wolno zapomnieć o specjalnej wersji system: Windows Server 2008 CORE. Wersja ta charakteryzuje się brakiem GUI, ale jako serwer statycznych stron WWW nadaje się zupełnie dobrze. Instalacja IIS7 na serwerze w wersji CORE wykonywana jest poleceniem ocsetup.exe, a jej szczegóły wykraczają poza ramy niniejszego artykułu. Warto jednak wiedzieć, że sposób działania serwera IIS7 pozostaje ten sam. Dodatkowo, w identyczny sposób działa narzędzie appcm.exe.

 Do początku strony Do początku strony

Podsumowanie

Podsumowując, należy koniecznie zwrócić uwagę, że użycie IIS7 wyłącznie do publikowania statycznych stron jest niemal barbarzyństwem. Serwer ten został zaprojektowany do wydajnej, bezpiecznej i wygodnej pracy z aplikacjami internetowymi i właśnie w takim zastosowaniu sprawdza się najlepiej. Serwery publikujące statyczne strony znane są co najmniej od kilkunastu lat i ich zasada działania specjalnie się nie zmienia. Z drugiej jednak strony, mając system Windows Server 2008, czemu nie użyć najbardziej zaawansowanego serwera HTTP na świecie? Nawet tylko do prostych stron warto.

 Do początku strony Do początku strony

Przeczytaj pozostałe części tego artykułu


Grzegorz Tworek Grzegorz Tworek (Konsultant ISCG, MVP)
Inżynier systemowy, komputerowiec w drugim pokoleniu. Od wielu lat aktywnie promuje idee związane z bezpieczeństwem informatyki, zwłaszcza w powiązaniu z systemami Microsoft. Autor artykułów i książek na temat security, prelegent na rozmaitych konferencjach. Aktywnie uczestniczy w działaniach SEClub. Równie duży zapał do tworzenia jak i do psucia systemów sprawia, że w projektach najchętniej uczestniczy jako audytor. W lipcu 2007 został nagrodzony tytułem Most Valuable Professional w kategorii Enterprise Security. Prowadzi polski blog TechNet.
 Do początku strony Do początku strony

IIS7 jako serwer stron WWW – cz. 1     Microsoft Server 2008