GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configuración de Apache 2.4 con Fastcgi en Ubuntu 16.04:¿qué debo hacer con Php7.0-fpm.conf?

He logrado que FastCGI funcione con Apache 2.4 en Ubuntu 16.04 adaptando las instrucciones de este hilo de askubuntu, este documento de HowtoForge y este tutorial de Digital Ocean.

Todas esas fuentes dicen que cree /etc/apache2/conf-available/php7.0-fpm.conf y te digo qué poner en él. Pero después de instalar php-fpm , ya tengo ese archivo, con el siguiente contenido:

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
    # Enable http authorization headers
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+\.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
        Require all denied
    </FilesMatch>
</IfModule>

Así que, en su lugar, creé mi propia configuración, puse el código de las instrucciones y la habilité.

¿Cuál es el php7.0-fpm.conf existente? ¿por? Si lo habilito además de mi configuración, mis sitios web dejarán de funcionar. Me preocupa no estar haciendo esto de la forma en que se debe hacer y podría tener problemas en el futuro. Es realmente difícil encontrar buena documentación actual sobre esto.

Como referencia, aquí está mi procedimiento completo:

sudo apt install libapache2-mod-fastcgi php-fpm
sudo a2dismod php7.0 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
sudoedit /etc/apache2/conf-available/custom-fpm.conf

Contenido de /etc/apache2/conf-available/custom-fpm.conf :

<IfModule mod_fastcgi.c>
    AddHandler php7-fcgi .php
    Action php7-fcgi /php7-fcgi virtual
    Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header
    <Directory /usr/lib/cgi-bin>
            Require all granted
    </Directory>
</IfModule>

Continuación de los comandos:

sudo a2enconf custom-fpm
sudo systemctl restart apache2 && sudo systemctl restart php7.0-fpm

Gracias de antemano por su ayuda.

Respuesta aceptada:

Me golpeó la misma confusión, siento tu dolor. Después de leer mucho, me quedó claro que la mayoría de los artículos están desactualizados y se refieren a métodos anteriores (o, a veces, a combinaciones).

Usando PHP-FPM con la configuración integrada de Ubuntu 16.04, solo necesito hacer esto:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Hice la mayor parte de lo que hiciste, luego lo eliminé todo, cuando esa configuración personalizada no tenía sentido.

¿Para qué sirve el php7.0-fpm.conf existente?

La configuración que encontró instalada por el paquete es para usar mod_proxy_fcgi. Vincula archivos .php a través de mod_proxy_fcgi a PHP FPM, usando mod_proxy, a través de un socket de dominio Unix. Hasta donde yo sé, esta es la "receta" más actualizada (¡de las seis disponibles ahora!)

No necesita instalar libapache2-mod-fastcgi ese es un método diferente, más antiguo. No necesita escribir esa configuración, eso es para usar mod_fastcgi directamente. No necesitas instalar actions fastcgi alias como son para configurar mod_fastcgi.

Relacionado:¿Cómo matar todos los procesos aparte de uno específico?

¡Me parece extraño que ninguno de los artículos, incluso los de Ubuntu 16, mencionen que la nueva receta está configurada para usted!

Este comentario me aclaró la historia:

El método preferido ahora es fastcgi, usando cualquiera de estas recetas:

(mod_fastcgi, httpd 2.2) http://wiki.apache.org/httpd/php-fastcgi

(mod_fcgid, httpd 2.2) http://wiki.apache.org/httpd/php-fcgid

(mod_proxy_fcgi, httpd 2.4) http://wiki.apache.org/httpd/PHP-FPM

http://php.net/manual/en/install.unix.debian.php#112544 (2013)

Además, este artículo de Apache detalla las tres subopciones para configurar mod_proxy_fcgi para conectarse a FPM, usando ProxyPassMatch o SetHandler + UDS. Tenga en cuenta que UDS es desde Apache 2.4.10 según https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html, por lo que se necesitan versiones posteriores confiables o más nuevas.

https://wiki.apache.org/httpd/PHP-FPM

Así que he llegado a visualizar que ahora hay seis formas de configurarlo:

En orden histórico aproximado:

  1. Módulo Apache PHP:mod_php (a la antigua)

  2. A través de FastCGI:usando la configuración de Handler/Action/Alias/FastCgiExternalServer

    una. mod_fastcgi

    b. mod_fcgid

  3. Usando PHP-FPM a través de mod_proxy_fcgi, configurado a través de:

    una. Conector TCP (IP y puerto) ProxyPassMatch … fcgi://127.0.0.1:9000/ruta/

    b. Socket de dominio Unix (UDS) ProxyPassMatch … unix:/ruta/hacia/socket

    C. (UDS) a través de SetHandler “proxy:unix:O SetHandler “proxy:fcgi:

Descargo de responsabilidad:todo esto es nuevo para mí, así que probablemente todavía tengo cinco errores y diez cosas que aprender.


Ubuntu
  1. Cómo instalar Apache en Ubuntu 18.04

  2. Cómo instalar Apache en Ubuntu 20.04

  3. Asegure Apache con Lets Encrypt en Ubuntu 18.04

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

  5. Cómo instalar y configurar ownCloud con Apache en Ubuntu 18.04

Instale WordPress en Ubuntu 20.04 con Apache, MariaDB, PHP7.4 (LAMP)

Instale WordPress en Ubuntu 20.04 con Nginx, MariaDB, PHP7.4 (LEMP)

Cómo instalar WordPress 4.7 en Ubuntu 16.04 con Apache, MariaDB, PHP7

Cómo instalar varias versiones de PHP con Apache en Ubuntu 18.04 y 16.04

Instale Apache Kafka en Ubuntu 20.04

Cómo proteger Apache con Let's Encrypt en Ubuntu 20.04