IIS : Des serveurs Web rapides et faciles

Vous pouvez installer des serveurs Web beaucoup plus rapidement et facilement à l'aide de Windows PowerShell.

Jason Helmick

Pensez à combien de fois vous installez IIS. Pas trop? Vraiment ? Tenir compte des plates-formes comme Exchange et SharePoint qui ont besoin de IIS comme logicielle prérequise, déploiements de ferme Web, analyse des milieux et environnements de développement. Vous puisse passer plus de temps à installer IIS que vous pensez.

Ajoutez à cela la nécessité pour l'automatisation de la récupération après sinistre. Pouvez vous apporter votre ferme Web en ligne en quelques minutes ? Installation et configuration de IIS avec vos sites Web sont une tâche simple. C'est un processus long et ennuyeux si vous avez beaucoup de serveurs.

Personne ne veut passer des week-ends mise en place de serveurs. Vous souhaitez gérer votre batterie de serveurs Web, sites Web et tous ce Web « trucs » lundi au vendredi, de neuf à cinq. Vous souhaitez profiter de chaque occasion pour accélérer et automatiser les tâches dans votre travail.

Ce guide étape par étape vous permettra de déployer IIS et par défaut les sites Web d'un groupe de serveurs, tout à la fois, en quatre minutes. Vous ne pouvez cela avec l'outil Gestionnaire de serveur GUI et le gestionnaire des services IIS GUI. En fait, le GUI fait partie du problème. Comment faire ces choses magiques ? Windows PowerShell. Remarque : Cela vaut pour IIS 7.5 et 8 IIS).

Gestion à distance PowerShell

Avant que nous ne sommes commence, vous avez Windows PowerShell Remoting activées sur vos serveurs ? Si ce n'est pas le cas, vous devriez. C'est comment ce plan va fonctionner. Avant que nous arrivons à la partie rapide et facile de déploiement, parcourons comment obtenir Windows PowerShell distante activée dans le cas où vous ne l'avez pas déjà fait.

Il existe deux méthodes pour ce faire. Si vous voulez Essayez ceci dans un environnement de test, la première méthode peut être plus rapide. Il y a deux capacités de Windows PowerShell, que vous devez activer : Exécution d'accès distant de Windows PowerShell et de script. La première méthode nécessite que vous visitez chaque serveur que vous souhaitez gérer. Vous pouvez utiliser Remote Desktop Protocol (RDP) ou Datacenter et exécutez les deux commandes.

1.   Ouvrez une console PowerShell de Windows avec des privilèges administratifs et utiliser la cmdlet Enable-PSRemoting pour activer l'accès distant de Windows PowerShell sur chaque serveur :

PS> Enable-PSRemoting -Force

2.   Vous voudrez utiliser certains des modules supplémentaires des applets stockés sur ces serveurs. Pour utiliser ces plus tard, vous devrez être en mesure d'exécuter les scripts — qui, par défaut, Windows PowerShell ne permet pas. Donc nous allons changer cela :

PS> Set-ExecutionPolicy RemoteSigned –Force

À ce stade, vous êtes prêt à déployer et à gérer vos serveurs IIS. Si vous avez des centaines de serveurs de gérer, vous voudrez vous délivrer une stratégie de groupe pour faire ces changements. Course autour de tous ces serveurs est un ridicule gaspillage de temps, Voici les étapes pour activer Windows PowerShell d'accès distant à un objet de stratégie de groupe (GPO) :

  1. « Permettre la configuration automatique des auditeurs » et définir des IPv4 et IPv6 de « * ». Vous trouverez la clé : Ordinateur Configuration\Policies\Administrative Windows serveur distant de Management\WinRM Components\Windows.
  2. Exécution de script dans le cadre de « Tourner sur exécution de Script » et définir le paramètre de stratégie « Autoriser seulement signé scripts » ou « Autoriser les scripts locaux et distants scripts signés. » Vous trouverez la clé : Ordinateur Configuration\Policies\Administrative Windows PowerShell Components\Windows.
  3. Configurer le service de gestion à distance Windows (WinRM) pour démarrer automatiquement, à cette clé : Ordinateur Configuration\Policies\Windows Settings\Security Settings\System Services.

Si vous avez le pare-feu Windows sur les ordinateurs en cours d'exécution, vous aurez besoin une règle de trafic entrant parce que WinRM écoute sur le port 5985. Vous trouverez la clé : Ordinateur Configuration\Policies\Windows Settings\Windows pare-feu avec sécurité avancée.

Déployer les serveurs Web

Le plaisir commence maintenant. C'est assez simple, car il ne faut que quelques fractionné de Windows PowerShell pour que la magie se produise.

1.   Stocker une liste de tous les noms de serveur qui vont faire partie du déploiement à une variable. Vous pouvez créer une liste dans le bloc-notes, si vous le souhaitez et ensuite utilisez Windows PowerShell pour lire cette liste :

PS> $servers= get-content c:\servers.txt

C'est un peu bâclé, surtout lorsqu'il s'agit d'une liste de serveur de grande. Il vaut mieux faire faire tout le travail de Windows PowerShell. Saviez-vous que cmdlets de Active Directory, vous pouvez obtenir une liste de noms d'ordinateur ? Pour utiliser les cmdlets de Active Directory, vous devez le distant Server Administration outils (RSAT) pour Active Directory installé. Si vous connaissez le secret de Windows PowerShell implicite d'accès distant, vous pouvez utiliser qui sans installer les applets de commande localement. Avec le RSAT installé, la première tâche est d'importer le module pour les cmdlets de Active Directory :

PS> Import-Module ActiveDirectory

Une fois importés, vous pouvez utiliser la cmdlet Get-ADComputer pour récupérer les noms d'ordinateur de votre choix. Dans cet exemple, les ordinateurs à laquelle nous allons déployer IIS tous commencent avec le nom de « Web ». Filtrer la cmdlet Get-ADComputer de trouver uniquement les ordinateurs qui commencent avec le nom de « Web » et de tuyaux à Select-Object à saisir uniquement le nom de l'ordinateur :

PS> $servers= Get-ADComputer -filter 'name -like "web*"' | Select-Object -ExpandProperty name

2.   Il est maintenant temps d'utiliser la puissance de l'accès distant de Windows PowerShell pour rendre facile la levée de ce qui serait normalement un long et ennuyeux de processus. Nous allons déployer IIS. Tout d'abord, nous allons créer une session pour tous ces serveurs, nous avons récolté :

PS> $session=New-PSSession -ComputerName $servers

3.   La prochaine étape consiste à importer le module Gestionnaire de serveur sur les ordinateurs distants. Ce module a les applets de commande qui va installer et supprimer des rôles de serveur et des fonctionnalités. Nous utilisons la cmdlet Invoke-Command avec un paramètre pour la session, que nous avons créé précédemment. La chose intéressante à ce sujet est que tous les serveurs reçoivent immédiatement les instructions envoyées à l'intérieur de la} de bloc de script :

PS> Invoke-Command -Session $session {Import-module ServerManager}

Cette étape n'est pas nécessaire dans le processus. Cela vérifie simplement si IIS est déjà installé sur les ordinateurs distants. La cmdlet Get-WindowsFeature fait un travail agréable de ceci :

PS> invoke-command -Session $session {Get-WindowsFeature web-server} | format-table -AutoSize

Let's talk sur l'installation de IIS pour un moment avant de nous plonger dans les commandes. IIS a une installation par défaut qui autorise uniquement les pages Web statiques. C'est pour des raisons de sécurité, mais la plupart d'entre nous auront besoin certains des composants supplémentaires pour nos propres besoins de l'application.

Lorsque vous utilisez l'interface utilisateur graphique pour l'installation, les composants sont répertoriés et vous pouvez simplement vérifier la boîte. Avec Windows PowerShell, vous devez indiquer les ordinateurs distants plus précisément quels composants vous souhaitez. Si vous êtes assis à n'importe quel ordinateur Windows Server 2008 R2 ou de Windows Server 8, par exemple, vous pouvez utiliser le Get-WindowsFeature pour lister tous les composants disponibles pour IIS (Notez que vous devez importer le module ServerManager première) :

PS> Get-WindowFeature *web*

Une fois que vous connaissez les noms des composants, vous pouvez utiliser l'Add-WindowsFeature pour les installer. Démarrer avec le serveur Web et puis ajoutez chaque composant, séparé par une virgule :

PS> Add-WindowsFeature Web-Server, ASP

Vous pouvez installer tous les composants IIS sans taper une longue chaîne d'eux. N'oubliez pas que l'installation de tout ce qui n'est pas une bonne idée pour des raisons de sécurité, mais l'applet de commande Add-WindowsFeature a un paramètre qui permettra :

PS> Add-WindowsFeature Web-Server -IncludeAllSubFeature

Maintenant de retour à notre déploiement IIS distant. Nous voulons que l'installation par défaut et les autres composants pour ASP et ASP.NET. Encore une fois, nous allons utiliser la cmdlet Invoke-Command. Une fois que nous avons exécuté cette commande, tous les serveurs seront installer IIS :

PS> Invoke-command -Session $session {Add-WindowsFeature web-server,web-asp,web-asp-net}

4.   Pour des fins de test, nous allons déployer un ensemble de pages Web pour les nouveaux serveurs Web. Nous allons utiliser un default.htm et un fichier testpage.asp. Mappage des lecteurs pour les serveurs et copié les fichiers sur le site Web par défaut pourraient prendre un certain temps. Au lieu de cela, nous allons utiliser Windows PowerShell et la liste des serveurs de faire la copie.

Dans cet exemple, les fichiers Web sont trouvent dans c:\files. Copier avec la cmdlet Copy-Item pour une destination qui est un chemin d'accès UNC. L'UNC doit le nom du serveur. Nous avons transmis la liste des serveurs (serveurs$) à la cmdlet Foreach-Object. Foreach va itérer sur chaque nom de serveur en serveur $. Pour résoudre le chemin d'accès UNC pour que nous n'ayez à taper dans les noms de serveur, utilisez la variable spéciale de Windows PowerShell «$ _ ». Cette variable contient le nom de serveur actuel du serveur $:

PS> $servers | foreach{copy-item -Path c:\files\*.* -Destination "\\$_\c$\inetpub\wwwroot"}

Nous avons déployé juste IIS et un site de Web par défaut à un tas de serveurs en environ quatre minutes. Pour tester les sites Web, lancer Internet Explorer en utilisant la technique décrite précédemment. Cette commande va lancer un nouveau navigateur pour chaque serveur et afficher la page de test :

PS> $servers | foreach{Start-Process iexplore "http://$_/testpage.asp"}

Pour fermer tous les navigateurs, revenir à Windows PowerShell et essayez ce qui suit :

PS> Stop-Process –Name iexplore

Supprimer des serveurs Web

Si vous songiez à des déploiements de reprise après sinistre, ou juste tester cette technique, vous pourriez vouloir supprimer tout ce qui nous a ajouté et recommencer à partir d'un environnement propre. Voici comment supprimer les fichiers du site Web et le serveur Web et d'effectuer un redémarrage de l'ordinateur :

PS> $servers | foreach{remove-item -Path "\\$_\c$\inetpub\wwwroot\*.*"} PS> Invoke-command -Session $session {Remove-WindowsFeature web-server,web-asp,web-asp-net} PS> Restart-Computer –Computername $servers -Force

La Solution de script

La meilleure partie de Windows PowerShell est qu'une fois que vous avez fait quelque chose de la console, vous pouvez copier dans un fichier texte et rendre un script. Pas de chichi, pas de programmation — just pure automatisation. Si vous voulez être capable d'exécuter ce déploiement à un moment de reprise après sinistre et les tests supplémentaires, copiez les commandes détaillées ici dans un fichier texte nommé IISDeploy.ps1. Vous pouvez simplement exécuter ce script lorsque vous avez besoin déployer.

Ce type de technique ouvre la porte à une nouvelle série de possibilités. Vous pouvez automatiser le déploiement de plusieurs sites Web dans une batterie de serveurs Web, générer le test à la ferme de charge ou même utiliser ces techniques pour d'autres rôles et fonctionnalités de Windows.

Vérifiez dans le module WebAdministration sur IIS qui a des applets de commande pour créer et configurer des sites Web, des pools d'application et plus encore. Si vous avez besoin automatiser la chose, Windows PowerShell rendra votre tâche beaucoup plus facile et plus rapide.

Jason Helmick  a plus de 20 ans en elle comme un auteur, formateur et consultant d'entreprise. Le directeur des technologies de Windows PowerShell à l'Interface de formation technique, il se concentre sur automation avec IIS et Active Directory. Vous pouvez voir plus sur IIS, dans son livre à venir de Manning Publications, « Apprendre Windows IIS dans un mois de dîners. » Joindre à la JasonHelmick@gmail.com.

Contenu associé