Freigeben über


Konfigurieren von Bereitstellungseigenschaften für eine Zielumgebung

von Jason Lee

In diesem Thema wird beschrieben, wie Sie umgebungsspezifische Eigenschaften konfigurieren, um die Beispiellösung Contact Manager in einer bestimmten Zielumgebung bereitzustellen.

Dieses Thema ist Teil einer Reihe von Lernprogrammen basierend auf den Anforderungen an die Unternehmensbereitstellung eines fiktiven Unternehmens namens Fabrikam, Inc. In dieser Lernprogrammreihe wird eine Beispiellösung – die Contact Manager-Lösung – verwendet, um eine Webanwendung mit realistischer Komplexität darzustellen, einschließlich einer ASP.NET MVC 3-Anwendung, einem WCF-Dienst (Windows Communication Foundation) und einem Datenbankprojekt.

Die Bereitstellungsmethode im Mittelpunkt dieser Lernprogramme basiert auf dem geteilten Projektdateiansatz, der unter "Grundlegendes zum Buildprozess" beschrieben wird, in dem der Buildprozess von zwei Projektdateien gesteuert wird– eine mit Buildanweisungen, die für jede Zielumgebung gelten, und eine mit umgebungsspezifischen Build- und Bereitstellungseinstellungen. Zur Buildzeit wird die umgebungsspezifische Projektdatei in die umgebungsunabhängige Projektdatei integriert, um einen vollständigen Satz von Buildanweisungen zu bilden.

Prozessübersicht

Die Projektdatei, die Sie zum Erstellen und Bereitstellen der Contact Manager-Lösung verwenden, ist in zwei physische Dateien unterteilt:

  • Eine, die universelle Buildeinstellungen und Anweisungen enthält (die Datei Publish.proj ).
  • Eine, die umgebungsspezifische Buildeinstellungen enthält (Env-Dev.proj, Env-Stage.proj usw.).

Zur Erstellungszeit wird die entsprechende umgebungsspezifische Projektdatei mit der universellen Publish.proj-Datei zusammengeführt, um einen vollständigen Satz von Buildanweisungen zu bilden. Sie können die Bereitstellung für bestimmte Zielumgebungen konfigurieren, indem Sie umgebungsspezifische Projektdateien mit Einstellungen erstellen oder anpassen, die Ihr eigenes Bereitstellungsszenario beschreiben.

Viele dieser Werte werden durch die Konfiguration Der Zielumgebung bestimmt, insbesondere, ob der Zielwebserver für die Verwendung des Web Deployment Agent Service (remote agent) oder des Web Deploy Handler konfiguriert ist. Weitere Informationen zu diesen Ansätzen und Anleitungen zur Auswahl des richtigen Ansatzes für Ihre eigene Umgebung finden Sie unter Auswählen des richtigen Ansatzes für die Webbereitstellung.

Für das Contact Manager-Szenario sind zwei umgebungsspezifische Projektdateien erforderlich:

  • Bereitstellung in einer Entwicklertestumgebung (Env-Dev.proj). Die Entwicklertestumgebung ist so konfiguriert, dass Remotebereitstellungen mithilfe des Remote-Agents akzeptiert werden, wie in "Scenario: Configuring a Test Environment for Web Deployment" beschrieben. Diese Datei muss die Adresse des Remote-Agent-Endpunkts sowie standortspezifische Einstellungen wie Verbindungszeichenfolgen und Dienstendpunkte bereitstellen.
  • Bereitstellung in einer Staging-Umgebung (Env-Stage.proj). Die Stagingumgebung ist so konfiguriert, dass Remotebereitstellungen mithilfe des Web Deploy Handlers akzeptiert werden, wie in Szenario beschrieben: Konfigurieren einer Stagingumgebung für die Webbereitstellung. Diese Datei muss die Endpunktadresse des Web Deploy-Handlers sowie standortspezifische Einstellungen wie Verbindungszeichenfolgen und Dienstendpunkte bereitstellen.

Es ist wichtig zu beachten, dass sich die einstellungen, die Sie in der umgebungsspezifischen Projektdatei konfigurieren, nicht auf den Inhalt des Webpakets selbst auswirken. Stattdessen steuern sie, wie das Paket bereitgestellt wird und welche Parameterwerte angegeben werden, wenn das Paket extrahiert wird. Sie importieren das Webpaket manuell in die Produktionsumgebung, wie in Szenario beschrieben: Konfigurieren einer Produktionsumgebung für Webbereitstellung und manuelles Installieren von Webpaketen, daher spielt es keine Rolle, welche Einstellungen Sie bei der Erstellung des Pakets in der umgebungsspezifischen Projektdatei verwendet haben. Der Internet Information Services (IIS) Manager fordert Sie auf, beim Importieren des Pakets alle parametrisierten Werte, wie Verbindungszeichenfolgen und Dienstendpunkte, anzugeben.

Um die Contact Manager-Lösung in Ihrer eigenen Zielumgebung bereitzustellen, können Sie diese Datei entweder anpassen oder als Vorlage verwenden und eine eigene Datei erstellen.

So konfigurieren Sie umgebungsspezifische Bereitstellungseinstellungen für die Contact Manager-Lösung

  1. Öffnen Sie die ContactManager-WCF Projektmappe in Visual Studio 2010.

  2. Erweitern Sie im Projektmappen-Explorer-Fenster den Ordner " Veröffentlichen ", erweitern Sie den Ordner "EnvConfig ", und doppelklicken Sie dann auf "Env-Dev.proj".

    Erweitern Sie im Projektmappen-Explorer-Fenster den Ordner

  3. Ersetzen Sie die Eigenschaftswerte in der Datei "Env-Dev.proj " durch die richtigen Werte für Ihre eigene Testumgebung.

    Hinweis

    Die Tabelle, die auf dieses Verfahren folgt, enthält weitere Informationen zu den einzelnen Eigenschaften.

  4. Speichern Sie Ihre Arbeit, und schließen Sie dann die Datei "Env-Dev.proj ".

Auswählen der richtigen Bereitstellungseigenschaften

Diese Tabelle beschreibt den Zweck jeder Eigenschaft in der Beispielumgebungs-spezifischen Projektdatei Env-Dev.proj und enthält einige Anleitungen zu den Werten, die Sie bereitstellen sollten.

Objektname Einzelheiten
MSDeployComputerName Der Name des Zielwebservers oder des Dienstendpunkts. Wenn Sie den Remote-Agent-Dienst auf dem Zielwebserver bereitstellen, können Sie den Zielcomputernamen angeben (z. B. TESTWEB1 oder TESTWEB1.fabrikam.net), oder Sie können den Remote-Agent-Endpunkt angeben (z http://TESTWEB1/MSDEPLOYAGENTSERVICE. B. ). Die Bereitstellung funktioniert in jedem Fall auf die gleiche Weise. Wenn Sie den Web Deploy-Handler auf dem Zielwebserver bereitstellen, sollten Sie den Dienstendpunkt angeben und den Namen der IIS-Website als Abfragezeichenfolgen-Parameter einschließen (z. B. https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Die Methode, die Web Deploy zum Authentifizieren auf dem Remotecomputer verwenden soll. Dies sollte auf NTLM oder Basic festgelegt werden. Normalerweise verwenden Sie NTLM, wenn Sie zum Remote-Agent-Dienst bereitstellen, und Basic, wenn Sie zum Web Deploy-Handler bereitstellen. Wenn Sie die Basisauthentifizierung verwenden, müssen Sie auch den Benutzernamen und das Kennwort angeben, die das IIS Web Deployment Tool (Web Deploy) verwenden soll, um die Bereitstellung durchzuführen. In diesem Beispiel werden diese Werte über die EIGENSCHAFTEN MSDeployUsername und MSDeployPassword bereitgestellt. Wenn Sie die NTLM-Authentifizierung verwenden, können Sie diese Eigenschaften weglassen oder leer lassen.
MSDeployUsername Wenn Sie die Standardauthentifizierung verwenden, verwendet Web Deploy dieses Konto auf dem Remotecomputer. Dies sollte die Form DOMAIN*username* haben (z. B. FABRIKAM\matt). Dieser Wert wird nur verwendet, wenn Sie die Standardauthentifizierung angeben. Wenn Sie die NTLM-Authentifizierung verwenden, kann die Eigenschaft weggelassen werden. Wenn ein Wert angegeben wird, wird er ignoriert.
MSDeployPassword Wenn Sie die Standardauthentifizierung verwenden, verwendet Web Deploy dieses Kennwort auf dem Remotecomputer. Dies ist das Kennwort für das Benutzerkonto, das Sie in der MSDeployUsername-Eigenschaft angegeben haben. Dieser Wert wird nur verwendet, wenn Sie die Standardauthentifizierung angeben. Wenn Sie die NTLM-Authentifizierung verwenden, kann die Eigenschaft weggelassen werden. Wenn ein Wert angegeben wird, wird er ignoriert.
ContactManagerIisPath Der IIS-Pfad, auf dem Sie die Contact Manager-MVC-Anwendung bereitstellen möchten. Dies sollte der Pfad sein, wie er im IIS-Manager angezeigt wird, in Form [IIS-Websitename]/[Webanwendungsname]. Denken Sie daran, dass die IIS-Website vorhanden sein muss, bevor Sie Ihre Anwendung bereitstellen. Wenn Sie beispielsweise eine IIS-Website mit dem Namen DemoSite erstellt haben, können Sie den IIS-Pfad für die MVC-Anwendung als DemoSite/ContactManager angeben.
ContactManagerServiceIisPath Der IIS-Pfad, auf dem Sie den Wcf-Dienst des Contact Manager bereitstellen möchten. Wenn Sie beispielsweise eine IIS-Website mit dem Namen DemoSite erstellt haben, können Sie den IIS-Pfad für den WCF-Dienst als DemoSite/ContactManagerService angeben.
ContactManagerTargetUrl Die URL, unter der der WCF-Dienst erreicht werden kann. Dies hat die Form [IIS-Websitestamm-URL]/[Dienstanwendungsname]/[Dienstendpunkt]. Wenn Sie beispielsweise eine IIS-Website auf Port 85 erstellt haben, würde die URL das Formular http://localhost:85/ContactManagerService/ContactService.svcannehmen. Denken Sie daran, dass die MVC-Anwendung und der WCF-Dienst auf demselben Server bereitgestellt werden. Daher wird auf diese URL nur über den Computer zugegriffen, auf dem sie installiert ist. Aus diesem Gründen ist es besser, localhost oder die IP-Adresse anstelle des Computernamens oder eines Hostheaders in der URL zu verwenden. Wenn Sie den Computernamen oder einen Hostheader verwenden, blockiert das Loopbacküberprüfungs-Sicherheitsfeature in IIS möglicherweise die URL und gibt einen HTTP 401.1 -Nicht autorisierten Fehler zurück.
CmDatabaseConnectionString Die Verbindungszeichenfolge für den Datenbankserver. Die Verbindungszeichenfolge bestimmt sowohl die Anmeldeinformationen, die VSDBCMD verwendet, um den Datenbankserver zu kontaktieren und die Datenbank zu erstellen, als auch die Anmeldeinformationen, die der Anwendungspool des Webservers verwendet, um den Datenbankserver zu kontaktieren und mit der Datenbank zu interagieren. Im Wesentlichen haben Sie hier zwei Möglichkeiten. Sie können integrierte Sicherheit=true angeben, in diesem Fall wird die integrierte Windows-Authentifizierung verwendet: Datenquelle=TESTDB1; Integrated Security=true In diesem Fall wird die Datenbank mit den Anmeldeinformationen des Benutzers erstellt, der die ausführbare Datei VSDBCMD ausführt, und die Anwendung greift mithilfe der Identität des Webservercomputerkontos auf die Datenbank zu. Alternativ können Sie den Benutzernamen und das Kennwort eines SQL Server-Kontos angeben. In diesem Fall werden die SQL Server-Anmeldeinformationen sowohl von VSDBCMD zum Erstellen der Datenbank als auch vom Anwendungspool für die Interaktion mit der Datenbank verwendet: Data Source=TESTDB1; Benutzer-ID=ASqlUser; Password=; In den exemplarischen Vorgehensweisen in diesem Thema wird davon ausgegangen, dass Sie die integrierte Windows-Authentifizierung verwenden.
CmTargetDatabase Der Name, den Sie der Datenbank zuweisen möchten, die Sie auf dem Datenbankserver erstellen möchten. Der hier bereitgestellte Wert wird dem VSDBCMD-Befehl als Parameter hinzugefügt. Es wird auch verwendet, um eine vollständige Verbindungszeichenfolge zu erstellen, die der Anwendungspool auf dem Webserver für die Interaktion mit der Datenbank verwenden kann.

In diesen Beispielen wird gezeigt, wie Sie diese Eigenschaften für bestimmte Bereitstellungsszenarien konfigurieren können.

Beispiel 1—Bereitstellung für den Remote-Agent-Service

In diesem Beispiel:

  • Sie stellen den Remote-Agent-Dienst auf TESTWEB1 bereit.
  • Sie weisen Web Deploy an, die NTLM-Authentifizierung zu verwenden. Web Deploy wird mit den Anmeldeinformationen ausgeführt, die Sie zum Aufrufen des Microsoft Build Engine (MSBuild) verwendet haben.
  • Sie verwenden die integrierte Authentifizierung, um die ContactManager-Datenbank für TESTDB1 bereitzustellen. Die Datenbank wird mithilfe der Anmeldeinformationen bereitgestellt, die Sie zum Aufrufen von MSBuild verwendet haben.
<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>

Beispiel 2: Bereitstellung im Web Deploy Handler-Endpunkt

In diesem Beispiel:

  • Sie stellen den Dienstendpunkt "Web Deploy Handler" auf STAGEWEB1 bereit.
  • Sie weisen Web Deploy an, die Standardauthentifizierung zu verwenden.
  • Sie geben an, dass Web Deploy das Konto FABRIKAM\stagingdeployer auf dem entfernten Computer imitieren soll.
  • Sie verwenden die SQL Server-Authentifizierung, um die ContactManager-Datenbank für STAGEDB1 bereitzustellen.
<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>

Schlussfolgerung

Zu diesem Zeitpunkt sind Ihre Projektdateien vollständig konfiguriert, um die Contact Manager-Lösung in einer oder mehreren Zielumgebungen zu erstellen und bereitzustellen.

Um diese Projektdateien als Teil eines einzelstufigen, wiederholbaren Bereitstellungsprozesses zu verwenden, müssen Sie die Publish.proj-Datei mithilfe von MSBuild ausführen und den Speicherort der umgebungsspezifischen Projektdatei als Parameter übergeben. Dies können Sie auf verschiedene Arten tun: