GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Apache 2.4 mit Fastcgi auf Ubuntu 16.04 konfigurieren – Was mache ich mit Php7.0-fpm.conf?

Ich habe es geschafft, FastCGI mit Apache 2.4 auf Ubuntu 16.04 zum Laufen zu bringen, indem ich die Anweisungen aus diesem Askubuntu-Thread, diesem HowtoForge-Dokument und diesem Digital Ocean-Tutorial angepasst habe.

Alle diese Quellen sagen, dass sie erstellen sollen /etc/apache2/conf-available/php7.0-fpm.conf und dir sagen, was du hineinstecken sollst. Aber nach der Installation von php-fpm , ich habe diese Datei bereits mit folgendem Inhalt:

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

Also habe ich stattdessen meine eigene conf erstellt und den Code aus den Anweisungen darin eingefügt und aktiviert.

Was ist die vorhandene php7.0-fpm.conf zum? Wenn ich es zusätzlich zu meiner conf aktiviere, funktionieren meine Websites nicht mehr. Ich mache mir Sorgen, dass ich dies nicht so mache, wie es beabsichtigt ist, und in Zukunft Probleme bekommen könnte. Es ist wirklich schwierig, gute, aktuelle Dokumentationen dazu zu finden.

Als Referenz ist hier mein gesamtes Verfahren:

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

Inhalt von /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>

Befehle fortgesetzt:

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

Vielen Dank im Voraus für Ihre Hilfe.

Akzeptierte Antwort:

Ich traf die gleiche Verwirrung, ich fühle deinen Schmerz. Nach langem Lesen ist mir klar geworden, dass die meisten Artikel veraltet sind und sich auf frühere Methoden (oder manchmal Kombinationen) beziehen.

Wenn Sie PHP-FPM mit der integrierten Konfiguration von Ubuntu 16.04 verwenden, müssen Sie nur müssen dies tun:

sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi

Ich habe das meiste von dem getan, was Sie getan haben, und dann alles entfernt, als diese benutzerdefinierte Konfiguration keinen Sinn ergab.

Wozu dient die vorhandene php7.0-fpm.conf?

Die Konfiguration, die Sie durch das Paket installiert gefunden haben, dient der Verwendung von mod_proxy_fcgi. Es bindet .php-Dateien über mod_proxy_fcgi an PHP FPM unter Verwendung von mod_proxy über einen Unix-Domain-Socket. Soweit ich weiß, ist dies das aktuellste „Rezept“ (von den sechs jetzt verfügbaren!)

Sie müssen libapache2-mod-fastcgi nicht installieren das ist eine andere, ältere Methode. Sie müssen diese Konfiguration nicht schreiben – das ist für die direkte Verwendung von mod_fastcgi. Sie müssen actions fastcgi alias nicht installieren wie sie mod_fastcgi konfigurieren sollen.

Verwandte:Wie kann man alle Prozesse außer einem bestimmten beenden?

Ich finde es seltsam, dass keiner der Artikel – nicht einmal die für Ubuntu 16 – erwähnt, dass das neue Rezept vollständig für Sie eingerichtet ist!

Dieser Kommentar verdeutlichte die Geschichte für mich:

Die bevorzugte Methode ist jetzt fastcgi, wobei eines dieser Rezepte verwendet wird:

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

Darüber hinaus beschreibt dieser Artikel von Apache die drei Unteroptionen zum Konfigurieren von mod_proxy_fcgi für die Verbindung mit FPM, entweder mit ProxyPassMatch oder SetHandler + UDS. Beachten Sie, dass UDS seit Apache 2.4.10 per https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html ist, also braucht man Trusty-Backports oder neuer.

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

Ich bin gekommen, um zu visualisieren, dass es jetzt sechs Möglichkeiten gibt, es zu konfigurieren:

In ungefähr historischer Reihenfolge:

  1. Apache PHP-Modul:mod_php (der alte Weg)

  2. Über FastCGI – mit Handler/Action/Alias/FastCgiExternalServer config

    a. mod_fastcgi

    b. mod_fcgid

  3. Verwendung von PHP-FPM über mod_proxy_fcgi, konfiguriert über entweder:

    a. TCP-Socket (IP und Port) ProxyPassMatch … fcgi://127.0.0.1:9000/path/

    b. Unix-Domain-Socket (UDS) ProxyPassMatch … unix:/path/to/socket

    c. (UDS) über SetHandler „proxy:unix:ODER SetHandler „proxy:fcgi:

Haftungsausschluss:Das ist alles neu für mich, also habe ich wahrscheinlich noch fünf Dinge falsch und zehn Dinge zu lernen.


Ubuntu
  1. So installieren Sie Apache unter Ubuntu 18.04

  2. So installieren Sie Apache unter Ubuntu 20.04

  3. Sichern Sie Apache mit Lets Encrypt auf Ubuntu 18.04

  4. So installieren und konfigurieren Sie Nextcloud mit Apache unter Ubuntu 18.04

  5. So installieren und konfigurieren Sie ownCloud mit Apache unter Ubuntu 18.04

Installieren Sie WordPress auf Ubuntu 20.04 mit Apache, MariaDB, PHP7.4 (LAMP)

Installieren Sie WordPress auf Ubuntu 20.04 mit Nginx, MariaDB, PHP7.4 (LEMP)

So installieren Sie WordPress 4.7 auf Ubuntu 16.04 mit Apache, MariaDB, PHP7

So installieren Sie mehrere PHP-Versionen mit Apache unter Ubuntu 18.04 und 16.04

Installieren Sie Apache Kafka auf Ubuntu 20.04

So sichern Sie Apache mit Let’s Encrypt unter Ubuntu 20.04