Accueil > .Net, ASP.Net, IIS > IIS – WebDeploy

IIS – WebDeploy

Ça change un peu du codage pur et dur, mais cette semaine, j’ai du faire d’autres opérations.
Les opérations en question, c’est d’installer différents sites Web : répéter les opérations utiles et faire une documentation à destination de l’exploitation.

Du coup, on a un peu tâtonner sur différentes sujets (Build sous TFS, génération d’un package de déploiement…).
Dans le présent billet, je vais uniquement parler de l’installation des sites Web via Web Deploy, sous IIS et les pré-requis pour que ça se passe bien.

Déjà, pour les outils que j’ai utilisé à cette occasion :

  • Visual Studio 2010
  • IIS 7.5
  • Web Deploy

Pour IIS 7.5 et Web Deploy, il faut aller voir sur le site officiel de IIS. Ce sont bien sûr des pré-requis.

 

Avertissement : tout au long du billet, je suppose que le Web Server utilisé pour développer est IIS.
En effet, IIS Express ou le Web Server intégré à Visual Studio ne sont pas compatibles avec ce que je considère comme le déploiement optimum : c’est à dire sans aucun action à réaliser sur le package final.

 

Configurer les CSPROJ

 
La première étape est d’être raccord sur les CSPROJ dans la solution.
Le premier onglet à modifier est l’onglet « Web » :
IIS - WebDeploy - CSPROJ - Web

Ici, l’intérêt principal est d’utiliser le serveur IIS local.
Du coup, dans le IIS, on aura le répertoire virtuel :
IIS - WebDeploy - IIS - Répertoire Virtuel

Ensuite, il faut aller dans l’onglet « Package/Publication Web ».
C’est l’onglet qui va contenir le plus d »informations utiles.
IIS - WebDeploy - CSPROJ - Web Publication

Alors, pour la signification des options :

  1. Les symboles de déboggage sont les *.pdb, ce qui ne sert à rien dans une installation cible.
  2. Comme indiqué, les bases de données configurées constituent un ensemble de scripts *.sql (ce qui n’est pas le sujet, ici).
  3. Les paramètres configurés dans IIS sont très importants, cela permet de ne pas avoir à modifier le package généré, j’y reviens un peu plus bas.
  4. J’avoue, je ne sais pas trop à quoi sert cette option, puisqu’elle est redondante avec la précédente (si vous savez, je suis preneur).
  5. Permet de générer un package sous forme de fichier *.zip qui est importable dans IIS.
  6. Le site web de destination, le mieux, c’est de faire correspondre la cible avec le site en local (d’où le fait que j’ai mis les mêmes noms).
  7. Chemin physique dans lequel sera déployé le site Web, lors de l’import dans IIS. Cette option n’est accessible que si le serveur IIS local est utilisé (onglet précédent).

Ici, nous avons fini le paramétrage dans Visual Studio.

 

Configurer IIS

 
Dans IIS, donc, la première étape est de créer un pool d’application, dans le cas où c’est la cible.
En effet, puisque le package va embarquer la configuration IIS locale, si le site Web local utilise un pool d’application, il sera présent dans la configuration du package et donc paramétré lors de l’import dans IIS.

Pour l’exemple, j’ai créer un pool d’application nommé « ProjectAppPool ». Seul le nom est important !

Ensuite, Visual Studio a déjà créé le répertoire virtuel (lors du paramétrage de l’onglet « Web »).
Donc, il suffit d’aller dans les paramètres avancés sur le site pour affecter le pool d’application :
IIS - WebDeploy - IIS - Pool d'application

Voilà, c’est tout pour la partie IIS.

 

Package de déploiement

 
Retour dans Visual Studio.
Là, il suffit de faire un clic droit sur le projet concerné et de cliquer sur « Générer un package de déploiement ».
Ce fut dur, n’est ce pas ?

Par défaut, le package est créé dans le répertoire du projet, sous obj\{Configuration}\Package.
Dans mon cas, la configuration est « Release ».

On obtient donc ceci :
IIS - WebDeploy - Package

Le fichier *.cmd permet de réaliser lui-même l’installation sous IIS en passant quelques paramètres.
Il prend en compte le fichier de configuration {ProjectName}.SetParameters.xml.
Mais ce n’est pas l’objet ici, donc nous allons plutôt voir le fichier *.zip.

Il contient plusieurs éléments :

  • Un répertoire « Content » : c’est lui qui contient les sources à déployer, tout en prenant en compte le chemin de génération, c’est à dire tout ça :
    « Content\C_C\WORKSPACES\TFS_WORKSPACE_TEST\Src\SolutionName\ProjectName
    \obj\Package\PackageTmp\ ».
  • Un fichier archive.xml, inintéressant dans notre cas.
  • Un fichier systemInfo.xml, inintéressant dans notre cas.
  • Un fichier parameters.xml qui nous intéresse particulièrement.

Le fichier parameters.xml a cette tête là :

<parameters>
  <parameter name="IIS Web Application Name" defaultValue="Default Web Site/ProjectName" tags="IisApp">
    <parameterEntry kind="ProviderPath" scope="AppHostConfig" match="^Default\ Web\ Site/ProjectName$" />
    <parameterEntry kind="ProviderPath" scope="contentPath" match="^C:\\WORKSPACES\\TFS_WORKSPACE_TEST\\Src\\SolutionName\\ProjectName\\obj\\Release\\Package\\PackageTmp$" />
    <parameterEntry kind="ProviderPath" scope="setAcl" match="^C:\\WORKSPACES\\TFS_WORKSPACE_TEST\\Src\\SolutionName\\ProjectName\\obj\\Release\\Package\\PackageTmp$" />
  </parameter>
  <parameter name="IIS Web Application Pool Name" defaultValue="ProjectAppPool">
    <parameterEntry kind="DeploymentObjectAttribute" scope="application" match="application[@applicationPool='ProjectAppPool']/@applicationPool" />
  </parameter>
  <parameter name="IisVirtualDirectoryPhysicalPath" defaultValue="D:\CompanyName\ProjectName" tags="PhysicalPath">
    <parameterEntry kind="DestinationVirtualDirectory" scope=".*" match="^C:\\WORKSPACES\\TFS_WORKSPACE_TEST\\Src\\SolutionName\\ProjectName$" />
  </parameter>
</parameters>

Et ici, on retrouve bien notre configuration, à savoir le répertoire virtuel (lignes 2 et 3), le chemin du contenu au sein du zip (ligne 4), le pool d’application (ligne 7) et enfin le chemin physique (ligne 10).

Note : Il est possible d’ajouter, à la racine de l’application (directement sous le *.csproj), un fichier « parameters.xml ». Ce fichier est constitué d’une balise <parameters> avec en dessous autant de balise <parameter> que souhaité.
Ces paramètres vont directement se retrouver dans le fichier du même nom, dans le package zip.

 

Déploiement

 
Certainement l’étape la plus complexe du lot😛

On part également du postulat que c’est sur une machine différente (sinon, il faut virer l’application qui pointe sur les sources) et que le pool d’application est déjà créé (lui, avec les informations d’identity et tout le bazar).

Ici, on va dans IIS pour faire un clic droit sur « Default Web Site » (si c’est à un autre niveau, l’import vous enverra bouler).
IIS - WebDeploy - IIS - Menu Deploy

Sur le premier écran, il suffit d’alelr chercher le package nouvellement créé, puis cliquer sur « Suivant ».

Là, on a un écran qui affiche le contenu du package et non dit, grosso modo, ce qui va être fait : création de l’application dans IIS, déploiement, gestion des autorisations :
IIS - WebDeploy - IIS - Deploy Ecran 2

Un petit coup de « Suivant » permettra d’aller vers l’écran de paramétrage.
C’est ici que l’on voit la configuration réalisée sur le csproj ainsi que sur IIS :
IIS - WebDeploy - IIS - Deploy Ecran 3

Un dernier petit coup de « Suivant » et…bam, ça fait des Chocapic.
Dans « D:\CompanyName\ProjectName », l’application est déployée et il est d’ores et déjà possible d’appeler le site Web : http://localhost/ProjectName.

Pour désinstaller, c’est encore plus complexe😛
Il suffit de faire un clic droit sur l’application « Deploy » > « Supprimer l’application et le contenu ».

 

Contenu additionnel

 
Pour simuler du HTTPS en local, il y a une fonctionnalité assez rapide à mettre en place.
Sous IIS, aller sur le « root » (typiquement le nom de la machine avec en parenthèses l’utilisateurs courant).
Dans le panneau central, il faut cliquer sur « Certificats de serveur ».
Clic droit dans le panneau central : « Créer un certificat auto-signé ».
Il suffit d’entrer le nom (ProjectCert, dans mon cas) puis « OK ».
Le certificat apparaîtra dans la liste.

Et pour l’utiliser sur le « Default Web Site », il faut cliquer droit dessus pour avoir le menu contextuel et « Modifier les liaisons ».
IIS - WebDeploy - Certificat

Et…c’est tout.

 
 
Voilà, j’espère que ce billet vous sera utile.
Pour moi, il va servir de doc ^^

Catégories :.Net, ASP.Net, IIS
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :