Este artículo lo guiará a través de cómo configurar el elemento FastCGI y cómo configurar PHP para que todas las aplicaciones PHP puedan alojarse en el servidor web IIS 7 y en versiones más recientes.

En la plataforma IIS, el elemento FastCGI permite que se activen los marcos de aplicación generalizados que también admiten los elementos FastCGI y permite que los elementos se alojen de manera confiable y eficiente en el servidor web IIS. FastCGI proporciona un intercambio con Common Gateway Interface (CGI), un medio de primera clase para conectar aplicaciones externas a servidores web que ha sido compatible con IIS desde su lanzamiento.

Los programas CGI son archivos que se pueden ejecutar como máximo. Los servidores web lo inician para cada solicitud, lo que define cómo se procesa la solicitud y genera respuestas especiales que luego se devuelven a ese usuario. Debido al hecho de que muchos de estos marcos no admiten la ejecución multiproceso, CGI los ayudaría a ejecutarse de manera confiable en la plataforma IIS ejecutando exactamente una sola solicitud para cada proceso. Produce un resultado muy pobre debido al costo de iniciar y cerrar un solo proceso para cada consulta.

Al proporcionar los medios por los cuales un proceso se usa una y otra vez para manejar muchas solicitudes, FastCGI resuelve todos los problemas de rendimiento que son comunes con CGI. Al proporcionar un conjunto de procesos que se pueden reutilizar y garantizar que solo un proceso procese una solicitud a la vez, FastCGI mantiene la compatibilidad con las bibliotecas que «no son seguras para subprocesos».

Aislamiento de seguridad para sitios web PHP

Todas las recomendaciones de IIS para aislar la seguridad general son consistentes con las recomendaciones utilizadas para aislar sitios web que admiten PHP en un entorno que se puede compartir para hospedaje. La recomendación para aislar sitios web PHP en un entorno de hosting compartido es coherente. De ahí las siguientes recomendaciones:

  • Asegúrese de utilizar un único grupo de aplicaciones para un solo sitio web.
  • Asegúrese de estar utilizando una cuenta de usuario dedicada para el grupo de aplicaciones.
  • Para utilizar la identidad del grupo de aplicaciones, configure una identidad de usuario anónimo.
  • Asegúrese de habilitar la suplantación de FastCGI en el archivo php.ini de la siguiente manera: (fastcgi.impersonate = 1)

Comportamiento de reciclaje del proceso PHP

Asegúrese de que FastCGI ya haya reciclado los procesos php-cgi.exe antes de comenzar a reciclar para PHP nativo. El comportamiento de reciclaje del sistema FastCGI está influenciado por lainstanceMaxRequestsAtributos de configuración. Esta propiedad en particular ahora indica la cantidad de consultas que FastCGI puede administrar antes de reciclar.

El PHP también tiene un sistema de reciclaje relacionado que el PHP_FCGI_MAX_REQUESTSAlrededores. Asegurándose de que el instanceMaxRequeststiene una configuración que es igual o menor que esa PHP_FCGI_MAX_REQUESTSEntonces puede estar seguro de que la lógica de reciclaje para el PHP nativo nunca se activará.

Para configurar los ajustes de FastCGI, puede usar ese AppCmd Line Tool o los comandos del Administrador de IIS.

R: Uso del Administrador de IIS para configurar los ajustes de reciclaje de FastCGI

Paso 1: Elija la configuración de FastCGI

Asegúrese de haber instalado el Paquete de administración de IIS en el servidor que posee y haga clic en Administrador de IIS para abrirlo. Luego haga clic dos veces en la configuración de FastCGI en el nivel del servidor.

Paso 2: elige la opción Editar

Seleccione la aplicación FastCGI particular que desea configurar, luego seleccione el panel con la etiqueta «Acción» y elija la opción de edición.

Paso 3: configure el «InstanceMaxRequests«»

Haciendo Edite la aplicación FastCGI Caja de diálogo, 10000 como la integración InstanceMaxRequestsConfigure y seleccione la pestaña Examinar EnvironmentVariables.

Paso 4: agregue el entorno

Para el Editor de la colección EnvironmentVariables, El cuadro de diálogo integra el "PHP_FCGI_MAX_REQUESTS"Variable de entorno y elija 10000 su valor.

Esto es importante porque el sistema aplicará automáticamente la siguiente configuración predeterminada si no la configura:

Para theinstanceMaxRequests = «200»

Para el PHP_FCGI_MAX_REQUESTS = «500» (utilizado principalmente en configuraciones PHP).

Cómo configurar los ajustes de reciclaje de FastCGI desde la línea de comando

Para configurar el comportamiento de reciclaje de PHP y FastCGI, use el AppCmd con los siguientes comandos:

consoleCopy

C:>%windir%system32inetsrvappcmd set config -section:system.webServer/fastCgi /[fullPath="c:{php_folder}php-cgi.exe"].instanceMaxRequests:10000
 
C:>%windir%system32inetsrvappcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath="C:{php_folder}php-cgi.exe"].environmentVariables.[name="PHP_FCGI_MAX_REQUESTS",value="10000"]"

Activar el control de versiones de PHP

La mayoría de las aplicaciones que admite PHP dependen de características o funciones que solo están disponibles para ciertas versiones de PHP. Para que este servidor en particular albergue este tipo de aplicaciones, se deben habilitar y ejecutar diferentes versiones de PHP al mismo tiempo. La ejecución de varias versiones de PHP en el mismo servidor web es totalmente compatible con el controlador de IIS FastCGI.

Un ejemplo es si planea integrar PHP 5.2.5, 5.2.1 y 4.4.8 en su servidor web como si no fuera seguro para subprocesos. Primero debe colocar los binarios PHP apropiados en el sistema de archivos y en varias carpetas para habilitar esta configuración en particular. (p.ej. C:php525, C:php521 and C:php448nts). Luego, debe crear diferentes grupos de procesos para las aplicaciones FastCGI para cada versión.

consoleCopy

C:>%windir%system32inetsrvappcmd set config /section:system.webServer/fastCGI /+[fullPath="c:php525ntsphp-cgi.exe"]
 
C:>%windir%system32inetsrvappcmd set config /section:system.webServer/fastCGI /+[fullPath="c:php521php-cgi.exe"]
 
C:>%windir%system32inetsrvappcmd set config /section:system.webServer/fastCGI /+[fullPath="c:php448php.exe"]

En una situación en la que tiene tres sitios web, Sitio 1, Sitio 2 y Sitio 3, y cada sitio necesita una versión separada de PHP para ser utilizada. Luego, puede definir las asignaciones de controladores en cada sitio individual para que apunten a un grupo de procesos correspondiente para la aplicación FastCGI.

Tenga esto en cuenta para cada grupo de procesos

Se crea una identidad única para FastCGI combinando las propiedades Argument y FullPath.

C:>%windir%system32inetsrvappcmd set config site1 -section:system.webServer/handlers /+"..[name="PHP448_via_FastCGI",path="*.php",verb='*',modules="FastCgiModule",scriptProcessor="c:php448php.exe",resourceType="Either"]
 
C:>%windir%system32inetsrvappcmd set config site2 -section:system.webServer/handlers /+"..[name="PHP521_via_FastCGI",path="*.php",verb='*',modules="FastCgiModule",scriptProcessor="c:php521php-cgi.exe",resourceType="Either"]
 
C:>%windir%system32inetsrvappcmd set config site3 -section:system.webServer/handlers /+"..[name="PHP525nts_via_FastCGI",path="*.php",verb='*',modules="FastCgiModule",scriptProcessor="c:php525ntsphp-cgi.exe",resourceType="Either"]

Recomendaciones de seguridad de PHP

Para asegurarse de tener una seguridad estricta al instalar PHP, las siguientes configuraciones son muy útiles. El primer paso para hacer esto es ubicar y hacer clic en el archivo php.ini abierto, luego editar la configuración para las configuraciones que se enumeran a continuación.

allow_url_fopen=Off allow_url_include=Off

Esta configuración se usa para deshabilitar las URL remotas que se usan para las funciones de administración de archivos. Esto puede provocar vulnerabilidades de seguridad en la inyección de código.

register_globals=Off

La configuración se utiliza para deshabilitar register_globals

open_basedir="c:inetpub"

La configuración se utiliza para restringir las áreas en las que los procesos PHP pueden escribir y leer desde un sistema de archivos.

safe_mode=Off safe_mode_gid=Off
The setting is used to disable the safe mode.
max_execution_time=30 max_input_time=60
The setting is used to limit the time for script execution
memory_limit=16M upload_max_filesize=2M post_max_size=8M max_input_nesting_levels=64

Esta configuración se utiliza para limitar el uso de la memoria y el tamaño de los archivos.

display_errors=Off log_errors=On error_log="C:pathofyourchoice"

Esta configuración se utiliza para configurar el registro y los mensajes de error.

fastcgi.logging=0

Esta configuración haría que el módulo IIS FastCGI fallara en cada solicitud cuando PHP envía datos a stderr usando el protocolo FastCGI. También deshabilita el registro FastCGI, lo que evita que PHP envíe información de error a través de stderr y genere 500 códigos de respuesta para el cliente.

expose_php=Off

Esta configuración se utiliza para ocultar la presencia de PHP.

Conclusión

Allí encontrará todos los consejos y pasos que le ayudarán a configurar el módulo Fastcgi y PHP para alojar aplicaciones PHP en IIS 7 y superior. Debería poder completar la acción una vez que haya completado los pasos de este artículo. Sin embargo, si tiene existencias, no dude en dejar un comentario para obtener ayuda del miembro de la comunidad.