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
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.
(Icône bleue)Vérifiez que votre stratégie d’exécution autorise l’exécution de scripts.
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
Pour plus d’informations sur les paramètres de stratégie d’exécution, consultez Utilisation du cmdlet Set-ExecutionPolicy.
Accédez au répertoire des scripts Web Deploy.
- Tapez
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
(mais remplacez%programfiles%
par le chemin d’accès réel, parC:\Program Files
exemple).
- Tapez
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 :
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
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
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
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
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
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
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. |