GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configurazione di Apache 2.4 con Fastcgi su Ubuntu 16.04 – Cosa devo fare con Php7.0-fpm.conf?

Sono riuscito a far funzionare FastCGI con Apache 2.4 su Ubuntu 16.04 adattando le istruzioni di questo thread di askubuntu, questo documento HowtoForge e questo tutorial di Digital Ocean.

Tutte quelle fonti dicono di creare /etc/apache2/conf-available/php7.0-fpm.conf e dirti cosa metterci dentro. Ma dopo aver installato php-fpm , ho già quel file, con i seguenti contenuti:

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

Quindi ho invece creato la mia conf e ho inserito il codice dalle istruzioni e l'ho abilitato.

Qual è il php7.0-fpm.conf esistente per? Se lo abilito oltre alla mia conf, i miei siti Web smettono di funzionare. Sono preoccupato di non farlo nel modo in cui dovrebbe essere fatto e di poter avere problemi in futuro. È davvero difficile trovare una buona documentazione aggiornata su questo.

Per riferimento, ecco la mia intera procedura:

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

Contenuto di /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>

Comandi continuati:

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

Grazie in anticipo per il tuo aiuto.

Risposta accettata:

Ho colpito la stessa confusione, sento il tuo dolore. Dopo molte letture mi è diventato chiaro che la maggior parte degli articoli non sono aggiornati e si riferiscono a metodi (o talvolta combinazioni) precedenti.

Usando PHP-FPM con la configurazione integrata di Ubuntu 16.04, tu solo devi farlo:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Ho fatto la maggior parte di quello che hai fatto tu, poi ho rimosso tutto, quando quella configurazione personalizzata non aveva senso.

A cosa serve l'esistente php7.0-fpm.conf?

La configurazione che hai trovato installata dal pacchetto è per l'utilizzo di mod_proxy_fcgi. Collega i file .php tramite mod_proxy_fcgi a PHP FPM, usando mod_proxy, tramite un socket di dominio Unix. Per quanto ne so questa è la “ricetta” più aggiornata (delle sei ora disponibili!)

Non è necessario installare libapache2-mod-fastcgi questo è un metodo diverso e più vecchio. Non è necessario scrivere quella configurazione, per usare direttamente mod_fastcgi. Non è necessario installare actions fastcgi alias come sono per configurare mod_fastcgi.

Correlati:come uccidere tutti i processi a parte uno specifico?

Trovo strano che nessuno degli articoli, nemmeno quelli per Ubuntu 16, menzioni che la nuova ricetta è stata preparata per te!

Questo commento mi ha chiarito la storia:

Il metodo preferito ora è fastcgi, utilizzando una di queste ricette:

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

Inoltre, questo articolo di Apache descrive in dettaglio le tre opzioni secondarie per configurare mod_proxy_fcgi per la connessione a FPM, utilizzando ProxyPassMatch o SetHandler + UDS. Nota che UDS è a partire da Apache 2.4.10 per https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html, quindi sono necessari trusty-backport o più recenti.

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

Quindi sono arrivato a visualizzare che ora ci sono sei modi per configurarlo:

In ordine più o meno storico:

  1. Modulo Apache PHP:mod_php (alla vecchia maniera)

  2. Tramite FastCGI – utilizzando la configurazione di Handler/Action/Alias/FastCgiExternalServer

    un. mod_fastcgi

    b. mod_fcgid

  3. Utilizzando PHP-FPM tramite mod_proxy_fcgi, configurato tramite:

    un. Socket TCP (IP e porta) ProxyPassMatch … fcgi://127.0.0.1:9000/path/

    b. Socket di dominio Unix (UDS) ProxyPassMatch … unix:/percorso/a/socket

    c. (UDS) tramite SetHandler “proxy:unix:O SetHandler “proxy:fcgi:

Dichiarazione di non responsabilità:è tutto nuovo per me, quindi probabilmente ho ancora cinque cose che non vanno e dieci cose da imparare.


Ubuntu
  1. Come installare Apache su Ubuntu 18.04

  2. Come installare Apache su Ubuntu 20.04

  3. Proteggi Apache con Lets Encrypt su Ubuntu 18.04

  4. Come installare e configurare Nextcloud con Apache su Ubuntu 18.04

  5. Come installare e configurare ownCloud con Apache su Ubuntu 18.04

Installa WordPress su Ubuntu 20.04 con Apache, MariaDB, PHP7.4 (LAMP)

Installa WordPress su Ubuntu 20.04 con Nginx, MariaDB, PHP7.4 (LEMP)

Come installare WordPress 4.7 su Ubuntu 16.04 con Apache, MariaDB, PHP7

Come installare più versioni PHP con Apache su Ubuntu 18.04 e 16.04

Installa Apache Kafka su Ubuntu 20.04

Come proteggere Apache con Let's Encrypt su Ubuntu 20.04