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 Web Deployment Agent Service (agenta zdalnego) lub programu obsługi web deploy. Aby uzyskać więcej informacji na temat tych podejść i uzyskać wskazówki dotyczące wybierania odpowiedniego podejścia dla 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 dewelopera (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 wdrożeń zdalnych przy użyciu programu obsługi web deploy zgodnie z opisem w temacie 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, dlatego nie ma znaczenia, jakie ustawienia były używane w pliku projektu specyficznym dla środowiska podczas generowania pakietu. Menedżer usług Internet Information Services (IIS) wyświetli monit o podanie wszelkich 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 Publish, rozwiń folder EnvConfig, a następnie kliknij dwukrotnie plik Env-Dev.proj.

    W oknie Eksplorator rozwiązań rozwiń folder Publish, 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

    Tabela, która jest zgodna z tą procedurą, 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 specyficznym 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 w usłudze agenta zdalnego na docelowym serwerze sieci Web, możesz określić nazwę komputera docelowego (na przykład TESTWEB1 lub TESTWEB1.fabrikam.net) lub określić 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 program obsługi web deploy na docelowym serwerze sieci Web, należy określić punkt końcowy usługi i dołączyć nazwę witryny sieci Web usług 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. Należy ustawić wartość NTLM lub Podstawowa. Zazwyczaj w przypadku wdrażania w usłudze agenta zdalnego i podstawowego w przypadku wdrażania w programie obsługi web deploy należy użyć protokołu NTLM. Jeśli używasz uwierzytelniania podstawowego, musisz 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ć DOMENA*nazwa_użytkownika* (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, w której chcesz wdrożyć aplikację MVC contact Manager. Powinna to być ścieżka wyświetlana w Menedżerze usług IIS w postaci [nazwa witryny sieci Web usług IIS]/[nazwa aplikacjiinternetowej]. 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, w 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 usług 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. Należy pamiętać, ż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. W związku z tym 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 sprawdzania sprzężenia zwrotnego w usługach 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órych usługa VSDBCMD będzie używać 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ć wartość Integrated Security=true. W takim 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żesz określić nazwę użytkownika i hasło konta SQL Server. W takim przypadku poświadczenia SQL Server są używane zarówno przez narzędzie VSDBCMD do utworzenia bazy danych, jak i przez pulę aplikacji do interakcji z bazą danych: Źródło danych =TESTDB1; User Id=ASqlUser; Password=Pa$$w 0rd 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ść w tym miejscu 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 w usłudze agenta zdalnego

W tym przykładzie:

  • Wdrażasz w usłudze agenta zdalnego na SERWERZE TESTWEB1.
  • Zalecamy, aby narzędzie Web Deploy używało uwierzytelniania NTLM. Narzędzie Web Deploy zostanie uruchomione przy użyciu poświadczeń użytych do wywołania Microsoft Build Engine (MSBuild).
  • Używasz zintegrowanego uwierzytelniania do wdrożenia bazy danych ContactManager w bazie danych 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 programu obsługi web deploy

W tym przykładzie:

  • Wdrażasz w punkcie końcowym usługi programu obsługi web deploy na platformie STAGEWEB1.
  • Poinstruujesz narzędzie Web Deploy, aby używało uwierzytelniania podstawowego.
  • Określasz, że narzędzie Web Deploy powinno personifikować konto FABRIKAM\stagingdeployer na komputerze zdalnym.
  • Używasz uwierzytelniania SQL Server do wdrożenia bazy danych ContactManager w bazie danych 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żyć tych plików projektu w ramach jednoetapowego, 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: