Udostępnij za pośrednictwem


Konfigurowanie właściwości wdrożenia dla środowiska docelowego

Autor: Jason Lee

W tym temacie opisano sposób konfigurowania właściwości specyficznych dla środowiska w celu wdrożenia przykładowego rozwiązania Contact Manager w określonym środowisku docelowym.

Ten temat stanowi część serii samouczków opartych na wymaganiach dotyczących wdrażania w przedsiębiorstwie fikcyjnej firmy o nazwie Fabrikam, Inc. W tej serii samouczków użyto przykładowego rozwiązania — rozwiązania Contact Manager — do reprezentowania aplikacji internetowej o realistycznym poziomie złożoności, w tym aplikacji ASP.NET MVC 3, usługi Windows Communication Foundation (WCF) i projektu bazy danych.

Metoda wdrażania w centrum tych samouczków jest oparta na metodzie podzielonego pliku projektu opisanego w opisie procesu kompilacji, w którym proces kompilacji jest kontrolowany przez dwa pliki projektu — jeden zawierający instrukcje kompilacji, które mają zastosowanie do każdego środowiska docelowego, oraz jeden zawierający ustawienia kompilacji i wdrażania specyficzne dla środowiska. W czasie kompilacji plik projektu specyficzny dla środowiska jest scalony z plikiem projektu niezależnego od środowiska w celu utworzenia pełnego zestawu instrukcji kompilacji.

Omówienie procesu

Plik projektu używany do kompilowania i wdrażania rozwiązania Contact Manager jest podzielony na dwa pliki fizyczne:

  • Taki, który zawiera uniwersalne ustawienia kompilacji i instrukcje (plik Publish.proj ).
  • Taki, który zawiera ustawienia kompilacji specyficzne dla środowiska (Env-Dev.proj, Env-Stage.proj itd.).

W czasie kompilacji odpowiedni plik projektu specyficzny dla środowiska jest scalony z uniwersalnym plikiem Publish.proj w celu utworzenia pełnego zestawu instrukcji kompilacji. Wdrożenie można skonfigurować w określonych środowiskach docelowych, tworząc lub dostosowując pliki projektu specyficzne dla środowiska przy użyciu ustawień opisujących własny scenariusz wdrażania.

Wiele z tych wartości zależy od konfiguracji środowiska docelowego — w szczególności tego, czy docelowy serwer internetowy jest skonfigurowany do używania usługi agenta wdrażania sieci Web (agenta zdalnego) lub programu obsługi web deploy. Aby uzyskać więcej informacji na temat tych podejść i wskazówek dotyczących wybierania odpowiedniego podejścia do własnego środowiska, zobacz Wybieranie odpowiedniego podejścia do wdrażania w Internecie.

Scenariusz programu Contact Manager wymaga dwóch plików projektu specyficznych dla środowiska:

  • Wdrażanie w środowisku testowym dla deweloperów (Env-Dev.proj). Środowisko testowe dewelopera jest skonfigurowane do akceptowania wdrożeń zdalnych przy użyciu agenta zdalnego, zgodnie z opisem w temacie Scenariusz: Konfigurowanie środowiska testowego na potrzeby wdrażania w Sieci Web. Ten plik musi podać adres punktu końcowego agenta zdalnego, a także ustawienia specyficzne dla lokalizacji, takie jak parametry połączenia i punkty końcowe usługi.
  • Wdrażanie w środowisku przejściowym (Env-Stage.proj). Środowisko przejściowe jest skonfigurowane do akceptowania zdalnych wdrożeń za pomocą Obsługi Web Deploy, jak opisano w Scenariusz: Konfigurowanie środowiska przejściowego na potrzeby wdrażania w Sieci Web. Ten plik musi podać adres punktu końcowego programu obsługi programu Web Deploy, a także ustawienia specyficzne dla lokalizacji, takie jak parametry połączenia i punkty końcowe usługi.

Należy pamiętać, że ustawienia konfigurowane w pliku projektu specyficznym dla środowiska nie mają wpływu na zawartość samego pakietu internetowego — zamiast tego kontrolują sposób wdrażania pakietu i jakie wartości parametrów są udostępniane podczas wyodrębniania pakietu. Pakiet internetowy jest importowany ręcznie do środowiska produkcyjnego, zgodnie z opisem w temacie Scenariusz: Konfigurowanie środowiska produkcyjnego na potrzeby wdrażania w sieci Web i ręczne instalowanie pakietów sieci Web, więc nie ma znaczenia, jakie ustawienia zostały użyte w pliku projektu specyficznym dla środowiska podczas generowania pakietu. Menedżer usług Internet Information Services (IIS) wyświetli monit o podanie wszystkich sparametryzowanych wartości, takich jak parametry połączenia i punkty końcowe usługi, podczas importowania pakietu.

Aby wdrożyć rozwiązanie Contact Manager we własnym środowisku docelowym, możesz dostosować ten plik lub użyć go jako szablonu i utworzyć własny plik.

Aby skonfigurować ustawienia wdrożenia specyficzne dla środowiska dla rozwiązania Contact Manager

  1. Otwórz rozwiązanie ContactManager-WCF w programie Visual Studio 2010.

  2. W oknie Eksplorator rozwiązań rozwiń folder Publikuj , rozwiń folder EnvConfig , a następnie kliknij dwukrotnie plik Env-Dev.proj.

    W oknie Eksplorator rozwiązań rozwiń folder Publikuj, rozwiń folder EnvConfig, a następnie kliknij dwukrotnie plik Env-Dev.proj.

  3. Zastąp wartości właściwości w pliku Env-Dev.proj poprawnymi wartościami dla własnego środowiska testowego.

    Uwaga / Notatka

    Tabela, która następuje po tej procedurze, zawiera więcej informacji na temat każdej z tych właściwości.

  4. Zapisz swoją pracę, a następnie zamknij plik Env-Dev.proj .

Wybieranie odpowiednich właściwości wdrożenia

W tej tabeli opisano przeznaczenie każdej właściwości w przykładowym pliku projektu specyficznego dla środowiska , Env-Dev.proj i przedstawiono wskazówki dotyczące wartości, które należy podać.

Nazwa właściwości Szczegóły
MSDeployComputerName Nazwa docelowego serwera internetowego lub punktu końcowego usługi. Jeśli wdrażasz usługę agenta zdalnego na serwerze docelowym, możesz określić nazwę komputera docelowego (na przykład TESTWEB1 lub TESTWEB1.fabrikam.net) lub punkt końcowy agenta zdalnego (na przykład http://TESTWEB1/MSDEPLOYAGENTSERVICE). Wdrożenie działa tak samo w każdym przypadku. Jeśli wdrażasz moduł obsługi Web Deploy na docelowym serwerze WWW, powinieneś określić punkt końcowy usługi i dołączyć nazwę witryny IIS jako parametr ciągu zapytania (na przykład https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Metoda używana przez narzędzie Web Deploy do uwierzytelniania na komputerze zdalnym. Powinno to być ustawione na NTLM lub Podstawowa. Zazwyczaj używasz NTLM, jeśli wdrażasz w usłudze agenta zdalnego, a Podstawowej, jeśli wdrażasz do Handlera Web Deploy. Jeśli używasz uwierzytelniania podstawowego, należy również określić nazwę użytkownika i hasło, które narzędzie wdrażania sieci Web usług IIS (Web Deploy) powinno personifikować w celu przeprowadzenia wdrożenia. W tym przykładzie te wartości są udostępniane za pośrednictwem właściwości MSDeployUsername i MSDeployPassword . Jeśli używasz uwierzytelniania NTLM, możesz pominąć te właściwości lub pozostawić je puste.
MSDeployUsername Jeśli używasz uwierzytelniania podstawowego, narzędzie Web Deploy będzie używać tego konta na komputerze zdalnym. Powinno to mieć postać DOMAIN*username* (na przykład FABRIKAM\matt). Ta wartość jest używana tylko w przypadku określenia uwierzytelniania podstawowego. Jeśli używasz uwierzytelniania NTLM, właściwość można pominąć. Jeśli zostanie podana wartość, zostanie ona zignorowana.
MSDeployPassword Jeśli używasz uwierzytelniania podstawowego, narzędzie Web Deploy będzie używać tego hasła na komputerze zdalnym. Jest to hasło dla konta użytkownika określonego we właściwości MSDeployUsername . Ta wartość jest używana tylko w przypadku określenia uwierzytelniania podstawowego. Jeśli używasz uwierzytelniania NTLM, właściwość można pominąć. Jeśli zostanie podana wartość, zostanie ona zignorowana.
ContactManagerIisPath Ścieżka usług IIS, na której chcesz wdrożyć aplikację MVC contact Manager. Powinna to być ścieżka wyświetlana w Menedżerze IIS w postaci [nazwa witryny IIS]/[nazwa aplikacji webowej]. Pamiętaj, że witryna internetowa usług IIS musi istnieć przed wdrożeniem aplikacji. Jeśli na przykład utworzono witrynę internetową usług IIS o nazwie DemoSite, możesz określić ścieżkę usług IIS dla aplikacji MVC jako DemoSite/ContactManager.
ContactManagerServiceIisPath Ścieżka usług IIS, na której chcesz wdrożyć usługę WCF programu Contact Manager. Jeśli na przykład utworzono witrynę internetową usług IIS o nazwie DemoSite, możesz określić ścieżkę usług IIS dla usługi WCF jako DemoSite/ContactManagerService.
ContactManagerTargetUrl Adres URL, pod którym można uzyskać dostęp do usługi WCF. Będzie to mieć postać [główny adres URL witryny sieci Web iis]/[nazwa aplikacji usługi]/[punkt końcowy usługi]. Jeśli na przykład utworzono witrynę internetową usług IIS na porcie 85, adres URL będzie miał postać http://localhost:85/ContactManagerService/ContactService.svc. Pamiętaj, że aplikacja MVC i usługa WCF są wdrażane na tym samym serwerze. W związku z tym ten adres URL jest uzyskiwany tylko z komputera, na którym jest zainstalowany. Z tego powodu lepiej użyć hosta lokalnego lub adresu IP, a nie nazwy komputera lub nagłówka hosta w adresie URL. Jeśli używasz nazwy komputera lub nagłówka hosta, funkcja zabezpieczenia dla sprawdzania zwrotnego na serwerze IIS może zablokować adres URL i zwrócić błąd HTTP 401.1 — Brak autoryzacji.
CmDatabaseConnectionString Parametry połączenia serwera bazy danych. Parametry połączenia określają zarówno poświadczenia, które będą używane przez usługę VSDBCMD do kontaktowania się z serwerem bazy danych, jak i tworzenia bazy danych oraz poświadczeń używanych przez pulę aplikacji serwera internetowego do kontaktowania się z serwerem bazy danych i interakcji z bazą danych. Zasadniczo masz tutaj dwie opcje. Można określić zintegrowane zabezpieczenia=true, w którym przypadku jest używane zintegrowane uwierzytelnianie systemu Windows: Źródło danych=TESTDB1; Zintegrowane zabezpieczenia=true W tym przypadku baza danych zostanie utworzona przy użyciu poświadczeń użytkownika, który uruchamia plik wykonywalny VSDBCMD, a aplikacja będzie uzyskiwać dostęp do bazy danych przy użyciu tożsamości konta komputera serwera internetowego. Alternatywnie można określić nazwę użytkownika i hasło konta programu SQL Server. W takim przypadku poświadczenia programu SQL Server są używane zarówno przez program VSDBCMD do utworzenia bazy danych, jak i przez pulę aplikacji w celu interakcji z bazą danych: Źródło danych=TESTDB1; User Id=ASqlUser; Password=; Przewodniki w tym temacie zakładają, że użyjesz zintegrowanego uwierzytelniania systemu Windows.
CmTargetDatabase Nazwa, którą chcesz nadać bazie danych, którą utworzysz na serwerze bazy danych. Wartość, którą podajesz tutaj, jest dodawana do polecenia VSDBCMD jako parametru. Służy również do tworzenia pełnych parametrów połączenia, których pula aplikacji na serwerze internetowym może używać do interakcji z bazą danych.

W tych przykładach pokazano, jak można skonfigurować te właściwości dla określonych scenariuszy wdrażania.

Przykład 1 — wdrażanie do usługi agenta zdalnego

W tym przykładzie:

  • Na TESTWEB1 wdrażasz do usługi zdalnego agenta.
  • Instruujesz narzędzie Web Deploy, aby używało uwierzytelniania NTLM. Narzędzie Web Deploy zostanie uruchomione przy użyciu poświadczeń użytych do wywołania silnika Microsoft Build Engine (MSBuild).
  • Używasz zintegrowanego uwierzytelniania do wdrażania bazy danych ContactManager w TESTDB1. Baza danych zostanie wdrożona przy użyciu poświadczeń użytych do wywołania programu MSBuild.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      TESTWEB1.fabrikam.net
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Przykład 2 — wdrażanie do punktu końcowego Web Deploy Handler

W tym przykładzie:

  • Wdrażasz w punkcie końcowym usługi obsługi wdrażania sieci Web w STAGEWEB1.
  • Instrukcja dla Web Deploy dotycząca użycia uwierzytelniania podstawowego.
  • Określasz, że narzędzie Web Deploy powinno podszywać się pod konto FABRIKAM\stagingdeployer na komputerze zdalnym.
  • Używasz uwierzytelniania SQL Server do wdrożenia bazy danych ContactManager do STAGEDB1.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
    <MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
      FABRIKAM\stagingdeployer
    </MSDeployUsername>
    <MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
      Pa$$w0rd
    </MSDeployPassword>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
    </CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Podsumowanie

Na tym etapie pliki projektu są w pełni skonfigurowane do kompilowania i wdrażania rozwiązania Contact Manager w co najmniej jednym środowisku docelowym.

Aby używać tych plików projektu w ramach pojedynczego kroku, powtarzalnego procesu wdrażania, należy wykonać plik Publish.proj przy użyciu programu MSBuild i przekazać lokalizację pliku projektu specyficznego dla środowiska jako parametr. Można to zrobić na różne sposoby: