Partager via


Scripts PowerShell pour automatiser la configuration du Web Deploy

Auteur Kristina Olson

La version v2.1 de Web Deploy installe plusieurs scripts PowerShell qui facilitent la configuration de votre serveur IIS, afin que les utilisateurs puissent les publier à l’aide de Web Deploy. Cette page vous montre comment : utiliser ces scripts pour créer un site de publication par défaut, activer la publication pour un site et un utilisateur nouveau ou existant, créer des bases de données SQL ou MySQL ou configurer des règles de délégation, en utilisant PowerShell pour toutes ces opérations.

Les scripts que vous allez utiliser sont les suivants :

  • SetupSiteForPublish.ps1
  • CreateSqlDatabase.ps1
  • CreateMySqlDatabase.ps1
  • AddDelegationRules.ps1

Spécifications

  • Le serveur doit avoir un système d’exploitation fourni avec IIS7, ce qui signifie Windows Server 2008 ou Windows Server 2008 R2. Vous devez être administrateur sur l’ordinateur.

  • Vérifiez que les conditions suivantes sont respectées :

    • PowerShell2 doit être installé (il est intégré à Windows Server 2008 R2 ; pour Windows Server 2008, vous pouvez obtenir PowerShell2 comme mise à jour à partir de là : https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. un redémarrage peut être requis.
    • Le rôle serveur web (IIS) doit être activé dans Gestionnaire de serveur.
    • Le service de rôle service de gestion web d’IIS (« Service de gestion ») doit être activé dans Gestionnaire de serveur
    • Pour utiliser les scripts de base de données PowerShell, le serveur doit avoir accès à une base de données SQL ou MySQL. SQL Server Management Objects doit également être installé pour SQL.
    • Web Deploy doit être installé avec le composant d’intégration du service de gestion. (Pour que cette option apparaisse dans le programme d’installation Web Deploy, le service de gestion web doit d’abord être activé.)

Instructions pour Windows PowerShell

  1. Lancez une fenêtre de commande PowerShell.

    Cliquez sur l’icône PowerShell dans la barre des tâches ou cliquez sur Démarrer, tapez PowerShell et sélectionnez Windows PowerShell.
    Capture d’écran de la barre des tâches Windows affichant le bouton Démarrer.
    (Icône bleue)

  2. Vérifiez que votre stratégie d’exécution autorise l’exécution de scripts.

    1. Tapez « Get-ExecutionPolicy ». Si elle est restreinte (valeur par défaut), vous devez réinitialiser un paramètre plus permissif, par exemple en tapant « Set-ExecutionPolicy AllSigned ». Le paramètre AllSigned autorise l’exécution de scripts signés, mais vous avertit au cas où ils ne sont pas approuvés

    2. Pour plus d’informations sur les paramètres de stratégie d’exécution, consultez Utilisation du cmdlet Set-ExecutionPolicy.

  3. Accédez au répertoire des scripts Web Deploy.

    1. Tapez cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (mais remplacez %programfiles% par le chemin d’accès réel, par C:\Program Filesexemple).

Utilisez le script SetupSiteForPublish pour créer un site web de publication par défaut (aucune base de données)

Exécutez le script SetupSiteForPublish.ps1 sans argument :

Capture d’écran d’une console PowerShell avec sortie.

Ce qui se produit :

Le script crée un utilisateur et un site pour la publication non administrateur et enregistre les informations de profil de publication dans un fichier sur le bureau. Plus précisément, cela crée un site appelé WDeploySite avec la racine du site physique à %systemdrive%\inetpub\WDeploySite. Le site aura un pool d’applications correspondant, WDeployAppPool et sera affecté au port 8080 par défaut (ou le port disponible suivant si un autre site utilise 8080). Le script crée également un utilisateur Windows local non administrateur appelé WDeploySiteuser et accorde à cet utilisateur des ACL de contrôle total sur le dossier WDeploySite et les autorisations du Gestionnaire IIS sur le site. Les informations de paramètres sont enregistrées sur le bureau dans un fichier appelé WDeploy.PublishSettings : ce fichier peut être consommé par WebMatrix (ou potentiellement Visual Studio) pour la publication sur le site. Ce profil ne contient AUCUNE information de publication de base de données à ce stade.

Activez la publication Web Deploy pour n’importe quel site et utilisateur à l’aide du script SetupSiteForPublish :

Script : SetupSiteForPublish.ps1

Description : Pour un site et un compte d’utilisateur spécifiés, permet à l’utilisateur spécifié de publier sur le site spécifié. Le script crée le compte d’utilisateur, le site et le pool d’applications ; définit les ACL de répertoire et les autorisations du Gestionnaire IIS pour le site et enregistre les informations de paramètre dans un fichier.

Paramètres :

Nom Description Valeur par défaut Notes
siteName Nom du site. Si le site n'existe pas, il sera créé. WDeploySite
sitePhysicalPath Emplacement du fichier physique pour le contenu du site. Si le répertoire cible n’existe pas, il est créé. %systemdrive%\inetpub\WDeploySite
siteAppPoolName Nom du pool d’applications qui sera associé au site. Si le pool d'applications n’existe pas, il sera créée. WDeployAppPool Il est recommandé de dédier un pool d’applications par site.
sitePort Port pour les liaisons de site. Premier port de 8080 à 8200 qui n’est pas utilisé par un autre site. Une règle de pare-feu peut être nécessaire pour ouvrir le port pour le trafic distant.
deploymentUserName Nom de l’utilisateur auquel accorder l’accès au site. Si l’utilisateur n’existe pas, un utilisateur non administrateur est créé. WDeploySiteuser
deploymentUserPassword Mot de passe de l’utilisateur de déploiement. Si aucun mot de passe n’est spécifié, un mot de passe est automatiquement généré et enregistré dans le fichier de paramètres. [généré automatiquement]
managedRunTimeVersion Si elle est spécifiée, tente de définir la version d’exécution spécifiée pour le pool d’applications. Si aucune version du runtime correspondante n’est trouvée, les valeurs par défaut du pool d’applications sont utilisées. Valeurs par défaut du pool d’applications Exemple de format « v2.0 » ou « v4.0 »
publishSettingSavePath Répertoire existant dans lequel le fichier de paramètres sera enregistré. Bureau de l’utilisateur actuel Doit être un répertoire existant. Si le répertoire spécifié n’existe pas, une erreur se produit.
publishSettingFileName Nom du fichier de paramètres, y compris l’extension. WDeploy.PublishSettings N’oubliez pas d’inclure l’assembly d’extension. Si le fichier existe, le site d’informations à l’intérieur sera remplacé.

Exemples :

Activez la publication pour un utilisateur existant sur un site existant (le mot de passe ne sera pas enregistré dans le fichier de paramètres) :

.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Capture d’écran d’une console PowerShell avec les résultats de l’écriture de scripts.

Activez la publication pour un nouvel utilisateur sur un nouveau site, avec un nom personnalisé et un emplacement pour le fichier de paramètres de publication :

.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings

Capture d’écran d’une console PowerShell avec script et sortie pour les paramètres de publication.

Le fichier PublishSettings contient également le nouveau mot de passe utilisateur. Notez que les champs chaîne de connexion sont vides : ils peuvent être remplis manuellement ou vous pouvez l’ajouter au profil à l’aide des scripts de génération de base de données :

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>

Créer une base de données SQL pour un compte de publication à l’aide du script CreateSqlDatabase

Script : CreateSqlDatabase.ps1

Description : crée une base de données, une connexion, un utilisateur de base de données disposant d’autorisations db_owner à la base de données et enregistre les informations de chaîne de connexion correspondantes dans un fichier de paramètres.

Paramètres :

Nom Description Valeur par défaut Notes
databaseName Nom de la base de données à créer. wDeploySqldb
databaseUserName Nom de l’utilisateur de la base de données et connexion. wdeploySqlUser Spécifiez un nouvel utilisateur à chaque fois, ou vous risquez de réinitialiser le mot de passe de connexion d’un utilisateur et d’invalider les informations d’identification de connexion précédentes de l’utilisateur.
databaseUserPassword Le mot de passe pour l'utilisateur de la base de données et la connexion. Si aucun mot de passe n’est spécifié, un mot de passe est généré automatiquement. [généré automatiquement] Dans certains cas, le mot de passe généré automatiquement peut contenir des caractères qui provoquent des problèmes avec certains clients de publication. Envisagez de modifier le script si vous utilisez le script pour la création de base de données automatisée.
databaseAdminUser Nom d’utilisateur de l’administrateur de serveur SQL (généralement « sa »). OBLIGATOIRE
databaseAdminPassword Mot de passe du compte d'administrateur de SQL Server. OBLIGATOIRE
sqlServerInstanceName Emplacement du serveur SQL. .\SQLExpress

Général

publishSettingSavePath Répertoire existant dans lequel le fichier de paramètres sera enregistré. Bureau de l’utilisateur actuel Doit être un répertoire existant. Si le répertoire spécifié n’existe pas, une erreur se produit.
publishSettingFileName Nom du fichier de paramètres, y compris l’extension. WDeploy.PublishSettings N’oubliez pas d’inclure l’assembly d’extension. Si le fichier existe, le site d’informations à l’intérieur sera remplacé.

Exemples :

Créez une base de données avec un utilisateur à l’aide des valeurs par défaut (base de données SQLExpress locale) :

.\CreateSqlDatabase.ps1

Capture d’écran d’une console PowerShell avec script et sortie pour la création d’une base de données S Q L.

Créez une base de données et ajoutez les informations de chaîne de connexion au fichier de paramètres de publication existant c:\profiles\UserA.PublishSettings :

PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Capture d’écran d’une console PowerShell avec script et sortie avec connexion au fichier de paramètres de publication existant.

Créer une base de données MySQL pour un compte de publication à l’aide du script CreateMySqlDatabase

Script : CreateMySqlDatabase.ps1

Description : crée une base de données, un utilisateur de base de données disposant de tous les privilèges sur la base de données (sur localhost) et enregistre les informations de chaîne de connexion dans un fichier de paramètres

Paramètres :

Nom Description Valeur par défaut Notes
databaseName Nom de la base de données à créer. WDeployDb
databaseUserName Nom de l'utilisateur de la base de données. WDeployUser
databaseUserPassword Le mot de passe pour l'utilisateur de la base de données et la connexion. Si aucun mot de passe n’est spécifié, un mot de passe est généré automatiquement. [généré automatiquement] Dans certains cas, le mot de passe généré automatiquement peut contenir des caractères qui provoquent des problèmes avec certains clients de publication. Envisagez de modifier le script si vous utilisez le script pour la création de base de données automatisée.
databaseAdminUser Nom de l’administrateur de base de données, généralement « racine ». OBLIGATOIRE Vous serez invité à entrer ce paramètre s’il n’est pas fourni
databaseAdminPassword Mot de passe du compte d'administrateur du serveur. OBLIGATOIRE Vous serez invité à entrer une valeur pour ce paramètre si vous ne le fournissez pas.
serverHostName Emplacement du serveur MySQL localhost *voir la note sous le tableau

Général :

publishSettingSavePath Répertoire existant dans lequel le fichier de paramètres sera enregistré. Bureau de l’utilisateur actuel Doit être un répertoire existant. Si le répertoire spécifié n’existe pas, une erreur se produit.
publishSettingFileName Nom du fichier de paramètres, y compris l’extension. WDeploy.PublishSettings N’oubliez pas d’inclure l’assembly d’extension. Si le fichier existe, le site d’informations à l’intérieur sera remplacé.

*Si vous spécifiez une valeur non-localhost pour serverHostName et que vous ne modifiez pas les autorisations pour l’utilisateur, il se peut que l’utilisateur ne puisse pas accéder à sa base de données. Par défaut, les autorisations accordées dans ce script fournissent l’accès utilisateur de la base de données à partir de l’ordinateur local. Si le serveur de base de données n’est pas hébergé sur le même ordinateur, la section d’octroi d’autorisations du script PowerShell doit être modifiée pour accorder des autorisations plus générales, par exemple en modifiant la ligne de script suivante pour autoriser l’accès à partir de n’importe quel ordinateur :

Ligne d’autorisations de script par défaut :

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"

Ligne d’autorisations de script modifiée :

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"

Exemples :

Créez une base de données avec l’utilisateur à l’aide des valeurs par défaut :

.\CreateMySqlDatabase.ps1

Capture d’écran d’une console PowerShell avec script pour créer une base de données.

Créez une base de données et ajoutez les informations de chaîne de connexion au fichier de paramètres de publication existant c:\profiles\UserA.PublishSettings :

.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Capture d’écran d’une console PowerShell avec script et sortie de connexion aux paramètres de publication existants.

Configurer des règles de délégation pour le serveur à l’aide du script AddDelegationRules

Script : AddDelegationRules.ps1

Description : ce script est exécuté automatiquement au moment de l’installation par le programme d’installation pendant une installation complète, mais si vous n’avez pas effectué d’installation complète ou que vous souhaitez réparer les règles à tout moment, vous pouvez réexécuter ce script AddDelegationRules.

Paramètres :

Nom Description Valeur par défaut Notes
elevatedUsername Nom du compte d’utilisateur qui reçoit l’accès en écriture au fichier applicationHost.config du serveur. Cet utilisateur sera utilisé comme utilisateur d’identification sur les règles appPoolPipeline, appPoolNetFx et createApp. WDeployUser Crée uniquement un utilisateur Windows local et ne fonctionne pas si la configuration partagée est activée. Le mot de passe de ce compte d’utilisateur est réinitialisé si le script est exécuté une deuxième fois.
elevatedPassword Généré automatiquement s’il n’est pas spécifié. [généré automatiquement]
adminUsername Nom d’un compte d’utilisateur Administrator qui sera utilisé comme utilisateur exécuter en tant que sur la règle recycleApp. WDeployAdmin Crée uniquement un utilisateur Windows local et ne fonctionne pas si la configuration partagée est activée. Le mot de passe de ce compte d’utilisateur est réinitialisé si le script est exécuté une deuxième fois.
adminPassword Généré automatiquement s’il n’est pas spécifié [généré automatiquement]
ignorePasswordResetErrors Commutateur. Si elevated/adminUsername fait référence à un compte existant, ce commutateur permet au script de réinitialiser le mot de passe du compte. [omis - réinitialisation des mots de passe utilisateur non autorisés] La réinitialisation d’un mot de passe utilisateur peut entraîner la perte d’accès de l’utilisateur aux données. Il convient d’utiliser ce changement avec précaution. Pour plus d’informations, consultez https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Notez également que le nouveau mot de passe utilisateur n’est pas stocké et ne peut pas être récupéré ultérieurement.