Zum Hauptinhalt springen
AllsWeb
Prüfung der Serverbereitschaft für 6amMart

Prüfen Sie den Server, bevor der Shop öffnet

SixPreflight ist ein Prüfwerkzeug für die Serverbereitschaft für 6amMart. Einen Ordner hochladen, im Browser öffnen, und bis zu 163 Prüfungen enden in einem Satz: bereit zum Start oder nicht bereit — und was genau zuerst zu beheben ist.

SixPreflight holenMit einem Ingenieur sprechenDokumentation lesen

Immer das aktuelle Release, und es läuft auf Ihrem eigenen Server. Es liest: Es liest und schreibt nie eine Anwendungstabelle und versendet nie E-Mails oder SMS an irgendjemanden. Drei Oberflächen können außerhalb des eigenen Ordners des Werkzeugs handeln, und eine vierte schreibt darin — jede nur, wenn Sie ihre Schaltfläche drücken. Siehe „Was es ändern wird, wenn Sie es darum bitten“.

163

unterschiedliche Prüfungen im Code

10

Schritte, die günstigsten und am ehesten kaputten zuerst

1

Satz am Ende davon

A–F

Note, mit jedem Blocker benannt

Lesen Sie diese Seite mit einem KI-Assistenten?

Als Markdown ansehen

SixPreflight bekommen

SixPreflight ist ein PHP-Ordner, den Sie hochladen. Nichts vorher zu installieren und nichts anzumelden. Es ist kostenlos.

Ausprobieren, bevor Sie herunterladen

Live-6amMart-ShopSixPreflight in der Demo

Demo-Passwort

Password: a3uap648vnh7yqenc9vb

No username — SixPreflight asks for the password only.

The shop runs a real dataset — tens of thousands of orders — so the screens behave the way they will on yours, not the way a demo with forty products does. Two things are switched off on the demo: maps and SMS one-time passwords. Both use keys locked to a single server, which is how they should be held, so they cannot answer from a demo host. They work normally on your own install.

SixPreflight holen

Free
  • Updates inklusive — jede Veröffentlichung erscheint ohne weitere Kosten bei CodeCanyon. Kein Lizenzserver, kein Schlüssel zu erneuern.
  • Die erste Einrichtung ist kostenlos — schicken Sie Ihren Kaufcode und die Serverdaten per WhatsApp oder E-Mail.
Bei CodeCanyon holen
Handbuch lesen

Nichts zu aktivieren — läuft auf Ihrem eigenen Server, meldet sich nirgends, und funktioniert weiter, auch wenn diese Website ausfällt.

Was es tut

Für einen Shop-Betreiber, nicht für einen Ingenieur

Sie haben 6amMart gekauft, Sie haben einen Server gemietet, und jemand hat es installiert. Die Website lädt. Das ist nicht dasselbe wie bereit sein. Ein Shop kann im Browser völlig normal aussehen, während sein Payment-Gateway keine funktionierenden Zugangsdaten hat, seine Push-Benachrichtigungen ins Leere gehen, seine .env-Datei für jeden im Internet lesbar ist, seine geplanten Aufgaben noch kein einziges Mal gelaufen sind und seine Datenbank so eingestellt ist, dass sie einen Bruchteil des Speichers nutzt, für den Sie bezahlen. Nichts davon zeigt sich, bis ein echter Kunde eine echte Bestellung aufgibt und still etwas schiefgeht.

SixPreflight ist die Prüfung, die Sie ausführen, bevor das passiert. Sie laden einen Ordner in Ihre Website hoch, öffnen ihn im Browser, setzen ein Passwort und drücken eine Schaltfläche. Es schaut auf den Server, wie eine sorgfältige Fachkraft es täte — Hardware, PHP, die Datenbankeinstellungen, den Webserver, Dateiberechtigungen, was das Internet erreichen kann, und ob Zahlungen, E-Mail, SMS, Karten und Push-Benachrichtigungen tatsächlich funktionieren, wenn man sie im Ernstfall aufruft.

Dann gibt es Ihnen einen Satz — „Bereit zum Start“ oder „Nicht bereit für Bestellungen“ — eine Note und eine sortierte Liste dessen, was zu beheben ist, jeder Punkt mit der genauen Zeile, die zu ändern ist, der Datei, in der sie steht, und dem, was es Ihren Shop kostet, wenn Sie es lassen.

Bereit zum StartNicht bereit für Bestellungen

Der Scan selbst liest nur. Wo das Werkzeug handeln kann, handelt es auf eine Schaltfläche hin, die Sie drücken, nie von sich aus.

Mit versus ohne

Was Sie wissen, bevor Sie öffnen

Derselbe Server auf beiden Seiten. Der Unterschied ist, ob Sie die Probleme finden oder ein zahlender Kunde.

  • Der Tag der Eröffnung

    Ohne SixPreflight

    Die Seite lädt im Browser, also öffnen Sie. Ein Shop kann völlig normal aussehen, während sein Payment-Gateway keine funktionierenden Zugangsdaten hat, seine Push-Nachrichten ins Nichts gehen, seine .env für jeden im Internet lesbar ist, seine geplanten Jobs nie ein einziges Mal gelaufen sind und seine Datenbank auf einen Bruchteil des Speichers eingestellt ist, den Sie bezahlen.

    Mit SixPreflight

    Bis zu 163 Prüfungen enden in einem Satz — bereit zu öffnen, oder nicht bereit für Bestellungen — mit einer Note von A bis F und einer geordneten Liste, was zuerst zu beheben ist.

  • Wie Sie erfahren, dass etwas kaputt ist

    Ohne SixPreflight

    Ein echter Kunde gibt eine echte Bestellung auf, und etwas geht still schief. Das ist Ihr erstes Signal, und es kostet Sie die Bestellung und den Kunden.

    Mit SixPreflight

    Sie erfahren es vor der Eröffnung, aus einem Scan, den Sie selbst starten — jeder Punkt nennt die genaue Zeile, die Datei, in der sie steht, und was es Ihren Shop kostet, sie so zu lassen.

  • Zugangsdaten, die vorhanden aber falsch sind

    Ohne SixPreflight

    Sie sehen genauso aus wie funktionierende. Eine Konfigurationsdatei mit einem Wert sagt Ihnen, dass der Wert da ist — nicht, dass er richtig ist.

    Mit SixPreflight

    Echte Aufrufe entscheiden das: ein echtes Firebase-Token, erzeugt und an Googles Endpunkt gesendet, ein echtes SMTP-Gespräch mit EHLO / STARTTLS / AUTH und ein Live-Geocoding-Aufruf an Google Maps. Vorhanden-aber-falsch scheitert hier — der einzige Ort, an dem es auffällt, bevor ein Kunde es findet.

  • Was das Internet schon erreicht

    Ohne SixPreflight

    Sie nehmen an, dass die Dateien, die nicht öffentlich sein sollten, es auch nicht sind. Nichts auf dem Server sagt Ihnen das Gegenteil, weil nichts die Anfragen stellt.

    Mit SixPreflight

    Es holt eine feste Liste bekannt riskanter Adressen von Ihrer eigenen Live-Seite — /.env, /.git/config, /artisan, die database.sql des Installers und die eigenen Dateien des Werkzeugs — und berichtet, was tatsächlich zurückkam.

  • Was es kostet

    Ohne SixPreflight

    Es von einem Kunden zu erfahren ist die teure Variante.

    Mit SixPreflight

    Nichts. SixPreflight ist kostenlos auf CodeCanyon, und die erste Einrichtung ist kostenlos. Nichts im Paket prüft eine Lizenz, ein Konto oder ein Ablaufdatum, und nichts darin meldet irgendetwas an AllsWeb zurück.

Auf echten Servern ausgeführt

Was es erreichte, als wir es auf unsere eigenen Maschinen gerichtet haben

Ein Prüfwerkzeug, das nie ein Ergebnis veröffentlicht hat, ist eine Behauptung. Diese hier stammen aus derselben Messreihe wie der SixPanel-Benchmark — das Werkzeug auf echten Servern mit einem echten Shop ausgerollt und so bewertet, wie ein Browser es bewertet, nicht aus einer Shell.

SixPanel

97 · A

Zeilen, die Aufmerksamkeit brauchen: Keine

SixPanel Docker

96 · A

Zeilen, die Aufmerksamkeit brauchen: Keine

Einen gedeckelten Wert richtig lesen

Der Wert wird bei 88 gedeckelt, solange eine einzige Zeile im Roten steht, ganz gleich wie gut der Rest ist. Das ist Absicht — ein Shop, der nicht handeln kann, soll sich nicht wie ein B+ lesen —, aber es bedeutet, dass eine gedeckelte Zahl fast nichts über die anderen neunundneunzig Prüfungen aussagt. Früher in derselben Runde stand ein Server auf 88 und ein anderer auf 96, und der Unterschied zwischen ihren zugrunde liegenden Werten betrug über etwa hundert Prüfungen hinweg 0,03. Der gesamte sichtbare Abstand war ein veralteter Hintergrund-Job. Lesen Sie immer die roten Zeilen, nie die Überschrift allein.

Ein Defekt, den diese Runde im Werkzeug selbst gefunden hat

Der Scan-Runner von SixPreflight hatte überhaupt keine Fehlerbehandlung. Auf einem Server, auf dem der Hoster eine PHP-Funktion deaktiviert hat, ist ihr Aufruf in PHP 8 keine unterdrückbare Warnung — es ist ein fataler Fehler —, sodass eine einzige deaktivierte Funktion den gesamten Scan mit einem Stack Trace statt mit einem Report beendete. Genau das ist das geteilte cPanel- und Plesk-Hosting, das dieses Werkzeug am ehesten überhaupt braucht. Es ist behoben: Eine deaktivierte Funktion ist jetzt eine Zeile, die sagt, dass sie nicht gemessen werden konnte, und der Scan läuft zu Ende.

Und einer, den es auf einem gehärteten Server falsch macht

Auf einem Server, auf dem PHP durch eine Kernel-Sandbox eingeschlossen ist, kann SixPreflight die Konfiguration des Webservers nicht lesen — und es meldet eine Timeout-Einstellung als nicht gesetzt, obwohl der Webserver sie tatsächlich gesetzt hat. Fehlender Beleg wird als Beleg für Fehlen gelesen, was einen Server dafür bestraft, gehärtet zu sein. Es steht hier, weil ein Werkzeug, das seine eigenen blinden Flecken meldet, mehr wert ist als eines, das keine hat.

Wie es funktioniert

In Schritten, nicht als ein langes Warten

Die Seite selbst führt keine Prüfungen aus. Sie zeichnet eine leere Hülle, und dann fragt der Browser den Server nach einem Schritt nach dem anderen.

  • Der erste Bildaufbau kommt sofort

    Auf der Testinstallation gemessen: 6.8 KB in 2 ms, gegenüber 36 KB und etwa 1.6 s, als die Seite die ganze Arbeit vor dem Rendern erledigte. Auf einem Server, der per Definition möglicherweise falsch konfiguriert ist, ist es der falsche Handel, auf die langsamste Prüfung zu warten, bevor überhaupt etwas erscheint.

  • Der Fortschrittsbalken ist echt

    Abgeschlossene Schritte gegen Gesamtschritte, keine Animation. Wenn er stehen bleibt, hängt tatsächlich etwas, und die Beschriftung sagt, welche Prüfung.

  • Eine hängende Prüfung kann die Seite nicht lahmlegen

    Jeder Schritt ist eine eigene kurze Anfrage, nichts läuft also in max_execution_time. Ein Schritt, der einen Fehler wirft, wird als Befund gemeldet und der Scan läuft weiter. Jeder fertige Schritt wird sofort auf die Festplatte geschrieben, ein unterbrochener Scan ist also trotzdem lesbar.

Zwei Schaltflächen

  • Jetzt prüfen

    Liest die lokale Konfiguration und ermittelt die öffentliche IP des Servers — etwa eine Sekunde.

  • Tiefere Prüfung

    Ergänzt die beiden Schritte, die echte ausgehende Aufrufe machen: die Tests der öffentlichen Erreichbarkeit gegen Ihre eigene URL und die Live-Tests der Integrationen.

Ehrliches Detail: „Jetzt prüfen“ ist nicht vollständig offline. Die Zeile zur öffentlichen IP fragt einen externen Echo-Dienst — ifconfig.me, dann api.ipify.org, dann icanhazip.com, in dieser Reihenfolge versucht und zwischen Scans zwischengespeichert, bewusst drei Anbieter, damit eine schlechte Minute keine bekannt gute Antwort überschreibt.

Die drei Arten, wie es läuft

SixPreflight erkennt, was es vor sich hat, und ändert, was es sagt, denn ehrlicher Rat sieht in jedem Fall anders aus.

  • Auf einem einfachen Server — noch keine Anwendung installiert

    Das ist der Modus, um einen Server auszuwählen oder einen neuen vorzubereiten. Hardware, PHP, der Datenbankserver, der Webserver, Berechtigungen und öffentliche Erreichbarkeit werden weiterhin alle geprüft. Der .env-Schritt gibt nichts zurück, der Anwendungsschritt gibt nur die Profilzeile zurück, und der Datenbankschritt meldet „nicht geprüft — hier ist keine Anwendung, die Zugangsdaten hält“ als bestanden, statt eine fehlende Verbindung auf einer zu Recht leeren Maschine zur schlechtesten Zeile werden zu lassen.

    Sie können die Datenbank einer leeren Maschine trotzdem prüfen, indem Sie env_path auf eine Platzhalter-.env zeigen lassen, die die Zugangsdaten enthält.

  • In Ihrem Shop — an der 6amMart-Admin-Codebasis

    Laden Sie den Ordner in public/ hoch, das Verzeichnis, das Ihr Webserver tatsächlich ausliefert. Die Anwendungswurzel wird gefunden, indem vom eigenen Ordner des Werkzeugs aus höchstens fünf Ebenen nach oben gegangen wird, bis zu dem Verzeichnis, das artisan enthält — so funktionieren sowohl public/preflight/ als auch ein Ordner in der Anwendungswurzel, und ein Upload, der tiefer als fünf Ebenen vergraben ist, bekommt stillschweigend den Standalone-Modus. Der richtige Platz ist public/ — ein Ordner in der Anwendungswurzel ist per URL nur dann erreichbar, wenn das Document Root falsch ist, und genau das ist das Schwerwiegendste, wonach dieses Werkzeug sucht.

    Hier läuft jede Prüfung, einschließlich derer, die speziell aus der 6amMart-Codebasis heraus geschrieben wurden: der Scheduler, der Stores und Fahrer auszahlt, Module, die als aktiviert markiert sind, aber fehlen, die genauen PHP-Erweiterungen, die seine Vendor-Pakete brauchen, und die Websocket-Schicht hinter der Live-Lieferverfolgung. Auf jeder anderen Laravel-Anwendung gilt alles über den Server weiterhin genau so, und die 6amMart-spezifischen Prüfungen werden übersprungen statt geraten.

  • In SixPanel eingebettet

    Auf einem SixPanel-Server gehören der Webserver, PHP, die Datenbankkonfiguration, cron, der Queue-Worker und das Zertifikat dem Panel, und es schreibt diese Dateien bei jedem Deployment aus seinen eigenen Vorlagen neu — ein von Hand eingefügter Wert geht beim nächsten Deployment also stillschweigend verloren. In diesem Modus lässt SixPreflight die Blöcke zum Einfügen, die rohen nginx- und Apache-Blöcke, die Zeilen zum Neustart von php-fpm und die Pfade nach dem Muster „wo im Hosting-Panel zu klicken ist“ weg und verweist stattdessen auf die SixPanel-Seite, der die jeweilige Einstellung gehört. Alles zur Anwendung behält es — .env, Geschäftseinstellungen, fehlende oder falsche Schlüssel, eine falsche APP_URL, kaputten Speicher, Fehler im Log — denn das ist die Hälfte, die das Panel nicht selbst in Ordnung bringen kann. Es sagt in einer Zeile oben auf der Seite, in welchem Modus es ist, der Modus ist also nie ein Rätsel.

    Über den Modus entscheidet eine Umgebungsvariable, die vom Serverblock gesetzt wird, der den Pfad beantwortet (SIXPANEL_EMBED=1), oder 'embedded' => true in config.php. Ein Anfrage-Header ist bewusst nicht das primäre Signal: Einen Header schreibt, wer die Anfrage stellt, er würde also nur den Rahmen des Panels überstehen und sonst nichts — öffnen Sie dieselbe Seite in einem neuen Tab, und das Werkzeug fiele auf demselben Server auf Standalone-Ratschläge zurück. X-SixPanel-Embed: 1 wird nur beachtet, wenn Sie 'trust_embed_header' einschalten, was standardmäßig aus ist, denn ungesichert könnte sich damit jeder Besucher die Ansicht für verwaltete Server selbst geben, auf einem Server, den in Wahrheit er selbst in Ordnung bringen müsste.

Was es prüft

163 unterschiedliche Prüfungen, in zehn Schritten

163 unterschiedliche Prüfungen stecken im Code, ausgeführt in zehn Schritten, sortiert nach den günstigsten und am ehesten kaputten zuerst. Die zwei Schritte, die ausgehende Aufrufe machen, sind als langsam markiert und laufen nur bei einer Tieferen Prüfung.

Die zehn Scan-Schritte, was jeder betrachtet und wie viele unterschiedliche Prüfungen er enthält.
SchrittWas er betrachtetPrüfungenEchte Beispiele
System & HardwareDie Maschine, für die Sie zahlen7vCPU-Anzahl, RAM, Swap, freier Speicherplatz, Lastdurchschnitt, OS-Release, ob überhaupt ein Backup-Werkzeug vorhanden ist
PHP-LaufzeitDie Sprache, auf der der Shop läuft18PHP-Versionsbereich, 25 benötigte Erweiterungen, memory_limit, effektive max_execution_time, display_errors, OPcache an/aus, OPcache-Speicher und Dateianzahl, Trefferrate
AnwendungszustandLaravel und 6amMart selbst22.env in git eingecheckt, ausstehende Migrationen, fehlgeschlagene Jobs, Rückstau in der Warteschlange, Loggröße, Fehleranzahl im Log, ob der Scheduler je gelaufen ist, gültige Modulliste, vertrauenswürdige Proxys, vorhandene Installationseinstellungen
Umgebung (.env)Die eine Datei, die alles liest14doppelte Schlüssel (der letzte gewinnt, Ihre Änderung tut also nichts), unsichtbare \r-Zeichen, ein ungültiger oder mitgelieferter APP_KEY, APP_DEBUG=true, eine fehlerhafte APP_URL, Schlüssel, die niemand liest, Schlüssel, die null werden, sobald die Konfiguration gecacht ist
Host-Identität & BerechtigungenWem die Dateien gehören9öffentliche IPv4 und IPv6, der PHP-Benutzer, Dateibesitz, die sechs Verzeichnisse, die beschreibbar sein müssen, für alle beschreibbare Dateien, eine für alle lesbare .env, alles Beschreibbare und Ausführbare in public/
Webservernginx oder Apache davor17Handler-Typ, gzip, Server-Tokens, FastCGI-Lese-Zeitlimit, Apache-Module und MPM, php-fpm-Worker-Anzahl gegen Speicher, die Kette der Uploadgrößen, Live-Komprimierung, statisches Caching, HSTS, Zertifikatsablauf
Cache, Warteschlange & EchtzeitArbeit im Hintergrund11Warteschlangen-Verbindung, ob ein Queue-Worker tatsächlich läuft und überwacht wird, Sitzungs- und Cache-Treiber, Redis, Memcached, Reverb-Zugangsdaten und -Schema, Pusher-Zugangsdaten
DatenbankkonfigurationWo das Geld liegt32InnoDB-Buffer-Pool, bemessen an Ihren echten Daten und Ihrem RAM, Redo-Log, Flush-Methode, max_connections gegen php-fpm-Worker, skip_name_resolve, sql_mode, Zeichensatz, Zeitversatz zwischen PHP und Datenbank, Trefferrate des Buffer-Pools, temporäre Tabellen auf der Festplatte, Rechte des Datenbankbenutzers
Öffentliche ErreichbarkeitlangsamWas ein Fremder abrufen kann12HTTPS, .env über das Web lesbar, .git/config lesbar, laravel.log ausgeliefert, eine hochgeladene .php-Datei, die tatsächlich ausgeführt wird, Debugbar oder Telescope antworten, zurückgelassene Datenbank-Dumps des Installers, die eigenen Dateien dieses Werkzeugs als Text ausgeliefert
Zahlungen, E-Mail & SMSlangsamDie Dienste, die funktionieren müssen21ein echter SMTP-Dialog, ein echtes Firebase-Token, ein echter Google-Maps-Geokodierungsaufruf, nutzbare Zahlungsmethoden, SMS-Gateway-Zugangsdaten, beschreibbarer Speicher, Wartungsmodus, reCAPTCHA, Zeitzone, Währung

Die Spalte ergibt 163. Zwei Zeilen tragen eine Einschränkung.

  • Eine der 32 Datenbankprüfungen — db_standalone — existiert nur für den Fall, dass keine Anwendung da ist, die Zugangsdaten hält. Sie steht stellvertretend für die anderen 31, statt zu ihnen dazuzukommen.
  • Zwei der 21 Prüfungen zu Zahlungen/E-Mail/SMS sind Präfix-Grundlagen (sms_, social_), die sich zur Laufzeit zu je einer Zeile pro aktivem Gateway oder pro konfiguriertem Social Login ausweiten. Dieser Schritt kann also auf einem gut ausgestatteten Shop mehr als 21 Zeilen ausgeben, oder auf einem leeren weniger.

Kein einzelner Durchlauf führt alle 163 aus — und hier ist genau, warum

  1. 01

    Ein installierter Shop kann höchstens 162 unterschiedliche Zeilen erzeugen — und kein einzelner Durchlauf gibt alle 162 aus

    db_standalone wird nur ausgegeben, wenn keine Anwendung da ist, ein installierter Shop kann sie also nie sehen; das ist die 163. Die 162 sind eine Obergrenze, kein Durchlauf.

  2. 02

    Eine Tiefere Prüfung auf einem installierten Shop gibt 160 aus

    Wenn der tiefere Schritt folgen wird, unterdrückt die Webserver-Klasse ihre beiden Zwillinge, die die Konfiguration lesen — nginx gzip und server_tokens oder Apache keepalive und server_tokens — denn die Live-Messung beantwortet dieselbe Frage anhand einer echten Antwort, und die beiden können sich widersprechen (gzip an; mit einer gzip_types-Liste, die application/json auslässt, ist es laut Konfiguration bestanden und laut Messung eine Warnung, bei ein und derselben Einstellung). Diese Zwillinge stecken innerhalb der 162; sie sind der Grund, warum eine Tiefere Prüfung bei 160 statt bei 162 landet, und kein zusätzliches Paar obendrauf.

  3. 03

    Ein „Jetzt prüfen“ gibt 123 aus — es überspringt 39

    Diese 39 sind die 12 Prüfungen zur öffentlichen Erreichbarkeit, die 21 Prüfungen zu Zahlungen/E-Mail/SMS und die sechs Webserver-Zeilen, die sich nur an einer Live-Antwort ablesen lassen — compression, static_cache, keepalive_live, server_banner, hsts und cert_expiry. Die beiden Zwillinge, die die Konfiguration lesen, sind in diesem Durchlauf vorhanden, denn die Live-Messung, die sie ersetzt hätte, kommt nicht.

  4. 04

    Beide Zahlen zählen unterschiedliche Schlüssel, und ein echter Server landet noch niedriger — nehmen Sie das untere Ende

    Drei der 17 Webserver-Schlüssel gehören zu dem Webserver, den Sie gerade nicht betreiben (nginx steuert client_max_body_size, gzip und fastcgi_read_timeout bei; Apache steuert apache_modules, apache_mpm und keepalive bei), und der Datenbankschritt trägt Paare, die von der Engine abhängen — MySQL 8.0.30+ meldet innodb_redo_log_capacity, alles andere meldet innodb_log_file_size, nie beides. Allein durch die Webserver-Aufteilung gibt eine Tiefere Prüfung auf einer nginx- oder einer Apache-Installation höchstens 157 aus und ein „Jetzt prüfen“ höchstens 120; jede von der Engine abhängige Datenbankzeile drückt das weiter.

  5. 05

    Auf einem einfachen Server haben 40 Zeilen nichts zu lesen

    Die 14 .env-Prüfungen, die 12 Laravel-Anwendungsprüfungen, die 9 6amMart-Plattformprüfungen und die 5 Echtzeitprüfungen haben überhaupt nichts zu lesen — 40 Zeilen, sodass aus dem Anwendungsschritt nur die Profilzeile bleibt.

Die ehrliche Form ist also „bis zu 163“ — wobei eine Tiefere Prüfung auf einer 6amMart-Installation den vollen ihr verfügbaren Satz ausführt, also 160 unterschiedliche Schlüssel und höchstens 157 Zeilen auf einer echten Maschine mit einem Webserver.

Keiner der beiden langsamen Schritte ist Raterei

  • Der Erreichbarkeitsschritt ruft echte Adressen Ihrer echten Website ab

    Er ruft eine feste Liste bekannt riskanter Adressen von Ihrer eigenen laufenden Website ab — /.env, /.git/config, /storage/logs/laravel.log, /artisan, /composer.json, /vendor/autoload.php, database.sql und public.zip des Installers, /telescope, /_debugbar/open, die Route zur Store-Anmeldung und die eigenen Dateien dieses Werkzeugs — und meldet, was tatsächlich zurückkam.

  • Der Dienste-Schritt macht echte Aufrufe

    Er erzeugt ein echtes JWT und schickt es an den Token-Endpunkt von Google, um zu belegen, dass Ihr Firebase-Servicekonto funktioniert, führt einen echten SMTP-Dialog mit EHLO / STARTTLS / AUTH und macht einen echten Geokodierungsaufruf an Google Maps. Zugangsdaten, die vorhanden, aber falsch sind, fallen hier durch, und das ist die einzige Stelle, an der sie auffallen können, bevor ein Kunde sie findet.

Die SMTP-Prüfung endet bei der Authentifizierung. Sie sendet EHLO, verhandelt STARTTLS, authentifiziert sich und beendet dann mit QUIT — es gibt in dieser Klasse kein MAIL FROM, kein RCPT TO und kein DATA, es wird also niemandem etwas zugestellt.

Zwei weitere Seiten, die nicht Teil der 163 sind

Beide sind echte Produktoberflächen, und keine fließt in die Bewertung ein.

  • Live-Lieferverfolgung — 15 Prüfungen

    Eine eigene Seite, die den Reverb-Prozess, den Prozessmanager, den lauschenden Socket, Firewall, Proxy, Zertifikat, Zugangsdaten, App-Schlüssel, App-Einstellungen, Kanal-Authentifizierung, Client-Ziel, Konfigurations-Cache, Warteschlange, CDN und Treiber abdeckt. Für einen 6amMart-Käufer ist das die Funktion hinter der Live-Karte, und sie wird getrennt geprüft, statt in die Serverbewertung eingerechnet zu werden.

  • Test-Bestellbenachrichtigung

    Sendet eine echte Push-Benachrichtigung an ein echtes Store- oder Fahrergerät, über den plattformeigenen artisan-Befehl statt über eine selbst gebaute Nachricht. Es gibt eine Schaltfläche „Zeigen, was gesendet würde“, die es trocken durchspielt, aber die Standardschaltfläche sendet echt.

Wie es bewertet

Eine Zahl — und sie sagt Ihnen, was sie nicht messen konnte

Jede Prüfung endet als eines von vier Dingen: bestanden, Warnung, Problem oder nicht gemessen.

bestandenWarnungProblemnicht gemessen

Die Zahl ist ein gewichteter Durchschnitt, keine Zählung. Die Gewichtungstabelle reicht von 200 bis hinunter zu 11, festgelegt danach, was es Sie kostet, wenn es falsch ist — APP_DEBUG=true liegt bei 200, die Zeile mit dem OS-Namen bei 12, und app_profile und public_ipv6 liegen bei 11. Jeder Schlüssel, der nicht in dieser Tabelle steht, fällt auf einen Standardwert von 10, und genau ein aktiver Scan-Schlüssel tut das: db_standalone, der tatsächlich keine Einstufung hat und im eigenen Abweichungsbericht des Werkzeugs auftaucht. Ein Bestanden bringt sein volles Gewicht, eine Warnung die Hälfte, ein Problem gar nichts.

Die fünf Notenbereiche und was jeder bedeutet.
PunktzahlNoteWas sie bedeutet
90 und darüberABereit für den Produktivbetrieb
75–89BGut. Die gelben Punkte abarbeiten und erneut prüfen
55–74CMachbar, aber es bleibt echte Leistung liegen
35–54DNicht bereit. Mehrere Einstellungen werden unter Last wehtun
Unter 35FGehen Sie mit dieser Konfiguration nicht live

Blocker deckeln die Note

Manche Fehlschläge sind keine „Punktabzüge“ — sie bedeuten, dass der Shop nicht verkaufen kann. Ein Blocker deckelt die Punktzahl bei 74, zwei bei 54, drei oder mehr bei 34, ein Blocker drückt den Notenbereich also nach unten und der gewichtete Durchschnitt entscheidet nur noch, wo innerhalb dieses Bereichs Sie landen. Ganz ohne Blocker deckelt eine einzige rote Zeile die Punktzahl trotzdem bei 88 — ein A ist mit irgendetwas Rotem auf der Seite nicht erreichbar.

Die Blocker-Liste ist kurz und konkret, und sie umfasst genau neunzehn benannte Schlüssel plus alles, was mit sms_ beginnt: .env über das Web lesbar, Logs über das Web ausgeliefert, die Website im Wartungsmodus, eine hochgeladene .php-Datei, die ausgeführt wird, neue Stores können sich nicht registrieren, keine nutzbare Zahlungsmethode, die Datenbank nicht erreichbar, falsch konfigurierter Speicher, E-Mail schlägt fehl, SMS schlägt fehl, ein sql_mode, unter dem die Plattform kaputtgeht, der falsche Zeichensatz, der Scheduler läuft nicht, ein Zertifikat, das innerhalb von 14 Tagen abläuft, und fünf weitere .env-Fehler — ein fehlender oder mitgelieferter APP_KEY, APP_DEBUG=true, ein kaputter Datenbankblock, ein kaputter Mail-Block und doppelte Schlüssel.

Beachten Sie, was bewusst kein Blocker ist: Lesbare Dateien oberhalb des Document Roots werden als Warnung eingestuft, nicht als Blocker, denn das ist Offenlegung und kein Einbruch. Die Liste ist absichtlich kurz — wenn alles ein Notfall ist, ist nichts einer.

Eine Folge, die klar gesagt gehört: cert_expiry ist ein Blocker, der nur bei einer Tieferen Prüfung gemessen wird, weil er aus einem echten TLS-Handshake gelesen wird. Ein „Jetzt prüfen“ kann Ihnen nicht sagen, dass Ihr Zertifikat nächste Woche abläuft.

Warum „nicht gemessen“ nie benotet wird — und warum das wichtig ist

Eine Prüfung, die das Werkzeug nicht ausführen konnte, wird vollständig aus der Bewertung ausgeschlossen.

Das ist das Wichtigste, was man über die Zahl verstehen muss. Auf einem verwalteten Panel ist PHP auf das eigene Verzeichnis der Website eingegrenzt — was richtig ist und beibehalten werden sollte — und das bedeutet, dass /proc, /etc/os-release, die nginx-Konfiguration und die php-fpm-Pool-Konfiguration überhaupt nicht gelesen werden können. Sieben Prüfungen haben dann keine Antwort zu geben.

Ein Werkzeug, das diese als Fehlschläge bewertet, würde Sie für eine Härtungsmaßnahme bestrafen, die Sie behalten sollten. Ein Werkzeug, das sie als bestanden bewertet, würde lügen. SixPreflight tut weder das eine noch das andere: Diese Zeilen sagen „von hier aus nicht lesbar“, eine Zeile im PHP-Abschnitt erklärt einmal, warum, und nennt beide Wege drumherum, und keine davon berührt die Bewertung.

Dieselbe Regel gilt für die Backup-Prüfung. Wird kein Backup-Werkzeug gefunden, ist die Zeile nicht gemessen — keine Warnung — denn die Snapshots Ihres Hosters sind von innerhalb des Servers unsichtbar, und das Werkzeug weigert sich, etwas als kaputt zu bezeichnen, das es schlicht nicht sehen kann.

Ein abgesicherter Server darf nicht schlecht abschneiden, weil er abgesichert ist. Das ist die Regel, und deshalb lohnt es sich, die Zahl zu lesen.

Die Liste der Korrekturen

Jede Warnung und jedes Problem landet auf der Seite Was zu beheben ist, Rote zuerst, dann nach Gewicht. Jeder Punkt trägt eine Auswirkungsmarke, abgeleitet aus demselben Gewicht, das die Bewertung erzeugt hat, nichts wird also auf einer Skala benotet und auf einer anderen priorisiert.

  • Stoppt Bestellungen
  • Kann Bestellungen stoppen
  • Ernstes Risiko
  • Risiko
  • Bremst die Website
  • Lohnt sich zu beheben
  • Aufräumen

Jede Karte sagt Ihnen, wie die Einstellung jetzt ist, wie sie sein sollte, in welcher Datei sie steht, den Befehl zum Ausführen, falls es einen gibt, und wie Sie nachweisen, dass die Änderung gegriffen hat. Es gibt pro Zieldatei einen Block „zeig mir jede Zeile zum Einfügen“, der nur die Zeilen enthält, die noch geändert werden müssen — denn zwanzig Werte einzeln zu kopieren ist die Art, wie eine Ziffer verloren geht. Einzufügende Einstellungen und auszuführende Befehle stehen in getrennten Blöcken; sie gehen an verschiedene Stellen.

Die Datenbank-Zielwerte auf den Karten stammen aus derselben Berechnung, die den my.cnf-Block erzeugt, den Sie kopieren, der Wert pro Zeile und der Block können sich also nie widersprechen.

Es merkt sich auch etwas

Das Werkzeug behält die letzten 60 Scans auf der Festplatte. Die Verlaufsseite zeigt eine Karte „seit dem letzten Scan“ — was neu kaputtgegangen ist und was Sie neu behoben haben — Sie können zwei gespeicherte Prüfungen nebeneinander vergleichen und einen Durchlauf als Textdatei exportieren.

Ein nur lesender Endpunkt ?api=findings gibt die zuletzt gespeicherte Prüfung als JSON für ein Dashboard oder eine Überwachung zurück. Er startet nie einen Scan: Eine Überwachung, die bei jedem Aktualisieren des Dashboards einen vollständigen Scan auslöste — von dem ein Schritt URLs Ihrer laufenden Website abruft — wäre ein Lastgenerator im Gewand einer Überwachung. Die Antwort trägt run.age_seconds mit, damit der Aufrufer sagen kann „das ist zwei Wochen alt“, statt alte Nachrichten als aktuell zu melden.

Die andere Hälfte

Es hat auch eine zweite Hälfte: das Setup-Skript

SixPreflight liest und erklärt. bin/setup-6ammart.php ist die andere Hälfte des Pakets: Es nimmt die Änderungen vor. Die mitgelieferte Dokumentationsseite sagt es in einer Zeile — „SixPreflight liest einen Server und erklärt, was zu ändern ist. setup-6ammart.php ist die andere Hälfte: Es nimmt diese Änderungen vor.“

  • Ein bash-Skript mit einer .php-Endung, absichtlich

    PHP nimmt die Datei, stößt in Zeile 3 auf ein exit und liefert einem Browser nichts. Führen Sie es mit bash aus, nie über einen Browser.

  • Der Standardmodus ist ein Trockenlauf

    Es aus Versehen auszuführen ändert nichts. --check meldet aktuell gegen empfohlen. --apply erledigt die Arbeit.

  • 84 Katalogeinträge, 40 davon ohne Rückfrage anwendbar

    Seine Wahrheitsquelle ist derselbe Abstimmungskatalog, den auch die Korrekturkarten nutzen — 84 Einträge über php, php-fpm, os, mysql, nginx, laravel und 6ammart, von denen 40 als ohne Rückfrage anwendbar markiert sind und 44 mit einer Rückfrage kommen, deren Abwägung in einer Zeile genannt wird, oder als manuelle Anweisung ausgegeben werden. Kein Eintrag der zweiten Gruppe wird je stillschweigend angewendet, auch nicht unter --yes.

Umstrittene Zahl, offen benannt

Die mitgelieferte Seite docs/setup.html sagt 84 Einträge, 40 sicher automatisierbar, 44 nicht. Der eigene Kopf des Skripts und eine direkte Zählung der drei Dateien data/tuning-*.json.php sagen beide 86 / 41 / 45. Der niedrigere veröffentlichte Wert ist der, der oben verwendet wird.

Schreibvorgänge an einem laufenden nginx-vhost, am Scheduler-Cron und an allem, was bei einem Rückstau einen Queue-Worker startet, liegen alle in der Klasse mit Rückfrage: Jeder zeigt genau, was er vorhat, und fragt, und --yes antwortet nicht für ihn.

SixPreflight ist also ein Prüfwerkzeug mit einem optionalen Korrekturwerkzeug daneben, nicht ein Prüfwerkzeug allein.

Vier Anleitungen werden mitgeliefert

Der Dokumentationssatz widmet dem Korrekturwerkzeug ein Viertel seiner Seiten.

  • Wie man es benutzt

    index.html — das Dashboard, die zwei Scan-Schaltflächen, die Liste der Korrekturen und die Verlaufsseite.

  • Was zu installieren ist und woher jede Zugangsdatei kommt

    requirements.html — die Pakete, die Erweiterungen und aus welcher Konsole jeder Schlüssel stammt.

  • Welches PHP, welche Datenbank und welches OS

    versions.html — die Empfehlung, die sortierte Bewertungsübersicht und der Grund hinter jeder Wahl.

  • Was das Setup-Skript tut

    setup.html — der Katalog, welche Einträge automatisiert werden und welche anhalten und fragen.

Warum das besser ist als Raten

Vier Dinge, die Sie nicht mit bloßem Auge prüfen können

  • Gegen Ihr eigenes Urteil

    Die Voraussetzungsseite des Herstellers listet Mindestwerte, und Mindestwerte sind das Falsche, worauf man baut. „MySQL 5.7+ / MariaDB 10.3+“ verbirgt, dass sich die beiden Varianten unter ONLY_FULL_GROUP_BY unterschiedlich verhalten: MySQL 5.7.5+ hat es standardmäßig an und kommt damit zurecht, weil es die funktionale Abhängigkeit herleitet, auf der diese Berichte beruhen; MariaDB lässt es aus und geht kaputt, wenn man es einschaltet — der Artikelbericht scheitert dann mit ERROR 1055. Das wurde überprüft, indem der Bericht auf beiden ausgeführt wurde, nicht angenommen. Der Modus muss auf MariaDB also aus bleiben, und auf MySQL sollte der Standard unangetastet bleiben. Das Werkzeug bewertet genau diese Kombination, nicht die Versionsnummer.

  • Gegen eine phpinfo()-Seite

    phpinfo() druckt Werte, mehr nicht. Ihre echte max_execution_time ist der kleinere Wert aus php.ini und dem request_terminate_timeout von php-fpm; SixPreflight ermittelt diesen wirksamen Wert und bewertet ihn. phpinfo() kann Ihren InnoDB-Buffer-Pool nicht anhand Ihres tatsächlichen RAMs, Ihrer tatsächlichen php-fpm-Worker-Anzahl und Ihrer tatsächlichen Datenmenge bemessen — SixPreflight tut das und prüft dann, ob die Worker von php-fpm überhaupt in max_connections passen. Es kann kein Ziel für die OPcache-Dateianzahl aus der Zahl der PHP-Dateien in Ihrem Projekt berechnen. Und es kann Ihnen nicht sagen, was das Internet von Ihrer Website abrufen kann, weil es keine Anfragen stellt.

  • Gegen das Wort Ihres Hosters

    „Der Server ist in Ordnung“ ist keine Aussage, die irgendjemand prüfen kann. Das hier schon: Es ruft /.env von Ihrer eigenen laufenden URL ab und sagt Ihnen, was zurückkam. Es öffnet eine echte SMTP-Sitzung. Es erzeugt ein echtes Firebase-Token. Es macht einen echten Maps-Aufruf. Jedes davon ist eine Tatsache mit Zeitstempel, gespeichert in einer Datei, die Sie exportieren und an denjenigen schicken können, der Ihnen sagte, es sei in Ordnung.

  • Und es sagt Ihnen, wenn es etwas nicht weiß

    Ein Werkzeug, das immer eine Antwort hat, rät irgendwo. Dieses benennt die Zeilen, die es nicht messen konnte, und nimmt sie aus der Bewertung heraus.

Schon auf SixPanel?

Schon auf SixPanel? Dann haben Sie das bereits

Auf cPanel, aaPanel, CloudPanel oder einem leeren VPS ist SixPreflight für Sie

Ihnen gehören der Webserver, PHP, die Datenbankkonfiguration, cron und das Zertifikat, jeder Block zum Einfügen und jeder Befehl sind also für Sie da.

Auf einem SixPanel-Server ist es schon da

SixPanel bindet SixPreflight im Shop ein und zeigt es als die panel-eigene Seite Shop-Check. Sie laden nichts herunter, und die Einstellungen, die dem Panel gehören, verweisen auf die Panel-Seite, der sie gehören, statt auf einen Block zum Einfügen, den das nächste Deployment überschreiben würde.

SixPanel ansehen

Noch ein ehrlicher Hinweis für diesen Modus: Auf einer SixPanel-Maschine werden die Einstellungen der Anwendung selbst — Zahlungen, E-Mail, SMS, Firebase, Karten, Zeitzone, Währung — aus der Serverbewertung herausgehalten und getrennt aufgeführt, denn sie sind Aufgabe des Shop-Betreibers und nicht des Servers. Das klar verständliche Urteil oben spricht weiterhin für das gesamte Geschäft.

Voraussetzungen und Ausführung

Voraussetzungen, wie man es ausführt und was es ändern wird

Was das Werkzeug selbst braucht

Was SixPreflight selbst braucht, um zu laufen.
AnforderungWas es braucht
PHP8.2 oder neuer, um das Werkzeug auszuführen
WebserverAlles, was das public/-Verzeichnis Ihrer Website ausliefert
Schreibzugriffpreflight/config.php (oder einen Passwort-Hash von Hand einfügen) und preflight/history/
AnwendungKeine nötig. Es läuft auf einem leeren Server
Panels, die es erkenntcPanel · aaPanel · CloudPanel · DirectAdmin · Plesk · CWP · einfacher Server

Woran es Ihren Server misst

Die Untergrenze, die SixPreflight verlangt, und der Wert, den es Ihnen zu wählen empfiehlt.
RessourceUntergrenzeWas zu wählen ist
vCPU24
RAM4 GB8 GB
Freier Speicherplatz20 GB laut Voraussetzungsseite — aber die Speicherplatzprüfung selbst besteht bei 20 GB, warnt zwischen 10 und 20 und fällt erst unter 10 durch40 GB+
SpeichertypSSDNVMe
Hosting-ArtVPS oder dediziertVPS mit root

Die Zeile zum freien Speicherplatz widerspricht sich tatsächlich selbst, und Sie sehen es auf dem Bildschirm

Requirements::platform() legt fest „20 GB nötig, 40 GB+ wählen“, während die Hardwareprüfung gegen min_free_disk_gb = 10 aus config.php bewertet — ein Server mit 12 GB frei ist also in der einen Tabelle ein Verstoß gegen die Voraussetzungen und in der anderen eine gelbe Warnung, auf derselben Seite.

Im Browser — der normale Weg

  1. 01

    Den Ordner hochladen

    Laden Sie den gesamten preflight/-Ordner in das public/-Verzeichnis Ihrer Website hoch.

  2. 02

    Auf dem ersten Bildschirm ein Passwort setzen

    Öffnen Sie https://ihre-domain/preflight/ und setzen Sie ein Passwort. Ohne eines startet es nicht, und wer es zuerst öffnet, setzt es — tun Sie das also, sobald der Upload fertig ist. Mindestens acht Zeichen. Ist config.php nicht beschreibbar, sagt die Seite das und gibt Ihnen stattdessen den einzeiligen password_hash()-Befehl zum Einfügen.

  3. 03

    Eine Schaltfläche drücken

    Jetzt prüfen dauert etwa eine Sekunde. Tiefere Prüfung ergänzt die ausgehenden Tests.

  4. 04

    Den Ordner löschen, wenn Sie fertig sind

    Er ist geschützt, aber er berichtet Interna des Servers und hat keinen Grund, auf einer laufenden Website zu bleiben.

Optional: Den Zugang per IP mit allow_ips in config.php einschränken (einzelne Adressen oder CIDR-Bereiche, IPv4 und IPv6). Hinter Cloudflare oder einem Load Balancer ist die Adresse, die es sieht, die des Proxys, eine Allowlist mit Ihrer eigenen IP sperrt Sie also aus — lassen Sie sie leer und verlassen Sie sich auf das Passwort, oder schränken Sie am Proxy ein. Wenn Sie sich doch aussperren, druckt die 403-Seite die Adresse, die tatsächlich ankam, und das, was der Proxy behauptet.

Was es ändern wird, wenn Sie es darum bitten

Der Scan liest. Vier Oberflächen im Paket können schreiben, und keine davon löst von selbst aus — jede braucht eine Schaltfläche oder einen Befehl.

  • Die Seite Fehlerlogs kann ein Log leeren

    Die Schaltfläche Leeren kürzt die Datei mit ftruncate, statt sie zu löschen, denn PHP, MySQL und nginx halten diese Dateien offen, und ein Entfernen ließe sie in ein Handle ohne Namen weiterschreiben. Sie verlangt das CSRF-Token, und wenn die Datei für den PHP-Benutzer nicht beschreibbar ist, gibt sie stattdessen den Shell-Befehl aus, statt zu handeln. Das ist ein Schreibvorgang an Logs von Laravel, an MySQL-Slow-/Fehlerlogs, php-fpm und Webserver — Dateien, die dem Werkzeug nicht gehören.

  • Die Seite Test-Bestellbenachrichtigung sendet ein echtes Push

    An ein echtes Store- oder Fahrergerät, über den plattformeigenen artisan-Befehl. Eine Trockenlauf-Schaltfläche „Zeigen, was gesendet würde“ gibt es; sie ist nicht die Standardeinstellung.

  • Der Datenbank-Benchmark legt seine eigene Tabelle an und löscht sie wieder

    Benannt zz_preflight_bench_<random> mit einem frischen zufälligen Anhängsel pro Durchlauf — die vollständige Sicherheitsbegründung steht unten.

  • Ein Passwort zu setzen schreibt config.php neu

    Und die Aktion „Profil speichern“ im Dashboard schreibt die vom Betreiber angegebenen RAM- und vCPU-Werte in die Server-Profildatei. Beide liegen innerhalb des preflight/-Ordners.

Und getrennt davon, mit Absicht: bin/setup-6ammart.php nimmt Änderungen vor, wenn Sie es mit --apply ausführen. Das ist sein Zweck.

Von der Kommandozeile — keine Anwendung, kein Browser

Die zwei Vergleichswerkzeuge laufen nur auf der Kommandozeile und verweigern die Antwort über HTTP.

php preflight/server-compare.php  # diese Maschine messenphp preflight/server-compare.php --save=box-a.jsonphp preflight/server-compare.php --compare=box-a.json,box-b.jsonphp preflight/detect-size.php  # RAM und vCPU erfassen

Sie sind nicht die einzigen Dateien mit dieser Sperre. Elf Dateien im Paket verweigern die Ausführung außerhalb der Kommandozeile — diese zwei, acht Testrahmen einschließlich tests/smoke.php und bin/setup-6ammart.php. tests/smoke.php ist der Grund, warum die Sperre wichtig ist: Über das Web erreichbar und ohne Passwort belassen, wie es einmal ausgeliefert wurde, kostete ein einziges anonymes GET elf Sekunden CPU, eine vollständige Abfrage der Anwendungsdatenbank, zehn Anfragen, die der Server an seine eigene öffentliche URL stellte, und ausgehende Aufrufe an Google Maps, den konfigurierten SMTP-Host und Firebase, beliebig oft wiederholbar. Der Scan sucht auf Ihrem Server jetzt gezielt nach genau dieser Datei, denn ein Ordner wie dieser wird jahrelang zwischen Maschinen kopiert.

server-compare.php ist eigenständig und hat null Abhängigkeiten — es braucht überhaupt keine Anwendung, und genau das macht es zum richtigen Werkzeug, um zwei Server zu vergleichen, die Sie mieten möchten, bevor Sie sich für einen entscheiden.

Die Benchmark-Werte lesen

Beide Werte sind normalisiert, sodass sie bei jeder Schwierigkeitsstufe dasselbe bedeuten — nur die Maschine verändert sie, und höher ist schneller. Eine aktuelle Cloud-vCPU liegt bei etwa 100. Führen Sie es zwei- oder dreimal zu verschiedenen Uhrzeiten aus: Eine Instanz mit Burst-Guthaben fällt stark ab, sobald das Guthaben aufgebraucht ist, und das zeigt sich in einem einzigen Durchlauf nicht. Die Referenzmaschine hinter dieser 100 ist eine AMD EPYC 7713-vCPU mit lokalem NVMe, PHP 8.3, OPcache an.

Achten Sie beim Datenbankwert besonders auf einzelne INSERT/Sek.: Mit innodb_flush_log_at_trx_commit=1 wartet jeder einzelne auf eine Synchronisierung mit der Festplatte, diese Zahl ist also in Wahrheit die fsync-Latenz Ihres Speichers. Sie ist der deutlichste Unterschied zwischen Anbietern.

Wenden Sie zuerst die vorgeschlagene my.cnf an und vergleichen Sie dann zwei Server — sonst vergleichen Sie Konfigurationen und keine Maschinen.

Was Sie tatsächlich installieren sollten

Die eigene Empfehlung von SixPreflight, für eine native Installation ohne Container:

  • Ubuntu 26.04 LTS
  • PHP 8.5
  • MariaDB 11.8
  • PHP 8.5

    Was auch immer das eigene Archiv Ihres Releases mitbringt — 8.5 auf Ubuntu 26.04, 8.4 auf Debian 13, 8.3 auf Ubuntu 24.04. An 8.5 wurde gezweifelt, weil phpspreadsheet über maatwebsite/excel php <8.5 deklariert; das ist eine Deklaration in composer.json und keine Messung, die Plattformprüfung von composer ist aus, und den Code auf 8.5.4 laufen zu lassen ergab sowohl auf dem reinen CodeCanyon-Baum als auch auf unserem eigenen Fork einen bytegleichen Tabellenexport. Alle laufen praktisch gleich schnell, das ist also keine Geschwindigkeitsentscheidung — nehmen Sie die Version, die Ihr Release für Sie patcht.

  • MariaDB 11.8 oder 10.11

    Beide, je nachdem, was Ihr Release mitbringt — am selben Shop gemessen ist 11.8 gegen 10.11 ein Gleichstand. Kein Gleichstand ist die Geschmacksrichtung: beide MySQL-Versionen brauchen Codeänderungen, bevor 6amMart auf ihnen überhaupt läuft, denn die Artikelsuche setzt ein MariaDB-eigenes Optimizer-Flag, und zwei Index-Migrationen lesen einen Server-Katalog in einer Schreibweise, die MySQL nicht zurückgibt, wodurch das Schema teilweise angewendet bleibt.

  • Ubuntu 26.04

    Auf Augenhöhe mit Ubuntu 24.04 und Debian 13 bei der Geschwindigkeit — die gemessenen Unterschiede waren kleiner als die Abweichung einer Maschine von sich selbst. Was sie trennt, ist das Support-Fenster: April 2031 für 26.04, gegenüber Mai 2029 für 24.04 und August 2028 für Debian 13. Das ist eine Entscheidung über das Support-Fenster, keine über Geschwindigkeit.

Was diese Engine-Zahlen abdecken Sie stammen von einer Maschine und einem Datenbestand — dem Dump eines echten Shops mit 66,701 Bestellungen — wobei jede Engine zuerst migriert und die daraus entstandenen Indexsätze auf 460 Indizes verglichen wurden, identisch auf allen fünf, sodass der Vergleich Engines vergleicht und nicht fehlende Indizes. Sie vergleichen die fünf Engines auf dieser einen Maschine miteinander. Sie sind keine Aussage darüber, wie schnell 6amMart im Allgemeinen ist.

Nichts hier sagt, dass ein Betriebssystem schneller wäre als ein anderes: Die gemessenen Unterschiede zwischen Betriebssystemen waren kleiner als die Schwankung einer einzelnen Maschine gegenüber sich selbst.

Wie es läuft

Nichts im Paket prüft eine Lizenz, ein Konto oder ein Ablaufdatum, und nichts darin meldet irgendetwas an AllsWeb zurück. Die ausgehenden Aufrufe gehen alle an Stellen, mit denen Sie ohnehin zu tun haben — Ihre eigene Website, Ihren eigenen SMTP-Host, die Token- und Geokodierungs-Endpunkte von Google — plus ein öffentlicher Echo-Dienst, um Ihre eigene Adresse zu ermitteln.

Der ehrliche Grund, warum es die Prüfungen überhaupt gibt: Sie sind beim Bauen und Reparieren dieser Server entstanden, und jede einzelne ist eine Frage, die wir Ihnen ohnehin stellen müssten. Ein Shop-Betreiber, der sie vor der Kontaktaufnahme beantworten kann, spart einen Tag; ein Shop-Betreiber, der es nicht kann, bekommt einen Bericht, den er an seinen Hoster schicken kann.

Ehrliche Grenzen

Lesen Sie das, bevor Sie sich auf die Zahl verlassen

  1. 01

    Es kann nicht sehen, was der Server ihm nicht zeigt

    Prüfungen, die shell_exec oder /proc brauchen, fallen auf „nicht gemessen“ zurück, statt zu raten. Verwaltete Panels sperren Unterschiedliches, manche Zeilen sind bei einem Hoster also leer und bei einem anderen gefüllt.

  2. 02

    Auf einem verwalteten Panel haben sieben Prüfungen keine Antwort

    open_basedir grenzt PHP auf das Verzeichnis der Website ein. Das ist richtig und sollte beibehalten werden. Die Zeilen sagen das und sind von der Bewertung ausgenommen.

  3. 03

    Ein „Jetzt prüfen“ kann sechs der Webserver-Zeilen nicht sehen, und eine davon ist ein Blocker

    Komprimierung, statisches Caching, Live-Keep-Alive, der Server-Banner, HSTS und der Zertifikatsablauf werden an einer echten Antwort abgelesen, sie erscheinen also nur bei einer Tieferen Prüfung — und cert_expiry steht auf der Blocker-Liste. Führen Sie die Tiefere Prüfung aus, bevor Sie einem grünen Ergebnis trauen.

  4. 04

    Das Werkzeug widerspricht sich beim freien Speicherplatz

    Die Voraussetzungstabelle sagt, Sie brauchen 20 GB frei; die Speicherplatzprüfung nennt 10–20 GB eine Warnung und fällt erst unter 10 durch. Zwei Antworten auf eine Frage, auf einer Seite.

  5. 05

    Es berichtet, womit der Server sich nach eigener Aussage konfiguriert hat

    Wenn ein Panel Konfiguration auf einer Ebene anwendet, die dieses Werkzeug nicht sehen kann, vertrauen Sie der Oberfläche des Panels mehr als diesem hier. cPanel und aaPanel verwalten die PHP- und MySQL-Konfiguration über ihre eigene Oberfläche und können von Hand bearbeitete Dateien überschreiben; bei CloudPanel und einem einfachen Server bleiben die Konfigurationsdateien maßgeblich. Wenn eine Einstellung nach einem Neustart immer wieder zurückspringt, schreibt das Panel sie neu — ändern Sie sie stattdessen über das Panel.

  6. 06

    Die Benchmarks messen diese Maschine in diesem Moment

    Ein lauter Nachbar macht jede Zahl pessimistisch — sehen Sie sich die Zeile zum Lastdurchschnitt an, bevor Sie Schlüsse ziehen.

  7. 07

    Der Erreichbarkeitsschritt ist kein Penetrationstest

    Er ruft eine feste Liste bekannt riskanter Adressen von Ihrer eigenen URL ab und meldet, was zurückkam. Er sucht nicht nach unbekannten Schwachstellen und ist keine Code-Prüfung.

  8. 08

    Eine Sache lässt sich von einem Server aus wirklich nicht testen

    Der Google-Maps-Client-Schlüssel ist über den Browser-Referrer eingeschränkt, das Werkzeug kann Ihnen also sagen, dass er fehlt oder dass er gefährlicherweise mit Ihrem Server-Schlüssel identisch ist — aber es kann einen korrekt eingeschränkten Schlüssel von der Serverseite aus nicht überprüfen und sagt das, statt ihn durchgehen zu lassen.

  9. 09

    Die Zeilenzahlen in der Größentabelle sind Schätzungen

    Sie kommen aus information_schema. Genaue Zahlen würden einen vollständigen Scan jeder Tabelle auf einer laufenden Website bedeuten.

  10. 10

    Ein Upload, der mehr als fünf Verzeichnisse unterhalb von artisan vergraben ist, bekommt den Standalone-Modus

    Stillschweigend — die Suche nach der Anwendungswurzel hört bei fünf Ebenen auf.

  11. 11

    Es ist zuerst ein Prüfwerkzeug

    Der Scan selbst ändert nichts. Vier Oberflächen im Paket schreiben, wenn Sie ihre Schaltfläche drücken, und bin/setup-6ammart.php nimmt Änderungen vor, wenn Sie es mit --apply ausführen. Alle fünf sind oben aufgeführt.

Ist es auf einem laufenden Shop sicher?

Ja, und hier ist genau, warum.

  • Die Abfragen auf echten Daten sind konstruktionsbedingt nur lesend

    Jede Abfrage läuft durch eine query()-Methode, die alles ablehnt, was nicht mit SELECT, EXPLAIN, SHOW oder WITH beginnt — und es gibt in dieser Klasse keinen Codepfad, der INSERT, UPDATE, DELETE, ALTER, CREATE oder DROP absetzen könnte, und das ist die Garantie, die das Versprechen tatsächlich trägt. Die Sitzung wird auf TRANSACTION READ ONLY gesetzt, wo der Server das unterstützt, selbst ein Fehler würde also von der Datenbank abgelehnt und nicht von diesem Code. Jede Anweisung trägt ein serverseitiges Limit von 15 Sekunden, eine Abfrage gegen eine unerwartet riesige Tabelle kann also keine Ressourcen halten — und eine Abfrage, die dagegen läuft, wird als „zu langsam“ gemeldet, was selbst der Befund ist. Überprüft: Zeilenzahlen und SUM(order_amount) sind vorher und nachher identisch.

  • Der Datenbank-Benchmark fasst nie eine Anwendungstabelle an

    Jedes Objekt, das er anlegt, heißt zz_preflight_bench_<random> mit einem frischen zufälligen Anhängsel pro Durchlauf; er prüft, ob der Name frei ist, bevor er irgendetwas anlegt, und bricht ab, statt eine bestehende Tabelle anzufassen; keine Anweisung in ihm kann eine Tabelle benennen, die er nicht selbst angelegt hat; das Aufräumen ist daran gebunden, dass die Tabelle tatsächlich angelegt wurde, läuft in einem finally-Block und einem Shutdown-Handler, und er schreibt Commits in kleinen Portionen, sodass nichts eine lange Sperre hält. Überprüft: Die Zeilenzahlen von Bestellungen und Artikeln sind vorher und nachher identisch, und keine zz_preflight_-Tabelle überlebt den Durchlauf.

  • Der Rahmen ist die Tabelle, nicht die Datenbank, und dieser Unterschied ist das ganze Versprechen

    Es liest nie aus einer Anwendungstabelle und schreibt nie in eine — das ist die Formulierung der README selbst, und sie ist die richtige. Der Benchmark legt innerhalb der Datenbank der Anwendung eine eigene Tabelle unter einem selbst erzeugten Namen an, löscht sie wieder, und sonst wird in dieser Datenbank nichts angefasst.

  • In seinem eigenen Ordner schreibt es eine Sache

    preflight/history/, eine Datei pro gespeichertem Scan. Diese Dateien beschreiben die Schwachstellen des Servers im Detail, deshalb heißt jede .json.php und beginnt mit einer PHP-exit-Anweisung — über HTTP abgerufen führt der Webserver sie aus, hält sofort an und gibt nichts zurück. Das gilt auch auf nginx, das .htaccess ignoriert.

Eine rote Liste und keine Zeit?

Schicken Sie uns den exportierten Bericht. Wir installieren, konfigurieren und übergeben 6amMart auf Ihrem eigenen Server, mit einem Senior-Ingenieur, der das Release freigibt.

Den 6amMart-Installationsservice ansehenMit dem Support sprechen

Server bereit, Shop trotzdem langsam?

SixPreflight sagt Ihnen, ob der Server bereit ist. Wenn der Shop selbst langsam ist, liegt das an der Anwendung und nicht am Server — und genau das liefert der 6amMart-Installationsservice jetzt auf dem neuesten 6amMart-Release mit: der von AllsWeb optimierte 6amMart-Build, gemessen mit 10× bis 22× schneller — 90–95% schneller — auf jedem Bildschirm, den Kunden sehen, gemessen auf dem laufenden Server, unter Umgehung des CDN.

Den 6amMart-Installationsservice ansehen

FAQ

Fragen, die Leute tatsächlich stellen

  • 01Woher weiß ich, ob mein Server für 6amMart bereit ist?

    Führen Sie SixPreflight darauf aus. Es enthält 163 Prüfungen über Hardware, PHP, die Anwendung, .env, Berechtigungen, den Webserver, Caching, die Datenbank, die öffentliche Erreichbarkeit und jeden externen Dienst. Eine Tiefere Prüfung auf einer 6amMart-Installation führt den vollen ihr verfügbaren Satz aus — 160 unterschiedliche Prüfungen und höchstens 157 Zeilen auf einer echten Maschine mit einem Webserver; ein schnelles „Jetzt prüfen“ führt 123 aus, höchstens 120 auf derselben Maschine, und überspringt die 12 Erreichbarkeitsprüfungen, die 21 Diensteprüfungen und die sechs Webserver-Zeilen, die eine Live-Antwort brauchen. So oder so endet es in einem Satz, einer Note von A bis F und einer sortierten Liste dessen, was zuerst zu beheben ist.

  • 02Ändert SixPreflight etwas auf meinem Server?

    Der Scan nicht. Er liest und schreibt nie eine Anwendungstabelle und versendet nie E-Mails oder SMS an irgendjemanden. Vier Oberflächen schreiben, wenn Sie ihre Schaltfläche drücken: Die Seite Fehlerlogs kann eine Logdatei kürzen, die Seite Test-Bestellbenachrichtigung sendet ein echtes Push an ein echtes Gerät, der optionale Datenbank-Benchmark legt seine eigene Tabelle an und löscht sie wieder, und ein Passwort zu setzen schreibt die werkzeugeigene config.php neu. Das Paket liefert außerdem bin/setup-6ammart.php mit, das absichtlich Änderungen vornimmt, wenn Sie es mit --apply ausführen.

  • 03Ist es sicher, es auf einem laufenden Shop auszuführen, der Bestellungen annimmt?

    Ja. Die Datenbankabfragen sind konstruktionsbedingt nur lesend — die query()-Methode lehnt alles ab, was nicht mit SELECT, EXPLAIN, SHOW oder WITH beginnt, es gibt in dieser Klasse keinen Codepfad, der schreiben könnte, und die Sitzung läuft in TRANSACTION READ ONLY, wo das unterstützt wird. Der optionale Benchmark arbeitet nur auf einer Tabelle, die er selbst mit einem zufälligen Namen anlegt, und entfernt sie in einem finally-Block und einem Shutdown-Handler. Beides wurde durch den Vergleich von Zeilenzahlen und SUM(order_amount) vorher und nachher überprüft.

  • 04Brauche ich 6amMart, um es zu nutzen?

    Nein. Es erkennt, was es vor sich hat. Auf einem einfachen Server ohne Anwendung prüft es weiterhin Hardware, PHP, den Datenbankserver, den Webserver, Berechtigungen und Erreichbarkeit — auch wenn die 14 .env-Prüfungen, die 12 Laravel-Anwendungsprüfungen, die 9 6amMart-Plattformprüfungen und die 5 Echtzeitprüfungen nichts zu lesen haben, sodass aus dem Anwendungsschritt nur die Profilzeile bleibt. Auf jeder Laravel-Anwendung gilt alles über den Server weiterhin, und die 6amMart-spezifischen Prüfungen werden übersprungen statt geraten. Auf 6amMart läuft jede Prüfung, die laufen kann.

  • 05Welche Punktzahl brauche ich, bevor ich live gehe?

    90 oder darüber ist ein A — bereit für den Produktivbetrieb. Darunter lesen Sie zuerst die Blocker: Ein einziger Blocker deckelt die Punktzahl bei 74, egal wie gut alles andere ist, zwei deckeln bei 54, drei oder mehr bei 34. Selbst ohne Blocker deckelt eine rote Zeile Sie bei 88. Blocker sind die Dinge, die den Shop am Verkaufen hindern — keine nutzbare Zahlungsmethode, E-Mail schlägt fehl, die Datenbank nicht erreichbar, .env über das Web lesbar, ein Zertifikat, das innerhalb von 14 Tagen abläuft. Führen Sie eine Tiefere Prüfung aus, bevor Sie der Zahl trauen: Genau dieses letzte und fünf weitere Webserver-Zeilen werden bei einer schnellen Prüfung gar nicht gemessen.

  • 06Warum sagen manche Zeilen „von hier aus nicht lesbar“?

    Weil Ihr Hosting-Panel PHP auf das eigene Verzeichnis Ihrer Website eingrenzt, was richtig ist und beibehalten werden sollte — /proc, /etc/os-release, die nginx-Konfiguration und die php-fpm-Pool-Konfiguration können also tatsächlich nicht gelesen werden. Sieben Prüfungen haben dann keine Antwort. Sie werden ehrlich gemeldet und vollständig aus der Bewertung ausgeschlossen, ein abgesicherter Server wird also nie dafür bestraft, dass er abgesichert ist.

  • 07Funktioniert es auf cPanel, aaPanel, CloudPanel oder einem einfachen VPS?

    Ja — das ist sein Hauptmarkt. Es erkennt cPanel, aaPanel, CloudPanel, DirectAdmin, Plesk, CWP und einen einfachen Server und gibt Installationsbefehle und Pfade je Panel aus. Wissenswert: cPanel und aaPanel verwalten die PHP- und MySQL-Konfiguration über ihre eigene Oberfläche und können von Hand bearbeitete Dateien überschreiben, wenn eine Einstellung nach einem Neustart also immer wieder zurückspringt, ändern Sie sie stattdessen über das Panel.

  • 08Sagt es mir nur, was falsch ist, oder kann es das auch beheben?

    Beides, und die behebende Hälfte ist freiwillig. Das Dashboard bittet Sie, jede Änderung zuerst von Hand vorzunehmen, denn wer eine Änderung selbst macht, versteht, was er geändert hat. Wo das nicht praktikabel ist, erledigt bin/setup-6ammart.php dieselbe Arbeit von der Kommandozeile aus: standardmäßig Trockenlauf, --check zum Melden, --apply zum Handeln. Es wendet nur die Katalogeinträge an, die als sicher automatisierbar markiert sind — 40 der 84 veröffentlichten Einträge — und fragt beim Rest nach oder gibt ihn aus, auch unter --yes.

  • 09Ich betreibe SixPanel. Muss ich das herunterladen?

    Nein. SixPanel bindet SixPreflight im Shop ein und zeigt es als die Seite Shop-Check des Panels. In diesem Modus lässt es die Blöcke zum Einfügen für alles weg, was dem Panel gehört — Webserver, PHP, Datenbankkonfiguration, cron, Queue-Worker, Zertifikat — und verweist auf die Panel-Seite, der die jeweilige Einstellung gehört, denn ein dort von Hand eingefügter Wert geht beim nächsten Deployment verloren. Alle Prüfungen auf Anwendungsebene bleiben erhalten.

  • 10Welche PHP- und Datenbankversion sollte ich tatsächlich installieren?

    Ubuntu 26.04 LTS, und dann, was sein eigenes Archiv mitbringt — PHP 8.5 und MariaDB 11.8 — für eine native Installation. An PHP 8.5 wurde gezweifelt, weil eine Abhängigkeit eine Grenze darunter deklariert, aber diese Grenze ist eine Deklaration und keine Messung: den Code auf 8.5.4 laufen zu lassen ergab einen bytegleichen Tabellenexport auf dem reinen CodeCanyon-Baum und auf unserem Fork. Jede gemessene PHP- und MariaDB-Version lief praktisch gleich schnell, nichts davon ist also eine Geschwindigkeitsentscheidung. Echt ist die Geschmacksrichtung: beide MySQL-Versionen brauchen Codeänderungen, bevor 6amMart auf ihnen überhaupt läuft, denn die Artikelsuche setzt ein MariaDB-eigenes Optimizer-Flag, und zwei Index-Migrationen lesen einen Server-Katalog in einer Schreibweise, die MySQL nicht zurückgibt.

  • 11Kann ich das Ergebnis in mein eigenes Dashboard einbinden?

    Ja. ?api=findings gibt die zuletzt gespeicherte Prüfung als JSON über HTTP-Basic-Auth zurück, mit einer stabilen Vertragsversion. Es startet nie einen Scan, und die Nutzlast trägt run.age_seconds mit, damit Ihr Dashboard sagen kann „dieser Wert ist zwei Wochen alt“, statt alte Nachrichten als aktuell darzustellen.

Ein Ordner, eine Antwort

Einen Ordner hochladen. Im Browser öffnen. Eine Antwort bekommen.

Immer das aktuelle Release, laufend auf Ihrem eigenen Server. Es liest zuerst, und es sagt Ihnen, was es nicht messen konnte, statt zu raten.

SixPreflight holenDen 6amMart-Installationsservice ansehen

Nichts im Paket prüft eine Lizenz, ein Konto oder ein Ablaufdatum, und nichts darin meldet irgendetwas an AllsWeb zurück.

AllsWeb

AI + Automation + Human Engineers — produktionsreife Builds in 1–3 Tagen. Installation, Anpassung, App-Einreichung und managed Support für jedes Script und jede Codebasis.

  • hi@allsweb.com
  • +91 72328 80007

Entdecken

  • KI-Agent
  • KI-Automatisierung & Workflows
  • KI-Suchoptimierung
  • Alle Lösungen
  • Alle Third-Party-Scripts
  • Alle Services
  • Optimiertes 6amMart
  • SixPanel
  • SixPreflight
  • Update- / Upgrade-Service
  • Play Store 16-KB-Fix
  • Angebote & Gutscheine

Unternehmen

  • Über uns
  • Beauftragen Sie uns
  • Support & Kontakt
  • Partnerprogramm
  • Demnächst verfügbar

Rechtliches

  • Allgemeine Geschäftsbedingungen
  • Datenschutzerklärung
  • Rückerstattungsrichtlinie
  • Zahlungsrichtlinie
  • Support-Richtlinie
  • Akzeptable Nutzung
  • Cookie-Richtlinie
  • Partner-AGB
  • Haftungsausschluss

© 2026 AllsWeb. Alle Rechte vorbehalten.