Drupal: XSend bzw mod_xsendfile auf Debian installieren
Verfasst von jan am Sa, 08/14/2010 - 13:00
Für Apache gibt es ein super Modul, welches den Dateitransfer massiv verschnellert, bzw die Ladezeit bis zum Dateitransfer. Das Modul heisst mod_xsendfile. Ich hatte einige Probleme das Ding auf meinem Debian zum laufen zu bringen. So habe ich es gemacht:
- Wechseln zum Ordner für Apache Module (/usr/lib/apache2/modules; wenn anders dann kann man den modules Ordner suchen: find / -name 'modules')
- Source herunterladen mit Link (Link Datei; Link Seite)
- apxs2 -cia mod_xsendfile.c (Achtung, bei mir musste ich eine 2 an das apxs anhängen, ist nicht so auf Homepage beschrieben!)
- Bei mir kam dann am Schluss folgende Fehlermeldung:
-
- apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..
- apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
- Lösen kann man das Problem mit folgendem Trick:
- nano /etc/apache2/httpd.conf
- Die folgenden zwei Zeilen untereinander eintragen
- #LoadModule directive to aid module installations
#LoadModule dummy_module /usr/lib/apache2/modules/mod_dummy.so - Wieder zumachen und speichern
- Apache neu starten (invoke-rc.d apache2 restart)
- Ich bin nicht ein Fan von Core-Patches, jedoch ziehe ich in diesem Fall ein solcher vor. Anstelle des xfile Modules von Drupal reicht es (für meinen Fall) in der includes/file.inc die Funktion file_transfer mit der Zeile "$headers[] = 'X-Sendfile: '.$source;" gerade nach dem ersten if {} Konstrukt einzufügen. Das Drupal modul xfiles ist so überflüssig.
function file_transfer($source, $headers) {
if (ob_get_level()) {
ob_end_clean();
}
$headers[] = 'X-Sendfile: '.$source;
foreach ($headers as $header) {
..
Kommentar hinzufügen