Wdrażanie pakietów internetowych

Autor: Jason Lee

W tym temacie opisano sposób publikowania pakietów wdrażania sieci Web na serwerze zdalnym przy użyciu narzędzia internetowego wdrażania sieci Web (Web Deploy) usług Internet Information Services (IIS) 2.0.

Istnieją dwa główne sposoby wdrażania pakietu internetowego na serwerze zdalnym:

  • Możesz bezpośrednio użyć narzędzia wiersza polecenia MSDeploy.exe.
  • Możesz uruchomić plik [nazwa projektu].deploy.cmd generowany przez proces kompilacji.

Wynik końcowy jest taki sam, niezależnie od używanego podejścia. Zasadniczo wszystkie pliki deploy.cmd są uruchamiane MSDeploy.exe z określonymi wstępnie wartościami, aby nie trzeba było podawać tyle informacji, aby wdrożyć pakiet. Upraszcza to proces wdrażania. Z drugiej strony użycie MSDeploy.exe bezpośrednio zapewnia znacznie większą elastyczność w zakresie sposobu wdrażania pakietu.

Które podejście, którego używasz, zależy od różnych czynników, w tym od tego, ile kontroli wymagasz w procesie wdrażania, oraz tego, czy jest przeznaczona usługa Web Deploy Agent zdalny, czy program obsługi web deploy. W tym temacie wyjaśniono, jak używać poszczególnych metod i określać, kiedy każde podejście jest odpowiednie.

Zadania i przewodniki w tym temacie zakładają, że:

Uruchomienie pliku [nazwa projektu].deploy.cmd jest najprostszym sposobem wdrożenia pakietu internetowego. W szczególności użycie pliku .deploy.cmd zapewnia te korzyści wynikające z bezpośredniego używania MSDeploy.exe:

  • Nie musisz określać lokalizacji pakietu wdrażania sieci Web — plik deploy.cmd już wie, gdzie jest.
  • Nie musisz określać lokalizacji pliku SetParameters.xml — plik deploy.cmd już wie, gdzie jest.
  • Nie musisz określać źródłowych i docelowych dostawców MSDeploy — plik .deploy.cmd już wie, które wartości mają być używane.
  • Nie trzeba określać ustawień operacji MSDeploy — plik .deploy.cmd automatycznie dodaje wymagane wartości do polecenia MSDeploy.exe.

Przed użyciem pliku .deploy.cmd w celu wdrożenia pakietu internetowego upewnij się, że:

  • Plik .deploy.cmd [nazwa projektu]. SetParameters.xml plik i pakiet internetowy ([nazwa projektu].zip) znajdują się w tym samym folderze.
  • Narzędzie Web Deploy (MSDeploy.exe) jest instalowane na komputerze z uruchomionym plikiem .deploy.cmd .

Plik .deploy.cmd obsługuje różne opcje wiersza polecenia. Po uruchomieniu pliku z poziomu wiersza polecenia jest to podstawowa składnia:

[project name].deploy.cmd [/T | /Y]
                          [/M:<computer name>]
                          [/A:<Basic | NTLM>]
                          [/U:<user name>]
                          [/P:<password>]
                          [/L]
                          [/G:<true | false>]
                          [Additional MSDeploy.exe flags]

Musisz określić flagę /T lub flagę /Y , aby wskazać, czy chcesz wykonać uruchomienie wersji próbnej, czy wdrożenie na żywo (nie używaj obu flag w tym samym poleceniu). W tej tabeli opisano przeznaczenie każdej z tych flag.

Flaga Opis
/T Wywołuje MSDeploy.exe z flagą –whatif , która wskazuje przebieg wersji próbnej. Zamiast wdrażać pakiet, tworzy raport o tym, co się stanie w przypadku wdrożenia pakietu.
/Y Wywołuje MSDeploy.exe bez flagi –whatif . Spowoduje to wdrożenie pakietu na komputerze lokalnym lub określonym serwerze docelowym.
/M Określa nazwę serwera docelowego lub adres URL usługi. Aby uzyskać więcej informacji na temat wartości, które można podać tutaj, zobacz sekcję Zagadnienia dotyczące punktu końcowego w tym temacie. Jeśli pominięto flagę /M , pakiet zostanie wdrożony na komputerze lokalnym.
/A Określa typ uwierzytelniania, którego MSDeploy.exe należy użyć do wykonania wdrożenia. Możliwe wartości to NTLM i Basic. Jeśli pominięto flagę /A , typ uwierzytelniania jest domyślnie włączony do NTLM na potrzeby wdrożenia w usłudze Web Deploy Remote Agent i w warstwie Podstawowa do wdrożenia w programie obsługi web deploy.
/U Określa nazwę użytkownika. Dotyczy to tylko wtedy, gdy używasz uwierzytelniania podstawowego.
/P Określa hasło. Dotyczy to tylko wtedy, gdy używasz uwierzytelniania podstawowego.
/L Wskazuje, że pakiet powinien zostać wdrożony w lokalnym wystąpieniu IIS Express.
/G Określa, że pakiet jest wdrażany przy użyciu ustawienia dostawcy tempAgent. Jeśli pominięto flagę /G , wartość domyślna to false.

Uwaga

Za każdym razem, gdy proces kompilacji tworzy pakiet internetowy, tworzy również plik o nazwie [nazwa projektu].deploy-readme.txt , który wyjaśnia te opcje wdrażania.

Oprócz tych flag można określić ustawienia operacji Web Deploy jako dodatkowe parametry .deploy.cmd . Wszystkie dodatkowe ustawienia, które określisz, są po prostu przekazywane do bazowego polecenia MSDeploy.exe. Aby uzyskać więcej informacji na temat tych ustawień, zobacz Ustawienia operacji wdrażania sieci Web.

Załóżmy, że chcesz wdrożyć projekt aplikacji internetowej ContactManager.Mvc w środowisku testowym, uruchamiając plik .deploy.cmd . Środowisko testowe jest skonfigurowane do korzystania z usługi Agent zdalny Web Deploy zgodnie z opisem w temacie Konfigurowanie serwera sieci Web na potrzeby publikowania w usłudze Web Deploy (agent zdalny). Aby wdrożyć aplikację internetową, należy wykonać następne kroki.

Aby wdrożyć aplikację internetową przy użyciu pliku .deploy.cmd

  1. Skompiluj i spakuj projekt aplikacji internetowej zgodnie z opisem w temacie Kompilowanie i pakowanie projektów aplikacji internetowych.

  2. Zmodyfikuj plik ContactManager.Mvc.SetParameters.xml , aby zawierał poprawne wartości parametrów dla środowiska testowego, zgodnie z opisem w temacie Konfigurowanie parametrów wdrażania pakietu internetowego.

  3. Otwórz okno wiersza polecenia i przejdź do lokalizacji pliku ContactManager.Mvc.deploy.cmd .

  4. Wpisz to polecenie, a następnie naciśnij klawisz Enter:

    ContactManager.Mvc.deploy.cmd /Y /M:TESTWEB1 /A:NTLM
    

W tym przykładzie:

  • Flaga /Y wskazuje, że chcesz rzeczywiście wdrożyć pakiet, a nie uruchomić wersji próbnej.
  • Flaga /M wskazuje, że chcesz wdrożyć pakiet na serwerze o nazwie TESTWEB1. Z tej wartości MSDeploy.exe podejmie próbę wdrożenia pakietu w usłudze Web Deploy Remote Agent pod adresem http://TESTWEB1/MSDeployAgentService.
  • Flaga /A wskazuje, że chcesz użyć uwierzytelniania NTLM. W związku z tym nie trzeba określać nazwy użytkownika i hasła.

Aby zilustrować, w jaki sposób użycie pliku deploy.cmd upraszcza proces wdrażania, zapoznaj się z poleceniem MSDeploy.exe, które zostanie wygenerowane i wykonane podczas uruchamiania polecenia ContactManager.Mvc.deploy.cmd przy użyciu przedstawionych powyżej opcji.

msdeploy.exe 
-source:package='C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
 Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\ContactManager.Mvc.zip' -dest:auto,computerName='TESTWEB1.fabrikam.net', authtype='NTLM',
 includeAcls='False' 
-verb:sync 
-disableLink:AppPoolExtension 
-disableLink:ContentExtension 
-disableLink:CertificateExtension 
-setParamFile:"C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
 Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\
 ContactManager.Mvc.SetParameters.xml"

Aby uzyskać więcej informacji na temat wdrażania pakietu internetowego przy użyciu pliku deploy.cmd , zobacz Instrukcje: instalowanie pakietu wdrożeniowego przy użyciu pliku deploy.cmd.

Korzystanie z MSDeploy.exe

Chociaż użycie pliku .deploy.cmd zwykle upraszcza proces wdrażania, istnieją pewne sytuacje, gdy zaleca się bezpośrednie użycie MSDeploy.exe. Na przykład:

  • Jeśli chcesz wdrożyć program obsługi web deploy jako użytkownik niebędący administratorem, nie możesz użyć pliku .deploy.cmd . Jest to spowodowane usterką w programie Web Deploy 2.0, zgodnie z opisem w sekcji Zagadnienia dotyczące punktu końcowego.
  • Jeśli chcesz ręcznie przełączać się między różnymi plikamiSetParameters.xml w różnych lokalizacjach, możesz użyć MSDeploy.exe bezpośrednio.
  • Jeśli chcesz zastąpić kilka MSDeploy.exe argumentów wiersza polecenia, możesz użyć MSDeploy.exe bezpośrednio.

W przypadku korzystania z MSDeploy.exe należy podać trzy kluczowe informacje:

  • Parametr -source , który wskazuje, skąd pochodzą dane.
  • Parametr –dest , który wskazuje, gdzie mają być przesyłane dane.
  • Parametr -verb, który wskazuje operację, którą chcesz wykonać.

MSDeploy.exe polega na dostawcach web deploy do przetwarzania danych źródłowych i docelowych. Usługa Web Deploy obejmuje wielu dostawców reprezentujących zakres aplikacji i źródeł danych, z którymi może współpracować — na przykład istnieją dostawcy SQL Server baz danych, serwerów internetowych usług IIS, certyfikatów, zestawów globalnej pamięci podręcznej zestawów (GAC), różnych różnych plików konfiguracji i wielu innych typów danych. Zarówno parametr -source , jak i parametr -dest muszą określić dostawcę w postaci –source:[providerName]=[location]. Podczas wdrażania pakietu internetowego w witrynie internetowej usług IIS należy użyć następujących wartości:

  • Dostawca -source jest zawsze pakietem. Na przykład:

    -source:package='[path to web package]'
    
  • Dostawca -dest jest zawsze automatyczny. Na przykład:

    -dest:auto='[server name or service URL]'
    
  • Czasownik –jest zawsze synchronizowany.

    -verb:sync
    

Ponadto należy określić różne inne ustawienia specyficzne dla dostawcy i ogólne ustawienia operacji. Załóżmy na przykład, że chcesz wdrożyć aplikację internetową ContactManager.Mvc w środowisku przejściowym. Wdrożenie będzie dotyczyć programu obsługi narzędzia Web Deploy i musi używać uwierzytelniania podstawowego. Aby wdrożyć aplikację internetową, należy wykonać następne kroki.

Aby wdrożyć aplikację internetową przy użyciu MSDeploy.exe

  1. Skompiluj i spakuj projekt aplikacji internetowej zgodnie z opisem w temacie Kompilowanie i pakowanie projektów aplikacji internetowych.

  2. Zmodyfikuj plik ContactManager.Mvc.SetParameters.xml , aby zawierał poprawne wartości parametrów dla środowiska przejściowego, zgodnie z opisem w temacie Konfigurowanie parametrów wdrożenia pakietu internetowego.

  3. Otwórz okno wiersza polecenia i przejdź do lokalizacji MSDeploy.exe. Zazwyczaj jest to %PROGRAMFILES%\IIS\Microsoft Web Deploy V2\msdeploy.exe.

  4. Wpisz to polecenie, a następnie naciśnij klawisz Enter (zignoruj podziały wierszy):

    MSDeploy.exe
      -source:package="[path]\ContactManager.Mvc.zip"
      -dest:auto,
            computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite",
            username="FABRIKAM\stagingdeployer",
            $CREDENTIAL_PLACEHOLDER$,
            authtype="Basic",
            includeAcls="False"
      -verb:sync
      -disableLink:AppPoolExtension
      -disableLink:ContentExtension
      -disableLink:CertificateExtension
      -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml"
      -allowUntrusted
    

W tym przykładzie:

  • Parametr -source określa dostawcę pakietów i wskazuje lokalizację pakietu internetowego.
  • Parametr –dest określa dostawcę automatycznego . Ustawienie computerName udostępnia adres URL usługi programu obsługi web deploy na serwerze docelowym. Ustawienie uwierzytelniania wskazuje, że chcesz użyć uwierzytelniania podstawowego, a w związku z tym musisz podać nazwę użytkownika i hasło. Na koniec ustawienie includeAcls="False" oznacza, że nie chcesz kopiować list kontroli dostępu (ACL) plików w źródłowej aplikacji internetowej na serwer docelowy.
  • Argument –verb:sync wskazuje, że chcesz replikować zawartość źródłową na serwerze docelowym.
  • Argumenty –disableLink wskazują, że nie chcesz replikować pul aplikacji, konfiguracji katalogu wirtualnego ani certyfikatów SSL (Secure Sockets Layer) na serwerze docelowym. Aby uzyskać więcej informacji, zobacz Web Deploy Link Extensions (Rozszerzenia łącza web deploy).
  • Parametr –setParamFile udostępnia lokalizację pliku SetParameters.xml .
  • Przełącznik –allowUntrusted wskazuje, że narzędzie Web Deploy powinno akceptować certyfikaty SSL, które nie zostały wystawione przez zaufany urząd certyfikacji. Jeśli wdrażasz w programie obsługi programu Web Deploy i użyto certyfikatu z podpisem własnym w celu zabezpieczenia adresu URL usługi, musisz dołączyć ten przełącznik.

Automatyzowanie wdrażania pakietów internetowych

W wielu scenariuszach dla przedsiębiorstw należy wdrożyć pakiety internetowe w ramach większego wdrożenia jednoetapowego lub zautomatyzowanego. Niezależnie od tego, czy chcesz wdrożyć pakiety internetowe, uruchamiając plik .deploy.cmd, czy bezpośrednio przy użyciu MSDeploy.exe, możesz sparametryzować polecenia i wywoływać je z obiektu docelowego w pliku projektu Microsoft Build Engine (MSBuild).

W przykładowym rozwiązaniu Contact Manager przyjrzyj się lokalizacji docelowej PublishWebPackages w pliku Publish.proj . Ten element docelowy jest uruchamiany raz dla każdego pliku .deploy.cmd zidentyfikowanego przez listę elementów o nazwie PublishPackages. Obiekt docelowy używa właściwości i metadanych elementu do utworzenia pełnego zestawu wartości argumentów dla każdego pliku .deploy.cmd , a następnie używa zadania Exec do uruchomienia polecenia.

<Target Name="PublishWebPackages" Outputs="%(PublishPackages.Identity)">
  ...
  <PropertyGroup>
    <_WhatIfSwitch>/Y</_WhatIfSwitch>
    <_WhatIfSwitch Condition=" '$(_WhatIf)'=='true' ">/T</_WhatIfSwitch>
    <_Cmd>
      %(PublishPackages.FullPath) $(_WhatifSwitch) /M:$(MSDeployComputerName) 
      /U:$(MSDeployUsername) /P:$(Password) /A:$(MSDeployAuth) 
      %(PublishPackages.AdditionalMSDeployParameters)
    </_Cmd>
  </PropertyGroup>
  <Exec Command="$(_Cmd)"/>
</Target>

Uwaga

Aby zapoznać się z szerszym omówieniem modelu plików projektu w przykładowym rozwiązaniu i ogólnym wprowadzeniem do niestandardowych plików projektu, zobacz Understanding the Project File and Understanding the Build Process (Omówienie pliku projektu i opis procesu kompilacji).

Zagadnienia dotyczące punktu końcowego

Niezależnie od tego, czy pakiet internetowy jest wdrażany przez uruchomienie pliku .deploy.cmd , czy bezpośrednio przy użyciu MSDeploy.exe, należy określić nazwę komputera lub punkt końcowy usługi dla wdrożenia.

Jeśli docelowy serwer internetowy jest skonfigurowany do wdrożenia przy użyciu usługi Agent zdalny Web Deploy, należy określić docelowy adres URL usługi jako miejsce docelowe.

http://[server name]/MSDeployAgentService

Alternatywnie można określić nazwę serwera jako miejsce docelowe, a narzędzie Web Deploy będzie wnioskować o adresIE URL usługi agenta zdalnego.

[server name]

Jeśli docelowy serwer internetowy jest skonfigurowany do wdrożenia przy użyciu programu obsługi web deploy, należy określić adres punktu końcowego usługi zarządzania siecią Web usług IIS (WMSvc) jako miejsce docelowe. Domyślnie ma to postać:

https://[server name]:8172/MSDeploy.axd

Dowolny z tych punktów końcowych można kierować bezpośrednio przy użyciu pliku .deploy.cmd lub MSDeploy.exe. Jeśli jednak chcesz wdrożyć program obsługi web deploy jako użytkownik niebędący administratorem, zgodnie z opisem w temacie Konfigurowanie serwera sieci Web na potrzeby publikowania web deploy (procedura obsługi web deploy) należy dodać ciąg zapytania do adresu punktu końcowego usługi.

https://[server name]:8172/MSDeploy.axd?site=[IIS website name]

Dzieje się tak, ponieważ użytkownik niebędący administratorem nie ma dostępu na poziomie serwera do usług IIS; ma dostęp tylko do określonej witryny internetowej usług IIS. W momencie pisania z powodu usterki w potoku publikowania sieci Web (WPP) nie można uruchomić pliku .deploy.cmd przy użyciu adresu punktu końcowego zawierającego ciąg zapytania. W tym scenariuszu należy wdrożyć pakiet internetowy bezpośrednio przy użyciu MSDeploy.exe.

Uwaga

Aby uzyskać więcej informacji na temat usługi Agent zdalny Web Deploy i programu obsługi web deploy, zobacz Wybieranie odpowiedniego podejścia do wdrażania w Sieci Web. Aby uzyskać wskazówki dotyczące sposobu konfigurowania plików projektu specyficznych dla środowiska do wdrożenia w tych punktach końcowych, zobacz Konfigurowanie właściwości wdrożenia dla środowiska docelowego.

Zagadnienia dotyczące uwierzytelniania

Niezależnie od tego, czy pakiet internetowy jest wdrażany przez uruchomienie pliku .deploy.cmd , czy bezpośrednio przy użyciu MSDeploy.exe, należy określić typ uwierzytelniania. Narzędzie Web Deploy akceptuje dwie możliwe wartości: NTLM lub Basic. Jeśli określisz uwierzytelnianie podstawowe, musisz również podać nazwę użytkownika i hasło. Podczas wybierania typu uwierzytelniania należy pamiętać o różnych czynnikach:

  • W przypadku wdrażania w usłudze Web Deploy Agent zdalny należy użyć uwierzytelniania NTLM. Usługa agenta zdalnego nie akceptuje poświadczeń uwierzytelniania podstawowego.
  • Jeśli wdrażasz program obsługi web deploy, możesz użyć uwierzytelniania NTLM lub podstawowego. Ustawieniem domyślnym jest uwierzytelnianie podstawowe. Chociaż uwierzytelnianie podstawowe opiera się na nazwach użytkowników i hasłach przesyłanych w postaci zwykłego tekstu, poświadczenia są chronione, ponieważ program obsługi web deploy zawsze używa szyfrowania SSL.
  • Jeśli pakiet internetowy zawiera bazę danych, a serwer internetowy i serwer bazy danych są oddzielnymi maszynami, nie będzie można wdrożyć bazy danych przy użyciu uwierzytelniania NTLM ze względu na ograniczenie "podwójnego przeskoku" protokołu NTLM. Musisz użyć SQL Server poświadczeń w parametrach połączenia wdrożenia lub podać podstawowe poświadczenia uwierzytelniania w narzędziu Web Deploy. Ten problem został opisany bardziej szczegółowo w temacie Wdrażanie baz danych członkostwa w środowiskach przedsiębiorstwa.

Podsumowanie

W tym temacie opisano sposób wdrażania pakietu internetowego przez uruchomienie pliku .deploy.cmd lub bezpośrednio przy użyciu MSDeploy.exe. Wyjaśniono, kiedy każde podejście może być odpowiednie, i opisano, jak można sparametryzować i uruchomić polecenie wdrożenia w ramach większego jednoetapowego lub zautomatyzowanego procesu kompilacji.

Dalsze informacje

Aby uzyskać wskazówki dotyczące tworzenia i parametryzacji pakietu wdrożeniowego w Internecie, zobacz Building and Packaging Web Application Projects (Kompilowanie i pakowanie projektów aplikacji internetowych) oraz Configuring Parameters for Web Package Deployment (Tworzenie i pakowanie projektów aplikacji internetowych) oraz Configuring Parameters for Web Package Deployment (Konfigurowanie parametrów wdrażania pakietów internetowych). Aby uzyskać wskazówki dotyczące tworzenia i wdrażania pakietów internetowych z wystąpienia serwera Team Foundation Server (TFS), zobacz Konfigurowanie serwera Team Foundation Server na potrzeby zautomatyzowanego wdrażania w Sieci Web. Aby uzyskać informacje na temat dostosowywania i rozwiązywania problemów z procesem wdrażania, zobacz Wykluczanie plików i folderów z wdrożenia.