Manejo de extensiones de servicio en IIS
Manejo de extensiones de servicio en IIS
Esta actividad práctica corresponde a este tema.
Lo primero de todo es abrir la herramienta de administración de IIS (IISManager) que, como ya hemos dicho, usaremos a lo largo de todo el curso. Describiremos aquí el procedimiento detallado de cómo se abre esta herramienta para no repetirlo en posteriores secciones (ésta es la herramienta que controlará la mayoría de procesos que vamos a ver). Lo primero es ir a Inicio – Herramientas Administrativas – Administrador de IIS:

A continuación hacemos clic en el cuadro de desplegar las opciones asociadas en el nombre del PC servidor y en el apartado “extensiones del servicio web”, donde veremos las opciones siguientes:

Administración de extensiones instaladas junto con IIS 6
Desde aquí se pueden habilitar o deshabilitar todas las extensiones que se deseen, siempre que estén registradas previamente. Para ello basta con hacer clic con el botón derecho sobre cada extensión y pulsar la opción correspondiente. Por otro lado, para añadir manualmente una extensión nueva basta con hacer clic derecho sobre la opción “extensiones del servicio web” y “Agregar…”, tal y como se ve en la siguiente imagen:

Agregar nuevas extensiones del servicio web
No obstante, esto no es la operación más típica para añadir extensiones nuevas que no aparezcan en esta lista, ya que hoy en día muchas extensiones ya se incluyen automáticamente gracias a los paquetes de auto-instalación de los diversos productos que podemos usar con IIS. Estos instalan automáticamente todo lo necesario para que las extensiones aparezcan dentro de esta lista y funcionen correctamente. Para ilustrarlo, veremos unos ejemplos consistentes en habilitar extensiones para Perl, ASP .NET y PHP.
Instalación de PHP:
A continuación vamos a describir el proceso de instalación de PHP en IIS. De esta forma, el servidor podrá atender peticiones de páginas PHP y procesarlas de acuerdo a su contenido, dejando de dar un error por no estar registrada la extensión de PHP dentro del servidor. PHP cuenta con un módulo de instalación automática que podemos encontrar en: http://www.php.net/downloads.php. Tras descargar dicho instalador, sólo debemos ejecutarlo y seguir los pasos indicados, tal y como se verá posteriormente en imágenes. Las opciones de instalación más relevantes son principalmente:
- La ruta de instalación: Podemos aceptar la de por defecto o seleccionar la que deseemos.
- El modo de instalación: PHP permite instalarse de varios modos, que determinarán de qué manera interactuará PHP con IIS. Según el modo seleccionado PHP usará una u otra tecnología para comunicarse con IIS y recibir peticiones o enviarle la información procesada. Fundamentalmente deberemos escoger entre dos formas: Como módulo ISAPI o como extensión CGI (o bien su variante FastCGI). Aunque teóricamente cualquier modo de instalación permitirá a PHP funcionar, es conveniente intentar instalarlo como módulo ISAPI por las ventajas que ello conlleva. En el siguiente enlace se ofrece una explicación acerca de ambos modos, sus capacidades y características.
En el programa de instalación también debemos seleccionar los componentes concretos de PHP que deseamos instalar antes de proceder a la instalación, aunque en nuestro caso dejaremos la selección por defecto. Las siguientes imágenes muestran todo el proceso de arranque del instalador de PHP sobre IIS:

Descargando el autoinstalable de PHP
Ruta de instalación por defecto de PHP
Distintos modos de instalación de PHP sobre diferentes servidores web
Opciones de instalación de PHP
Una vez hecho esto, debemos reiniciar IIS (clic derecho sobre el PC– Todas las tareas – Reiniciar IIS) y añadir una nueva extensión ISAPI para la web sobre la que queramos usar PHP [1] .Esto podemos hacerlo con un clic derecho en la web donde queramos activar php e ir a Propiedades - Filtros ISAPI. Una vez hemos llegado a esa pantalla, creamos un nuevo filtro ISAPI para php que designe la dll correcta que procesará las peticiones. Todo esto se muestra en las imágenes siguientes:

Reiniciando IIS tras la instalación de PHP
Pantalla de acceso a la lista de filtros ISAPI instalados

Filtros ISAPI instalados en el servidor

Agregando un nuevo filtro ISAPI a un sitio web al servidor

Filtro ISAPI para PHP en una web del servidor
Por último, comprobaremos que la extensión de PHP funciona correctamente probando esta página sencilla de test al a que llamaremos test.php:
<html> <head> <title>PHP Test</title> </head> <body> <?php phpinfo(); ?> </body> </html> |
Antes de intentar acceder a este archivo PHP de pruebas con el servidor web, lo moveremos al directorio wwwroot (directorio por defecto donde IIS sitúa las Web que sirve) y le daremos permisos a la “Cuenta de Invitado para Internet” (buscarla si no apareciese) de lectura y lectura y ejecución, para poder acceder al archivo correctamente desde un cliente web situado en otra máquina cualquiera.

Prueba de funcionamiento del nuevo módulo PHP instalado
Si queremos instalar PHP en modo FastCGI en lugar de modo ISAPI, además de cambiar el tipo de instalación a realizar en el programa de instalación debemos instalar previamente un módulo especial de IIS denominado “FastCGI Extension for Internet Information Services 6.0 and 5.1” de Microsoft.
Si por alguna razón no deseamos usar el auto-instalador, la extensión de PHP para IIS también posee un procedimiento de instalación manual. Dicho procedimiento puede consultarse en los siguientes enlaces: http://peterguy.com/php/install_IIS6.html, http://www.iisadmin.co.uk/?p=4. El proceso de instalación manual es análogo al visto aquí. Además, otros problemas de instalación pueden consultarse en: http://www.php.net/manual/es/install.windows.iis.php.
|
NOTA: La instalación de la versión más actual de PHP en el momento de redactar este material (5.2.8) sobre IIS presentaba varios bugs. Instalar PHP como módulo ISAPI es lo más recomendable desde el punto de vista de seguridad y rendimiento, pero dicha instalación presentaba bugs que pueden impedir su funcionamiento correcto. La instalación de PHP como módulo CGI no presentaba errores, aunque debemos evitarla por motivos de seguridad y rendimiento, como hemos dicho anteriormente. Es de esperar que futuras revisiones corrijan estos problemas. La instalación en modo FastCGI funciona correctamente. Por otro lado, si en las pruebas de PHP los archivos dan errores diciendo que se prohíbe la ejecución, debemos asegurarnos de que las partes de la web sobre la que vamos a usar PHP tienen el permiso web de ejecución “Sólo secuencias de comandos” (con o sin ejecutables), ya que si no los archivos PHP no podrán ejecutarse. |
Instalación de Aplicaciones ASP .NET:
La instalación de aplicaciones ASP .NET es bastante sencilla en IIS. Para ello debemos seguir los siguientes pasos:
- Habilitar la extensión correspondiente (o instalar el .NET Framework Redistributable si dicha extensión no apareciese, que se puede descargar gratuitamente desde la página de Microsoft que se encuentra buscando “.net framework redistributable 3.5” (o versiones posteriores) en Google). El siguiente enlace muestra como instalar .NET 4 sobre Windows 2003 e IIS 6.
- Reiniciar IIS.
- Si aún no apareciese dicha extensión tras la instalación del Framework, entonces se deben hacer los siguientes pasos:
- Ir a <Letra de la unidad donde está instaladoWindows>:\WINDOWS\Microsoft.NET\Framework\v<Versión de .NET instalada>
- Ejecutar aspnet_regiis–i
- Reiniciar IIS.
- Crear una carpeta en el disco duro donde guardar la web ASP .NET y mover la web a la misma.
- Hacer un directorio virtual (o modificar uno existente) que designe a dicha carpeta del disco duro. Para ello se recomienda consultar la sección correspondiente al manejo de directorios virtuales.
- Hecho esto, ya deberíamos poder usar nuestra aplicación ASP .NET. No obstante, las aplicaciones que usan esta tecnología se ejecutan por defecto (salvo que lo cambiemos) bajo un usuario denominado “Servicio de Red”. Dicho usuario tiene permisos muy limitados por motivos de seguridad, por lo que es posible que al tratar de acceder a determinados archivos o recursos la aplicación dé algún error. La solución pasa simplemente por asignar los permisos necesarios a la carpeta que tenga dicho recurso inaccesible para el usuario “Servicio de red” (Network Service) mencionado.
Podemos encontrar más información en:
- http://support.microsoft.com/?scid=kb%3Ben-us%3B326355&x=17&y=20
- http://forums.asp.net/t/856960.aspx
- http://msdn.microsoft.com/en-us/library/ms998320.aspx
Instalación de Perl:
Al igual que lo que ocurría con las extensiones de servicio ya vistas, si no tenemos una extensión de Perl instalada y activa, los archivos .pl como el que mostraremos a continuación no se podrán servir ni procesar. Para comprobarlo, seguiremos el procedimiento visto anteriormente: movemos un archivo Perl de pruebas (simple.pl), que vemos en la imagen siguiente, al directorio wwwroot y le damos permisos a la “Cuenta de Invitado para Internet” (buscarla si no apareciese) de lectura y lectura y ejecución, para poder acceder al archivo correctamente desde un cliente web situado en otra máquina cualquiera. El proceso aparece descrito en las tres imágenes siguientes:

Colocación del script Perl de prueba en el directorio correcto para ser accedido por los clientes

A continuación probaremos si es posible acceder al archivo. Al intentar acceder directamente a simple.pl desde el cliente XP de nuestra infraestructura (http://5.0.0.2/simple.pl), el servidor nos dirá que el archivo no se encuentra (un error). Esto ocurre porque no hay ningún módulo instalado que soporte Perl, y por tanto el servidor no sabe qué hacer con este tipo de archivo que no tiene registrado:

Por tanto IIS sigue la aproximación más cautelosa (y más segura): si no sabe lo que es un determinado tipo de archivo, entonces no lo ejecuta. La cuestión es: ¿Qué debemos hacer para soportar Perl?
Instalando una extensión para el soporte de Perl:
Aunque en el pasado algunos productos exigieran una instalación “manual” sobre el servidor, como hemos dicho hoy en día es muy típico encontrarse con extensiones de IIS auto-instalables, que ya hacen todo el trabajo por nosotros, como ya hemos visto con PHP. Otro ejemplo es ActivePerl (http://www.activestate.com/activeperl/), que vamos a instalar con todas las opciones por defecto para habilitar el soporte de páginas dinámicas escritas en Perl sobre IIS, y ver qué pasa en el IIS Manager en el apartado de extensiones deservicio.

Iniciando la instalación de una extensión de Perl para IIS (ActivePerl)

Instalando una extensión de Perl para IIS (ActivePerl) con opciones por defecto
Tras completarse la instalación, en el IIS Manager debería aparecernos una extensión nueva (Perl CGI Extension), tal y como muestra la siguiente imagen. Ahora debemos permitir dicha “Perl CGI Extension” (botón derecho sobre la misma y seleccionar la opción correspondiente) y comprobar qué pasa si se hace el acceso a simple.pl desde el cliente XP de nuevo.

Autorizando una extensión de Perl para IIS (ActivePerl)

Visto el procedimiento para la instalación de todas las extensiones anteriores, podemos esperar un comportamiento muy similar para cualquier otra que deseemos instalar sobre IIS. Por tanto, la inclusión de extensiones en IIS ocurre normalmente de forma automática al instalar el producto asociado, mientras que la habilitación o deshabilitación de las mismas podemos hacerla directamente desde el administrador del servidor web.
Por último, mostraremos la Web de pruebas que hemos elegido para los temas que vamos a desarrollar a continuación, que es una versión de la web del Máster de Ingeniería Web de la EUITIO (Universidad de Oviedo) cuya versión más actualizada podemos encontrar en: http://www.euitio.uniovi.es/master/ingenieriaweb/ingenieriawebnie.html. Se ha seleccionado esta web debido a que es una web real (usada actualmente en un entorno de producción) y posee la complejidad suficiente para ilustrar los temas que vamos a ver, sin necesidad de tener que explicar para ello tecnicismos o aspectos que únicamente atañen a la tecnología de desarrollo usada en la página y centrándonos por ello sólo en su administración. Este contenido se usa con permiso expreso de sus autores. En la infraestructura de pruebas descrita en el tema 1, esta web se ha colocado en el directorio wwwroot (web por defecto) del servidor situado en la máquina Windows Server 2003 de nuestra infraestructura de pruebas (con IP 5.0.0.2).

Página principal de la web de prueba
[1] Se puede comprobar también la instalación de PHP como filtro ISAPI mediante clic derecho en “sitios web” - Propiedades – Directorio Particular – Configuración y buscando el filtro registrado en la lista.





