Jak przeprowadzić migrację witryny usług IIS 7 na inny serwer?

105

Zastanawiam się, jaka jest najlepsza praktyka przy przenoszeniu strony internetowej na inny serwer (wraz ze wszystkimi ustawieniami itp.)

  • Ręcznie ponownie utwórz witrynę na nowym serwerze (niemożliwe do utrzymania z oczywistych powodów)
  • Skopiuj plik ustawień applicationHost.config
  • Użyj appcmd, aby wykonać kopię zapasową i przywrócić
  • Użyj MSDeploy, aby opublikować witrynę na nowym komputerze
  • Użyj narzędzia innej firmy

Zastanawiam się tylko, jakie były doświadczenia innych.

Kalid
źródło
Firma Microsoft zaleca tylko wdrażanie w sieci Web (po utworzeniu tego narzędzia), więc zanim przeczytasz poniższe odpowiedzi, upewnij się, że wiesz, w przypadku czego jesteś całkowicie na własne ryzyko.
Lex Li

Odpowiedzi:

134

Powiedziałbym, że wyeksportuj konfigurację serwera w menedżerze IIS:

  1. W Menedżerze usług IIS kliknij węzeł serwera
  2. Przejdź do konfiguracji udostępnionej w sekcji „Zarządzanie”
  3. Kliknij „Eksportuj konfigurację”. (Możesz użyć hasła, jeśli wysyłasz je przez Internet, jeśli zamierzasz je przenieść za pomocą klucza USB, nie przejmuj się).
  4. Przenieś te pliki na nowy serwer

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. Na nowym serwerze wróć do sekcji „Konfiguracja udostępniona” i zaznacz „Włącz konfigurację współdzieloną”. Wprowadź lokalizację w fizycznej ścieżce do tych plików i zastosuj je.

  6. Powinien monitować o hasło szyfrowania (jeśli je ustawiłeś) i zresetować IIS.

BAM! Idź na piwo!

żuje
źródło
8
Prawdopodobnie powinienem użyć Import Server lub Site Package zamiast po prostu kopiować pliki, chociaż tego też nie testowałem. Ale wiem, że w pliku applicationHost.config znajdują się ścieżki do plików, które niekoniecznie będą obecne na nowym serwerze, co spowodowałoby jego uszkodzenie. Należy również wspomnieć, że obecnie w usługach IIS nie może istnieć ŻADNA witryna, więc ten proces nie blokuje aktualnie działającej konfiguracji.
frogstarr78
16
Nie można przecenić ostatniego kroku. Krytycznie ważne.
Rap
7
Niezbyt dobry pomysł, jeśli przeprowadzasz migrację do nowszej wersji usług IIS. W przeciwnym razie jest to sposób na zrobienie tego.
Roy Tinker
1
Zastanawiam się, czy to zadziała, bo nie powinno: docs.microsoft.com/en-us/iis/manage/ ...
vaso123
1
Udostępniona konfiguracja usług IIS nie została zaprojektowana jako sposób na migrację ustawień między komputerami, więc jeśli napotkasz jakiś problem po tej odpowiedzi, ugryź się i nie obwiniaj innych.
Lex Li
26

MSDeploy może migrować całą zawartość, konfigurację itp., Co zaleca zespół IIS. http://www.iis.net/extensions/WebDeploymentTool

Aby utworzyć pakiet, uruchom następujące polecenie (zastąp Default Web Site nazwą swojej witryny internetowej):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

Aby przywrócić pakiet, uruchom następujące polecenie:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log
Bill Staples
źródło
1
Dzięki Bill - widziałem to narzędzie, ale byłem ostrożny, ponieważ nadal było w wersji beta.
Kalid
1
W 2016 r. Jest to nadal „stan techniki”, ale praca z MSDEPLOY 3.6 jest naprawdę trudna. Mam nadzieję, że kiedyś stworzą coś nowego.
Warren P
MSDeploy nie przesłał nam poprawnie witryn. Skończyło się na jednej witrynie zawierającej aplikacje z każdej z naszych witryn, więc cała struktura była błędna.
brianary
Z pewnością jest to zalecany sposób, a dokumentacja, taka jak docs.microsoft.com/en-us/iis/publish/using-web-deploy/… i docs.microsoft.com/en-us/iis/publish/using-web- Wdrożenie /… są niezbędne, aby użytkownicy mogli opanować niezbędne kroki i kluczowe punkty, na które muszą zwrócić uwagę. Odpowiedzi na większość problemów w Internecie znajdują się już w artykułach. Jeśli ludzie poświęcają na to wystarczająco dużo czasu, Web Deploy nie jest „trudnym” narzędziem.
Lex Li
18

Oto przydatna witryna internetowa dotycząca używania appcmd do eksportowania / importowania konfiguracji witryny. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

Roy
źródło
Dzięki za link. Pozwoliło mi to również zmodyfikować identyfikator witryny i cokolwiek innego i nie musiałem konfigurować 10 różnych aplikacji i 30 różnych katalogów wirtualnych. Duża
oszczędność
Ponieważ to podejście nie uwzględnia podstawowych zależności (modułów IIS itp.), Używaj go na własne ryzyko.
Lex Li
12

Microsoft Web Deploy v3 może eksportować i importować wszystkie pliki, ustawienia konfiguracyjne itp. Wszystko to umieszcza w archiwum zip gotowym do zaimportowania na nowym serwerze. Może nawet uaktualnić do nowszych wersji usług IIS (v7-v8).

http://www.iis.net/extensions/WebDeploymentTool

Po zainstalowaniu narzędzia: kliknij prawym przyciskiem myszy serwer lub witrynę internetową w konsoli zarządzania usługami IIS, wybierz opcję „Wdróż”, „Eksportuj aplikację ...” i przeprowadź eksport.

Na nowym serwerze zaimportuj wyeksportowane archiwum zip w ten sam sposób.

Zymotik
źródło
ale zajmuje wszystkie pliki. czy jest sposób, aby pominąć pobieranie plików? jeśli na przykład migrujesz serwer FTP, spróbuje on pobrać wszystkie pliki i spakować je.
RayofCommand
2
@RayofCommand - Wybierając opcje wdrażania, możesz wyczyścić listę „Zawartość” - wtedy pakiet nie zawiera wszystkich plików.
Zhaph - Ben Duguid
1
Ale tylko przy wdrażaniu lokacja po lokacji ... nie przy przenoszeniu całego serwera.
Ethan Allen,
1
Po zainstalowaniu programu MS Web Deploy na serwerze docelowym (IIS8) konsola zarządzania usługami IIS nie zawiera żadnych opcji wdrażania w sieci Web.
brianary
1
Po zainstalowaniu pakietu nie mam też menu „Wdróż”.
Devil's Advocate
3

użyj appcmd, aby wyeksportować jedną lub wszystkie witryny, a następnie ponownie zaimportować na nowy serwer. Może to być iis7.0 lub 7.5. Podczas eksportowania za pomocą appcmd hasła są odszyfrowane, a następnie ponownie zaimportowane i ponownie zaszyfrowane.

Jim
źródło
3

Nie mogę komentować wątku z powodu braku przedstawiciela. Inny komentator stwierdził, że nie może migrować z niższej wersji do wyższej wersji usług IIS. Jest to prawdą, jeśli nie scalisz niektórych plików, ale jeśli to zrobisz, możesz, ponieważ właśnie zmigrowałem moją witrynę IIS 7.5 do IIS 8.0, korzystając z odpowiedzi opublikowanej przez chews.

Podczas tworzenia eksportu (II7.5) istnieją dwa pliki kluczy (administracja.config i applicationHost.config), które zawierają odniesienia do zasobów na serwerze IIS7.5. Na przykład biblioteka DLL będzie odwoływana z kluczem publicznym i wersją specyficzną dla 7.5. NIE są one takie same na serwerze IIS8. Konfiguracja funkcji również może się różnić (zapewniłem, że moje są identyczne). W 8 jest kilka nowych funkcji, które nigdy nie będą dostępne w wersji 7.5.

Jeśli jesteś wystarczająco odważny, aby scalić dwa pliki - zadziała. Musiałem raz odinstalować IIS, ponieważ zepsułem to, ale dostałem to po raz drugi.

Użyłem narzędzia do scalania (Beyond Compare) i bez czegoś równoważnego byłoby to ogromne PITA - ale było całkiem łatwe z dobrym narzędziem do porównywania (pięć minut).

Aby wykonać scalenie, pliki 8.0 należy porównać z wyeksportowanymi plikami 7.5 PRZED próbą importu. W większości przypadków pliki 8.0 muszą nadpisać elementy specyficzne dla serwera w wyeksportowanych plikach 7.5, pozostawiając elementy specyficzne dla puli witryny / aplikacji.

Okazało się, że administracja.config była prawie identyczna, bez informacji o wersji wielu wpisów. Ten był łatwy.

ApplicationHost.config ma znacznie więcej różnic. Niektóre wpisy są uporządkowane inaczej, ale poza tym identyczne, więc będziesz musiał przejrzeć każdą różnicę i to rozgryźć.

Umieściłem moje pliki eksportu 7.5 w folderze System32 \ inetsrv \ config \ Export przed scaleniem.

Połączyłem Z folderu System32 \ inetsrv \ config do folderu System32 \ inetsrv \ config \ Export dla obu plików, o których wspomniałem powyżej. Przesunąłem wszystko w plikach FROM z wyjątkiem tagów / elementów specyficznych dla witryny (np. Pule aplikacji, customMetadata, witryny, uwierzytelnianie). Na szczególną uwagę zasługuje wiele bloków tagów „lokalizacja” specyficznych dla witryny, które musiałem zachować, ale nowy serwer miał swój własny blok znaczników „lokalizacji” z ustawieniami domyślnymi serwera, które należy zachować.

Na koniec pamiętaj, że jeśli używasz kont usług, te zapisane w pamięci podręcznej hasła są niepotrzebne i będą musiały zostać ponownie wprowadzone w pulach aplikacji. Żadna z moich witryn nie działała początkowo, ale wystarczyło ponownie wprowadzić hasła do wszystkich moich pul aplikacji i działałem.

Jeśli ktoś, kto może komentować, wspomina o tym poście w wątku - prawdopodobnie pomoże to komuś takiemu jak ja, który ma wiele witryn na jednym serwerze o skomplikowanych konfiguracjach.

Pozdrowienia,

Stuart

Stuart
źródło
Właściwie użyłem odpowiedzi Stuarta do scalonej migracji, nadal nie lubię MS Web Deploy.
żuje
1

W moim przypadku pliki zostały już skopiowane, znalazłem najłatwiejszy sposób wykonania czynności z tego poradnika: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -multiple-iis-instances /

Wyeksportowałem AppPools / Websites, skopiowałem pliki xml na serwer docelowy i zaimportowałem AppPools, a następnie strony internetowe. Działał bardzo dobrze. To także kolejna doskonała opcja na to pytanie.

Ralph
źródło
spowodowało to po prostu błąd informujący, że domyślnej puli aplikacji i domyślnej witryny internetowej nie można nadpisać ... nie ma bueno.
devlin carnate
Spróbuj zmienić nazwę domyślnych na inną? i zobaczyć, czy zostaną utworzone w procesie opisanym powyżej?
Ralph
To zadziałało dla mnie, przechodząc z IIS7.5 (2008) do IIS10 (2019). Appcmd początkowo pokazał mi błędy w już istniejącej „domyślnej witrynie internetowej”. Zmiana nazwy nie zadziałała, więc usunąłem domyślną witrynę internetową. Import przebiegał następnie bez błędów.
MTAdmin