it-swarm.com.de

php5-fpm ping und status seiten fehler raus? LimitInternalRecursion-Fehler?

Ich bin mir nicht sicher, ob ich nicht in der Lage bin, aber ich habe das ursprünglich auf ask Ubuntu gepostet hier

Ich habe PHP5-FPM läuft gut. Meine gesamte Site läuft wie erwartet, fast ohne Probleme. Ich kann die Ping- und Statusseiten jedoch nicht verwenden. Wenn ich zu mydomain.com/status oder mydomain.com/ping navigiere, wird eine Fehlermeldung angezeigt (403, 404, 500, abhängig von der Konfiguration).

Ich bin sehr neu im LAMP-Stack. Ich wurde auf diese Weise vor die Wölfe geworfen, aber ich muss es herausfinden.

Ich werde alles, was ich für sachdienlich halte, unten einfügen. Wenn ich jedoch etwas verpasse, bedanke ich mich im Voraus für Ihre Geduld!

Ubuntu ausführen 14.04
Apache 2.4
PHP 5.5

In Apache aktivierte Mods (zumindest die wichtigen):

  • mpm_event
  • fastcgi
  • aktionen
  • alias

Ich werde den Großteil der fpm-Konfiguration weglassen, weil sie funktioniert, aber hier sind die Einstellungen für Ping und Status ... Pretty Vanilla-Setup.

pm.status_path = /status
ping.path = /ping

Lauschen an einem Socket, um den TCP/IP-Overhead zu reduzieren ...

listen = /var/run/php5-fpm.sock

Ich habe die php5-fpm.conf in/etc/Apache2/conf-available/konfiguriert und einen Symlink in conf-enabled, dessen Inhalt:

<IfModule mod_fastcgi.c>

    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <LocationMatch "/(ping|status)">
        SetHandler php5-fcgi-virt
        Action php5-fcgi-virt /php5-fpm-handler.fcgi virtual
    </LocationMatch>

</IfModule>

Die meiste Dokumentation, die ich gefunden habe, bezieht sich auf LocationMatch als einzigen Hotfix, der benötigt wird, um die Ping- und Statusseiten zum Laufen zu bringen. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Ich habe alles versucht, was ich im Web finden kann, ohne Erfolg. Ich habe verschiedene Änderungen an der Datei php5-fpm.conf vorgenommen und jede Änderung hat entweder keine Auswirkungen oder führt zu einem anderen Fehler. Ich habe interne Serverfehler, Berechtigungsprobleme usw. festgestellt. Bei diesem Setup wird derzeit ein interner Serverfehler von 500 angezeigt.

Jede Hilfe ist unbeschreiblich! Danke!


EDIT 09Feb2015:

Nach dem Lesen dieser hilfreichen Anleitung hier habe ich den LocationMatch in der php5-fpm.conf ersetzt durch:

<FilesMatch "^ping|status$">
    SetHandler php-script
</FilesMatch>

Dies hat das Problem nicht behoben, aber den Effekt geändert. Ich erhalte jetzt einen 404-Fehler. Immer noch nicht sicher, was ich hier vermisse ...


EDIT 10Feb2015:

Ich bin auf die populärere Vorstellung zurückgekehrt, dass der "LocationMatch" korrekt ist und der "FilesMatch" mich dem Erfolg nicht näher bringen wird. Wiederum sehr neu für Hosting- und LAMP-Server im Allgemeinen, aber ich habe festgestellt, dass bei einem 404-Fehler (bei Verwendung von "FilesMatch") nichts in /var/log/apace2/error.log protokolliert wird, sondern bei Verwendung von "LocationMatch". Ich erhalte immer noch einen 500-Fehler und einen Protokolleintrag:

[Tue Feb 10 00:29:17.216917 2015] [core:error] [pid 8978:tid 140200547378944] [client IP:Port] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Ich habe ein wenig im Internet gebuddelt, kann aber keine gute Dokumentation finden, die eine Lösung für dieses Problem beschreibt. Irgendwelche Ideen?

1
Erick Christian

Dank an Harold Snel bei Ask Ubuntu für die Beantwortung dieser Frage für mich ... Er sagte:

Ich hatte das gleiche problem Mit viel Google-ing und Versuchen habe ich es herausgefunden.

Sie müssen das, was Sie in Ihrem virtuellen Host eingerichtet haben, mit dem in der fastcgi.conf (von php-fpm.conf) konfigurierten übereinstimmen.

Außerdem ist es besser, '/ fpm-status' und '/ fpm-ping' in der /etc/php5/fpm/pool.d/www.conf-Konfiguration zu verwenden. Dann sollten Sie keine Konflikte mit Apaches eigener "Statusseite" haben.

Das ist also meine fastcgi.conf:

<IfModule mod_fastcgi.c>
    AddType application/x-httpd-fastphp5 .php
    Action application/x-httpd-fastphp5 /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
            Order allow,deny
            Allow from all
    </Directory>
</IfModule>

Und das habe ich in meiner Apache 000-default.conf hinzugefügt:

<LocationMatch "/(fpm-ping|fpm-status)">
     SetHandler php5-fcgi-virt
     Action php5-fcgi-virt /php5-fcgi virtual
</LocationMatch>

Wenn Sie den Zugriff auf Ihren Standard-Apache-vhost nicht einschränken, sollten Sie ihn im LocationMatch für den fpt-ping- und fpm-Status hinzufügen:

     Order deny,allow
     Deny from all
     Allow from <your-IP>

Um die Verwendung von php-fpm pro virtuellem Host zuzulassen, behalten Sie einfach die 'standard' libphp.so bei und fügen Sie diese nächsten Zeilen zu Ihrem virtuellen Host hinzu, um alle PHP-Dateien auf die php-fpm umzuleiten:

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
            SetHandler application/x-httpd-fastphp5
    </FilesMatch>

Viel Spaß beim php-fpm'ing !!!

2
Erick Christian