Início > IIS, Power Shell, Windows Server 2012 R2 > Otimizando tarefas com PowerShell–Implementando e administrando Internet Information Services–IIS

Otimizando tarefas com PowerShell–Implementando e administrando Internet Information Services–IIS

Saudações,

Hoje vamos entrar no quarto post da série “Otimizando Tarefas com PowerShell”. Pra quem está chegando agora e não conhecia o blog Microsoft Space, estou trabalhando em uma série de artigos relacionados a PowerShell, conforme abaixo:

1. Otimizando tarefas com PowerShell – Administrando Active Directory Users and Computers

2. Otimizando tarefas com PowerShell – Implementação e administração Web Application Proxy

3. Otimizando tarefas com PowerShell – Implementando e administrando AD Federation Services

Vamos continuar usando o ambiente fictício criado nos posts anteriores.

Imagine que você precisa instalar o IIS em uma farm de servidores que vão estar balanceando a carga. Vc teria habilitar a feature em um por um, mesmo usando o Server Manager de um único servidor para isso. Vamos mostrar a seguir como fazer de forma otimizada e mais rápidamente. Ou então você vai analisar um ambiente em que o IIS esteja em um Server Core ou até mesmo Nano Server.

Algo importante que esqueci de mencionar no segundo e terceiro artigos da série é que os comandos de instalação de roles e features estão armazenados no módulo ServerManager do PowerShell, portanto, se ao tentarem fazer o teste com os comandos citados nos artigos anteriores vocês receberem alguma mensagem de erro, façam o carregamento do módulo conforme abaixo:

Import-Module ServerManager

1. Instalando o IIS:

Como vocês já devem saber, o IIS pode ser instalado em sua totalidade, ou seja, com todas as features ou somente aquelas que você precisar para o proposito da sua infra.

Com o comando abaixo você instala o IIS com todas as features do role:

add-windowsfeature web-server –includeallsubfeature

Recomendo fortemente aquilo que sempre falo em post´s neste blog e em outros espaços, além das palestras e webcasts que entreguei; faça um planejamento prévio, converse com sua área de desenvolvimento para entender o que você vai precisar do seu IIS, qual o tipo de aplicação que irá hospedar e as features exatas que você vai precisar.

Para sabermos quais as features do IIS disponíveis, podemos usar o comando get-windowsfeature parametrizando pelas funções do IIS:

get-windowsfeature | Where-Object {$_.Name –like “Web*”}

image

Na coluna “Name” da figura acima, você tem a listagem de todas as features do IIS. Tomando como exemplo a sessão “Application Development”, eu posso instalar todos os itens da mesma, declarando todos os parâmetros, ou posso escolher uma ou mais funcionalidades tais como ASP, ASP.NET 3.5, etc, usando os parâmetros separadamente. Lembrando que as funcionalidades vitais de cada feature são instaladas automaticamente, mesmo que eu não as declare na minha linha de comando (exemplo – se eu declarar somente a feature Web-Security, a funcionalidade Web-Filtering será habilitada automaticamente).

Em nosso laboratório vamos instalar o IIS pensando em autenticação básica, autenticação integrada, protocolos http e https. Além desses, vamos usar o serviço de armazenamento de certificados digitais, o CCS (Centralized Certificate Store – sobre o qual escrevi um post detalhado com um passo a passo bem completo). Veja abaixo como fica o comando para instalação:

add-windowsfeature web-server, web-webserver, web-default-doc, web-http-errors, web-static-content, web-http-redirect, web-health, web-security, web-basic-auth, web-certprovider, web-cert-auth, web-ip-security, web-windows-auth, web-app-dev

A imagem abaixo mostra o progresso da instalação:

image

Veja agora através do comando get-feature, as funcionalidades do IIS que foram instaladas com o comando usado acima:

image

OBS: Não instalei aqui a console de gerenciamento do IIS que você encontra em Start/Administrative Tools. Vamos focar na implementação e administração do IIS somente via powershell. Se você prefere gerenciar a partir da console, basta adicionar o parâmetro –IncludeManagementTools no fim do comando, ou na figura acima, você tem a sessão Management Tools com o parâmetro Web-Mgmt-Tools.

Agora que temos o IIS instalado, vamos aos métodos para administra-lo através do Powershell.

2. Criando um web-site

Vamos criar um site com os dados abaixo:

Nome – PortalUilson.net

Biding – https://www.uilson.net

Path – c:\webapp

Autenticação – Windows Integrated

Documento Default – iisstart.htm

Vai pegar o certificado através do Centralized Certificate Store.

1. Criando WebSite:

É importante que você já carregue o módulo do IIS com o comando: import-module WebAdministration

No prompt de comando, você já poderá ver como está configurado o Default Web Site conforme figura abaixo:

image

Com o comando “dir iis:” você visualiza três “pastas” do IIS disponíveis: 1. AppPools (Os application pools criados), 2. Sites (Seus WebSites, applications e virtual directories), 3. SSLBindings (Todos os bindings criados com certificado digital – porta 443).

Para listar os sites criados use o comando dir iis:\Sites para ter o resultado abaixo:

image

Acima você que o Default Web Site tem o ID 1 (importante na hora de determinar e configurar a parte de log do IIS), está em status “Started”, mostra o Physical Path e a parte do Binding rodando em http na porta padrão (80).

Para simplificar, você pode entrar no IIS pelo PowerShell digitando “IIS:” e teclando ENTER:

image

Viram como facilita?

Agora vamos criar nosso novo Web Site conforme descrevi:

Vamos criar a pasta onde vai ficar a aplicação web:

new-item c:\webapp –type directory

Com esse comando criamos a pasta webapp. Copiei os arquivos do site inicial do IIS para podermos efetuar o teste de acesso a página.

Comando para criar o site:

iis:

New-Item Sites\PortalUilson.net –bindings @{protocol=”http”;BindingInformation=”:80:www.uilson.net”} –physicalPath c:\webapp

image

O ID ficou meio estranho pra visualisar mas, é 1949349561. É com esse ID que ele vai criar a pasta de log da aplicação.

Na imagem acima você pode ver que eu já criei o site com o acesso a porta 80 no host header http://www.uilson.net . Eu poderia ter usado o comando acima sem o host header e poderia deixar um binding para porta 80 do localhost e poderia criar outro binding na mesma porta definindo a URL com o comando abaixo:

New-WebBinding -Name PortalUilson.net -IPAddress "*" -Port 80 -HostHeader www.uilson.net

Veja também que nosso site está em estado “Started”, ou seja, está escutando requisições na porta 80 a partir da URL que definimos. Caso houvesse algum conflito de porta, ele estaria em status “Stoped”, ou caso fosse necessário poderiamos para-lo com o comando abaixo:

Stop-WebSite PortalUilson.net

Para colocar o site no ar novamente, basta executar o comando abaixo:

Start-WebSite PortalUilson.net 

image

Agora que já temos nosso ambiente pronto, vamos começar a ver outros detalhes tais como log e documento default.

Em nosso laboratório criei um site simples sem nenhum application ou virtual directory. Nesse caso temos que definir o documento default que irá iniciar a pagina default do site. Caso contrário teremos erro no acesso.

Vamos verificar quais são os documentos que constam da lista de Default Document e qual documento está no topo da mesma. Para isso você vai usar o comando abaixo:

Get-WebConfigurationProperty -Filter //defaultDocument/files/add -PSPath ‘IIS:\Sites\PortalUilson.net’ -Name value | select value

image

Veja que no nosso site (PortalUilson.net) já temos Default.htm, Default.asp, index.htm, index.html e issstart.htm. Precisamos configurar o iisstart.htm no topo da lista, pois ele é o arquivo a ser chamado pela URL definida anteriormente.

Durante o período de estudos para confecção deste post, não encontrei uma linha de comando que fizesse a alteação da ordem dos arquivos, colocando ele no topo. Caso tentasse adiciona-lo como parâmetro para coloca-lo no topo, recebia uma msg de erro. Resolvi esse problema removendo o iisstart.htm da lista com o comando abaixo:

Remove-WebConfigurationProperty //defaultdocument/files "IIS:\sites\PortalUilson.net" -name collection -AtElement @{value="iisstart.htm"}

Depois verifiquei com o Get-WebConfigurationProperty para me certificar de que ele não constava mais na lista:

image

Agora vamos configurar o iisstart.htm como defult document do nosso site. Abaixo vou executar um comando que irá coloca-lo no topo da lista de arquivos do default document:

Add-WebConfiguration //defaultDocument/files "IIS:\sites\PortalUilson.net" -atIndex 0 -Value @{value="iisstart.htm"}

image

Você pode ver na imagem acima que o arquivo iisstart.htm aparece no fim do documento, entretanto, o parâmetro “atIndex 0” do comando aplicado acima o coloca no topo da ordem do default document.

3. Application Pool e métodos de autenticação

Já temos nosso site criado e configurado. Agora vamos verificar a parte do application pool dele:

Abaixo mostro como visualisar os application pools criados no IIS

image

Na imagem acima vemos que o Default Web Site já tem seu Application Pool definido, porém, o site do nosso laboratório ainda não.

Abaixo o comando para criação de um application pool:

image

OBS: O comando New-Item criou uma nova application pool no IIS. Como você pode ver na figura acima, estamos posicionados na pasta de Application Pools do IIS. Poderiamos executar esse comando mesmo em outra pasta ou na raiz do IIS da seguinte forma:  New-Item IIS:\AppPools\PortalUilson.AppPool

Agora vamos associar nosso Applicaton Pool com o site PortalUilson.net com o comando: Set-ItemProperty ‘IIS:\Sites\PortalUilson.net’ -Name applicationPool -Value PortalUilson.AppPool

Com a execução do comando acima, você verá agora que o site criado em nosso laboratório agora tem um application pool para ele:

image

Vamos definir uma conta para gerenciar essa application pool:

Set-ItemProperty iis:\AppPools\PortalUilson.AppPool -name processModel -value @{userName="appuser";password="WebAppPool@2016";identitytype=3}

No comando acima defini uma conta local (username = appuser e senha = AppPool@2016) classificando com IdentityType 3 – o Identity type se refere ao tipo de conta que você vai usar em sua Application Pool. O número do identity mudaria caso você fosse usar outro tipo de autenticação, exemplo: Network Service.

No link abaixo, você tem uma explanação detalhada da parte de Itentity Type:

http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

Agora vamos ver as propriedades de nosso application pool com o comando get-item PortalUilson.AppPool | Select-Object *

image

Para ver os dados de usuário usamos o comando Get-ItemProperty PortalUilson.AppPool -name "processmodel.username"

image

Veja na figura acima que a penultima linha (Value) traz o nome da conta que configuramos nos passos acima.

Podemos ver também que nosso Application Pool está configurado para usar a versão 4.0 do .NET Framework:

image

Caso sua aplicação peça outra versão, você deverá tê-la instalada no servidor. A instalação de outras versões do .NET pode ser feita nas features do IIS conforme descrito no começo deste post.

Se você tiver um Application Pool rodando o .NET Framework na versão 2.0 e quiser mudar para a 4.0, use o comando abaixo:

Set-ItemProperty PortalUilson.AppPool managedRuntimeVersion v4.0

Com o conceito de Web Application Pool definido, vamos agora vamos falar sobre autenticação.

Lembre-se do começo deste post em que instalamos o IIS com diversos métodos de autenticação (basic, integrada, etc). Quero que o site site tenha autenticação integrada, entretanto, o IIS vem com autenticação anônima (por default) habilitada.

Nos comandos abaixo vamos desabilitar a autenticação anônima e habilitar autenticação integrada (lembrando que, para este fim a aplicação já deve estar preparada para tal):

Desabilitando Anonymous: Set-WebConfiguration system.webserver/security/authentication/anonymousAuthentication -PSPath IIS:\sites\PortalUilson.net -Value @{enabled="False"}

Habilitando Windows Integrated: Set-WebConfiguration system.webserver/security/authentication/WindowsAuthentication -PSPath IIS:\sites\PortalUilson.net -Value @{enabled="True"}

4. Logging e Backup

Depois de instalar e configurar o IIS, criar e configurar o novo site, iremos agora definir onde gravar os log´s do mesmo. Por default o IIS coloca os log´s de acesso na pasta padrão da role: c:\inetpub\logs\LogFiles\WebisteID#:

image

No nosso caso vamos configurar o log para que seja gravado numa pasta diferente. Vou configurar para gravar em C:\weblogs\PortalUilson.net. Para tanto vamos usar os comandos abaixo:

Alteração do log para a pasta citada acima:

Set-ItemProperty IIS:\sites\PortalUilson.net -name logFile -value @{format=’W3C’;directory=’C:\weblogs\PortalUilson.net’}

Listando as propriedades de logging do nosso siteget-ItemProperty IIS:\sites\PortalUilson.net -name logFile:

image

No link a seguir, você encontra diversas formas de interagir com logging do IIS via PowerShell, inclusive alterando os campos do arquivo:

https://gallery.technet.microsoft.com/office/Set-IIS-Log-Fields-via-ee9c19b3

Com tudo pronto no nosso laboratório, vamos demonstrar agora como fazer o backup das configurações do IIS. A melhor forme de garantir seu ambiente é um backup do servidor usando a ferramenta da sua empresa, mas, para situações em que você precisa de um restore rápido é interessante ter um backup das configurações do IIS feito no próprio web server.

Para efetuar um backup rápido de suas configurações do IIS use o comando abaixo:

Backup-WebConfiguration –Name IISLab

image

Nesse comando eu fiz um backup das configurações do meu servidor IIS com o nome de “IISLab”.

Para verificar um ou mais backup´s feitos em seu ambiente use o comando Get-WebConfigurationBackup:

image

Como você pode ver na figura acima, posicionei na pasta c:\windows\system32\inetsrv\backup, onde o IIS grava os arquivos de backup gerados pelo comando que usamos a pouco:

image

5. SSL Settings – Agora é a sua vez de por a mão na massa!

Agora é com você!

Se leu todo post com atenção, testou em seu ambiente pessoal e ficou entusiasmado com a possibilidade de administrar seu IIS sem a Console de Gerenciamento, leia o conteúdo dos links abaixo e configure a parte SSL do IIS 8.5. Não foge dos conceitos que coloquei aqui e tudo pode ser encontrado no site iis.net da Microsoft.

Criando SSL Bindings no IIS – http://www.iis.net/learn/manage/powershell/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in

Na instalação do IIS você viu que coloquei também o recurso do CCS – Centralized Certificate Store. No começo deste post eu deixei um link com um artigo que escrevi sobre esse tema mostrando todo conceito e todos os passos (um lab completo) para habilitar o CCS. Para fazer o mesmo procedimento via PowerShell, clique no link abaixo:

https://technet.microsoft.com/en-us/magazine/jj937171.aspx

Além de ensinar a configurar o CCS, o link acima traz um exemplo de como instalar o IIS com as mesmas configurações em vários servidores, caso sua aplicação esteja definida para rodar numa farm.

E assim concluímos mais um post da série “Otimizando tarefas com PowerShell”. Cobrimos todos os passos para a instalação e administração do IIS 8.5 do Windows Server 2012 R2 via cmdlet.

Espero que o conteúdo tenha sido útil e caso tenha dúvidas ou críticas, por favor, deixe seu comentário ou me deixe uma msg em minha pag pessoal em http://facebook.com/usouzajr

Abraços

Uilson

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: