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

3

Eu consegui que o FastCGI trabalhasse com o Apache 2.4 no Ubuntu 16.04 adaptando as instruções de este segmento askubuntu , este documento HowtoForge , e este tutorial do Oceano Digital .

Todas essas fontes dizem para criar /etc/apache2/conf-available/php7.0-fpm.conf e dizer o que colocar nele. Mas depois de instalar o php-fpm , eu 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=

    <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 eu criei meu próprio conf e coloquei o código das instruções nele e o habilitei.

Para que é o php7.0-fpm.conf existente? Se eu ativá-lo além do meu conf, meus sites param de funcionar. Eu estou preocupado que eu não esteja fazendo isso do jeito que está destinado a ser feito e poderia ter problemas no futuro. É realmente difícil encontrar uma 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>

Comandos continuados:

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

Agradecemos antecipadamente por sua ajuda.

    
por Keen Mouse 24.05.2017 / 23:40

1 resposta

9

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

Usando o PHP-FPM com a configuração interna do Ubuntu 16.04, você somente precisa fazer isso:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Eu fiz a maior parte do que você fez e, em seguida, removi tudo, quando essa configuração personalizada não fazia sentido.

  

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

A configuração que você encontrou instalada pelo pacote é para usar o mod_proxy_fcgi. Ele liga arquivos .php via mod_proxy_fcgi ao PHP FPM, usando o mod_proxy, através de um Socket de Domínio Unix. Até onde sei, esta é a "receita" mais atualizada (das seis já disponíveis!)

Você não precisa instalar o libapache2-mod-fastcgi , que é um 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 o actions fastcgi alias como eles estão para configurar o mod_fastcgi.

Eu acho estranho que nenhum dos artigos - mesmo aqueles para o Ubuntu 16 - mencionem que a nova receita está pronta para você!

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

  

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

     

(mod_fastcgi, httpd 2.2)    link

     

(mod_fcgid, httpd 2.2)    link

     

(mod_proxy_fcgi, httpd 2.4)    link

     

link (2013)

Além disso, este artigo do Apache detalha as três subopções para configurar o mod_proxy_fcgi para se conectar ao FPM, usando ProxyPassMatch ou SetHandler + UDS (acho que a UDS é desde o Apache 2.4.10, mas perdi a referência)

link

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

Em ordem histórica:

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

  2. Via FastCGI - usando o manipulador / ação / alias / configuração FastCgiExternalServer

    a. mod_fastcgi

    b. mod_fcgid

  3. Usando o 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: / path / to / socket

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

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

    
por scipilot 12.07.2017 / 08:31