Dies ist erforderlich, da ich einen Load Balancer in GCP für eine WordPress-Instanz implementieren muss.
GCP leitet eine Anfrage nur an die WordPress-Instanz weiter, wenn sie den Gesundheitstest besteht.
Hier ist eine typische Definition eines Gesundheitsprüfungsbildschirms
Es wird erwartet, dass der 'Anforderungspfad' 200 zurückgibt. Andernfalls wird das Zielsystem als ausgefallen betrachtet.
Wenn ich jedoch eine Seite in WordPress erstelle /index.php/newpage
, gibt sie immer 301 zurück.
Während die WordPress-Site aktiv ist, besteht die Integritätsprüfung nicht.
Gibt es eine Möglichkeit, eine Seite in WordPress zu definieren, die 200 zurückgibt? Hoffentlich wird kein zusätzliches Plugin benötigt, da ich die Pflege eines zusätzlichen Plugins vermeiden möchte.
Der letzte Ausweg für mich ist das Hinzufügen einer URL zum PHP-Server, die 200 zurückgibt. Der Status dieser URL spiegelt jedoch möglicherweise nicht 100% den Zustand der WordPress-Site wider (der beispielsweise aufgrund eines MySQL-Problems ausfallen kann). Wenn es tatsächlich das letzte Mittel ist, wie kann es am besten umgesetzt werden? Ich bin nicht kompetent mit PHP-Entwicklung.
Die Version von WordPress ist 4.6.2
quelle
Antworten:
Sie können die Startseite Ihrer WordPress-Installation für die Integritätsprüfung verwenden. Dies ist der zuverlässigste Indikator dafür, dass die WordPress-Site verfügbar ist.
quelle
/
. Zumindest auf dem offiziellen Wordpress Docker-Container, den wir verwenden, wird jedoch eine 301-Umleitung ausgegeben. Verwenden Sie dazu/index.php
einen 200-HTTP-Antwortcode , um dies zu umgehen./
URL mitindex.php
ohne301
Weiterleitung verarbeitet. Ich habe keine Erfahrung mit dem offiziellen WordPress-Container. Die Klarstellung hat noch Verdienst, danke dafür!Für das, was es wert ist, musste ich eine WordPress-Site in einem Container einrichten und eine Integritätsprüfung durchführen, um erfolgreich zu sein, bevor ich überhaupt Traffic darauf lenken konnte. Die Vorschläge für die "Startseite" funktionieren erst, nachdem WordPress über den Browser installiert wurde. Zuvor geben sie einen 302-Statuscode an zurück
/wp-admin/install.php
. Ich nudelte in den Containerordnern herum und entschied mich, sie/wp-includes/images/blank.gif
als Pfad für die Gesundheitsprüfung zu verwenden. Dadurch konnte die Integritätsprüfung erfolgreich durchgeführt werden, und der Datenverkehr wurde zum Container weitergeleitet. Von dort aus habe ich WordPress über den Browser installiert und konnte den Pfad für die Integritätsprüfung wieder ändern/
.quelle
Obwohl dies ein alter Beitrag ist, wollte ich mich darauf einlassen, da dieses Thema immer noch relevant ist und die akzeptierte Antwort in meinem Anwendungsfall nicht ideal ist. Ich würde nicht vorschlagen, dass andere dies tun; speziell für ein stark frequentiertes System.
Mein Problem mit der akzeptierten Antwort ist, dass empfohlen wird, die Homepage als Gesundheitscheck zu verwenden. Abhängig von Ihrer Site könnte dies in Ordnung sein, aber ich sehe keine Notwendigkeit, dass die Datenbank bei einer Integritätsprüfung abgefragt wird. Selbst wenn die DB-Verbindung fehlschlägt, ist die Instanz technisch immer noch fehlerfrei. Wenn beispielsweise Ihr RDS-Cluster ausfällt, wird auf der Startseite ein DB-Fehler angezeigt, der einen anzeigt,
500
sodass Sie Ihre automatische Skalierung ohne Notwendigkeit auslösen würden. Bei der Integritätsprüfung muss nur die App überprüft und sichergestellt werden, dass sie ordnungsgemäß eingerichtet ist.Meine Homepage enthält viele Abfragen, und die Integritätsprüfung allein belastet den RDS-Cluster bei der Einrichtung mehrerer Instanzen unnötig. Ich könnte eine hellere Seite angeben, aber dies ist immer noch nicht ideal, da die Integritätsprüfung sicherstellen sollte, dass die Instanz ordnungsgemäß eingerichtet ist, und ich möchte nicht, dass jedem System, das ich hochfahre, eine projektspezifische Prüfung hinzugefügt wird. Obwohl es auch dafür Anwendungsfälle gibt.
Ich benutze diesen einfachen Gesundheitscheck (
_healthCheck.php
):Ein paar Dinge zu beachten:
wordpress
Verzeichnis.wordpress
Verzeichnis einfach ignorieren können .wp-content
, um das Projektmanagement zu vereinfachen.Diese Integritätsprüfung überprüft nur das System, um sicherzustellen, dass es ordnungsgemäß eingerichtet ist. Die Datenbank muss nicht abgefragt werden, da dies für die Integritätsprüfung nicht erforderlich ist. Dies ist ein Konfigurationsproblem, das behoben werden sollte, bevor Sie Ihr System überhaupt einrichten.
quelle
Bearbeitet:
Ich habe /wp-admin/images/wordpress-logo.svg verwendet (in früheren Versionen funktionierte es mit /favicon.ico) Klingt eher nach einem Hack, aber wenn WordPress nicht funktioniert, wird ein 5xx-Fehler angezeigt, andernfalls 200 = bereits installiert, 200 = nicht installiert.
quelle