Acompáñanos en este breve artículo donde repasaremos algunos comandos de PowerShell para desplegar y gestionar un IIS Server.
Disponer de un servidor Web donde poder publicar contenidos es una de las necesidades básicas que tendrá casi cualquier empresa, sean estos servidores para tareas de marketing, servidores dedicados a venta online, o servidores internos para documentación o cualquier otro tipo de servicio imaginable.
Hace algún tiempo publicamos un artículo en el que comentábamos qué es y para qué sirve un IIS web server y también publicamos dos tutoriales en los que comentábamos por un lado, cómo instalar un IIS web server, por otro cómo instalar IIS en Windows 10 y por último tenemos el tutorial cómo instalar y configurar un servidor FTP en Windows (IIS) y creemos que este artículo en el que hablamos de cómo hacer la gestión con PowerShell puede ser interesante para “cerrar el ciclo”.
A lo largo de este artículo hablaremos de cómo realizar la instalación básica de uno de estos servidores, así como desplegar un sitio web o pequeñas tareas administrativas.
Instalación del servidor Web:
A pesar de ser un artículo y por tanto no soler incluir los pre-requisitos vamos a saltarnos esta norma no escrita y decir que para poder instalar un IIS Web Server con PowerShell se necesitará estar dado de alta en la Plataforma Jotelulu con una organización y estar registrado en la misma tras hacer Log-in, y por otro lado, haber dado de alta una suscripción de Servidores, siempre que se vaya a desplegar sobre nuestra infraestructura, claro está.
A continuación, diremos que debemos tener permisos administrativos de la máquina local sobre la que vamos a actuar, ya que vamos a desplegar servicios, configurarlos y gestionarlos.
Lo primero que haremos para instalar el servidor IIS es consultar al sistema si tiene instalado algo de este servicio. Para comprobar si tiene instalado algún componente de IIS lanzaremos el siguiente comando:
# Get-WindowsFeature -Name *IIS*
Que básicamente lista todas las funcionalidades de Windows que incluyan “IIS” en su nombre, ya que los “*” indican 0 o más caracteres por ambos lados. En este caso, tal como se ve en la captura, se muestran dos elementos:
- IIS Server Extension.
- WinRM IIS Extension.
Y ambos tienen delante los siguientes caracteres “[ ]” que indican que no están instalados, ya que si lo estuvieran, figurarían como “[*]”. Para lanzar la instalación usaremos el comando “Install-WindowsFeature” con la siguiente composición:
# Install-WindowsFeature -name Web-Server -IncludeManagementTools
Donde “IncludeManagementTools” indica al sistema que instale también las herramientas administrativas relacionadas con esta funcionalidad.
Tras la instalación, se podrá ver que el rol se ha instalado, tanto lanzando el comando de comprobación de funcionalidades instaladas como mediante el Administrador del servidor o Server Manager.
# Get-WindowsFeature -Name *IIS*
Otra forma de validar que se ha instalado correctamente es abrir un navegador web y conectar contra localhost, para ello escribiremos 127.0.0.1 en la barra de direcciones y pulsaremos la tecla <Enter> teniendo que ver una ventana como la que se muestra en la siguiente imagen.
Comprobar comandos PowerShell disponibles tras instalar IIS:
Una cosa interesante que debemos saber y que debemos hacer siempre que instalemos un nuevo servicio, un nuevo módulo, etc. es comprobar que comandos asociados a este nuevo servicio tenemos. Para ello, basta con ejecutar el comando:
# Get-Command -Module ‘IIS Administration’
Donde en realidad, podremos cambiar “IIS Administration” por el módulo que nos interese. Esto hará que se muestre una lista de comandos “cmdlet” que serán aquellos que podremos usar para la gestión, y sobre los que podremos buscar información en el propio sistema o en la KB de Microsoft.
Configuración de un nuevo sitio de un nuevo sitio de IIS mediante comandos PowerShell:
Otro punto que podemos necesitar es desplegar, poblar y administrar un nuevo sitio web. Para ello se deberán usar nuevamente comandos de PowerShell, empezando por viejos conocidos como “New-Item”. Para comenzar, debemos crear un directorio que contendrá los ficheros del nuevo sitio web. Para ello lanzaremos el comando siguiente:
# New-Item -ItemType Directory -Name ‘<Directorio>’ -Path ‘<Ruta_Directorio>’
Donde:
- New-Item: Indica que se va a crear un nuevo elemento.
- ItemType -Directory: Indica que se va a crear un elemento de tipo directorio.
- Name ‘<Directorio>’: Se usa para pasar el nombre del directorio, donde se debe además sustituir ‘<Directorio>’ por el nombre del directorio.
- Path ‘<Ruta_Directorio>’: Se usa para pasar la ruta completa hasta el directorio, donde se debe además sustituir ‘<Ruta_Directorio>’ por la ruta absoluta al directorio.
Un ejemplo podría ser:
# New-Item -ItemType Directory -Name ‘PruebaNacho’ -Path ‘C:\inetpub\wwwroot\PruebaNacho’
Tras esto, se debe crear también el fichero que contendrá el código HTML que mostrará la página web. Para ello se debe lanzar el comando:
# New-Item -ItemType File -Name ‘index.html’ -Path ‘C:\inetpub\wwwroot\PruebaNacho\’
Teniendo múltiples sitios en un mismo servidor web, puede ser necesario que gestionemos los “bindings” o enlaces usados. Pidiéndole a cada sitio que trabaje a través de un puerto en concreto. Para hacer esto se debe usar el siguiente comando:
# New-IISSite -Name ‘<Sitio>’ -PhysicalPath ‘<Ruta del sitio>’ -BindingInformation «*:<Puertos usados>:»
Donde:
- New-IISSite: Se usa para configurar el nuevo sitio.
- Name ‘<Sitio>’: Para pasar como parámetro el nombre del sitio con el que vamos a trabajar, cambiando ‘<Sitio>’ por el nombre del sitio.
- PhysicalPath ‘<Ruta del sitio>’: Para pasar como parámetro la ruta del sitio con el que vamos a trabajar, cambiando ‘< Ruta del Sitio>’ por la ruta del sitio.
- BindingInformation «*:<Puertos usados>:»: Se usa para pasar el puerto por el que atenderá las peticiones. En este caso «*:<Puertos usados>:» debe ser sustituido por el puerto en concreto, si por ejemplo se usa el 8080, se deberá escribir «*:8080:».
Un ejemplo de esto puede ser el siguiente, que también se puede ver en la imagen:
# New-IISSite -Name ‘PruebaNacho’ -PhysicalPath ‘C:\inetpub\wwwroot\PruebaNacho\’ -BindingInformation «*:8080:»
Con esto ya tendremos creado y configurado el nuevo sitio.
Además, deberemos editar el fichero “index.html” y rellenar, por ejemplo, con el siguiente 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>
Salvándolo a continuación para que el cambio se consolide.
En este momento, ya tendremos un sitio con una página web (muy simple) operativo, que podremos mejorar añadiendo distintos elementos de HTML, CSS, etc.
Arranque y parada de un sitio de IIS mediante PowerShell:
También deberemos repasar es el arranque y parada del un sitio de IIS mediante PowerShell, que podremos hacer en base a los cmdlets “Stop-IISSite” como “Start-IISSite” y de “Get-IISSite” que nos permite saber el estado de un sitio. Si por ejemplo usamos el comando “Stop-IISSite”, nos preguntará por el sitio a detener y si estamos seguros. Si por el contrario usamos el comando “Stop-IISSite -Name «PruebaNacho»” en el cual ya consta el sitio a detener, no pedirá más que la autorización.
Lo mismo pasará con el arranque, que podremos usar “Start-IISSite” y pedirá sitio de destino y podemos usar “Start-IISSite -Name «PruebaNacho»” que solo pedirá la confirmación.
Cuando se quiera saber el estado de los sitios disponibles se podrá usar el comando “Get-IISSite”, si se quiere solo el estado de un sitio se podrá usar el comando “Get-IISSite -Name ‘<Nombre Sitio>’” ‘<Nombre Sitio>’ debe ser cambiado por el nombre del sitio, por ejemplo ‘PruebaNacho’.
También podemos pedir una sola propiedad, por ejemplo saber por que puerto atiende un sitio las peticiones, en cuyo caso lanzaremos el siguiente comando:
(Get-IISSite -Name ‘PruebaNacho’).Bindings
Eliminación de un sitio de IIS mediante PowerShell:
El último punto queremos revisar la opción de eliminar un sitio de IIS, que podremos hacerlo a través de “Remove-IISSite”, pasándole como parámetro el nombre del sitio. En este caso, tenemos dos opciones:
Por un lado, tenemos la opción de hacer la eliminación directamente, y para ello ejecutar el comando:
# Remove-IISSite -Name ‘PruebaNacho’
Y por otro lado, tenemos la opción de hacer la eliminación directamente, y para ello ejecutar el comando, que hará una simulación y nos dirá si esto puede producir algún problema asociado:
# Remove-IISSite -Name ‘PruebaNacho’ -WhatIf
Y con esto tenemos más o menos cubiertas las operaciones básicas sobre IIS, aunque es posible que lo revisemos y ampliemos en el futuro.
Conclusiones:
A lo largo de este artículo, hemos visto comandos de Powershell para desplegar y gestionar un IIS Server sobre Windows Server 2022, aunque es válido para otras versiones como Windows Server 2019 o Windows Server 2016. En el artículo vemos tanto como instalar IIS como desplegar un nuevo sitio web, configurarlo, reiniciar el servicio de ese sitio o eliminarlo mediante comandos de PowerShell.
También puedes obtener algo más de información sobre el producto en la página web del proyecto LEARN donde se habla de IIS.
Si tienes cualquier problema puedes ponerte en contacto con nosotros para que ayudemos en la medida de lo posible.
¡Gracias por leernos!