Condividi tramite


IIS: Server Web semplici e veloci

Grazie a Windows PowerShell l'installazione dei server Web è ancora più semplice e veloce.

Jason Helmick

Pensate a quante volte si installa IIS. Non molto? Davvero? Si consideri piattaforme come Exchange e SharePoint che hanno bisogno di IIS come software prerequisito, distribuzioni di Web farm, test di ambienti e ambienti di sviluppo. Si potrebbe dedicare più tempo l'installazione di IIS quanto si pensi.

A ciò si aggiunge la necessità di automazione di recupero di disastro. Si può portare il vostra Web farm torna online in pochi minuti? Installazione e configurazione di IIS con siti Web è un'operazione semplice. Se avete un sacco di server è un processo lungo e noioso.

Nessuno vuole trascorrere week-end configurano server. Si desidera gestire farm Web, siti Web e tutti che il Web "roba" lunedì al venerdì, 9-5. Si vuole cogliere ogni occasione per accelerare e automatizzare le attività nel vostro lavoro.

Questa guida dettagliata vi aiuterà a distribuire IIS e default siti Web per un gruppo di server, tutti in una volta, in circa quattro minuti. Non può farlo con lo strumento GUI Server Manager e gestione IIS GUI. In realtà, la GUI è parte del problema. Come si possono fare queste cose magiche? Windows PowerShell. Nota: Questo vale per IIS 7,5 e IIS 8).

Comunicazione remota di PowerShell

Prima che otteniamo cominciati, avete abilitato sul vostro server remoti in Windows PowerShell? Se così non fosse, dovrebbe. Ecco come questo piano è andare a lavorare. Prima di arrivare alla parte della distribuzione di facile e veloce, camminiamo attraverso come ottenere la comunicazione remota di Windows PowerShell abilitato nel caso in cui voi non l'avete fatto già.

Ci sono due metodi per farlo. Se avete intenzione di provare questo in un ambiente di test, il primo metodo può essere più veloce. Ci sono due funzionalità di Windows PowerShell, che è necessario attivare: Esecuzione di script e di comunicazione remota di Windows PowerShell. Il primo metodo richiede che si visita ogni server che si desidera gestire. È possibile utilizzare Remote Desktop Protocol (RDP) o sneaker-net ed eseguire due comandi.

1.   Aprire la console di Windows PowerShell con privilegi amministrativi e utilizzare il cmdlet Enable-PSRemoting per consentire la comunicazione remota di Windows PowerShell in ogni server:

PS> Enable-PSRemoting -Force

2.   Ti consigliamo di utilizzare alcuni dei moduli aggiuntivi di cmdlet memorizzati su questi server. Per utilizzare quelle successive, sarà necessario essere in grado di eseguire script — che, per impostazione predefinita, Windows PowerShell non consente. Quindi cerchiamo di cambiare la situazione:

PS> Set-ExecutionPolicy RemoteSigned –Force

A questo punto, è pronti per distribuire e gestire i server IIS. Se avete centinaia di server per gestire, si desidera emettere un criterio di gruppo per apportare queste modifiche. Corsa intorno a tutti quei server è un ridicolo spreco di tempo, quindi qui sono i passi per attivare la comunicazione remota di Windows PowerShell con un oggetto di politica di gruppo (GPO):

  1. Attivare "Consenti configurazione automatica dei listener" e impostare IPv4 e IPv6 a "*". Troverete la chiave presso: Calcolatore di Configurazione computer\Criteri\Modelli amministrativi\Componenti criterio Server remoto di Management\WinRM.
  2. Abilitare l'esecuzione degli script sotto "Girare su Script Execution" e impostare i criteri di "Consenti solo firmarono gli script" o "Consenti script locale e remoto script firmati". Troverete la chiave presso: Calcolatore di Configurazione computer\Criteri\Modelli amministrativi\Componenti criterio PowerShell.
  3. Impostare il servizio di gestione remota Windows (WinRM) per l'avvio automatico, in questa chiave: Configurazione di Windows\Impostazioni Settings\System servizi informatici.

Se si dispone di Windows Firewall in esecuzione su tali computer, sarà necessario una regola in ingresso perché gestione remota Windows è in ascolto sulla porta 5985. Troverete la chiave presso: Calcolatore configurazione Settings\Windows Firewall con protezione avanzata.

Distribuire tali server Web

Ora inizia il divertimento. Questo è abbastanza semplice, in quanto ci vogliono solo pochi one-liners Windows PowerShell per fare la magia accadere.

1.   Archiviare un elenco di tutti i nomi di server che stanno per essere parte della distribuzione a una variabile. Se si desidera e quindi utilizzare Windows PowerShell per leggere tale elenco, è possibile creare un elenco nel blocco note:

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

Questo è un po ' sciatto, soprattutto quando si tratta di un elenco di server di grandi dimensioni. È meglio fare Windows PowerShell fare tutto il lavoro. Lo sapevate che i cmdlet Active Directory si possono ottenere un elenco di nomi di computer? Per utilizzare i cmdlet di Active Directory, sarà necessario Remote Server Administration Tools (RSAT) per Active Directory installato. Se si conosce il segreto di comunicazione remota implicita di Windows PowerShell, è possibile utilizzare che senza installare localmente i cmdlet. Con il RSAT installato, il primo compito è quello di importare il modulo per i cmdlet di Active Directory:

PS> Import-Module ActiveDirectory

Una volta importato, è possibile utilizzare il cmdlet Get-ADComputer per afferrare i nomi dei computer della vostra scelta. In questo esempio, i computer a cui ci sarò distribuire IIS tutti iniziano con il nome di "Web". Filtrare il cmdlet Get-ADComputer per trovare solo in computer che iniziano con il nome di "Web" e reindirizzare a Select-Object per afferrare solo il nome del computer:

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

2.   Ora è il momento di utilizzare il potere della comunicazione remota di Windows PowerShell per rendere facile sollevamento di quello che normalmente sarebbe un lungo e noioso processo. Let's distribuire IIS. In primo luogo, costruiamo una sessione a tutti quei server che abbiamo raccolto:

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

3.   Il passaggio successivo consiste nell'importare il modulo di gestione Server nei computer remoti. Questo modulo ha i cmdlet che saranno installare e rimuovere i ruoli server e funzionalità. Stiamo utilizzando il cmdlet Invoke-Command con un parametro per la sessione che abbiamo creato in precedenza. La cosa interessante di questo è che tutti i server riceverà immediatamente eventuali istruzioni inviate all'interno del blocco di script {}:

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

Questo passo successivo non è richiesta nel processo. Questo solo controlla per vedere se IIS è già installato sul computer remoti. Il cmdlet Get-WindowsFeature fa un bel lavoro di questo:

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

Parliamo di l'installazione di IIS per un attimo prima che si tuffano nei comandi. IIS ha un'installazione predefinita che permette solo pagine Web statiche. Questo è grande per motivi di sicurezza, ma la maggior parte di noi avrà bisogno alcuni dei componenti aggiuntivi per le nostre esigenze di applicazione.

Quando utilizzi la GUI per l'installazione, i componenti sono elencati e si può semplicemente verificare la casella. Con Windows PowerShell, lei deve dire i computer remoti in modo specifico i componenti vorrebbe. Se sei seduto a qualsiasi computer Windows Server 2008 R2 o Windows Server 8, ad esempio, è possibile utilizzare Get-WindowsFeature per elencare tutti i componenti disponibili per IIS (si noti che è necessario importare il modulo ServerManager prima):

PS> Get-WindowFeature *web*

Quando si conoscono i nomi dei componenti, è possibile utilizzare l'Add-WindowsFeature per installarli. Inizia con il Web Server e quindi aggiungere ogni componente, separati da una virgola:

PS> Add-WindowsFeature Web-Server, ASP

È possibile installare tutti i componenti IIS senza digitare una lunga stringa di loro. Tenete a mente che l'installazione di tutto ciò che non è una buona idea per motivi di sicurezza, ma il cmdlet Add-WindowsFeature è un parametro che vi aiuterà a:

PS> Add-WindowsFeature Web-Server -IncludeAllSubFeature

Ora torniamo alla nostra distribuzione remota di IIS. Vogliamo che l'installazione predefinita e componenti aggiuntivi per ASP e ASP.NET. Ancora una volta, useremo il cmdlet Invoke-Command. Una volta che si esegue questo comando, tutti i server verranno installato IIS:

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

4.   Per scopi di test, abbiamo potrai distribuire un insieme di pagine Web al nuovo server Web. Useremo un default. htm e un file testpage.asp. Mapping di unità ai server e copiando i file per il sito Web predefinito potrebbe richiedere molto tempo. Invece, useremo Windows PowerShell e l'elenco dei server di fare la copia.

In questo esempio, i file Web si trovano in c:\files. Copiarli con il cmdlet Copy-Item per una destinazione che è un percorso UNC. L'UNC deve il nome del server. Abbiamo passato l'elenco dei server (server$) al cmdlet Foreach-Object. Foreach eseguirà un'iterazione attraverso ogni nome server in $Server. Per correggere il percorso UNC in modo che non dobbiamo digitare i nomi dei server, utilizzare la variabile di speciale "$ _" di Windows PowerShell. Questa variabile contiene il nome del server corrente da $Server:

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

Abbiamo distribuito solo IIS e un sito Web predefinito in un gruppo di server in circa quattro minuti. Per testare i siti Web, avviare Internet Explorer utilizzando la tecnica descritta in precedenza. Questo comando lancerà un nuovo browser per ogni server e visualizzare la pagina di prova:

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

Chiudere tutti i browser, tornare in Windows PowerShell e provare i seguenti:

PS> Stop-Process –Name iexplore

Rimuovere server Web

Se si stanno testando le distribuzioni per il disaster recovery, o solo test questa tecnica, si potrebbe voler rimuovere tutto ciò che abbiamo aggiunto e ripartire da un ambiente pulito. Ecco come rimuovere i file del sito Web e il server Web ed eseguire un riavvio del computer:

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 soluzione di script

La parte migliore di Windows PowerShell è che una volta che hai fatto qualcosa dalla console, potete copiarla in un file di testo e renderlo uno script. Nessuna confusione, nessuna programmazione — automazione solo pura. Se si desidera essere in grado di eseguire questa distribuzione a preavviso un momento di per il disaster recovery e ulteriori test, copiare i comandi dettagliati qui in un file di testo denominato IISDeploy.ps1. Si può eseguire questo script solo quando è necessario distribuire.

Questo tipo di tecnica si apre una nuova serie di possibilità. Potete automatizzare la distribuzione di più siti Web in una Web farm, generare sotto carico in azienda o addirittura utilizzare queste tecniche per altri ruoli e le funzionalità di Windows.

Check-nel modulo WebAdministration su IIS che ha i cmdlet per creare e configurare siti Web, piscine App e molto altro ancora. Se avete bisogno di qualcosa di automatizzare, Windows PowerShell renderà il lavoro molto più facile e più veloce.

Jason Helmick  ha più di 20 anni in esso, come autore, formatore e consulente aziendale. Come il direttore delle tecnologie di Windows PowerShell all'interfaccia di formazione tecnica, si concentra sull'automazione con Active Directory e IIS. Si può vedere di più su IIS nel suo prossimo libro da Manning Publications, "Learn Windows IIS in un mese di pranzi." Contattarlo presso la JasonHelmick@gmail.com.

Contenuto correlato