GNU/Linux >> Znalost Linux >  >> Ubuntu

Konfigurace Apache 2.4 s Fastcgi na Ubuntu 16.04 – Co mám dělat s Php7.0-fpm.conf?

Podařilo se mi přimět FastCGI pracovat s Apache 2.4 na Ubuntu 16.04 úpravou pokynů z tohoto vlákna askubuntu, tohoto dokumentu HowtoForge a tohoto výukového programu Digital Ocean.

Všechny tyto zdroje říkají vytvořit /etc/apache2/conf-available/php7.0-fpm.conf a řeknu ti, co do něj máš dát. Ale po instalaci php-fpm , již mám tento soubor s následujícím obsahem:

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

Místo toho jsem vytvořil svůj vlastní conf a vložil do něj kód z pokynů a povolil jej.

Co je stávající php7.0-fpm.conf pro? Pokud to povolím navíc ke svému conf, přestanou mi fungovat webové stránky. Obávám se, že to nedělám tak, jak je zamýšleno, a v budoucnu bych mohl mít problémy. Je opravdu těžké najít k tomu dobrou a aktuální dokumentaci.

Pro informaci zde je celý můj postup:

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

Obsah /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>

Pokračování příkazů:

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

Předem děkujeme za vaši pomoc.

Přijatá odpověď:

Zasáhl jsem stejný zmatek, cítím tvou bolest. Po dlouhém čtení mi začalo být jasné, že většina článků je zastaralá a odkazuje na předchozí metody (nebo někdy na jejich kombinace).

Pomocí PHP-FPM s vestavěnou konfigurací Ubuntu 16.04 můžete pouze musíte udělat toto:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Udělal jsem většinu toho, co vy, a pak jsem to všechno odstranil, když tato vlastní konfigurace nedávala smysl.

K čemu je stávající php7.0-fpm.conf?

Konfigurace, kterou jste našli nainstalovanou v balíčku, je pro použití mod_proxy_fcgi. Sváže soubory .php přes mod_proxy_fcgi na PHP FPM, pomocí mod_proxy, přes Unix Domain Socket. Pokud vím, toto je nejaktuálnější „recept“ (ze šesti, které jsou nyní k dispozici!)

Nemusíte instalovat libapache2-mod-fastcgi to je jiná, starší metoda. Tuto konfiguraci nemusíte psát – to je pro přímé použití mod_fastcgi. Nemusíte instalovat actions fastcgi alias jak mají konfigurovat mod_fastcgi.

Související:Jak zabít všechny procesy kromě konkrétního?

Připadá mi zvláštní, že žádný z článků – ani ty pro Ubuntu 16 – nezmiňuje, že nový recept je celý nastaven pro vás!

Tento komentář mi objasnil historii:

Preferovanou metodou je nyní fastcgi s použitím některého z těchto receptů:

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

Kromě toho tento článek od Apache podrobně popisuje tři dílčí možnosti pro konfiguraci mod_proxy_fcgi pro připojení k FPM pomocí buď ProxyPassMatch nebo SetHandler + UDS. Všimněte si, že UDS je od verze Apache 2.4.10 na https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html, takže potřebujete důvěryhodné zpětné porty nebo novější.

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

Přišel jsem si tedy představit, že nyní existuje šest způsobů, jak jej nakonfigurovat:

Zhruba v historickém pořadí:

  1. Modul Apache PHP:mod_php (starý způsob)

  2. Přes FastCGI – pomocí konfigurace Handler/Action/Alias/FastCgiExternalServer

    A. mod_fastcgi

    b. mod_fcgid

  3. Použití PHP-FPM přes mod_proxy_fcgi, nakonfigurované buď pomocí:

    A. TCP socket (IP a port) ProxyPassMatch … fcgi://127.0.0.1:9000/path/

    b. Unix domain socket (UDS) ProxyPassMatch … unix:/path/to/socket

    C. (UDS) přes SetHandler “proxy:unix:NEBO SetHandler “proxy:fcgi:

Zřeknutí se odpovědnosti:je to pro mě všechno nové, takže mám pravděpodobně stále pět věcí špatně a deset věcí, které se musím naučit.


Ubuntu
  1. Jak nainstalovat Apache na Ubuntu 18.04

  2. Jak nainstalovat Apache na Ubuntu 20.04

  3. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 18.04

  1. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat ownCloud s Apache na Ubuntu 18.04

  3. Jak nainstalovat Joomla s Apache na Ubuntu 18.04

  1. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 20.04

  2. Jak nainstalovat OroCRM s Nginx na Ubuntu 16.04 LTS

  3. Jak nastavit Magento 2 s lakem a Apache na Ubuntu 16.04