Caddy
Diese Seite ist für Systemadministratoren bei Hosting-Unternehmen, die Caddy nutzen oder nutzen wollen. Sie beantwortet: wie Caddy mit Exponential zusammenhängt, welchen der zwei Wege mit Caddy das Projekt am besten unterstützt, welches Routing eine Caddy-Konfiguration umsetzen muss und was die Quellen bieten und was nicht.
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
- Zwei Wege, Caddy zu nutzen
- FrankenPHP: Caddy, von Exponential verwaltet
- Caddy mit PHP-FPM
- Das Routing, das jede Caddy-Konfiguration braucht
- HTTPS
- Checkliste
Zwei Wege, Caddy zu nutzen
FrankenPHP (über exp:velocity) | Caddy mit PHP-FPM | |
|---|---|---|
| Was es ist | Caddy mit eingebautem PHP, als eine Binärdatei mit geprüfter Prüfsumme heruntergeladen (README.md) | der Webserver Caddy, der Anfragen an einen PHP-FPM-Pool weitergibt |
| Status | produktionsreife alternative Engine | Stufe 3, sollte funktionieren (Unterstützung von Betriebssystemen) |
| Konfiguration | ein Caddyfile, bei jedem Start aus settings/velocity.ini erzeugt | ein Caddyfile, das Sie schreiben |
| Vom Projekt ausgeliefert | ja, gesteuert über exp:velocity | keine Konfiguration wird ausgeliefert |
Für einen Hoster, der Caddy mag, ist FrankenPHP der Weg, den das Projekt dokumentiert und für den es Konfiguration erzeugt. Lesen Sie FrankenPHP.
FrankenPHP: Caddy, von Exponential verwaltet
exp:velocity schreibt var/vc/frankenphp/run/Caddyfile bei jedem start, graceful und restart, prüft es mit
frankenphp validate, bevor es das alte ersetzt, und steuert den Server über die Admin-API von Caddy auf einem Socket, der nur dem
Eigentümer gehört (Kapitel 8, FrankenPHP). Der Kopf der Datei sagt, dass sie jedes
Mal neu geschrieben wird; bearbeiten Sie sie also nie, sondern setzen Sie Ihre eigenen Direktiven in eine Datei, die
[FrankenPHPSettings] SiteInclude nennt und die in jeden Site-Block importiert wird
(FrankenPHP als Web-Engine von Exponential).
php bin/php/console exp:velocity ctl caddyfile --engine=frankenphp --allow-root-user # print the generated Caddyfile
php bin/php/console exp:velocity ctl validate --engine=frankenphp --allow-root-user # write and validate itCaddy mit PHP-FPM
Die Quellen beschreiben diese Einrichtung in einer Zeile: php_fastcgi und ein Rewrite auf index.php
(Unterstützung von Betriebssystemen), und die Tabelle der klassischen Server im README nennt rewrite,
handle und try_files von Caddy. Mit Exponential wird kein Caddyfile für PHP-FPM ausgeliefert; die Konfiguration schreiben und testen
also Sie, wie bei nginx.
Warnung Nutzen Sie keine Direktive, die jede vorhandene Datei unterhalb der Wurzel ausliefert. Die Integration von FrankenPHP meidet bewusst
php_servervon Caddy, weil dessen Standardsettings/*.ini, die SQLite-Datenbank und Quellen des Kernels ausliefern würde (FrankenPHP, Das erzeugte Caddyfile). Was Sie auch für PHP-FPM schreiben, es darf nur die aufgeführten Asset-Pfade als Dateien senden und alles andere an einen Front-Controller. Prüfen Sie in der Dokumentation Ihrer Caddy-Version, wie deren PHP-Direktiven vorhandene Dateien behandeln.
Ein praktischer Anfang: Erzeugen Sie das Caddyfile von FrankenPHP auf einer Testmaschine mit
exp:velocity ctl caddyfile --engine=frankenphp, lesen Sie seinen Block route und bilden Sie dieselben Matcher vor Ihrem
PHP-FPM-Handler nach.
Das Routing, das jede Caddy-Konfiguration braucht
Caddy liest .htaccess nie, ./console exp:setup:htaccess --apply ändert für Caddy also nichts; das Routing steht im
Caddyfile (.htaccess und config.php von der Konsole einrichten).
Das erzeugte Caddyfile setzt .htaccess_root so um
(FrankenPHP, Was es enthält):
| Schritt | Matcher | Aktion |
|---|---|---|
| 1 | @static: expVelocity::STATIC_PATHS und nicht expVelocity::NEVER_STATIC | die Datei ausliefern, mit Cache-Control, wenn StaticMaxAge über 0 liegt |
| 2 | @rest: ^/(api/|index_rest\.php) | auf /index_rest.php umschreiben |
| 3 | @treemenu: ^/([^/]+/)?content/treemenu | auf /index_treemenu.php umschreiben |
| 4 | @front: alles andere | auf /index.php umschreiben |
STATIC_PATHS trifft Stylesheets, Bilder, Skripte und Schriften von Designs und Erweiterungen, share/icons/, die
Icon-Themes der Erweiterungen (extension/<name>/icons/, Bilder mit genau einer Dateiendung), var/*/storage/images,
gespeicherte Originalbilder, gespeicherte PDF-Exporte, die Caches public und texttoimage, Paketstile, var/storage/packages/,
favicon.ico, robots.txt, index.js, sw.js und w3c/p3p.xml. NEVER_STATIC ist (?i)(\.(php\d?|phtml|phar)$|/\.): Keine
PHP-Quelle und keine Datei mit Punkt wird je als Datei ausgeliefert, auch nicht unterhalb eines Asset-Verzeichnisses. Beide Konstanten
stehen in kernel/classes/expvelocity.php.
HTTPS
Das README erwähnt das automatische HTTPS, das Caddy von Haus aus mitbringt. In der Integration von FrankenPHP ist es ausgeschaltet
(auto_https off): Die Einstellungen von Velocity entscheiden über das Zertifikat, entweder [HTTPSSettings] Certificate und Key oder
ein für die Maschine erstelltes selbstsigniertes Zertifikat. Bei einem eigenständigen Caddy mit PHP-FPM ist die Verwaltung der
Zertifikate Sache von Caddy; folgen Sie seiner Dokumentation. Wer auch immer TLS beendet, Exponential muss erfahren, dass die Anfrage
HTTPS war: direkt (HTTPS an PHP übergeben) oder von einem vertrauenswürdigen Proxy
(Varnish und Reverse Proxys).
Checkliste
- To do: Zwischen FrankenPHP (erzeugte Konfiguration) und Caddy mit PHP-FPM (eigene Konfiguration) entschieden.
- To do: Für PHP-FPM: die Routing-Tabelle oben nachgebildet; nichts außerhalb der Asset-Liste wird als Datei ausgeliefert.
- To do: Die vier Prüfungen des Routings aus Webserver und Engines bestehen.
- To do: Die Einrichtung wurde auf Staging getestet, bevor sie verkauft wurde (Stufe 3).
- To do: Die Upgrade-Checkliste enthält den Vergleich Ihrer Regeln mit
.htaccess_root.
Verwandte Seiten
- FrankenPHP
- nginx mit PHP-FPM
- Einen Webserver wählen
- Velocity-Engines
- .htaccess und config.php von der Konsole einrichten
- 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.