Partager via


Configuration des propriétés de déploiement pour un environnement cible

par Jason Lee

Cette rubrique explique comment configurer des propriétés spécifiques à l’environnement afin de déployer l’exemple de solution Contact Manager sur un environnement cible spécifique.

Cette rubrique fait partie d’une série de didacticiels basés sur les exigences de déploiement d’entreprise d’une société fictive nommée Fabrikam, Inc. Cette série de tutoriels utilise un exemple de solution ( la solution Gestionnaire de contacts ) pour représenter une application web avec un niveau de complexité réaliste, notamment une application ASP.NET MVC 3, un service Windows Communication Foundation (WCF) et un projet de base de données.

La méthode de déploiement au cœur de ces didacticiels est basée sur l’approche de fichier projet fractionnée décrite dans Understanding the Build Process, dans laquelle le processus de génération est contrôlé par deux fichiers projet , un contenant des instructions de build qui s’appliquent à chaque environnement de destination et un qui contient des paramètres de build et de déploiement spécifiques à l’environnement. Au moment de la génération, le fichier projet spécifique à l’environnement est fusionné dans le fichier projet indépendant de l’environnement pour former un ensemble complet d’instructions de génération.

Présentation du processus

Le fichier projet que vous allez utiliser pour générer et déployer la solution Gestionnaire de contacts est divisé en deux fichiers physiques :

  • Un qui contient des paramètres de build universels et des instructions (fichier Publish.proj ).
  • Un qui contient des paramètres de build spécifiques à l’environnement (Env-Dev.proj, Env-Stage.proj, etc.).

Au moment de la génération, le fichier projet spécifique à l’environnement approprié est fusionné dans le fichier Publish.proj universel pour former un ensemble complet d’instructions de génération. Vous pouvez configurer le déploiement sur des environnements de destination spécifiques en créant ou en personnalisant des fichiers projet spécifiques à l’environnement avec des paramètres qui décrivent votre propre scénario de déploiement.

Un grand nombre de ces valeurs sont déterminées par la façon dont votre environnement de destination est configuré, en particulier si votre serveur web cible est configuré pour utiliser le service Agent de déploiement web (l’agent distant) ou le gestionnaire de déploiement web. Pour plus d’informations sur ces approches et pour obtenir des conseils sur le choix de l’approche appropriée pour votre propre environnement, consultez Choisir l’approche appropriée pour le déploiement web.

Le scénario gestionnaire de contacts nécessite deux fichiers projet spécifiques à l’environnement :

  • Déploiement vers un environnement de test de développeur (Env-Dev.proj). L’environnement de test du développeur est configuré pour accepter les déploiements distants à l’aide de l’agent distant, comme décrit dans scénario : configuration d’un environnement de test pour le déploiement web. Ce fichier doit fournir l’adresse du point de terminaison de l’agent distant ainsi que des paramètres spécifiques à l’emplacement, tels que les chaînes de connexion et les points de terminaison de service.
  • Déploiement vers un environnement intermédiaire (Env-Stage.proj). L’environnement de préproduction est configuré pour accepter des déploiements distants à l’aide du gestionnaire Web Deploy, comme décrit dans scénario : configuration d’un environnement intermédiaire pour le déploiement web. Ce fichier doit fournir l’adresse du point de terminaison du gestionnaire Web Deploy, ainsi que les paramètres spécifiques à l’emplacement, tels que les chaînes de connexion et les points de terminaison de service.

Il est important de noter que les paramètres que vous configurez dans le fichier projet spécifique à l’environnement n’affectent pas le contenu du package web lui-même. Ils contrôlent la façon dont le package est déployé et quelles valeurs de paramètre sont fournies lors de l’extraction du package. Vous importez manuellement le package web dans l’environnement de production, comme décrit dans le scénario : configuration d’un environnement de production pour le déploiement web et installation manuelle de packages web. Il n’importe donc pas les paramètres que vous avez utilisés dans le fichier projet spécifique à l’environnement lorsque vous avez généré le package. Le Gestionnaire iis (Internet Information Services) vous invite à entrer toutes les valeurs paramétrables, telles que les chaînes de connexion et les points de terminaison de service, lorsque vous importez le package.

Pour déployer la solution Gestionnaire de contacts dans votre propre environnement cible, vous pouvez personnaliser ce fichier ou l’utiliser comme modèle et créer votre propre fichier.

Pour configurer les paramètres de déploiement spécifiques à l’environnement pour la solution Gestionnaire de contacts

  1. Ouvrez la solution ContactManager-WCF dans Visual Studio 2010.

  2. Dans la fenêtre Explorateur de solutions, développez le dossier Publier , développez le dossier EnvConfig , puis double-cliquez sur Env-Dev.proj.

    Dans la fenêtre Explorateur de solutions, développez le dossier Publier, développez le dossier EnvConfig, puis double-cliquez sur Env-Dev.proj.

  3. Remplacez les valeurs de propriété dans le fichier Env-Dev.proj par les valeurs correctes pour votre propre environnement de test.

    Remarque

    Le tableau qui suit cette procédure fournit plus d’informations sur chacune de ces propriétés.

  4. Enregistrez votre travail, puis fermez le fichier Env-Dev.proj .

Choix des propriétés de déploiement appropriées

Ce tableau décrit l’objectif de chaque propriété dans l’exemple de fichier projet spécifique à l’environnement, Env-Dev.proj, et fournit des conseils sur les valeurs que vous devez fournir.

Nom de la propriété Détails
MSDeployComputerName Nom du serveur web de destination ou du point de terminaison de service. Si vous effectuez un déploiement sur le service d’agent distant sur le serveur web de destination, vous pouvez spécifier le nom de l’ordinateur cible (par exemple, TESTWEB1 ou TESTWEB1.fabrikam.net), ou vous pouvez spécifier le point de terminaison de l’agent distant (par exemple). http://TESTWEB1/MSDEPLOYAGENTSERVICE Le déploiement fonctionne de la même façon dans chaque cas. Si vous effectuez un déploiement sur le gestionnaire Web Deploy sur le serveur web de destination, vous devez spécifier le point de terminaison de service et inclure le nom du site web IIS en tant que paramètre de chaîne de requête (par exemple). https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
MSDeployAuth Méthode que Web Deploy doit utiliser pour s’authentifier auprès de l’ordinateur distant. Cette valeur doit être définie sur NTLM ou De base. En règle générale, vous allez utiliser NTLM si vous effectuez un déploiement sur le service d’agent distant et de base si vous effectuez le déploiement sur le gestionnaire web deploy. Si vous utilisez l’authentification de base, vous devez également spécifier le nom d’utilisateur et le mot de passe que l’outil de déploiement web IIS (Web Deploy) doit se faire passer pour effectuer le déploiement. Dans cet exemple, ces valeurs sont fournies via les propriétés MSDeployUsername et MSDeployPassword . Si vous utilisez l’authentification NTLM, vous pouvez omettre ces propriétés ou les laisser vides.
MSDeployUsername Si vous utilisez l’authentification de base, Web Deploy utilise ce compte sur l’ordinateur distant. Cela doit prendre la forme DOMAIN*username* (par exemple , FABRIKAM\matt). Cette valeur est utilisée uniquement si vous spécifiez l’authentification de base. Si vous utilisez l’authentification NTLM, la propriété peut être omise. Si une valeur est fournie, elle est ignorée.
MSDeployPassword Si vous utilisez l’authentification de base, Web Deploy utilise ce mot de passe sur l’ordinateur distant. Il s’agit du mot de passe du compte d’utilisateur que vous avez spécifié dans la propriété MSDeployUsername . Cette valeur est utilisée uniquement si vous spécifiez l’authentification de base. Si vous utilisez l’authentification NTLM, la propriété peut être omise. Si une valeur est fournie, elle est ignorée.
ContactManagerIisPath Chemin d’accès IIS sur lequel vous souhaitez déployer l’application MVC du Gestionnaire de contacts. Il doit s’agir du chemin d’accès tel qu’il apparaît dans le Gestionnaire d’IIS, sous la forme [nom du site web IIS]/[nom de l’applicationweb]. N’oubliez pas que le site web IIS doit exister avant de déployer votre application. Par exemple, si vous avez créé un site web IIS nommé DemoSite, vous pouvez spécifier le chemin IIS de l’application MVC en tant que DemoSite/ContactManager.
ContactManagerServiceIisPath Chemin d’accès IIS sur lequel vous souhaitez déployer le service WCF du Gestionnaire de contacts. Par exemple, si vous avez créé un site web IIS nommé DemoSite, vous pouvez spécifier le chemin IIS du service WCF en tant que DemoSite/ContactManagerService.
ContactManagerTargetUrl URL à laquelle le service WCF peut être atteint. Cette opération prend la forme [URL racine du site web IIS]/[nom de l’application de service]/[point de terminaison de service]. Par exemple, si vous avez créé un site web IIS sur le port 85, l’URL prend la forme http://localhost:85/ContactManagerService/ContactService.svc. N’oubliez pas que l’application MVC et le service WCF sont déployés sur le même serveur. Par conséquent, cette URL n’est jamais accessible à partir de l’ordinateur sur lequel elle est installée. En raison de cela, il est préférable d’utiliser localhost ou l’adresse IP, plutôt que le nom de l’ordinateur ou un en-tête d’hôte, dans l’URL. Si vous utilisez le nom de l’ordinateur ou un en-tête d’hôte, la fonction de sécurité de vérification de loopback dans IIS peut bloquer l’URL et renvoyer une erreur HTTP 401.1 - Non autorisé.
CmDatabaseConnectionString Chaîne de connexion pour le serveur de base de données. La chaîne de connexion détermine les informations d’identification utilisées par VSDBCMD pour contacter le serveur de base de données et créer la base de données et les informations d’identification utilisées par le pool d’applications serveur web pour contacter le serveur de base de données et interagir avec la base de données. Essentiellement, vous avez deux choix ici. Vous pouvez spécifier Integrated Security=true, auquel cas l’authentification Windows intégrée est utilisée : Data Source=TESTDB1 ; Security=true Dans ce cas, la base de données est créée à l’aide des informations d’identification de l’utilisateur qui exécute l’exécutable VSDBCMD, et l’application accède à la base de données à l’aide de l’identité du compte d’ordinateur du serveur web. Vous pouvez également spécifier le nom d’utilisateur et le mot de passe d’un compte SQL Server. Dans ce cas, les informations d’identification SQL Server sont utilisées à la fois par VSDBCMD pour créer la base de données et par le pool d’applications pour interagir avec la base de données : Source de données =TESTDB1 ; Id utilisateur=ASqlUser ; Password= ; Les procédures pas à pas de cette rubrique supposent que vous allez utiliser l’authentification Windows intégrée.
CmTargetDatabase Nom que vous souhaitez donner à la base de données que vous allez créer sur le serveur de base de données. La valeur que vous fournissez ici est ajoutée à la commande VSDBCMD en tant que paramètre. Il est également utilisé pour générer une chaîne de connexion complète que le pool d’applications sur le serveur web peut utiliser pour interagir avec la base de données.

Ces exemples montrent comment configurer ces propriétés pour des scénarios de déploiement spécifiques.

Exemple 1 : déploiement vers le service d’agent distant

Dans cet exemple :

  • Vous déployez sur TESTWEB1 le service d'agent distant.
  • Vous demandez à Web Deploy d’utiliser l’authentification NTLM. Web Deploy s’exécute à l’aide des informations d’identification que vous avez utilisées pour appeler le moteur de build Microsoft (MSBuild).
  • Vous utilisez l’authentification intégrée pour déployer la base de données ContactManager sur TESTDB1. La base de données sera déployée à l’aide des informations d’identification que vous avez utilisées pour appeler 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>

Exemple 2 : déploiement sur le point de terminaison du gestionnaire de déploiement web

Dans cet exemple :

  • Vous déployez sur le point de terminaison du service Web Deploy Handler de STAGEWEB1.
  • Vous demandez à Web Deploy d’utiliser l’authentification de base.
  • Vous spécifiez que Web Deploy doit se faire passer pour le compte FABRIKAM\stagingdeployer sur l'ordinateur distant.
  • Vous utilisez l’authentification SQL Server pour déployer la base de données ContactManager sur 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>

Conclusion

À ce stade, vos fichiers projet sont entièrement configurés pour générer et déployer la solution Gestionnaire de contacts dans un ou plusieurs environnements de destination.

Pour utiliser ces fichiers projet dans le cadre d’un processus de déploiement reproductible en une seule étape, vous devez exécuter le fichier Publish.proj à l’aide de MSBuild et passer à l’emplacement du fichier projet spécifique à l’environnement en tant que paramètre. Vous pouvez effectuer cette opération de différentes manières :