Runbook: Der Demomodus zeigt sich nicht, oder der Aufbau der Demo scheitert mit einem erzeugten Passwort
Für alle, die eine öffentliche Demo von Exponential betreuen, und für alle, die den Demomodus dort finden, wo er nicht sein sollte. Der
Demomodus ist in einem Prozess genau dann an, wenn dieser Prozess die Umgebungsvariable EXP_DEMO_MODE mit dem Wert 1 hat (gelesen mit
getenv(), dann $_SERVER); es gibt nirgendwo sonst eine Einstellung dafür. Jedes Problem unten ist ein Prozess, der die Variable hat
oder nicht hat, wenn er sie haben sollte. Hintergrund: Demomodus.
Warnung
.htaccessbremst jede Anfrage. Sind.htaccess-Dateien erlaubt (AllowOverridealles außerNone), geschweige denn genutzt, sucht Apache sie bei jeder Anfrage in jedem Verzeichnis des Pfads und liest und wertet sie aus, und die Ladezeiten der Seiten steigen drastisch (gemessen). Die einzige wirkliche Abhilfe ist, die Funktion für den virtuellen Host abzuschalten:AllowOverride Noneim virtuellen HTTPS-Host, und die Regeln in der Konfiguration des virtuellen Hosts selbst als mod_rewrite-Regeln. Das ist in Geschwindigkeitstests im Produktivbetrieb weit schneller und die Zeit für die Optimierung einer Produktivkonfiguration unbedingt wert. Stellen Sie sofort um: Übernehmen Sie die Regeln des Beispiels für einen virtuellen HTTPS-Host in Ihren virtuellen Host (mit dem statischen Cache auchstaticcache_offload.conf), setzen SieAllowOverride None, führen Sieapachectl configtestaus, laden Sie Apache neu und testen Sie die Website. Dieselben Regeln für andere Server: nginx, LiteSpeed, Caddy, IIS, Velocity (eingebaut); wohin Regeln für virtuelle Hosts in einem Control Panel gehören: Plesk, cPanel, DirectAdmin, ISPConfig. Unter LiteSpeed oder OpenLiteSpeed kann zusätzlich der Seiten-Cache des Servers anonyme Besucher und Crawler ohne PHP bedienen: Seiten-Caching mit LiteSpeed und OpenLiteSpeed.
Inhalt
- Herausfinden, welche Prozesse sie haben
- Kein Banner in der Administration
- Der Aufbau scheitert: Der Installer hat ein Passwort erzeugt
- Der Demomodus war an und ist nach einem Neustart weg
- Die Seite zum vergessenen Passwort zeigt keinen Hinweis
- Der Demomodus erscheint auf einer Website, auf der er nicht sein darf
- Verwandte Seiten
Herausfinden, welche Prozesse sie haben
grep 'demo/mode' var/log/security.log | tail: eine Zeile pro Prozess, der mit Demomodus gestartet ist, mit seiner PID und seiner SAPI.sapi=litespeed,sapi=fpm-fcgiodersapi=apache2handlersind Web-Anfragen,sapi=cliist Cron, die Konsole oder ein Aufbau. (Die Worker von Velocity sind PHP-Prozesse der Kommandozeile und schreiben ebenfallssapi=cli.) Keine Zeile mit der SAPI des Webservers bedeutet, dass die Web-Anfragen die Variable nicht haben.- Audit: Ereignisse
system.demo.mode, eines pro Prozess. - Eine Prüfung in der Konsole, in der Shell, die Sie nutzen:
echo "$EXP_DEMO_MODE"muss1ausgeben.
Denken Sie daran, dass nur der genaue Wert 1 zählt (Leerzeichen darum werden entfernt): true, yes, on und 01 lassen ihn aus.
Kein Banner in der Administration
| Ursache | Prüfen | Abhilfe |
|---|---|---|
| Die Variable ist nur für Cron oder die Konsole gesetzt | keine Zeile demo/mode mit der SAPI des Webs | setzen Sie sie auch für den Webserver: SetEnv in .htaccess oder im virtuellen Host, im PHP-FPM-Pool, fastcgi_param oder in der Unit von Velocity (Beispiele) |
SetEnv in einer .htaccess, die der Server nicht liest | der Server hat AllowOverride None, oder die Zeile steht in der .htaccess eines anderen Verzeichnisses | setzen Sie sie in den virtuellen Host, oder erlauben Sie Overrides für den Document Root; mit LiteSpeed prüfen Sie, dass .htaccess für die Domain gelesen wird |
mod_env ist nicht geladen | der Block <IfModule mod_env.c> wird übersprungen | aktivieren Sie mod_env, oder setzen Sie die Variable im PHP-FPM-Pool |
| PHP-FPM verwirft die Umgebung | der Master hat sie, der Pool hat clear_env = yes (der Standard) | env[EXP_DEMO_MODE] = 1 im Pool, dann den Master dieses Pools neu laden |
| Der falsche Pool oder Master wurde geändert | Plesk und cPanel betreiben mehrere PHP-Versionen, jede mit eigenem Master | ändern Sie den Pool der PHP-Version der Domain und laden Sie diesen neu |
Ein anderer Wert als 1 | true, yes, on | schreiben Sie 1 |
| Eine veraltete Seite | die Seiten der Administration werden pro Benutzer zwischengespeichert | das Banner wird außerhalb der Cache-Blöcke gezeichnet; laden Sie neu, und leeren Sie den Template-Cache, wenn ein eigenes Design es innerhalb eines einbindet |
| Ein eigenes Design | das Pagelayout bindet das Banner nicht ein | {include uri='design:parts/exp_demo_mode_banner.tpl'} außerhalb jedes {cache-block} |
Der Aufbau scheitert: Der Installer hat ein Passwort erzeugt
Der Aufbau der Demo hält mit der Meldung an, dass der Installer ein Administratorpasswort erzeugt hat (oder var/log/initial-admin-password
existiert nach exp:install). Der Installer ersetzt ein Administratorpasswort, das er nicht installieren darf, durch ein zufälliges: ein
leeres immer, und ein bekanntes (wie publishing) oder eines, das kürzer als MinPasswordLength ist (wie publish), sofern der Demomodus
nicht an ist. Der Installer hatte die Variable also nicht.
| Ursache | Abhilfe |
|---|---|
Das Skript setzt die Variable nach dem Installationsbefehl, oder ohne export | export EXP_DEMO_MODE=1 vor dem ersten Befehl |
EXP_DEMO_MODE=1 cmd1 && cmd2 gibt sie nur cmd1 | exportieren Sie sie, oder stellen Sie sie vor den Installationsbefehl selbst |
sudo oder su hat die Umgebung geleert | sudo --preserve-env=EXP_DEMO_MODE, oder setzen Sie sie in dem Befehl, den su -c ausführt |
Der Wert ist nicht genau 1 | schreiben Sie 1 |
| Das Passwort ist leer | ein leeres Passwort wird nie installiert, auch nicht im Demomodus; übergeben Sie --password= mit dem veröffentlichten Wert |
| Der Kickstarter läuft als Kindprozess | er gibt seine eigene Umgebung weiter; setzen Sie die Variable für den Befehl des Kickstarters |
Der Setup-Assistent in einem Browser nimmt die Variable aus dem PHP des Webservers: Dort zeigt die Seite Administrator der Seite einen Hinweis Demo-Modus, wenn er an ist. Ohne den Hinweis setzen Sie die Variable zuerst für die Web-Anfragen.
Der Demomodus war an und ist nach einem Neustart weg
- Exponential Velocity: Setzen Sie
export EXP_DEMO_MODE=1in die Site-envvars der Demo,/etc/vc/sites-available/<site>.envvars(<site>und die Zeilesite envvarszeigt./console exp:velocity layout);exp:velocity restartunddeploylesen sie aus jeder Shell. Ein Neustart mit dem eigenenqbixctlder Engine liest sie nicht: Der Demomodus ist dann bis zum nächstenexp:velocity restartaus. Steht die Zeile noch in der gemeinsamen/etc/vc/envvars(frühere Releases), ist der Demomodus seit dem Update aus, undvar/log/security.logenthältdemo/refused ... came from an envvars file other installations share: Verschieben Sie die Zeile in die Site-envvars und starten Sie neu (Velocity: nur eine Installation). - PHP-FPM: Eine Pool-Datei, die das Control Panel (Plesk, cPanel) neu schreibt, verliert Zeilen, die es nicht verwaltet. Setzen Sie
sie über die PHP-Einstellungen des Panels für die Domain, oder nutzen Sie stattdessen
.htaccessoder den virtuellen Host. - Ein Neuaufbau: Eine frische
.htaccessaus.htaccess_roothat keinSetEnv; der Aufbau muss es jedes Mal anhängen.
Die Seite zum vergessenen Passwort zeigt keinen Hinweis
Der Kernel übergibt den Hinweis an user/forgotpassword.tpl als demo_mode_text (und an user/password.tpl als demo_mode_locked und
demo_mode_text). Die Designs des Kernels zeigen ihn. Ein Design einer Website, das diese Templates überschreibt, zeigt ihn, sobald sein
eigenes Release mit dem Hinweis installiert ist; ein eigenes Design braucht:
if first_set( $demo_mode_text, '' )|ne( '' )<div class="warning"><p>$demo_mode_text|wash</p></div>/ifDie Ablehnung selbst hängt nicht vom Template ab: Im Demomodus geht so oder so keine Mail zum Zurücksetzen an einen Administrator.
Der Demomodus erscheint auf einer Website, auf der er nicht sein darf
Ein Banner Demo-Modus, eine Zeile demo/mode in security.log oder ein Audit-Ereignis system.demo.mode auf einer Produktions-Website
bedeutet, dass ein Prozess dieser Website EXP_DEMO_MODE=1 hat. Behandeln Sie es als Vorfall: Das Administratorpasswort lässt sich nicht
mehr ändern, und die Installer würden ein bekanntes akzeptieren.
- Finden Sie heraus, woher es kommt:
grep -r EXP_DEMO_MODEüber die PHP-FPM-Pools, die virtuellen Hosts, die.htaccess-Dateien, die Dienst-Units und Drop-ins, die Crontabs,/etc/environment, die Container-Definitionen und die Vorlagen für das Ausrollen. - Entfernen Sie es dort, laden Sie diesen Dienst neu oder starten Sie ihn neu, und prüfen Sie, dass neue Zeilen
demo/modeaufhören. - Fragen Sie, wer es hinzugefügt hat und warum; prüfen Sie im Audit die Änderungen an Administratoren, solange es gesetzt war.
Verwandte Seiten
- Demomodus: der Hinweis zum Upgrade
- Demomodus für Hoster, Häufige Fragen zum Demomodus
- Rezept: eine öffentliche Demo auf LiteSpeed und Plesk betreiben
- Beispiele für den Demomodus
- Runbooks
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.