Cobertura especial: Windows Server 2008

Introducción a IIS 7.0

Isaac Roybal

 

Resumen:

  • Cambios de arquitectura de IIS 7.0
  • Administración de IIS 7.0
  • Compatibilidad con versiones anteriores
  • Solución de problemas de IIS 7.0

Cada departamento de TI es distinto; cada uno tiene su conjunto exclusivo de necesidades y objetivos, especialmente en lo que se refiere al hospedaje de sitios o de servicios web. Los servidores web pueden necesitar determinados ingredientes para cumplir los requisitos de la organización, además del reto que supone

la replicación de esta receta en varios servidores al mismo tiempo que se intenta administrarlos de la manera más eficaz posible. Algunos de los cambios más importantes integrados en IIS 7.0 tienen como objetivo ayudar a los departamentos de TI a conseguir precisamente este objetivo a la hora de crear un servidor web o granjas de servidores web.

Cuando revisé la lista de las estupendas características integradas en IIS 7.0, me alegré en gran medida de tener la oportunidad de compartir los detalles de estas características con los lectores de TechNet Magazine. Me di cuenta de que probablemente no podría abarcarlas todas aquí, por lo que decidí centrarme en algunas de las características más significativas y en los cambios más sustanciales de IIS 7.0. Para obtener más información, visite el sitio web de la comunidad de IIS en IIS.net.

Nueva arquitectura

Los principales cambios integrados en IIS 7.0 se refieren a la arquitectura, el procesamiento de solicitudes, la compatibilidad con el marco de aplicaciones PHP y el almacén de configuración. Con IIS 6.0, las características eran básicamente una cuestión "de todo o nada". Tenía que instalar todas las características y sólo era posible personalizar IIS mediante ISAPI.

IIS se ha creado en consonancia con la premisa de que un administrador web desea empezar a partir de un conjunto base de funcionalidades y, a continuación, agregar sólo las funcionalidades adicionales necesarias deseadas en su entorno. El usuario es el que mejor conoce su entorno, por lo que IIS 7.0 le ofrece los bloques de creación para crear su propio servidor web personalizado. De este modo, atenuará la sobrecarga administrativa al reducir la superficie de ataque del servidor y eliminar la necesidad de actualizaciones de los componentes que no se usan. La clave de este nuevo enfoque es la arquitectura modular de IIS 7.0.

IIS 7.0 cuenta con un nuevo diseño que permite seleccionar las funciones, los módulos, que se van a instalar en el servidor. Estos módulos se conectan directamente a la canalización de solicitud integrada. Este nuevo diseño modular cuenta con distintos beneficios, incluida la reducción de la superficie de ataque y la superficie global del servidor web.

IIS tiene actualmente 40 módulos predeterminados, por ejemplo, los módulos básico, anónimo y autenticación de Windows® son ahora módulos individuales que se pueden agregar a la canalización de solicitud de manera independiente. Para una clasificación sencilla, los módulos se agrupan en ocho subcategorías (consulte la Figura 1).

Figura 1 Los módulos de IIS 7.0 se clasifican en ocho áreas funcionales.

Figura 1** Los módulos de IIS 7.0 se clasifican en ocho áreas funcionales. **(Hacer clic en la imagen para ampliarla)

Esto significa que ahora cuenta con la capacidad de crear un servidor web personalizado adaptado exactamente a su entorno. Pero, ¿qué ocurre si necesita una funcionalidad que los 40 módulos predeterminados no ofrecen, por ejemplo, una clase determinada de autenticación personalizada o un modificador de contenido? No hay problema. Es posible escribir un módulo en código nativo o administrado para cubrir esta necesidad y conectarlo directamente a la canalización. Esto también permite a Microsoft escribir y proporcionar módulos nuevos de manera individual para que no tenga que esperar al próximo service pack o versión del producto. IIS 7.0 también proporciona la capacidad de sobrescribir cualquiera de los 40 módulos predeterminados con sus propios módulos personalizados. Para obtener más información acerca de cómo crear su propio módulo, consulte IIS.net.

Canalización de solicitud integrada

Piense en la canalización de solicitud integrada como un conjunto esencial de pasos lineales que deben tener lugar cada vez que se sirve una página (como puede observar en la Figura 2). Normalmente, debe tener lugar algún tipo de autenticación seguida de autorización para recuperar el contenido, así como la determinación y la ejecución del controlador necesario para dicho contenido, el rendimiento de cualquier registro necesario y, por último, el envío de una respuesta. La canalización de solicitud integrada otorga a IIS 7.0 la flexibilidad necesaria para ejecutar distintos marcos de aplicaciones al mismo tiempo. Por ejemplo, puede ejecutar la autenticación mediante formularios sobre contenido PHP con un módulo de registro personalizado, todo en una misma canalización.

Figura 2 Módulos y canalización integrada de IIS 7.0

Figura 2** Módulos y canalización integrada de IIS 7.0 **(Hacer clic en la imagen para ampliarla)

Cada sitio web del servidor tiene una canalización de solicitud integrada y puede ejecutarse en uno de dos modos, integrado y clásico. El modo integrado es el modo predeterminado, y permite la conexión de funciones específicas a la canalización, lo cual proporciona un control granular sobre el proceso de solicitud. Por razones de compatibilidad, el modo clásico reproduce la funcionalidad de IIS 6.0/ISAPI a través de un módulo de ISAPI en la canalización. Esto es muy útil a la hora de migrar aplicaciones a IIS 7.0.

Instalación predeterminada

Hablemos ahora acerca de la instalación de su nuevo servidor web modular. Si observa una instalación predeterminada de IIS 7.0, advertirá que sólo están incluidos 10 módulos, si incluimos el servicio WAS (Windows Process Activation Service). La instalación de IIS 7.0 ofrece la funcionalidad base de IIS para instalar la función de servidor web; de manera específica, sólo proporciona los módulos necesarios para proporcionar contenido estático, como HTML sin formato o ASP clásico. Lo que se instale en el servidor tras este paso es estrictamente una opción personal. Esta es la funcionalidad incluida en una instalación predeterminada:

  • Características HTTP comunes, incluidas Contenido estático, Documento predeterminado, Examen de directorios y Errores HTTP
  • Características de estado y diagnóstico, como Registro HTTP y Monitor de solicitudes
  • Características de seguridad, como Filtro de solicitudes
  • Características de rendimiento, como Compresión de contenido estático
  • Herramientas de administración, incluida la Consola de administración de IIS
  • Servicio WAS (Windows Process Activation Service)

Como puede ver, se trata de un servidor mínimo que no incluye ASP.NET ni otras funcionalidades nuevas de IIS 7.0, como las características de diagnóstico y solución de problemas. La habilitación de funciones adicionales en el servidor, como la capacidad de proporcionar contenido dinámico como ASP.NET y FastCGI (PHP), es bastante sencilla. Seleccione el conjunto de módulos que desea instalar en "Agregar servicios de función" de la función de servidor web de Windows Server® 2008 Server Manager.

Nuevo almacén de configuración

Otro cambio clave en IIS 7.0 que le hará la vida más fácil es, sin duda, el nuevo almacén de configuración. La metabase, ahora componente de instalación opcional para la compatibilidad con versiones anteriores, se ha reemplazado por un sistema de configuración XML. Puedo oírle decir: "¡Pero si la metabase era XML!" Sí, lo era. Pero era complicada y difícil de leer (por lo menos para los mortales). Se ha reemplazado, por tanto, por un sistema XML más flexible. Al igual que ASP.NET, IIS 7.0 usa archivos de configuración limpios, sencillos, portátiles y legibles.

El paso a este formato significa que el sistema de configuración es ahora independiente del equipo, al contrario que la metabase que estaba vinculada a un equipo individual. Como resultado, ahora podrá transportar fácilmente el sistema de configuración a otros servidores con tan sólo arrastrar y colocar, o usar XCOPY, y ya está.

Este nuevo sistema de configuración hace maravillas también con las granjas de servidores web mediante el uso de una nueva característica integrada en IIS 7.0 denominada Configuración compartida. Puesto que este nuevo sistema de configuración es portátil, puede compartir un archivo de configuración maestro entre todos los nodos de la granja de servidores. La Configuración compartida le permite exportar la configuración de un servidor de preproducción conocido como correcto y, a continuación, compartirla en todo el entorno "activo" o de producción.

Al exportar el archivo de configuración, debe proporcionar una contraseña de clave de cifrado. Esto protege el archivo de configuración de servidores web no autorizados que intenten imitar la configuración de su servidor sin autorización.

La habilitación de la configuración compartida es sencilla. En el nodo de servidor del Administrador de IIS, seleccione Configuración compartida, ubicada en la sección Administración del panel de tareas. Simplemente marque "Habilitar configuración compartida", proporcione la ruta de acceso física de la configuración que va a compartir (normalmente será un recurso compartido UNC), escriba las credenciales necesarias para obtener acceso a la ruta de acceso física y haga clic en Aplicar. Una vez que se encuentre el archivo .config de configuración, se solicitará la contraseña de cifrado. Cuando el proceso haya terminado, reinicie el Administrador de IIS para que seleccione la configuración nueva.

La estructura del nuevo sistema de configuración es diferente a la que estaba acostumbrado, por lo tanto, repasemos los aspectos básicos. Tal como muestra la Figura 3, la configuración de IIS 7.0 se ha desglosado en dos categorías, la configuración de todo el servidor y la configuración específica del sitio. La configuración de todo el servidor se almacena en applicationhost.config, que se ubica en %systemroot%\windows\system32\inetsrv\config. Esto incluye todos los módulos instalados, los sitios del servidor, etc. La configuración específica del sitio se almacena en archivos web.config individuales.

Figura 3 Hay un archivo de configuración para la configuración de todo el servidor y archivos individuales independientes para cada sitio web de dicho servidor.

Figura 3** Hay un archivo de configuración para la configuración de todo el servidor y archivos individuales independientes para cada sitio web de dicho servidor. **(Hacer clic en la imagen para ampliarla)

Si ha usado ASP.NET, probablemente esté familiarizado con los archivos web.config. IIS 7.0 usa archivos web.config para almacenar la configuración específica de sitios web individuales, como la configuración de aplicaciones y documentos predeterminada de un sitio, así como la configuración de ASP.NET. Esto significa que tendrá un archivo web.config para cada sitio en su servidor.

Los archivos web.config de los sitios se ubican en la ruta de acceso física de cada sitio, por ejemplo, %systemroot%\inetpub\wwwroot. Este diseño ofrece los mismos beneficios de portabilidad indicados anteriormente pero en el nivel de sitio. Es posible desarrollar fácilmente un sitio en un servidor de prueba, por ejemplo, y, a continuación, simplemente arrastrar y colocar, o XCOPY, el archivo web.config del sitio, así como los archivos de aplicación en un servidor de producción.

Siempre que transporte o comparta archivos de configuración, preste atención a la información específica del equipo, como las direcciones IP y las letras de unidad. IIS 7.0 ofrece una solución para este posible descuido mediante la compatibilidad con variables de entorno de sistema operativo (como %systemroot%). Asegúrese de que el mismo conjunto de módulos está instalado en todos los servidores de producción y prueba. De este modo, evitará errores inesperados de aplicación. También pueden ocurrir errores si el archivo web.config hace referencia a un módulo que no está instalado o si un módulo predeterminado entra en conflicto con un módulo personalizado.

Administración del servidor web

Ahora, por tanto, ya dispone de este gran servidor web nuevo, personalizable, flexible y portátil. ¿Cómo va a administrarlo? La administración fue una parte importante de la planeación y la creación de IIS 7.0. Hay varias maneras de realizar tareas administrativas.

Las preferencias de administración pertenecen normalmente a una de tres categorías: administración basada en operaciones de apuntar y hacer clic en la en la interfaz de usuario, introducción de comandos en la línea de comandos y escritura de scripts para automatizar lo máximo posible. Comencemos con la interfaz de usuario.

En IIS 6.0, el complemento Microsoft® Management Console (MMC) de interfaz de usuario tenía dos vistas básicas conocidas, la vista de árbol y la vista de fichas. Para entrar en una configuración, hacía clic con el botón secundario, seleccionaba Propiedades y se le ofrecían una serie de fichas, por no mencionar los botones de radio y las casillas.

Afortunadamente, la interfaz de usuario de IIS 7.0 se ha modernizado por completo. Esta interfaz de usuario, denominada Administrador de IIS, se ha diseñado para habilitar un enfoque orientado a las tareas, como se muestra en la Figura 4. Existe también un Administrador remoto para clientes de nivel inferior, como Windows XP y Windows Server 2003. Puede descargarlo de IIS.net/downloads.

Figura 4 Nueva interfaz de usuario en IIS 7.0

Figura 4** Nueva interfaz de usuario en IIS 7.0 **(Hacer clic en la imagen para ampliarla)

La nueva interfaz de usuario consta del panel Conexiones a la izquierda, el panel Acciones a la derecha y un panel de tareas o espacio de trabajo en el centro. El árbol administrador de conexiones de la izquierda es semejante a la vista de árbol de IIS 6.0 con nodos principales y secundarios. Una novedad de la vista de árbol es la capacidad de crear nuevas conexiones, guardar conexiones actuales o eliminar conexiones existentes. El panel de tareas es la mejora más importante de la interfaz de usuario, con dos vistas desde las que trabajar. La vista de características extrae todas las propiedades configurables de IIS de la anterior vista "de fichas" y las agrupa por área administrativa, por ejemplo, IIS, administración y seguridad.

Las propiedades de ASP.NET se han integrado también en el Administrador de IIS, lo que elimina la necesidad de usar un complemento MMC adicional. Cada propiedad configurable tiene su propio icono, lo cual facilita su localización. Y, puesto que el Administrador de IIS se creó como aplicación de Windows Forms, puede agregar fácilmente iconos de complementos para cualquier módulo personalizado o funcionalidad que escriba.

La segunda vista del panel de tareas es la vista de contenido, que es muy similar a la de IIS 6.0, ya que puede ver lo que hay en el directorio de contenido del sitio y puede llevar a cabo acciones según este contenido. La novedad aquí consiste en la capacidad de seleccionar una parte específica del contenido, por ejemplo, una página web específica y, a continuación, cambiar a la vista de características para invocar una determinada configuración en el contenido seleccionado, lo cual le ofrece un control granular hasta el nivel de página.

Otros métodos de administración

Para aquellos que prefieren la línea de comandos, existe una herramienta nueva muy eficaz denominada APPCMD.exe que permite realizar tareas sencillas, como la detención de un sitio o la copia de seguridad del archivo de configuración actual, así como tareas más complejas, como la búsqueda del esquema de configuración. La sintaxis es muy sencilla:

APPCMD (command) (object-type) <identifier> </parameter1:value1 ...>. 

Si desea una lista de todos los objetos disponibles para APPCMD, escriba:

APPCMD /? 

O, si desea ver los comandos disponibles para un tipo determinado de objeto, escriba:

APPCMD (object-type) /?

Para los programadores, se han añadido a ISS 7.0 una API de código administrado denominada Microsoft.Web.Administration y un nuevo proveedor del Instrumental de administración de Windows (WMI). Estos dos métodos abren un gran abanico de opciones para la creación de scripts, la automatización y la escritura de herramientas de administración de IIS 7.0. Ambos pueden usarse con Windows PowerShell®, y el proveedor de WMI también se puede usar con VBScript y JScript®. Para obtener información adicional, consulte blogs.msdn.com/carlosag/archive/2006/04/17/MicrosoftWebAdministration.aspx.

Administración remota y administración delegada

IIS 7.0 ofrece nuevos métodos para administrar de manera remota el servidor, los sitios, las aplicaciones web y los derechos de administración delegados de manera segura para los usuarios que no son administradores. Expliquemos en primer lugar las nuevas capacidades de administración remota y cómo le pueden facilitar la vida.

En el pasado, había dos maneras de administrar un servidor IIS de manera remota: mediante el sitio web de administración remota o mediante Escritorio remoto/Terminal Services para obtener acceso a la interfaz de usuario. Pero si se encontraba fuera del firewall o de la oficina, estas dos opciones no eran muy útiles. IIS 7.0 soluciona este problema al integrar capacidades de administración remota directamente en la interfaz de usuario que funcionan a través de HTTPS compatible con firewall.

La administración remota en IIS 7.0 facilita el trabajo en numerosos aspectos. En primer lugar, puede disfrutar de la misma experiencia de interfaz de usuario que obtendría si hubiera iniciado la sesión de manera local. En segundo lugar, no hay necesidad de abrir puertos en el firewall, puesto que la comunicación se produce a través de HTTPS. Por último, ahora es posible administrar varios servidores desde una interfaz de usuario única. No es necesario tener varias ventanas del escritorio remoto o del sitio web remoto abiertas al mismo tiempo.

El servicio de administración remota real de IIS 7.0 es, esencialmente, una aplicación web pequeña que se ejecuta como servicio independiente, bajo una cuenta de servicio local de Windows NT® denominada NT Service\WMSVC. Este diseño mantiene la funcionalidad de administración remota incluso si el servidor IIS en sí no responde.

Al igual que la mayoría de las características de IIS 7.0, por motivos de seguridad, la administración remota no se instala de manera predeterminada. Para instalar las características de administración remota, agregue los servicios para la función de servidor web en el Administrador de servidores de Windows Server 2008, que se encuentra en Herramientas de administración. Una vez que se ha instalado esta característica, debe habilitar las conexiones remotas e iniciar el servicio WMSVC, puesto que está desactivado de manera predeterminada.

La configuración de inicio predeterminada del servicio WMSVC es manual. Si desea que el servicio se inicie automáticamente tras un reinicio, necesitará cambiar la configuración a automática. Puede hacerlo a través de la línea de comandos al escribir:

sc config WMSVC start=auto

Al habilitar las conexiones remotas a través del servicio de administración, verá una lista de parámetros, como Credenciales de identidad, Conexiones y Restricciones de direcciones IPV4. La única decisión que es crítica en este punto es determinar a qué conjunto de credenciales de identidad se debe otorgar permiso para la conexión a IIS 7.0: sólo credenciales de Windows o credenciales de Windows y del Administrador de IIS.

La primera opción es bastante descuidada, pues indica que sólo desea permitir cuentas de usuario de Windows, ya sean locales o de dominio. La segunda opción implica tanto a usuarios de Windows como de un tipo de cuenta que es completamente nueva en IIS 7.0 y que no está asociada con las cuentas de usuario de Windows: Usuarios del Administrador de IIS. Con Usuarios del Administrador de IIS, los administradores pueden crear cuentas de usuario que sean conocidas sólo en el contexto de IIS 7.0 y que no tengan acceso al sistema operativo. Por último, de manera predeterminada, IIS ofrece un certificado autofirmado para empezar, pero se recomienda que agregue un certificado SSL firmado válido. Ahora, simplemente aplique su configuración e inicie el servicio.

Para control y seguridad adicionales, los administradores de TI tienen la capacidad de delegar de manera segura tareas de administración de sitios o aplicaciones web individuales a usuarios que no son administradores.

La administración delegada es esencialmente administración remota, pero limita el alcance del acceso a sitios o aplicaciones web individuales. La característica Usuarios del Administrador de IIS es especialmente útil en este contexto. Es posible crear usuarios de IIS para los propietarios de sitio de uso único y delegar permisos para la administración de su propio sitio o aplicación. Estos no tienen acceso a la configuración de todo el servidor y están limitados únicamente a la configuración de su sitio o aplicación web específicos.

Puede especificar también qué características y configuraciones pueden cambiar los usuarios e, incluso, cuáles deben aparecer en la interfaz de usuario. Por ejemplo, si no desea que un usuario pueda cambiar el tipo de autenticación usada para su sitio, puede configurar esta característica como de sólo lectura o no heredada. Cuando una característica es de sólo lectura, los usuarios pueden tener acceso a la misma y determinar la configuración pero no pueden realizar cambios. Con la configuración no heredada, el icono de la característica no aparecerá en la vista Administrador de IIS del usuario delegado. Esta clase de delegación de características permite proporcionar un acceso estrictamente controlado a otros usuarios sin ofrecer control administrativo sobre el servidor web.

Avanzando hacia IIS 7.0

Al diseñar IIS 7.0, el equipo deseaba garantizar que la transición al mismo fuera lo más fluida posible al permitir el uso de algunas inversiones existentes en scripts y herramientas de administración para IIS 6.0. Se prestó bastante atención a la compatibilidad con versiones anteriores de IIS 7.0 de manera que funcionara con los scripts de IIS 6.0. Hay una gama completa de herramientas, desde la compatibilidad de metabase de IIS 6.0 a la consola real de administración de IIS 6.0, que puede instalar bajo el nodo de compatibilidad de administración de IIS 6.0 durante la instalación.

La infraestructura de compatibilidad de metabase de IIS 6.0 usa un componente llamado ADOMapper. Este permite ejecutar los scripts de metabase de ADSI y ABO de IIS 6.0 en el nuevo sistema de configuración, que queda limitado únicamente a lo que IIS 6.0 podía hacer. Por lo tanto, no puede leer o escribir propiedades nuevas de IIS 7.0, obtener acceso a los nuevos datos de tiempo de ejecución ni leer y escribir propiedades de ASP.NET o archivos web.config.

Solución de problemas y Diagnósticos

La solución de problemas y el diagnóstico son tareas que consumen, desde siempre, bastante tiempo. El estudio de los registros y la reproducción de problemas en una granja amplia de servidores web o incluso en un único servidor pueden ser labores complejas. IIS 7.0 dispone de una herramienta denominada Seguimiento de solicitudes con error para ayudar a mitigar parte de esta complejidad y reducir el tiempo perdido. Puede ser útil en muchas situaciones, incluso cuando una solicitud se bloquea o da lugar a errores, así como para investigar problemas de autorización y autenticación.

El Seguimiento de solicitudes con error usa reglas como criterio para buscar errores. Las reglas de seguimiento pueden crearse para buscar tipos de comportamiento o errores al especificar el tipo de contenido del cual desearía efectuar un seguimiento (todo el contenido del servidor, sólo contenido de ASP.NET o contenido personalizado, como PHP) y bajo qué condiciones debe empezar a efectuarse este seguimiento (un determinado código de estado devuelto, tiempo que se ha tardado en iniciar la página, gravedad del evento o una combinación de todos).

Suponga, por ejemplo, que los usuarios comunican que un sitio tarda mucho en cargarse. Se trata de un escenario difícil de reproducir en cualquier caso, pero especialmente si tiene miles de visitas por hora. Con el Seguimiento de solicitudes con error, simplemente necesita agregar una regla de seguimiento para iniciar el registro cuando una página tarda más del tiempo deseado en cargarse (en este ejemplo, digamos que dos segundos), y esperar a que el servidor reproduzca el problema por su cuenta (consulte la Figura 5).

Figura 5 Uso del seguimiento de solicitudes con error para la solución de problemas

Figura 5** Uso del seguimiento de solicitudes con error para la solución de problemas **(Hacer clic en la imagen para ampliarla)

La diferencia entre el seguimiento de solicitudes con error y el registro tradicional es que el primero sólo realiza un registro si se detecta un criterio de solicitud con error particular. El mismo archivo de registro es un archivo XML al que se agrega una hoja de estilos XML, lo que potencia su limpieza y la facilidad de lectura. Al igual que la mayoría de las características de IIS 7.0, esta no se encuentra instalada de manera predeterminada y se ubica en la sección de estado y diagnóstico de la instalación. Debe habilitarla también en el Administrador de IIS.

IIS 7.0 supone un gran paso adelante para todos los administradores. Su nueva arquitectura y capacidades ofrecen la agilidad y la flexibilidad necesarias para adaptarse a un entorno siempre variable. Con las características de administración, las herramientas de compatibilidad con versiones anteriores y las capacidades de solución de problemas, está listo para implementarlo hoy mismo y trabajar con su entorno existente.

Isaac Roybal es director de productos de Windows Server en Microsoft. Su responsabilidad abarca todos los aspectos relacionados con la Web y Windows Server. Isaac ha trabajado para Windows Server desde la aparición de Windows NT 3.51 e IIS 4.0. Anteriormente, era director de programas de operaciones para el grupo Office Internet Platform & Operations. Cuenta con certificación MCSE en Windows NT 4.0, Windows 2000 y Windows Server 2003.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.