So installieren und konfigurieren Sie mod_deflate unter Ubuntu 14.04

Einführung

Mod_deflate ist ein Apache-Modul, mit dem die Ausgabe von Ihrem Webserver komprimiert werden kann, bevor sie an den Client gesendet wird. Sobald die Größe Ihres Websiteinhalts komprimiert ist, ist diese kleiner und die Clients können ihn schneller herunterladen. Dies ist nicht nur für Kunden mit geringerer Bandbreite von Nutzen, sondern wird auch von Suchmaschinen bei der Bewertung der Leistung Ihrer Website und des Page Rank berücksichtigt.

Neben dem Komprimieren von Inhalten kann mod_deflate auch zum Dekomprimieren verwendet werden. Diese Technik ist anwendbar, wenn Sie Apache als Reverse-Proxy verwenden und den Inhalt, der den Proxy durchläuft, weiter verarbeiten möchten. Diese Technik hat jedoch eine sehr begrenzte Verwendung. Wir werden den Fokus des Artikels auf die Verwendung von mod_deflate zur Komprimierung richten.

Voraussetzungen

Dieses Handbuch wurde unter Ubuntu 14.04 getestet. Für CentOS 7 überprüfen Sie bittethis guide. Die Installation und Konfiguration des Moduls ist nicht vom Betriebssystem oder der Betriebssystemversion abhängig. Der Speicherort der Konfigurationsdateien kann jedoch je nach Betriebssystem und Version variieren.

Es wird auch davon ausgegangen, dass Sie Apache 2.4.0 oder höher ausführen. Um Apache zu installieren, folgen Sie bitte Schritt 1 des Artikels vonHow To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04.

Alle Befehle in diesem Lernprogramm sollten als Benutzer ohne Rootberechtigung ausgeführt werden. Wenn für den Befehl Root-Zugriff erforderlich ist, wirdsudo vorangestellt. Wenn Sie das noch nicht eingerichtet haben, folgen Sie diesem Tutorial:Initial Server Setup with Ubuntu 14.04.

Installation

Mod_deflate ist in der Apache-Standardinstallation unter Ubuntu 14.04 enthalten und aktiviert. Um diesen Laufapachectl, die Apache Server Control Interface, zu bestätigen und die Ausgabe mitgrep für das Schlüsselwortdeflate wie folgt zu filtern:

apachectl -t -D DUMP_MODULES |grep deflate

[.note] #Note:Wennapachectl nicht in Ihrem Pfad enthalten ist, müssen Sie möglicherweise den vollständigen Pfad zum Befehl verwenden:/usr/sbin/apachectl.
#

Sie solltendeflate_module (shared) sehen, wenn mod_deflate installiert und aktiviert ist. Wenn dies nicht angezeigt wird, führen Sie die folgenden Schritte zur Fehlerbehebung aus:

  1. Stellen Sie sicher, dass die Moduldatei installiert ist. Diese Datei ist Teil des Kernpaketsapache2, das Sie bereits gemäß den zuvor genannten Voraussetzungen installiert haben sollten. Standardmäßig wird es in/usr/lib/apache2/modules/mod_deflate.so gefunden. Außerdem sollte der Webserver diese Datei öffnen können. Zu diesem Zweck solltenmod_deflate.so über weltweit lesbare Berechtigungen wie 644 verfügen.

  2. Überprüfen Sie, ob das Modul geladen wurde. Öffnen Sie die Modulkonfigurationsdatei/etc/apache2/mods-enabled/deflate.load, die ein Symlink zu/etc/apache2/mods-available/deflate.load ist, und stellen Sie sicher, dass diese Zeile vorhanden und nicht auskommentiert ist:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

[.note] #Note: Vergessen Sie nicht, Apache neu zu starten, wenn Sie Änderungen an der Apache-Konfiguration vornehmen mussten. Der Neustartbefehl lautetsudo apachectl restart.
#

Aufbau

Um mit der Verwendung von mod_deflate zu beginnen, müssen Sie angeben, welche Dateitypen komprimiert werden sollen. Einerseits können reine Textformate durch Komprimierung erheblich verkleinert werden. Daher ist es sinnvoll, sie auf HTML-, CSS- oder JavaScript-Dateien anzuwenden. Auf der anderen Seite enthalten viele Multimedia-Formate wie Flash und Bilder bereits eine Komprimierung, und eine zusätzliche Komprimierung ist sinnlos.

Zu Beginn können Sie die Standardkonfiguration in der Datei/etc/apache2/mods-enabled/deflate.conf verwenden, einem Symlink zu/etc/apache2/mods-available/deflate.conf.

/etc/apache2/mods-enabled/deflate.conf


        
                # these are known to be safe with MSIE 6
                AddOutputFilterByType DEFLATE text/html text/plain text/xml

                # everything else may cause problems with MSIE 6
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
                AddOutputFilterByType DEFLATE application/rss+xml
                AddOutputFilterByType DEFLATE application/xml
        

Der obige Code bedeutet, dass, wenn eine Datei mit den Erweiterungen übereinstimmt, alle gängigen Textdateierweiterungen wie.html,.txt,.xml,.css,.js usw. verwendet werden. Es wird durch die Deflate-Aktion von mod_deflate komprimiert. Wenn Sie nicht sicher sind, wie die Erweiterungen nach MIME-Typen zugeordnet sind, überprüfen Sie die Datei/etc/mime.types. Möglicherweise möchten Sie weitere Erweiterungen für Ihre Website hinzufügen.

 +
*Note:* In Ubuntu the Apache configuration is organized intuitively in multiple files. Also, configuration files are usually not enabled. For example, the modules configuration files reside in the directory `+/etc/apache2/mods-available/+`, e.g. `+/etc/apache2/mods-available/deflate.conf+`. A module configuration file is enabled only when a symlink to it is created in the directory `+/etc/apache2/mods-enabled/+` such as `+/etc/apache2/mods-enabled/deflate.conf+`. +

Darüber hinaus hat mod_deflate einige wichtige Konfigurationsoptionen:

  • DeflateCompressionLevel - Die anzuwendende Komprimierungsstufe. Diese Stufe ist standardmäßig 9, die höchste Komprimierungsstufe. 1 ist die niedrigste Komprimierungsstufe. Eine höhere Komprimierung würde die geringste Ausgabe zum Preis einer höheren Server-CPU-Auslastung ergeben.

  • DeflateMemLevel - Die Speichermenge, die die Komprimierungsbibliothek verwenden kann. Der Standardwert ist 9, was auch der höchste Wert ist. Um den zulässigen Speicher genau zu berechnen, sollten Sie den Wert vonDeflateMemLevelmit 16 KB multiplizieren.

  • DeflateWindowSize - Die Größe des Komprimierungsfensters. Standardmäßig ist dies der höchstmögliche Wert von 15. Eine höhere Anzahl bedeutet eine höhere Komprimierungsstufe, wiederum zum Preis von mehr Serverressourcen.

In den meisten Fällen können Sie die obigen Werte den Standardwerten überlassen. Wenn Sie jedoch den Verdacht haben, dass sich Ihre Serverleistung nach der Verwendung von mod_deflate erheblich verschlechtert hat, können Sie niedrigere Werte in Ihrer Konfigurationsdatei/etc/apache2/mods-enabled/deflate.confwie folgt konfigurieren:

DeflateCompressionLevel 1

Das Obige verringert die Komprimierungsstufe, wodurch die Dateien größer werden. Mod_deflate wird auf diese Weise jedoch weniger CPU verbrauchen. Stellen Sie sicher, dass Sie Apache neu starten, wenn Sie solche Änderungen übernehmen möchten.

Testen

Es gibt verschiedene Möglichkeiten, mod_deflate zu testen. Am einfachsten ist es jedoch, wget, den nicht interaktiven Netzwerk-Downloader, zu verwenden. Wenn Sie es noch nicht auf Ihrem Ubuntu 14.04 Droplet haben, können Sie es mit dem Befehlsudo apt-get install wget installieren.

Für den Test benötigen Sie eine Textdatei von mindestens einigen hundert KB, die beim Komprimieren kleiner werden soll. Wenn Sie eine solche Datei nicht zur Hand haben, können SieJQuery, eine beliebte JavaScript-Bibliothek, herunterladen und auf Ihre Website hochladen. Wenn Sie nicht sicher sind, wo Sie die Datei ablegen sollen, können Sie sie einfach in das Apache-Standarddokumentstammverzeichnis hochladen, das in Ubuntu 14.04/var/www/html/ ist. Somit ist die Datei im Stammverzeichnis Ihrer Standardwebsite verfügbar.

 +
*Note:* In order for mod_deflate to compresses the output the client (usually the browser) has to support compression. If the client does not support compression the file will be sent as is. +

Sobald die Beispieltestdatei auf Ihre Site hochgeladen wurde, laden Sie sie mitwget herunter. Sie können diesen Test entweder von Ihrem lokalen Computer oder vom Droplet aus durchführen. so was:

wget --header="Accept-Encoding: gzip" http:///jquery-1.11.3.js

Im obigen Beispiel laden Sie diejquery-1.11.3.js-Datei von Ihrem Apache-Server herunter. Um die Komprimierung zu nutzen, übergeben wir das zusätzlichewget-Header-ArgumentAccept-Encoding: gzip.

Beim Herunterladen auf die oben beschriebene Weise sollte die Dateijquery-1.11.3.js 83 KB groß sein. Tatsächlich ist dies nicht genau dieselbe ursprüngliche JavaScript-Datei, und sie sollte zusätzlich vom Client extrahiert werden, was auch auf der Clientseite zu einem gewissen Overhead führt. Die über das Netzwerk übertragene Größe beträgt jedoch nur 83 KB und ist damit mehr als dreimal kleiner als die ursprüngliche Datei (278 KB).

Sie können die obige Berechnung zuerst bestätigen, indem Sie die Größe der heruntergeladenen Datei mit dem Linux-Befehl überprüfen, um den Verzeichnisinhaltlswie folgt aufzulisten:

ls -lah jquery-1.11.3.js
-rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

Anschließend können Sie das Ergebnis mit dem Befehlls erneut mit der Originaldatei auf Ihrer Site vergleichen:

ls -lah /var/www/html/jquery-1.11.3.js
-rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js

Fazit

Wie Sie in diesem Artikel und anhand eines Beispiels aus der Praxis mit der JQuery-Bibliothek gesehen haben, kann Mod_deflate Ihnen dabei helfen, den Bandbreitenbedarf für Ihre Site erheblich zu verringern. Um mit der Optimierung Ihrer Site fortzufahren, lesen Sie ungefährApache content caching. Dies ist der nächste logische Schritt nach dem Aktivieren von mod_deflate.