IMPORTANTE: Este artículo proporciona las instrucciones para instalar y usar el componente FastCGI en Windows Server 2008 y Windows Vista SP1. ContenidoEste artículo explica cómo instalar el módulo FastCGI y PHP para hospedar aplicaciones PHP en IIS 7.0.
IntroducciónFastCGI proporciona una alternativa de alto rendimiento al Common Gateway Interface (CGI), una manera estándar de integración entre aplicaciones externas y servidores web que forma parte de IIS desde su primera versión. Los programas CGI son ejecutables arrancados por el servidor web para cada petición para procesarla y generar la respuesta dinámica que es enviada de vuelta al cliente. Debido a que muchas librerías no soportan ejecución multi-hilo, CGI tiene que ejecutar sólo una petición por proceso. Desafortunadamente esto proporciona un rendimiento muy bajo, debido al coste de crear y cerrar un proceso por cada petición. FastCGI soluciona este problema de rendimiento de CGI permitiendo que un solo proceso puede ser reutilizado por varias peticiones. Adicionalmente FastCGI mantiene compatibilidad con librerías no seguras a multi-hilo ya que utiliza un pool de procesos reutilizables que garantizan que cada proceso sólo sirve una petición simultáneamente. Habilitar FastCGI en IIS 7.0Windows Server 2008Para habilitar FastCGI en Windows Server 2008 añada el servicio de CGI en la opción Administrador de Servidor -> Funciones -> Agregar servicios de función. Seleccione la función CGI para añadir tanto CGI como FastCGI:
Windows Vista SP1Añada la característica CGI utilizando el Panel Control -> Programas y Características -> Activar o Desactivar características de Windows. A continuación se muestra cómo habilitar los servicios CGI y FastCGI:
IMPORTANTE: Instale la actualización del módulo FastCGILa actualización de IIS para el módulo FastCGI soluciona varios problemas de compatibilidad con aplicaciones PHP populares. Instale la actualización de una de estas localizaciones:
Instalar paquete de administración de IIS 7.0NOTA: Este paso es opcional. Entre otras características, el paquete de administración de IIS 7.0 incluye un interfaz cómodo para configurar las opciones de fastCGI. Puede descargar el paquete de administración aquí: Instalar y configurar PHPSe recomienda usar la versión no segura a multi-hilo (non-thread safe) de PHP. Una versión no segura a multi-hilo implica mejoras significativas de rendimiento frente a la versión estándar, ya que no realiza comprobaciones para la seguridad entre hilos, que no son necesarias ya qye FastCGI asegura un entorno de ejecución de un solo hilo.
Compruebe si la instalación de PHP se ha realizado con éxito ejecutando el siguiente comando desde la línea de comandos:
Si PHP ha sido instalado correctamente y todas sus dependencias están disponibles en la máquina, este comando devolverá la información de configuración de la actual versión de PHP. Configurar IIS 7.0 para procesar peticiones PHPPara que IIS 7.0 pueda hospedar aplicaciones PHP es necesario añadir una asociación que le indique a IIS que pase todas las peticiones de PHP a la librería de PHP instalada. Usar Administrador de IISAbra el administrador de IIS y seleccione “Asignaciones de controlador” en el nivel de servidor:
Seleccione la acción “Agregar asignación de módulo” y especifique las siguientes opciones de configuración:
Presione Aceptar. Aparecerá un diálogo preguntándole si desea crear una aplicación FastCGI para este ejecutable. Seleccione Sí.
Compruebe que la asociación funciona correctamente creando un archive phpinfo.php en la carpeta c:\inetpub\wwwroot con el siguiente código:
Abra el navegador y navegue a la dirección http://localhost/phpinfo.php. Si todo se instaló correctamente verá la página de información PHP estándar:
NOTA: Si no ve “FastCgiModule” en la lista “Modules:” significará que el módulo no se ha registrado o está habilitado. Para comprobar si el módulo FastCGI está registrado abra el archivo de configuración de IIS en %WINDIR%\windows\system32\config\applicationHost.config y compruebe que la siguiente línea está presente en la sección <globalModules>:
Compruebe también que, en el mismo archive, el modulo de FastCGI está incluido en la sección <modules>:
Usar la línea de comandosDe manera alternative, los pasos mostrados anteriormente pueden realizarse con la línea de comandosappcmd. Para crear el pool de procesos de aplicaciones FastCGI ejecute el siguiente comando:
Después de esto cree la asociación:
Nota: Si está usando la version 4.x de PHP, debe utilizar php.exe en lugar de php-cgi.exe. Mejores prácticas para configurar FastCGI y PHPEsta descarga contiene una presentación sobre mejores prácticas para hospedar PHP en un entorno de hospedaje compartido. Aislamiento de seguridad para sitios PHPLa recomendación para aislar sitios PHP en un entorno de hospedaje compartido es consistente con las recomendaciones generales de aislamiento en IIS 7.0. En concreto está recomendado:
Para más detalles sobre el aislamiento de seguridad en un entorno de hospedaje compartido consulte el document Isolating Sites with Application Pools. Comportamiento de reciclaje en el proceso PHPAsegúrese que FastCGI siempre recicla los procesos php-cgi.exe antes de que el reciclaje native de PHP entre en funcionamiento. El comportamiento de reciclado de procesos FastCGI se configura por la propiedad de configuracióninstanceMaxRequests. Esta propiedad especifica cuántas peticiones atiende el proceso FastCGI antes de reciclarse. PHP tiene una funcionalidad de reciclaje similar que es controlada por la variable de entorno PHP_FCGI_MAX_REQUESTS. Establezca la propiedad instanceMaxRequests a un valor menor o igual quePHP_FCGI_MAX_REQUESTS, para garantizar que el proceso de reciclaje de proceso de PHP nunca se pone en funcionamiento. Los valores de configuración de FastCGI se pueden configurar desde el administrador de IIS o usando la línea de comandos appcmd. Usar el administrador IIS Para configurar la configuración de reciclaje de FastCGI con el administrador de IIS necesita instalar el Paquete de Administración de IIS 7.0 y seleccionar la configuración de FastCGI en el nivel de servidor:
A continuación seleccione la aplicación FastCGI que quiere configurar y presione “Edit…” en el panel de acciones del lado derecho de la ventana:
En el diálogo "Edit FastCGI application", establezca el valor de 1000 a instanceMaxRequest y presione en el botón “browse” junto al valor de EnvironmentVariables:
Añada la variable de entornoPHP_FCGI_MAX_REQUESTS y establezca su valor a 10000:
Nota: Si no configure estas variables se usarán los siguientes valores por defecto: instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 (en la mayoría de versiones de PHP). Usar la línea de comandosPara configurar el comportamiento de reciclado de FastCGI PHP usando appcmd, utilice los siguientes comandos:
Versionado de PHPMuchas aplicaciones PHP pueden depender de funciones o características que sólo están presentes en ciertas versiones de PHP. Si estas aplicaciones son hospedadas en el mismo servidor necesitará que distintas versiones de PHP funcionen de forma paralela. El manejador de fastCGI para IIS 7.0 soporta ejecutar múltiples versiones de PHP en el mismo servidor web. Por ejemplo, asumamos que su servidor web tiene que soportar PHP 4.4.8, PHP 5.2.1 y PHP 5.2.5 no seguro a multi-hilo. Para habilitar eso, debe copiar los binarios correspondientes de PHP en carpetas separadas dentro del sistema de archivos (ej. C:\php448\, C:\php521\ y C:\php525nts) y crear un pool de aplicaciones FastCGI para cada versión:
Si tiene 3 sitios web (site1, site2, site3), donde cada sitio necesita una versión distinta de PHP, puede definir una asociación en cada uno de estos sitios web con su correspondiente pool de aplicaciones FastCGI: Nota: Cada pool de fastCGI está identificado de manera única por una combinación de ruta completa y sus argumentos.
Recomendaciones de seguridad de PHPLas siguientes opciones de configuración están ligadas con la seguridad de una instalación PHP. Localice y abra el archivo php.ini para aplicar los cambios recomendados a continuación:
Habilitar la configuración de PHP por sitio webEn esta sección se describe la manera recomendada de establecer la configuración de PHP por sitio web. Esta recomendación ha sido identificada y validada por Radney Jasmin con el proveedor de hospedaje GoDaddy.com que ahora ofrece hospedaje PHP en Windows Server 2008 con FastCGI. Pool de proceso PHP por sitio web Cuando cada sitio web tiene su propio pool de aplicaciones (lo cual es una práctica recomendada en IIS 7.0), es posible asociar un pool de proceso FastCGI dedicado con cada sitio web. Un pool de proceso FastCGI está identificado de forma única con la combinación de atributos fullPath y arguments. De esta forma, si es necesario crear varios pools de proceso FastCGI para el mismo ejecutable, como php.cgi.exe, el atributo arguments puede ser usado para distinguir varias definiciones de pool de procesos. Además, puede utilizar el argumento “-d” para definir una entrada INI en el proceso PHP. Este argumento se puede usar para hacer que la cadena de argumentos sea única. Por ejemplo, si hay dos sitios web “website1” y “website2” que necesitan tener su propio conjunto de propiedades de configuración de PHP, los pools de proceso de FastCGI pueden ser definidos así:
En este ejemplo la propiedad de PHPopen_basedir se usa para distinguir entre definiciones de pool de procesos. Además obliga a que el ejecutable de PHP por pool de procesos sólo puede realizar operaciones de archivos en la carpeta raíz del correspondiente sitio web. El sitio web website1 puede tener la asociación de esta forma:
Y el sitio web website2:
Especificar una localización de php.ini Cuando el proceso PHP es iniciado, determina la localización del archivo php.ini usando varias propiedades. La documentación PHPproporciona una descripción detallada del proceso de arranque de PHP. Uno de los lugares donde el proceso de PHP busca al archivo php.ini es en la variable de entorno PHPRC. Si el proceso de PHP encuentra un archivo php.ini en la localización especificada por la variable de entorno entonces lo usará direcatamente, en caso contrario usará la localización por defecto del archive php.ini. Esta variable de entorno puede ser usada para permitir a los clientes en entorno de hospedaje compartido usar sus propieas versiones de archivos php.ini. Por ejemplo, si existen dos sitios web: website1 y website2; localizados en las siguietnes rutas: C:\WebSites\website1 y C:\WebSites\website2 puede configurar los pools de proceso de php-cgi.exe en la sección <fastCgi> de applicationHost.config de esta forma:
El sitio web website1 puede tener su propia versión del archivo php.ini en C:\WebSites\website1, mientras que el sitio website2 puede tener su propia versión en C:\WebSites\website2. Esta configuración garantiza que si no hay un archive php.ini en la variable especificada por PHPRC entonces PHP usará el archivo php.ini por defecto localizado en la misma carpeta que el archivo php-cgi.exe. Proporcionar funcionalidad de reescritura de URL en aplicaciones PHPLa mayoría de las aplicaciones PHP dependen de la funcionalidad en los servidores web de reescritura de URL para proporcionar URLs amigables para los buscadores. IIS 7.0 proporciona capacidades de reescritura de URL medienta el módulo URL rewrite module. Diríjase a los siguientes artículos para más información sobre cómo usar el módulo de reescritura de URLs:
Recursos relacionadosPara más información sobre el hospedaje de aplicaciones PHP en IIS puede usar los siguientes recursos:
Contenido relacionadoArtículos | Recursos
|