GNU/Linux >> Tutoriales Linux >  >> Debian

Instale y configure Apache y php con mod fastcgi en Ubuntu/Debian

Manejador php basado en Fastcgi

Mod_fastcgi es un módulo de apache que permite que apache se comunique con aplicaciones habilitadas para fastcgi. Se puede usar para ejecutar código php sobre fastcgi a través del binario php-cgi que está habilitado para fastcgi.

Fastcgi tiene muchas mejoras sobre el modelo cgi tradicional de ejecutar programas externos dentro de un servidor web. Con fastcgi, varios procesos se mantienen vivos y cada proceso se reutiliza para atender múltiples solicitudes una tras otra. Hay configuraciones para controlar la cantidad máxima de solicitudes que un proceso puede atender, después de lo cual el proceso finaliza y se inicia uno nuevo.

Instalar los paquetes

Lo primero que debe hacer es instalar los paquetes necesarios desde synaptic. Necesitamos instalar el servidor apache, mod_fastcgi, mpm worker y php junto con el binario cgi. Tenga en cuenta que si ya tiene php instalado con mpm prefork y mod-php, se eliminará al instalar estos paquetes

$ sudo apt-get install apache2 libapache2-mod-fastcgi apache2-mpm-worker php5 php5-cgi

En ubuntu, el archivo de configuración de apache ubicado en

/etc/apache2/sites-enabled/000-default

El binario php cgi se encuentra en /usr/bin/php-cgi.

Configurar fastcgi

Después de instalar los paquetes, es hora de configurar apache para usar mod_fastcgi para ejecutar scripts php. Al igual que cgi, fastcgi también ejecutará procesos php usando el binario php-cgi.

Primero habilite el módulo fastcgi con el comando a2enmod

$ sudo a2enmod fastcgi

El comando a2enmod copia el archivo de configuración del módulo desde /etc/apache2/mods-disponible al directorio /etc/apache2/mods-enabled . El archivo de configuración en este caso es fastcgi.conf. Se parece a esto

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  FastCgiIpcDir /var/lib/apache2/fastcgi
</IfModule>

Mod_fastcgi registra un controlador llamado fastcgi-script con apache. Esto se puede usar para especificar qué programas ejecutar a través de mod_fastcgi.

Bien, sigamos. Lo siguiente es configurar el vhost relevante para ejecutar php usando el controlador fastcgi. Coloque la siguiente configuración dentro del bloque vhost deseado en el archivo de configuración de apache.

<Ifmodule mod_fastcgi.c>
	FastCgiServer /usr/local/bin/php-fastcgi-wrapper -processes 10 -restart-delay 1 -init-start-delay 1 -pass-header HTTP_AUTHORIZATION
	
	Alias /binary /usr/local/bin
	<Location /binary/php-fastcgi-wrapper>
		Options ExecCGI
		SetHandler fastcgi-script
	</Location>
	AddHandler php-fastcgi .php
	Action php-fastcgi /binary/php-fastcgi-wrapper
</IfModule>

El FastCgiServer registra /usr/local/bin/php-fastcgi-wrapper como la aplicación fastcgi con varias opciones.
Tenga en cuenta que este es un script de shell que iniciará el binario php-cgi con varias configuraciones. Tenga en cuenta que le pedimos a FastCgiServer que creara y administrara 10 procesos.

La línea AddHandler declara un nuevo controlador para archivos ".php" llamado php-fastcgi. Esto puede tener el nombre que desee.
La línea de acción le dice a apache que maneje el archivo php-fastcgi usando el programa cgi /cgi-bin/php-fastcgi-wrapper.

Ahora la ubicación /cgi-bin/php-fastcgi-wrapper no es real. Para que apunte a la ubicación real del script contenedor, se usa la directiva Alias. Apunta /cgi-bin a /usr/local/bin.

Guión de envoltura

Ahora viene el script contenedor que usará fastcgi para ejecutar php.

#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

PHP_FCGI_CHILDREN=5
export PHP_FCGI_CHILDREN

# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/bin/php-cgi

Tenga en cuenta la configuración de PHP_FCGI_CHILDREN. Especifica que cada proceso php debe bifurcarse y administrar 5 procesos php secundarios más. Entonces, antes se le dijo a fastcgi que creara 10 procesos. El total es 10*5 =50 procesos. Hay 2 niveles de gestión de procesos en marcha. Mod_fastcgi administra 10 procesos php y cada proceso php administra además 5 procesos cada uno.

Este archivo se almacena en la siguiente ruta

/usr/local/bin/php-fastcgi-wrapper

Asegúrese de que el archivo sea ejecutable. Haz un chmod en él

/usr/local/bin# chmod +x php-fastcgi-wrapper

La ubicación del archivo no importa. El script contenedor es necesario para que varias opciones como PHP_FCGI_MAX_REQUESTS se puedan pasar al proceso php.

Ahora reinicie apache y pruebe la configuración abriendo un script php en el navegador. Ver el contenido de la variable $_SERVER en php. Debe contener [FCGI_ROLE] => RESPONDEDOR . Esto indica que fastcgi está en acción.

También verifique la tabla de procesos usando htop o System Monitor. Debería ver 50 procesos php-cgi ejecutándose.

Recurso

http://www.fastcgi.com/drupal/node/25
http://www.opensource.apple.com/source/apache_mod_php/apache_mod_php-12/php/sapi/cgi/README.FastCGI


Debian
  1. Cómo instalar y configurar Nextcloud con Apache en Ubuntu 18.04

  2. Instalar y configurar PHP OPcache en Ubuntu 20.04

  3. Instalar y configurar Apache Spark en Ubuntu 20.04

  4. Instalar y configurar Apache y PHP con cgi en Ubuntu o Debian

  5. Configure Apache y Php con mod_fcgid en Ubuntu/Debian

Cómo instalar y configurar el servidor web Apache en Debian 11

Cómo instalar Apache con PHP-FPM en Debian 10

Instalar y configurar OwnCloud en Ubuntu 21 / Debian 11

¿Cómo instalar y configurar Apache en Debian 11?

Cómo instalar Drupal con Apache en Debian y Ubuntu

Cómo instalar y configurar Memcached con Apache y PHP