Configurando o Apache 2.4 com FastCGI no Ubuntu 16.04 - O que eu faço com php7.0-fpm.conf?

Configurando o Apache 2.4 com FastCGI no Ubuntu 16.04 - O que eu faço com php7.0-fpm.conf?

Consegui fazer o FastCGI funcionar com Apache 2.4 no Ubuntu 16.04 adaptando as instruções deeste tópico do askubuntu,este documento HowtoForge, eeste tutorial do Oceano Digital.

Todas essas fontes dizemcriar /etc/apache2/conf-available/php7.0-fpm.confe dizer o que colocar nele. Mas depois de instalar php-fpm, já tenho esse arquivo, com o seguinte conteúdo:

# 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>

Então, em vez disso, criei meu próprio conf e coloquei o código das instruções nele e o habilitei.

Para que serve o existente php7.0-fpm.conf? Se eu habilitá-lo além da minha configuração, meus sites param de funcionar. Estou preocupado por não estar fazendo isso da maneira pretendida e poder ter problemas no futuro. É realmente difícil encontrar documentação boa e atual sobre isso.

Para referência, aqui está todo o meu procedimento:

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

Conteúdo 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>

Continuação dos comandos:

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

Agradeço antecipadamente por sua ajuda.

Responder1

Eu bati na mesma confusão, sinto sua dor. Depois de muita leitura, ficou claro para mim que a maioria dos artigos está desatualizada e refere-se a métodos anteriores (ou às vezes combinações).

Usando PHP-FPM com configuração integrada do Ubuntu 16.04, vocêapenaspreciso fazer isso:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Fiz a maior parte do que você fez e removi tudo, quando a configuração personalizada não fazia sentido.

Para que serve o php7.0-fpm.conf existente?

A configuração que você encontrou instalada pelo pacote é para usar mod_proxy_fcgi. Ele vincula arquivos .php via mod_proxy_fcgi ao PHP FPM, usando mod_proxy, por meio de um soquete de domínio Unix. Pelo que sei, esta é a "receita" mais atualizada (das seis já disponíveis!)

Você não precisa instalar libapache2-mod-fastcgiesse método diferente e antigo. Você não precisa escrever essa configuração - isso é para usar o mod_fastcgi diretamente. Você não precisa instalar actions fastcgi aliascomo estão para configurar o mod_fastcgi.

Acho estranho que nenhum dos artigos - mesmo aqueles do Ubuntu 16 - mencione que a nova receita está pronta para você!

Este comentário esclareceu a história para mim:

O método preferido agora é fastcgi, usando uma destas receitas:

(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)

Além disso, este artigo do Apache detalha as três subopções para configurar mod_proxy_fcgi para conectar-se ao FPM, usando ProxyPassMatch ou SetHandler + UDS. Observe que o UDS é desde o Apache 2.4.10 porhttps://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.htmlentão é necessário backports confiáveis ​​ou mais recentes.

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

Então vim visualizar que agora existem seis maneiras de configurá-lo:

Em ordem aproximadamente histórica:

  1. Módulo Apache PHP: mod_php (o jeito antigo)

  2. Via FastCGI - usando a configuração Handler/Action/Alias/FastCgiExternalServer

    a. mod_fastcgi

    b. mod_fcgid

  3. Usando PHP-FPM via mod_proxy_fcgi, configurado via:

    a. Soquete TCP (IP e porta) ProxyPassMatch ... fcgi://127.0.0.1:9000/path/

    b. Soquete de domínio Unix (UDS) ProxyPassMatch… unix:/caminho/para/soquete

    c. (UDS) via SetHandler "proxy:unix: OR SetHandler "proxy:fcgi:

Isenção de responsabilidade: tudo isso é novo para mim, então provavelmente ainda tenho cinco coisas erradas e dez coisas para aprender.

informação relacionada