Herramienta appcmd para configurar nuestro IIS de las máquinas de Windows Azure

Desde que tenemos acceso total al servidor IIS instalado en nuestras instancias de Windows Azure podemos personalizar el mismo para poder ajustarlo a nuestras necesidades. Lo que si que es cierto es que, desde hace algunos años, estamos tan acostumbrado a trabajar desde la interfaz que nos proporciona Microsoft para manejar nuestros roles de Windows Server que muchas veces hacemos caso omiso de las herramientas igualmente útiles de las que disponemos desde la línea de comandos.
Para poder llevar a cabo las modificaciones pertinentes, es necesario el uso de  startups, por lo que nos “obliga” a conocer estas herramientas.

En este post en concreto voy a mostrar cómo podemos lanzar una configuración específica para modificar el valor por defecto de una de las secciones IIS. Obviamente no podré mostrar todas :) pero, al final, con un ejemplo prácticamente es similar para el resto de ellos.

Nota: Para conocer el detalle sobre cómo hacer uso de los startups podéis ver un ejemplo en el siguiente post. En este solamente comentaré comandos relacionados con IIS que podemos usar dentro de los startups.

Localización del comando appcmd

En primer lugar, es importante saber que la herramienta appcmd no está incluida dentro de la variable path del sistema, por lo que tenemos la opción de añadir la ruta del comando dentro de dicha variable o bien, de una forma más rápida, utilizar el comando desde la ruta completa de su localización:

%systemroot%system32inetsrvappcmd

Una vez que tenemos localizada la ruta de la herramienta podemos invocar la misma utilizando el siguiente conjunto de comandos:

  • List: Nos mostraría todos los objetos disponibles dentro de la máquina.
  • Add: Se utilizaría para la creación de nuevos objetos.
  • Delete: Elimina el objeto especificado por el ID del mismo.
  • Set: Configura parámetros dentro del servidor IIS.

En realidad, no me quiero centrar en cada uno de ellos. Para conseguir más información al respecto podéis hacerlo a través del siguiente enlace. Por el momento, el top de estos comandos suele ser Set ya que nos permite modificar valores que ya existen dentro de IIS y que, por algún motivo, necesitamos modificar su valor por defecto.

Para verlo con un ejemplo, un caso muy común sería habilitar los Parent Paths cuando trabajamos con ASP clásico. Para ello podemos lanzar el siguiente startup junto con nuestra solución:


start /w pkgmgr /iu:IIS-ASP

%systemroot%system32inetsrvappcmd set config -section:asp -enableParentPaths:true

En este ejecutable lo único que hacemos es, en primer lugar habilitar ASP clásico en el servidor IIS de la máquina virtual, ya que por defecto no está habilitado, y en segundo lugar utilizando la herramienta appcmd modificamos la configuración de la sección ASP que acabamos de habilitar indicándole que el valor del parámetro enableParentPaths debe ser igual a true.

Lo único que debemos tener en cuenta es la estructura de la llamada, siguiendo siempre el mismo patrón:

appcmd.exe set config [ConfigurationPath] /section:name /parameter_name:value

Por último me gustaría dejar un par de enlaces que creo que pueden ser de utilidad al respecto para alguna de las secciones más utilizadas/personalizadas de nuestro IIS :)

Configuración de HTTP Logging, HTTP Redirection, HTTP response headers and HTTP Compression.

Espero que sea de utilidad :D

¡Saludos!