Aufbau des Speichers
Diese Seite ist für Systemadministratoren, die Festplatten dimensionieren, Backup-Jobs schreiben und Dateiberechtigungen für gehostete Exponential-Websites setzen. Sie beantwortet: was im Installationsverzeichnis liegt, wohin hochgeladene Dateien, Caches und Logs gehen, welche davon Kundendaten sind, die gesichert werden müssen, welche sich neu erzeugen lassen und welche Einstellungen sie verlegen.
Jeder Pfad und jede Einstellung unten stammt aus settings/site.ini [FileSettings] und dem Installationsbuch; folgen Sie den Links,
um sie zu prüfen.
Inhalt
- Das Installationsverzeichnis auf einen Blick
- Das Verzeichnis var
- Die Einstellungen, die Dateien platzieren
- Was beschreibbar sein muss
- Mehrere Websites in einer Installation
- Worauf Sie achten
- Checkliste
Das Installationsverzeichnis auf einen Blick
| Pfad | Was es ist | Für PHP beschreibbar | Sichern |
|---|---|---|---|
index.php, index_rest.php, index_treemenu.php | die Front-Controller | nein | kommt mit dem Code |
index_soap.php, soap.php | der SOAP-Server und sein früherer Name, der nur dorthin weiterleitet (6.0.15) | nein | kommt mit dem Code |
kernel/, lib/, bin/, share/, update/ | der Kernel, Bibliotheken, Skripte, Übersetzungen, Datenbank-Updates | nein | kommt mit dem Code |
vendor/ | die Composer-Pakete | nein (Composer schreibt es) | von Composer aus composer.lock neu aufgebaut |
extension/ | Erweiterungen, aus Composer oder von Hand geschrieben | nur, solange Pakete aus der Administration installiert werden | ja, wenn nicht in einem Repository |
design/ | Designs | nur, solange Pakete aus der Administration installiert werden | ja, wenn nicht in einem Repository |
settings/ | mitgelieferte Einstellungen (settings/*.ini) | ja, wenn Administratoren Einstellungen im Browser bearbeiten | settings/override/ und settings/siteaccess/ immer |
var/ | alles, was die laufende Website schreibt | ja | teilweise, siehe unten |
config.php, config.env.php | Konfiguration auf PHP-Ebene, der Name der Umgebung | nein | ja, falls vorhanden |
config.env.php nennt die Umgebung einer Maschine (EXP_ENV), und .gitignore hält sie aus der Versionsverwaltung heraus
(Einstellungen je Umgebung).
Das Verzeichnis var
var/ ist der eine Baum, den die laufende Website schreibt. Sein Aufbau, mit den mitgelieferten Einstellungen:
| Pfad | Enthält | Kundendaten? |
|---|---|---|
var/storage/ und var/<site>/storage/ | hochgeladene Bilder und Dateien und ihre Bildvarianten (original/, reference/, variations/) | ja |
var/storage/sqlite3/ | die Datenbankdatei einer SQLite-Website, mit ihren Dateien -wal und -shm | ja (mit dem Datenbankwerkzeug sichern, nie durch Kopieren) |
var/cache/, var/<site>/cache/ | kompilierte Templates, INI-Cache, View-Cache, Template-Blöcke, Übersetzungen, gepackte Skripte und Styles | nein: wird neu erzeugt |
var/<site>/cache/exphttpcache/ | der HTTP-Cache | nein: wird neu erzeugt |
var/log/, var/<site>/log/ | die Logs des Kernels | betrieblich, im Backup optional |
var/<site>/log/audit/ | das Prüfprotokoll (audit.ini [AuditSettings] LogDir=log/audit, innerhalb des var-Verzeichnisses) | ja: eine Aufzeichnung, die Sie vielleicht vorlegen müssen |
var/autoload/ | erzeugte Klassenzuordnungen | nein: php bin/php/ezpgenerateautoloads.php -e |
var/vc/ | Exponential Velocity: Logs, PID-Dateien, seine eigene Konfiguration, wenn /etc/vc nicht genutzt wird | nein, außer einer hier gehaltenen Konfiguration |
var/log/mail/ | Mails, die der Datei-Transport schreibt | nein |
var/<site>/cronjobs/ | Ausgabe und Verlauf von Jobs, die aus Setup > Cronjobs gestartet wurden | nein |
var/maintenance.json | nur vorhanden, solange der Wartungsmodus an ist | nein |
var/tmp/ | temporäre Arbeit, zum Beispiel der vom Wartungsmodus zur Seite verschobene HTTP-Cache | nein |
<site> steht für das var-Verzeichnis der Website, wenn ihre Siteaccesses VarDir=var/<site> setzen; viele Installationen halten
alles in var/ allein. Die Pfade der Cronjobs folgen dem var-Verzeichnis des Siteaccess der Administration
(Cronjobs, Abschnitt 14); der Baum von Velocity ist in
8.3.12 Logs beschrieben.
Dateien unter storage/ werden nach den ersten Zeichen ihres Namens auf Unterverzeichnisse verteilt ([FileSettings] DirDepth=3),
sodass kein einzelnes Verzeichnis zu groß wird.
Hinweis Caches können jederzeit gelöscht werden; die Website baut sie bei den nächsten Anfragen neu auf, auf Kosten langsamerer erster Seiten.
php bin/php/ezcache.php --clear-allist der unterstützte Weg, weil er auch die Ablaufzeitstempel behandelt (Caches).
Die Einstellungen, die Dateien platzieren
Alle in site.ini [FileSettings]; setzen Sie sie in settings/override/site.ini.append.php oder pro Siteaccess.
| Einstellung | Mitgeliefert | Bedeutung |
|---|---|---|
VarDir | var | die Wurzel von allem Geschriebenen; nur relative Pfade werden unterstützt |
StorageDir | storage | hochgeladene Dateien, unterhalb von VarDir |
CacheDir | cache | Caches, unterhalb von VarDir; ein absoluter Pfad wird nicht unterstützt (seine öffentlichen Caches würden nicht ausgeliefert) |
LogDir | log | Logs, unterhalb von VarDir; ein absoluter Pfad wird unterstützt |
TemporaryDir | /tmp/ | temporäre Dateien von Uploads und Konvertierungen |
DirDepth | 3 | Verzeichnistiefe im Speicher |
StorageDirPermissions, StorageFilePermissions | 0777, 0666 | Modi neuer Verzeichnisse und Dateien im Speicher |
TemporaryPermissions | 0777 | Modus temporärer Dateien |
LogFilePermissions | 0666 | Modus neuer Logdateien |
Die mitgelieferten Modi sind für alle beschreibbar. site.ini selbst empfiehlt 0770 und 0660 mit dem richtigen Eigentümer und
der richtigen Gruppe, was die gehärtete Wahl ist (8.7.2 Ein Benutzer oder eine Gruppe).
Warnung
TemporaryDir=/tmp/liegt außerhalb der Installation. Unter einer Beschränkung mitopen_basedir(auf Shared-Hosting-Panels verbreitet) erlauben Sie entweder/tmp/, oder Sie richtenTemporaryDirauf ein Verzeichnis innerhalb der Installation, das PHP schreiben darf.
Was beschreibbar sein muss
Der Setup-Assistent prüft die Liste in settings/setup.ini [directory_permissions] CheckList: design, extension, settings
mit settings/override und settings/siteaccess und var mit seinen Verzeichnissen für Cache, Log, Speicher und Autoload. Nach
der Installation können design/ und extension/ wieder schreibgeschützt werden, wenn nichts Pakete aus der Administration
installiert (8.7.1).
Die häufigste Ursache seltsamer Fehler sind zwei Systembenutzer, die dieselben Dateien schreiben: der PHP-FPM-Pool, die Worker von Velocity, Cronjobs und Skripte der Kommandozeile. Führen Sie alle als Benutzer der Website aus, oder geben Sie ihnen eine gemeinsame Gruppe mit setgid-Verzeichnissen (8.7.2). Die Details für eine Hosting-Plattform stehen auf Beschreibbare Verzeichnisse und Berechtigungen.
Mehrere Websites in einer Installation
Eine Installation kann viele Websites ausliefern, jede mit eigenem VarDir. Sechs Einstellungen in [FileSettings] entscheiden,
wohin ihre Logs und Caches gehen (Logs, INI-Cache und Ablaufzeitstempel pro Website):
| Einstellung | Mitgeliefert | Wirkung |
|---|---|---|
UseGlobalLogDir | enabled | disabled schreibt die Debug-Logs jeder Website in ihr eigenes Log-Verzeichnis |
LogVarDir | leer | ein getrennter Baum für alle Logs: var/example schreibt nach var_log/example/log |
CacheVarDir | leer | ein getrennter Baum für alle Caches: var_cache/example/cache, zum Beispiel ein Dateisystem im Arbeitsspeicher |
ExpiryDir | leer | hält expiry.php aus einem Cache-Verzeichnis heraus, das bei einem Neustart geleert wird |
INICacheDir | global | site speichert die INI-Dateien jeder Website in ihrem eigenen Cache-Verzeichnis zwischen |
AllowedDeletionDirs[] | leer | zusätzliche absolute Verzeichnisse, in denen das Leeren eines Caches löschen darf |
Die Seite der Funktion zeigt ein vollständiges Beispiel mit einem tmpfs-Cache für alle Websites. Ein Cache im Arbeitsspeicher ist
schnell und geht bei jedem Neustart verloren; halten Sie ExpiryDir auf der Festplatte, damit Bildvarianten, die vor einem Leeren
erzeugt wurden, nicht wieder als aktuell gelten.
Worauf Sie achten
- Wachstum auf der Festplatte: Der Speicher wächst mit den Uploads des Kunden; Caches wachsen mit Verkehr und Templates; Logs
werden rotiert (siehe Log-Viewer und Log-Rotation).
./console exp:systeminfo --sizesund Setup > Systeminformationen > Größen messen melden die Größe vonvar/und jedes Cache-Verzeichnisses (Systeminformationen). - Inodes: Der View-Cache und die Bildvarianten sind viele kleine Dateien; beobachten Sie auf dem Dateisystem, das
var/enthält, neben den Bytes auch die Nutzung der Inodes. - Eigentümer: Prüfen Sie nach jedem als
rootausgeführten Befehl den Eigentümer neuer Dateien invar/.
Checkliste
- To do:
var/liegt auf einem Dateisystem mit Platz für Caches, Logs und ein lokales Backup. - To do: Der PHP-FPM-Pool, die Worker von Velocity und die Cronjobs laufen als ein Benutzer oder teilen eine Gruppe mit setgid-Verzeichnissen.
- To do:
StorageDirPermissionsundStorageFilePermissionssind auf0770und0660gesetzt, wo der Eigentümer es erlaubt. - To do:
TemporaryDirist unter demopen_basedirdes Kontos erreichbar. - To do: Backups enthalten
var/storage, den Speicher pro Website, das Audit-Verzeichnis und die Überschreibungen der Einstellungen. - To do: Caches,
var/autoloadund die Logs invar/vcsind von Backups ausgeschlossen, um Platz zu sparen.
Verwandte Seiten
- Was gesichert werden muss
- Clustering und gemeinsamer Speicher
- Beschreibbare Verzeichnisse und Berechtigungen
- Speicher, CPU und Festplatte dimensionieren
- 8.7 Dateiberechtigungen und Eigentum
- 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.