Auslieferung statischer Dateien für eine bessere Leistung¶

Seit ownCloud 5 ist es möglich, von den Webservern statische Dateien verarbeiten zu lassen. Daa sollte in der Regel die Leistung zu verbessern (Web-Server sind dafür optimiert) und in einigen Fällen ist ein gezieltes File-Serving (das heißt das nach einer Pause Downloads fortgesetzt werden können) möglich.

Hinweis

Diese Funktion kann zur Zeit nur für lokale Dateien, d.h. Dateien die sich im data/ Verzeichns befunden und lokal gemountet sind, wendent werden. Es ist auch nicht möglich mit dieser Funktion zu arbeiten, wenn die Verschlüsselungs-App aktiviert wurde. Kontrolliertes File-Serving arbeitet nicht mit generierte ZIP-Dateien zusammen. Diess erzeugrten ZIP-Dateien werden per Streaming direkt zurück an den Client ausgeliefert.

Apache2 (X-Sendfile)¶

Das ist möglich, wenn Apache statische Datei via mod_xsendfile ausliefert.

Installation¶

Wenn Sie ein Debian und Ubuntu-System verwenden:

apt-get install libapache2-mod-xsendfile

Konfiguration¶

Die Konfiguration von mod_xsendfile für ownCloud hängt von seiner Version ab. Bei Ausführungen unter 0.10 (Debian Squeeze wird mit 0.9 verwendet)

<Directory /var/www/owncloud>
    ...
    SetEnv MOD_X_SENDFILE_ENABLED 1
    XSendFile On
    XSendFileAllowAbove On
</Directory>

Für die Versions >=0.10 (z.Bsp. ab Ubuntu 12.10)

<Directory /var/www/owncloud>
    ...
    SetEnv MOD_X_SENDFILE_ENABLED 1
    XSendFile On
    XSendFilePath /home/valerio
</Directory>
  • SetEnv MOD_X_SENDFILE_ENABLED: übergibt den ownCloud Skripts, das sie den X-Sendfile header beim Servieren Dateien hinzufügen sollen.
  • XSendFile: Damir können Web-Server mit X-Sendfile-Headern (und damit File-Serving) für das angegebene Verzeichnis umegehen.
  • XSendFileAllowAbove (<0.10): ermöglicht File-Serving über Web-Server auf denen sich der Pfad außerhalb des angegebenen Verzeichnis befindet. Dies ist für die konfigurierten lokalen Mountpunkte erfoderlich, die sich nicht im Daten-Verzeichnis befinden.
  • XSendFilePath (>=0.10): eine weiße Liste der Pfade, die der Webserver außerhalb des angegebenen Verzeichnis verwenden soll. Andere Wege, die zu lokalen Mountpunkten zeigen sollten auch hier entsprechend konfiguriert werden. Für eine tiefer gehende Dokumentation dieser Richtlinie beziehen Sie sich auf mod_xsendfile auf der oben verlinkten Website

LigHTTPd (X-Sendfile2)¶

Lighttpd verwendet ähnliche Header, wie Apache2, abgesehen von der Tatsache, dass es Teil Downloads nicht auf die gleiche Weise behandelt, wie es Apache2 tut. Aus diesem Grund wird ein anderes Verfahren für LightTPD verwendet.

Installation¶

X-Sendfile und X-Sendfile2 werden Standardmäßig in Lighttpd unterstützt und es werden keine zusätzliche Operation benötigt, um diese zu installieren.

Konfiguration¶

Ihre Server-Konfiguration sollten Sie die folgenden Anweisungen enthalten:

fastcgi.server          = ( ".php" => ((
   ...
   "allow-x-send-file" => "enable",
   "bin-environment" => (
      "MOD_X_SENDFILE2_ENABLED" => "1",
   ),
)))
  • allow-x-send-file: ermöglicht es Lighttpd X-Sendfile und X-Sendfile2 Header zu verwenden, um Dateien auszuliefern
  • bin-environment: wird verwendet, um den MOD_X_SENDFILE2_ENABLED ownCloud Backend zu analysieren, damit es die X-Sendfile und X-Kopfzeilen verwenden kann und Sendfile2 als Antwort liefert.

Nginx (X-Accel-Redirect)¶

Nginx supports handling of static files differently from Apache. Documentation can be found in the Nginx Wiki section Mod X-Sendfile and section X-Accell. The header used by Nginx is X-Accel-Redirect.

Installation¶

X-Accel-Redirect ist standardmäßig in Nginx unterstützt und es sollten keine zusätzliche Operation für die Installation benötigt werden.

Konfiguration - Methode 1¶

Die Methode 1 wird bevorzugt, weil diese begrenzt, welche Dateien durch X-Accel ausgeliefert werden.

location ~ \.php(?:$|/) {
    ...
    fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on;
}

location ^~ /data {
    internal;
    # Set 'alias' if not using the default 'datadirectory'
    #alias /path/to/non-default/datadirectory;

#    LOCAL-MOUNT-NAME should match "Folder name" and 'alias' value should match "Configuration"
#    A 'Local' External Storage Mountpoint available to a single user
#    location /data/USER/files/LOCAL-FS-MOUNT-NAME {
#        alias /path/to/local-mountpoint;
#    }

#    A 'Local' External Storage Mountpoint available to mulitple users
#    location ~ ^/data/(?:USER1|USER2)/files/LOCAL-FS-MOUNT-NAME/(.+)$ {
#        alias /path/to/local-mountpoint/$1;
#    }

#    A 'Local' External Storage Mountpoint available to all users
#    location ~ ^/data/[^/]+/files/LOCAL-FS-MOUNT-NAME/(.+)$ {
#        alias /path/to/local-mountpoint/$1;
#    }

}
  • fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED ~ übergibt den ownCloud Skripts, die X-Accel-Redirect-Header-Dateien die beim Ausliefern hinzugefügt werden sollen.
  • /data ~ Das ownCloud Datenverzeichnis. Jeder 'Local' External Storage Mountpunkt muss auch hier verschachtelt angeben werden.
    • Set-Alias, wenn Sie ein Nicht-Standard-Datenverzeichnis werden
    • /data/USER/files/LOCAL-MOUNT-NAME ~ ein lokaler externer Speicher für einen einzelnen Benutzer zur Verfügung gestellt wird
    • ~ ^/data/(?:USER1|USER2)/files/LOCAL-MOUNT-NAME/(.+)$ ~ ein lokaler externer Speicher für mehrere Benutzer verfügbar sein soll
    • ~ ^/data/[^/]+/files/LOCAL-MOUNT-NAME/(.+)$ ~ ein lokaler externer Speicher für alle Benutzer verfügbar sein soll

Konfiguration - Methode 2¶

Methode 2 ist einfacher zu installieren, wenn Sie lokalen externe Speicher verwenden, der vor allem vielen aber nicht allen Benutzers zur Verfügung stehen soll. Dieses Verfahren kann bevorzugt werden, wenn Sie regelmäßig Benutzer hinzufügen, die nicht alle Zugang zu dem gleichen lokalen externen Speicherträger(s) haben sollen.

location ~ \.php(?:$|/) {
    ...
    fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on;
    fastcgi_param MOD_X_ACCEL_REDIRECT_PREFIX /xaccel;
}

location ^~ /xaccel {
    internal;
    alias /;
}
  • fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED ~ übergibt den ownCloud Skripts, die X-Accel-Redirect-Header-Dateien die beim Ausliefern hinzugefügt werden sollen.
  • fastcgi_param MOD_X_ACCEL_REDIRECT_PREFIX ~ Ein Präfix der intern dazu dient Dateien aus, in diesem Beispiel "/xaccel" zu verwenden, das kann aber konfiguriert/angepaßt werden.
  • location ^~ /xaccel ~ Die Lage der internen Dateien die verwendet werden sollen, es muß dem MOD_X_ACCEL_REDIRECT_PREFIX entsprechen.

Wie wird geprüft, ob alles funktioniert ?¶

Sie sind immer noch in der Lage, Dateien über das Webinterface und aus einzelnen Verzeichnissen, lokale Datei-Downloads herunterladen zu können, diese anzuhalten und wieder aufzunehmen.