Junte-se a nós neste breve artigo, onde abordaremos alguns comandos do PowerShell para implementar e gerir um servidor IIS.
Ter um servidor Web onde poder pode publicar conteúdo é uma das necessidades básicas que quase qualquer empresa tem, quer sejam servidores para tarefas de marketing, servidores dedicados a vendas online ou servidores internos para documentação ou qualquer outro tipo de serviço imaginável.
Há algum tempo publicamos um artigo no qual discutimos o que é um servidor web IIS e para que serve, e também publicamos dois tutoriais nos quais abordamos:
Como instalar um servidor web IIS (em inglês)
Como instalar e configurar um servidor FTP no Windows (IIS) (em inglês)
Acreditamos que este artigo em que falamos sobre como fazer a gestão com o PowerShell pode ser interessante para “fechar o ciclo”.
Ao longo deste artigo falaremos sobre como realizar a instalação básica de um destes servidores, bem como implementar um site ou fazer pequenas tarefas administrativas.
Instalação do servidor Web:
Apesar de se tratar de um artigo que, geralmente não inclui pré-requisitos, vamos saltar esta regra não escrita e dizer que para instalar um IIS Web Server com o PowerShell é preciso estar registado na plataforma da Jotelulu dentro de uma organização e ter a sessão iniciada. Por outro lado, é preciso ter uma subscrição de Servidores, sempre que esta implementação seja na nossa infraestrutura, claro.
A seguir, devemos ter permissões administrativas na máquina local que vamos utilizar, pois vamos implementar, configurar e gerir serviços.
A primeira coisa que vamos fazer para instalar o servidor IIS é perguntar ao sistema se já existe algum componente deste serviço instalado. Para verificar isto, executamos o seguinte comando:
# Get-WindowsFeature -Name *IIS*
Basicamente, estaremos a listar todos os recursos do Windows que incluem “IIS” no seu nome, já que o “*” indica 0 ou mais caracteres em ambos os lados. Neste caso, como se pode ver no screenshot, temos dois elementos:
- IIS Server Extension.
- WinRM IIS Extension.
E ambos possuem os seguintes caracteres “[ ]” antes do nome, o que indica que não estão instalados, pois se estivessem apareceriam como “[*]”. Para iniciar a instalação, usaremos o comando “Install-WindowsFeature” com a seguinte organização:
# Install-WindowsFeature -name Web-Server -IncludeManagementTools
Onde “IncludeManagementTools” instrui o sistema para instalar também as ferramentas administrativas relacionadas com essa funcionalidade.
Após a instalação, será possível verificar se a função foi instalada, tanto executando o comando para verificar as funcionalidades instaladas como através do Server Manager.
# Get-WindowsFeature -Name *IIS*
Outra forma de verificar se foi instalado corretamente é abrir um browser e conectar-se ao localhost. Para isso, escreveremos 127.0.0.1 na barra de endereço e pressionaremos a tecla <Enter>, o que deverá fazer surgir uma janela como a mostrada na imagem a seguir.
Verificar os comandos do PowerShell disponíveis após a instalação do IIS:
Uma coisa interessante que devemos saber e que devemos fazer sempre que instalamos um novo serviço, um novo módulo, etc. é verificar que comandos existem associados a este novo serviço. Para fazer isso, basta executar o comando:
# Get-Command -Module ‘IIS Administration’
Na realidade podemos trocar “IIS Administration” pelo módulo que nos interessa. Isso fará com que seja exibida uma lista de comandos “cmdlet”, que serão aqueles que podemos usar para administrar e sobre os quais podemos pesquisar informações no próprio sistema ou na KB da Microsoft.
Configuração de um novo site no IIS com comandos do PowerShell:
Outra tarefa que podemos precisar de realizar é implementar, preencher e gerir um novo site. Para isso, podemos usar também os comandos do PowerShell, começando por um velho conhecido: “New-Item”. Para começar, devemos criar um diretório que irá conter os ficheiros do novo site. Para isso, executaremos o seguinte comando:
# New-Item -ItemType Directory -Name ‘<Diretório>’ -Path ‘<Caminho_Diretório>’
Onde:
- New-Item: Indica que será criado um novo item.
- ItemType -Directory: Indica que se vai criar um elemento do tipo diretório.
- Name ‘<Diretório>’: É usado para indicar o nome do diretório, onde devemos substituir ‘<Directory>’ pelo nome do diretório.
- Path ‘<Caminho_Diretório>’: É usado para indicar o caminho completo para o diretório, onde ‘<Directory_Path>’ também deve ser substituído pelo caminho absoluto para o diretório.
Um exemplo seria:
# New-Item -ItemType Directory -Name ‘PruebaNacho’ -Path ‘C:\inetpub\wwwroot\PruebaNacho’
Depois disto, também devemos criar o ficheiro que irá conter o código HTML que será exibido no site. Para isso, devemos executar o comando:
# New-Item -ItemType File -Name ‘index.html’ -Path ‘C:\inetpub\wwwroot\PruebaNacho\’
Tendo vários sites no mesmo servidor web, pode ser necessário gerir os “bindings” ou links usados. Temos de pedir também que cada site funcione através de uma porta específica. Para isso, devemos usar o seguinte comando:
# New-IISSite -Name ‘<Site>’ -PhysicalPath ‘<Caminho do site>’ -BindingInformation “*:<Portas usadas>:”
Onde:
- New-IISSite: Usado para configurar o novo site.
- Name ‘<Site>’: Indica o nome do site com o qual vamos trabalhar, trocando ‘<Site>’ pelo nome do site.
- PhysicalPath ‘<Caminho do site>’: Indica o caminho do site com o qual vamos trabalhar, trocando ‘<Caminho do site>’ pelo caminho do site.
- BindingInformation “*:<Portas usadas>:”: É utilizado para indicar a porta pela qual serão resolvidos os pedidos. Neste caso “*:<Portas usadas>:” Deve ser substituído pela porta específica. Se usarmos a 8080, devemos escrever “*:8080:”.
Um exemplo disso pode ser o seguinte, que também pode ser visto na imagem:
# New-IISSite -Name ‘PruebaNacho’ -PhysicalPath ‘C:\inetpub\wwwroot\PruebaNacho\’ -BindingInformation “*:8080:”
O novo site já está criado e configurado!
Além disso, devemos editar o ficheiro “index.html” e preenchê-lo, por exemplo, com o seguinte código:
<!DOCTYPE html>
<html>
<head>
<title>Prueba de IIS creado con PowerShell</title>
</head>
<body>
<h1>Prueba de IIS creado con PowerShell</h1>
<p>Esto lo hacemos para las pruebas de <b>Jotelulu</b></p>
<p>Creando una webpage de IIS mediante <b>PowerShell</b></p>
</body>
</html>
Depois, guardamos as alterações para aplicá-las.
Neste momento, já teremos um site com uma página web (muito simples) operacional, que podemos melhorar adicionando diferentes elementos de HTML, CSS, etc.
Inicialização e paragem de um site no IIS com o PowerShell:
Também devemos rever a forma de arrancar e parar um site IIS com o PowerShell. Isso pode ser feito com base nos cmdlets “Stop-IISSite”, “Start-IISSite” e “Get-IISSite” que nos permitem saber o status de um site. Se, por exemplo, usarmos o comando “Stop-IISSite”, será pedida confirmação do site e da nossa intenção. Se, por outro lado, usarmos o comando “Stop-IISSite -Name “PruebaNacho””, no qual já aparece o site a ser parado, apenas será pedida a confirmação da intenção.
O mesmo acontecerá com o boot; podemos usar “Start-IISSite”, e ser-nos-á pedido o site de destino, ou podemos usar “Start-IISSite -Name “PruebaNacho””, que só vai exigir confirmação.
Quando quisermos saber o status dos sites disponíveis, podemos usar o comando “Get-IISSite”; se quisermos apenas o status de um site, podemos usar o comando “Get-IISSite -Name ‘<Site Name>’”, em que comando ‘< Site Name>’ deve ser alterado para o nome do site, por exemplo ‘PruebaNacho’.
Também podemos solicitar informação sobre uma única propriedade, como por exemplo, saber qual é a porta utilizada por um site para receber pedidos. Para isso, executamos o seguinte comando:
(Get-IISSite -Name ‘PruebaNacho’).Bindings
Eliminação de um site de IIS com o PowerShell:
Neste último ponto queremos ver a opção de eliminar um site do IIS, algo que pode ser feito através de “Remove-IISSite”, indicando o nome do site como parâmetro. Neste caso, temos duas opções:
Por um lado, podemos eliminar o site diretamente e, para isso, executamos o comando:
# Remove-IISSite -Name ‘PruebaNacho’
E por outro lado, temos a opção de fazer uma simulação para analisar potenciais problemas, e para isso, executamos o seguinte comando:
# Remove-IISSite -Name ‘PruebaNacho’ -WhatIf
Já cobrimos de forma geral as operações básicas do IIS, embora possamos rever este conteúdo e acrescentar informação no futuro.
Conclusões:
Ao longo deste artigo, vimos comandos do Powershell para implementar e gerir um servidor IIS no Windows Server 2022, embora isto seja também válido para outras versões, como Windows Server 2019 ou Windows Server 2016. Vimos ainda como instalar o IIS para criar um novo site, configurá-lo, reiniciar o serviço ou excluí-lo apenas com comandos do PowerShell.
Pode obter mais informações sobre o produto no site do projeto LEARN, especificamente aqui.
Se tiver algum problema, entre em contacto connosco e teremos todo o prazer em ajudar.
Obrigado por acompanhar-nos!