Composant logiciel enfichable PowerShell : création de sites web, d’applications web, de dirs virtuels et de pools d’applications
par Thomas Deml
Dans cette procédure pas à pas, vous allez apprendre à créer des sites web, des applications web, des répertoires virtuels et des pools d’applications.
Introduction
L’espace de noms IIS PowerShell se compose d’éléments tels que les sites web, les applications, les répertoires virtuels et les pools d’applications. La création d’éléments d’espace de noms et leur gestion est très facile à l’aide des applets de commande PowerShell intégrées.
Création de sites Web
Si vous connaissez PowerShell, vous savez que l’applet de commande New-Item est utilisée pour créer des éléments dans les différents espaces de noms PowerShell. La commande New-Item c:\TestDirectory
crée un répertoire de système de fichiers par exemple (la plupart des utilisateurs utilisent l’alias MD
ou MKDIR
pour New-Item
toutefois). New-Item
est également utilisé pour créer de nouveaux sites web dans l’espace de noms IIS PowerShell.
Paramètres
La spécification du nom du répertoire est le seul argument nécessaire lorsque vous créez un répertoire de système de fichiers. Malheureusement, cela n’est pas suffisant lorsque vous créez un site web. Des paramètres supplémentaires tels que le chemin du système de fichiers et les liaisons réseau sont nécessaires pour créer un site web. Voici la commande permettant de créer un site web suivi d’une commande dir :
PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started f:\inetpub\wwwroot http *:80:
TestSite 2 Started c:\test http :80:TestSite
L’utilisation de l’argument -physicalPath est assez simple. Mais vous pouvez vous demander pourquoi l’argument -bindings semble si complexe.
La construction utilisée est une table de hachage (accédez ici pour en savoir plus sur les tables de hachage PowerShell). Dans les paires clé=valeur de la table de hachage, indiquez les paramètres qui reflètent les attributs de la section liaisons de site IIS :
<bindings>
<binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>
Voici la raison pour laquelle nous utilisons une table de hachage : la configuration IIS est entièrement extensible (voir ici pour plus d’informations) avec des sections et des attributs supplémentaires. Vous pouvez imaginer que quelqu’un étendant l’élément <liaison> avec des attributs supplémentaires. Les paires clé-valeur au sein d’une table de hachage offrent la possibilité d’incorporer ces nouveaux attributs sans avoir à réécrire complètement le composant logiciel enfichable IIS PowerShell.
Accordé, la syntaxe est un peu complexe. Nous envisageons d’encapsuler certaines tâches classiques telles que la création de sites avec des fonctions ou des scripts supplémentaires dans un aperçu technique ultérieur.
Suppression de sites
Voici comment supprimer le site que vous venez de créer.
PS IIS:\ >Remove-Item IIS:\Sites\TestSite
Création d’applications web
La création d’applications web est plus facile que la création de sites. C'est parti:
PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name ApplicationPool EnabledProtocols PhysicalPath
---- --------------- ---------------- ------------
DemoApp DefaultAppPool http c:\test
Le seul paramètre que vous devez spécifier est le type (-type), car sous un site web, vous souhaiterez peut-être créer des applications ou des répertoires virtuels. En spécifiant le paramètre -type que vous indiquez au composant logiciel enfichable IIS pour créer une application.
Pour supprimer l’application, vous pouvez également utiliser Remove-Item.
Création de répertoires virtuels
Pour créer un répertoire virtuel, vous utilisez également l’applet de commande New-Item. Nous allons créer un répertoire virtuel sous le « site web par défaut », mais un deuxième sous l’application web que nous avons créée à l’étape précédente.
PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name PhysicalPath
---- ------------
DemoVirtualDir1 c:\test\virtualDirectory1
PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name PhysicalPath
---- ------------
DemoVirtualDir2 c:\test\virtualDirectory2
Création de pools d'applications
Mais il est encore plus simple. La création d’un nouveau AppPool nécessite uniquement le nom à spécifier.
PS IIS:\> new-item AppPools\DemoAppPool
Name State
---- -----
DemoAppPool {}
Simple, n’est-ce pas? Nous allons maintenant mettre cela ensemble dans un scénario de bout en bout.
En résumé
Dans le scénario de bout en bout suivant, nous allons exécuter l’étape suivante :
- Créez un ensemble de nouveaux répertoires de système de fichiers pour les sites, les applications web et les répertoires virtuels que nous allons créer un peu plus tard.
- Copiez du contenu web très simple dans les répertoires nouvellement créés.
- Créer des nouveaux pools d’applications
- Créez un site, une nouvelle application et deux nouveaux répertoires virtuels et attribuez-les au pool d’applications nouvellement créé.
- Demandez le contenu web via le navigateur web.
Étape 1 : Créer des nouveaux répertoires
Nous utilisons l’applet de commande New-Item pour créer quatre répertoires de système de fichiers. Exécutez les commandes suivantes (utilisez « md » au lieu de New-Item si vous ne souhaitez pas spécifier le paramètre -type) :
New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory
Étape 2 : Copier du contenu
Nous allons maintenant écrire du contenu html simple dans ces répertoires :
Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"
Étape 3 : Créer un nouveau pool d’applications
Créez le nouveau pool d’applications « DemoAppPool » pour le nouveau site si vous avez supprimé celui que nous avons créé dans l’exemple précédent.
New-Item IIS:\AppPools\DemoAppPool
Remarque
L’applet de commande ci-dessus échoue si le module WebAdministration n’a pas été importé. Pour ce faire, vous pouvez ajouter l’applet de commande suivante comme première étape d’un script contenant l’applet de commande ci-dessus :
Import-Module "WebAdministration"
Étape 4 : Créer des sites, des applications web et des répertoires virtuels et les affecter au pool d’applications
Voici comment faire. Nous créons DemoSite, DemoApp et deux répertoires virtuels - DemoVirtualDir1 se trouve directement sous DemoSite et DemoVirtualDir2 sous DemoApp. Nous affectons DemoSite et DemoApp à DemoAppPool créés à l’étape précédente. DemoSite est affecté au port 8080 pour ne pas entrer en conflit avec le « site web par défaut »
New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory
Voila. Tout ce qui est laissé est de demander le contenu web.
Étape 5 : Demander le contenu web
Vous pouvez bien sûr ouvrir le navigateur et entrer http://localhost:8080/
et toutes les autres URL. Mais il s’agit d’une procédure pas à pas PowerShell et nous allons utiliser PowerShell pour le faire à l’aide des classes WebClient .NET :
$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");
Si vous vous sentez aventureux, vous pouvez également utiliser l’objet Internet Explorer lui-même :
$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");
Résumé
Dans cette procédure pas à pas, vous avez appris à créer des sites web, des applications web, des répertoires virtuels et des pools d’applications avec PowerShell. Des fonctionnalités PowerShell supplémentaires ont été utilisées pour créer un scénario fonctionnel de bout en bout.