Einen Webserver wählen
Diese Seite ist für Produktmanager und Systemadministratoren bei Hosting-Unternehmen, die entscheiden müssen, was die Exponential-Websites
eines Tarifs ausliefert. Sie beantwortet: welche Server und Engines möglich sind, welche Fragen zwischen ihnen entscheiden, was jede Wahl
für den Betrieb bedeutet und wie Sie die Entscheidung festhalten. Die Fakten stammen aus
Kapitel 8: Die Website ausliefern, Unterstützung von Betriebssystemen
und der README.md des Repositorys.
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
- Die Wahl in einer Tabelle
- Fünf Fragen, die es entscheiden
- Nach Hosting-Modell
- Trennung zwischen Kunden
- Was jede Wahl Sie im Betrieb kostet
- Server mischen
- Ein Entscheidungsprotokoll zum Kopieren
- Checkliste
Die Wahl in einer Tabelle
Aus Kapitel 8, Die Wahl in einer Tabelle:
Exponential Velocity (qbix) | FrankenPHP (über Velocity) | Apache + PHP-FPM | nginx + PHP-FPM | |
|---|---|---|---|---|
| Rolle | für jede Phase empfohlen | produktionsreife Alternative | klassisch | klassisch |
| PHP | 8.0 oder neuer (ab Velocity 0.0.4.54) | das in die Binärdatei eingebaute PHP | 8.0 oder neuer | 8.0 oder neuer |
| Eigener Webserver nötig | nein | nein (Caddy ist eingebaut) | ja | ja |
| Eigenes Werkzeug für HTTPS oder Zertifikate nötig | nein: eigene Zertifikate, selbstsignierter Rückfall, ACME | nein: Ihr Zertifikat oder ein selbstsigniertes | ja (mod_ssl plus certbot oder ein Panel) | ja |
| Anwendung zwischen Anfragen im Speicher gehalten | ja (persistente Worker) | nein (sauberer Zustand pro Anfrage) | nein | nein |
| Antwort-Cache vor PHP | ja | noch nicht | nein (nur die eigenen Caches des Kernels) | nein |
| Rewrite-Regeln | eingebaut | erzeugtes Caddyfile | .htaccess_root (exp:setup:htaccess --apply) | von Ihnen geschrieben |
| Passt zu Shared Hosting | meist nicht | meist nicht | ja | selten |
Andere Server, die eine URL auf index.php umschreiben können, funktionieren ebenfalls. Das README nennt LiteSpeed und OpenLiteSpeed,
Caddy, Microsoft IIS, lighttpd, H2O und Traefik (Letzteres meist vor einem anderen Server) und sagt deutlich, dass sie alle funktionieren
und Exponential keinen bestimmten verlangt. Unterstützung von Betriebssystemen ordnet LiteSpeed, Caddy
mit PHP-FPM, IIS und lighttpd in Stufe 3 ein: sollte funktionieren.
Hinweis Der eingebaute Server von PHP (
exp:velocity start --engine=php) ist nur deshalb die mitgelieferte Standard-Engine, weil er nichts Installiertes braucht. Er ist für die Entwicklung, hat kein TLS und darf nie Besuchern gegenüberstehen.
Fünf Fragen, die es entscheiden
| Frage | Wenn die Antwort ... ist | Dann |
|---|---|---|
| Darf die Website eines Kunden in diesem Tarif einen langlebigen Prozess betreiben? | nein (typisches Shared Hosting) | Apache oder LiteSpeed mit .htaccess. Shared Hosting erlaubt das meist nicht (README.md) |
| Hat die Maschine PHP 8.0? | ja (das Standard-PHP von Red Hat Enterprise Linux 9 und seinen Nachbauten) | jede Engine; Velocity läuft ab seinem Release 0.0.4.54 auf 8.0, mit dem el9-RPM oder mit Composer (Kapitel 2) |
| Müssen Kunden auf einer Maschine durch das Betriebssystem voneinander getrennt sein? | ja | ein Velocity-Server pro Website, jeder als eigener Benutzer, oder ein PHP-FPM-Pool pro Website |
| Betreiben Sie bereits ein abgestimmtes Apache oder nginx, das Sie behalten wollen? | ja | behalten Sie es; Velocity kann dahinter oder daneben stehen |
| Wollen Sie die schnellste Antwort für wiederholte Seiten, ohne einen Cache-Server hinzuzufügen? | ja | Velocity mit seinem Antwort-Cache |
Das sind die Bedingungen, die Kapitel 8 für einen klassischen Server nennt: wenn Ihr Hosting keine langlebigen Prozesse erlaubt, wenn Sie bereits ein abgestimmtes Apache oder nginx betreiben, das Sie behalten wollen, wenn die Maschine nur PHP 8.0 hat oder wenn mehrere Kunden auf einer Maschine durch das Betriebssystem voneinander getrennt sein müssen.
Nach Hosting-Modell
| Hosting-Modell | Übliche Wahl | Warum |
|---|---|---|
| Shared Hosting mit einem Control Panel | Apache (oder LiteSpeed) mit PHP-FPM und .htaccess | keine langlebigen Prozesse von Kunden; die Regeln werden als .htaccess_root ausgeliefert |
| VPS oder dedizierter Server pro Kunde | Velocity | eine Website pro Maschine, root für die Ports 80 und 443 verfügbar |
| Mehrere Kunden auf einem VPS oder dedizierten Server | Velocity pro Website (eigener Benutzer, eigene Ports, ein Proxy davor) oder PHP-FPM-Pool pro Website | Trennung durch das Betriebssystem |
| Container | Velocity oder FrankenPHP im Container | ein Prozessbaum pro Website; für Velocity gibt es Images (Pakete und Binärdateien von Velocity) |
| Windows-Hosting | IIS oder Apache mit FastCGI-PHP | pcntl und posix gibt es unter Windows nicht (Unterstützung von Betriebssystemen) |
Die Modelle selbst werden auf Ein Hosting-Modell wählen verglichen.
Trennung zwischen Kunden
Das README ist ausdrücklich: Ein einziger Serverprozess, der mehrere Websites ausliefert, ist eine Bequemlichkeit beim Routing, keine Sicherheitsgrenze; der Prozess, der eine Website ausliefert, kann jede Datei lesen, die die anderen halten. Für einen Tarif, der mehrere Kunden auf eine Maschine legt:
- Velocity: Betreiben Sie einen Velocity-Server pro Website, jeden mit
[ServerSettings] UserundGroupauf den Benutzer dieses Kunden gesetzt, auf eigenen Ports, hinter einem Proxy. Siehe Velocity neben Apache oder nginx. - PHP-FPM: Geben Sie jeder Website einen eigenen Pool, der als Benutzer der Website läuft. Siehe Apache mit PHP-FPM und Benutzer und Pools pro Kunde.
Die Seite der Sicherheit steht auf Trennung von Mandanten.
Was jede Wahl Sie im Betrieb kostet
| Velocity | FrankenPHP | Apache oder nginx mit PHP-FPM | |
|---|---|---|---|
| Installation | composer require se7enxweb/exponential-velocity, dann exp:velocity start | exp:velocity install lädt die Binärdatei herunter und prüft sie | Pakete der Distribution oder das Panel |
| Nach einer Änderung einer PHP-Klasse oder INI | exp:velocity deploy (Neustart inbegriffen) | exp:velocity deploy (derselbe Befehl, --engine=frankenphp) | das PHP-FPM neu laden, das die Website ausliefert, oder exp:velocity deploy --no-velocity |
| Zertifikate | Velocity selbst, einschließlich ACME | Ihre Dateien oder selbstsigniert; von Ihnen erneuert | mod_ssl oder nginx plus certbot oder das Panel |
| Dienst beim Systemstart | eine systemd-Unit, die Sie schreiben (Kapitel 8 gibt eine abgeleitete), oder die eigenen Units der Engine | dasselbe | die Units der Distribution |
| Was zu überwachen ist | exp:velocity status --json, /Q/health, die Logs in var/vc/qbix/ | status, die JSON-Logs von Caddy in var/vc/frankenphp/log/ | die Logs des Servers und von PHP-FPM |
Warnung Unter Velocity halten die Worker Klassen, INI-Werte und kompilierte Templates im Speicher. Eine geänderte Klasse oder Einstellung erreicht sie erst nach einem Neustart. Schulen Sie die Support-Mitarbeitenden auf
exp:velocity deploy, bevor Sie Tarife mit Velocity verkaufen (Kapitel 8, Eine Änderung ausrollen).
Server mischen
Die Möglichkeiten schließen sich nicht aus. Eine häufige Form ist, dass Velocity die Website ausliefert, während Apache oder nginx
während einer Migration auf denselben Dateien bestehen bleibt; beide teilen dann var/, die Caches und die Sitzungen und müssen deshalb
als derselbe Benutzer schreiben. exp:velocity deploy bringt beide in einem Lauf auf den neuesten Stand, weil es auch das PHP-FPM neu
lädt, das die Website ausliefert. Details: Velocity neben Apache oder nginx.
Ein Entscheidungsprotokoll zum Kopieren
Plan name: <plan>
Server or engine: Velocity (qbix) | FrankenPHP | Apache + PHP-FPM | nginx + PHP-FPM | other: ...
PHP version and source: <version>, <distribution package | panel | binary>
Long-running processes allowed: yes | no
Isolation between customers: one machine per customer | one Velocity per site | one FPM pool per site
TLS terminated by: Velocity | FrankenPHP | Apache/nginx | load balancer or CDN
Response caching: Velocity response cache | kernel caches only | proxy in front
Who restarts after a deploy: <role>
Tested on staging on: <date>, by <role>Checkliste
- To do: Die Antwort des Tarifs auf die Frage, ob ein langlebiger Prozess laufen darf, ist aufgeschrieben.
- To do: Die PHP-Version auf der Maschine ist 8.0 oder neuer, auch wo Velocity angeboten wird.
- To do: Trennung zwischen Kunden entschieden: pro Maschine, pro Velocity-Instanz oder pro PHP-FPM-Pool.
- To do: Die vier Prüfungen des Routings aus Webserver und Engines bestehen.
- To do: Der Support weiß, wie eine PHP-Änderung den Server erreicht (
exp:velocity deployoder das Neuladen von FPM). - To do: Ein Server der Stufe 3 wurde auf Staging getestet, bevor er verkauft wurde.
Verwandte Seiten
- Webserver und Engines
- Velocity für Hoster
- Apache mit PHP-FPM
- Ein Hosting-Modell wählen
- Hosting, Datenbank und Betriebssystem wählen
- .htaccess und config.php von der Konsole einrichten: welche Server
.htaccesslesen - 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.