Configurando Apache 2.4 con FastCGI en Ubuntu 16.04 - ¿Qué hago con php7.0-fpm.conf?

Configurando Apache 2.4 con FastCGI en Ubuntu 16.04 - ¿Qué hago con php7.0-fpm.conf?

Logré que FastCGI funcione con Apache 2.4 en Ubuntu 16.04 adaptando las instrucciones deeste hilo de Askubuntu,este documento HowtoForge, yeste tutorial de Océano Digital.

Todas esas fuentes dicen quecrear /etc/apache2/conf-available/php7.0-fpm.confy te digo qué poner en él. Pero después de instalarlo 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é.

¿Para qué sirve el existir php7.0-fpm.conf? Si lo habilito además de mi configuración, mis sitios web dejan de funcionar. Me preocupa no estar haciendo esto de la forma prevista y podría tener problemas en el futuro. Es realmente difícil encontrar documentación buena y actualizada 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>

Los comandos continuaron:

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

Gracias de antemano por tu ayuda.

Respuesta1

Golpeo la misma confusión, siento tu dolor. Después de leer mucho, me ha quedado 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 incorporada de Ubuntu 16.04,solonecesito hacer esto:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Hice la mayor parte de lo que hiciste y 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 en 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 es necesario instalarlo, libapache2-mod-fastcgies un método antiguo y diferente. No es necesario escribir esa configuración; eso es para usar mod_fastcgi directamente. No es necesario instalarlos actions fastcgi aliasya que son para configurar mod_fastcgi.

Me parece extraño que ninguno de los artículos, ni siquiera los de Ubuntu 16, mencionen que la nueva receta está preparada para usted.

Este comentario me aclaró la historia:

El método preferido ahora es fastcgi, usando cualquiera de esas 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, utilizando ProxyPassMatch o SetHandler + UDS. Tenga en cuenta que UDS es desde Apache 2.4.10 porhttps://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.htmlentonces uno necesita backports confiables o más nuevos.

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

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

En orden aproximadamente histórico:

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

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

    a. mod_fastcgi

    b. mod_fcgid

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

    a. Socket TCP (IP y puerto) ProxyPassMatch ... fcgi://127.0.0.1:9000/path/

    b. Socket de dominio Unix (UDS) ProxyPassMatch… unix:/ruta/al/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 cosas mal y diez cosas que aprender.

información relacionada