Hinzufügen von ngx_pagespeed zu Nginx unter Debian 8

Einführung

ngx_pagespeed oder einfach nur Pagespeed ist ein Nginx-Modul, mit dem Sie Ihre Website automatisch optimieren können, indem Sie die Größe der Ressourcen und damit die Zeit reduzieren, die die Browser der Clients zum Laden benötigen. Wenn Sie noch nicht damit vertraut sind, lesen Sie die official site.

Dieser Artikel führt Sie durch die Installation und Konfiguration des Pagespeed-Moduls für Nginx. Es ist wichtig zu wissen, dass Nginx das dynamische Laden von Modulen, das auf anderen Webservern wie Apache verfügbar ist, nicht unterstützt. Da Nginx diese Funktion nicht unterstützt, müssen Sie Nginx aus dem Quellcode erstellen, um das Modul hinzuzufügen.

Ein eigenes benutzerdefiniertes Paket zu haben hat einen Nachteil: Sie sind allein dafür verantwortlich, es zu aktualisieren, wenn es eine neue Version gibt. Berücksichtigen Sie dies, wenn Sie die Vor- und Nachteile der Verwendung von ngx_pagespeed abwägen.

Voraussetzungen

Dieser Leitfaden wurde für Debian 8 geschrieben. Ein Link: / community / tutorials / add-ngx_pagespeed-to-nginx-on-ubuntu-14-04 [Ubuntu 14.04 version] und ein Link: / community / tutorials / add-ngx_pagespeed-to -nginx-on-centos-7 [CentOS 7-Version] sind ebenfalls verfügbar.

Stellen Sie vor dem Ausführen dieses Lernprogramms sicher, dass folgende Voraussetzungen erfüllt sind:

Sofern nicht anders angegeben, sollten alle Befehle, für die in diesem Lernprogramm Root-Berechtigungen erforderlich sind, als Nicht-Root-Benutzer mit Sudo-Berechtigungen ausgeführt werden.

Schritt 1 - Laden Sie die Quelle und ihre Abhängigkeiten herunter

Vor allem müssen wir alle Abhängigkeiten erfüllen, die zum Ausführen von Nginx erforderlich sind. Führen Sie dazu den Befehl aus:

sudo apt-get build-dep nginx

Erstellen Sie als Nächstes einen Ordner in Ihrem Ausgangsverzeichnis, um das Quellpaket für Nginx herunterzuladen:

mkdir ~/custom-nginx

Wechseln Sie in dieses neu erstellte Verzeichnis:

cd ~/custom-nginx

Laden Sie dann das Nginx-Quellpaket mit dem folgenden Befehl in dieses Verzeichnis herunter:

sudo apt-get source nginx

Um zu bestätigen, dass wir uns auf derselben Seite befinden, listen Sie den Inhalt des Ordners "+ ~ / custom-nginx +" auf:

ls ~/custom-nginx

Das Ergebnis sollte so aussehen:

Output of ls ~/custom-nginxnginx-1.6.2  nginx_1.6.2-5.debian.tar.xz  nginx_1.6.2-5.dsc  nginx_1.6.2.orig.tar.gz

Wie Sie sehen, ist die Version des Nginx-Quellpakets zum Zeitpunkt der Erstellung dieses Tutorials 1.6.2. Um mit dem Hinzufügen des Moduls ngx_pagespeed zu beginnen, müssen Sie zunächst in den Ordner "+ modules " im extrahierten Ordner " nginx-1.6.2 +" wechseln:

cd nginx-1.6.2/debian/modules

Laden Sie in diesem Verzeichnis das neueste Quellarchiv von ngx_pagespeed von der Website Github repository mit dem folgenden Befehl herunter:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

Sobald der Download abgeschlossen ist, benötigen Sie das Dienstprogramm + unzip +, um es zu extrahieren. Wenn Sie noch kein "+ unzip +" haben, installieren Sie es mit dem folgenden Befehl:

sudo apt-get install unzip

Danach extrahieren Sie die heruntergeladene Datei mit dem Befehl:

sudo unzip master.zip

Dadurch wird ein neues Verzeichnis mit dem Namen "+ ngx_pagespeed-master " in Ihrem " ~ / nginx-1.6.2 / debian / modules " -Verzeichnis erstellt. Benennen Sie dieses Verzeichnis mit dem folgenden Befehl einfach in " ngx_pagespeed +" um:

sudo mv ngx_pagespeed-master ngx_pagespeed

Gehe in das neue + ngx_pagespeed + Verzeichnis:

cd ngx_pagespeed

Laden Sie von dort die PageSpeed ​​Optimization Libraries (psol) herunter, die für die Kompilierung erforderlich sind:

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz

Wenn der Link zum psol-Archiv zum Zeitpunkt des Lesens dieses Artikels nicht funktioniert, überspringen Sie einfach diesen Schritt. Wenn Sie die Bibliotheken während der Kompilierung in den nächsten Schritten vermissen, wird ein Fehler mit aktualisierten Anweisungen zum späteren Abrufen des Pakets angezeigt.

Zum Schluss extrahieren Sie das psol-Paket im Verzeichnis + ~ / custom-nginx / nginx-1.6.2 / debian / modules / ngx_pagespeed +:

sudo tar -xzvf 1.9.32.6.tar.gz

Schritt 2 - Passen Sie die Quelle an

Jetzt können Sie die Kompilierungsregeln anpassen und ngx_pagespeed in die Installation einbeziehen. Bearbeiten Sie dazu die Datei + ~ / custom-nginx / nginx-1.6.2 / debian / rules + mit Ihrem Lieblingseditor:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/rules

Dort gibt es vier verschiedene Szenarien für die Erstellung von Nginx-Paketen: "+ common", "+ full", "+ light" und "+ extras". Wie der Name schon sagt, enthält "+ common " die allgemeinen Nginx-Dateien ohne Server, " full " enthält einen Server mit den beliebtesten Modulen, " light " erstellt einen Server mit nur den wesentlichen Modulen und " extras +" ist für einen Server mit einigen extravaganten Modulen.

Nehmen wir an, Sie benötigen ein "+ light " - Nginx-Setup plus "ngx_pagespeed". Fügen Sie daher das Ende des Konfigurationsblocks ` light_configure_flags +` hinzu und fügen Sie die folgende Zeile hinzu:

~ / custom-nginx / nginx-1.6.2 / debian / rules

--add-module=$(MODULESDIR)/ngx_pagespeed

Bitte vergessen Sie nicht, in der vorherigen Zeile einen Backslash ("+") einzufügen. Der gesamte Konfigurationsblock sollte folgendermaßen aussehen:

~ / custom-nginx / nginx-1.6.2 / debian / rules

light_configure_flags := \
                       $(common_configure_flags) \
                       --with-http_gzip_static_module \
                       --without-http_browser_module \
                       --without-http_geo_module \
                       --without-http_limit_req_module \
                       --without-http_limit_zone_module \
                       --without-http_memcached_module \
                       --without-http_referer_module \
                       --without-http_scgi_module \
                       --without-http_split_clients_module \
                       --without-http_ssi_module \
                       --without-http_userid_module \
                       --without-http_uwsgi_module \
                       --add-module=$(MODULESDIR)/nginx-echo

Sie können die gleiche Zeile auch zu den anderen Build-Szenarien hinzufügen, wenn Sie ein anderes Nginx-Setup für bequemer halten.

Erhöhen Sie als Nächstes die Quellpaketversion, da Sie das Paket auf diese Weise später anheften können. Öffnen Sie dazu die Datei + changelog + mit einem Texteditor:

sudo nano ~/custom-nginx/nginx-1.6.2/debian/changelog

Die erste Zeile der Datei + changelog + repräsentiert die aktuelle Paketversion (+ 1.6.2-5 +) und den Debian-Distributionsnamen (+ unstable +). Fügen Sie am Ende der Versionsnummer ein benutzerdefiniertes Tag wie "+ pagespeed +" hinzu, dem ein Bindestrich wie folgt vorangestellt ist:

nginx (1.6.2-5) unstable; urgency=medium

Schritt 3 - Erstellen und Installieren von Nginx mit dem Pagespeed-Modul

Nachdem Sie den Build so angepasst haben, dass er das Modul ngx_pagespeed enthält, können Sie Nginx erstellen.

Gehen Sie mit dem folgenden Befehl in das Verzeichnis "+ ~ / custom-nginx / nginx-1.6.2 / +":

cd ~/custom-nginx/nginx-1.6.2/

Führen Sie von hier aus den Befehl aus, um die neuen benutzerdefinierten Nginx-Pakete zu erstellen:

sudo dpkg-buildpackage -b

Der Erstellungsprozess dauert höchstens etwa 10 Minuten. Wenn Sie befürchten, während dieser Zeit nicht verbunden zu sein, können Sie versuchen, + screen + zu verwenden, wie unter https://www.digitalocean.com/community/articles/how-to-install-and-use-screen-on beschrieben -an-ubuntu-Cloud-Server [dieser Artikel].

Wenn Sie alle Anweisungen befolgt haben, sollte der Erstellungsprozess ohne Fehler abgeschlossen werden. Um die neuen benutzerdefinierten Nginx-Pakete zu finden, gehen Sie mit dem folgenden Befehl in ein Verzeichnis nach + ~ / custom-nginx / +:

cd ~/custom-nginx/

Listen Sie den Inhalt des Verzeichnisses + ~ / custom-nginx / + auf:

ls ~/custom-nginx/

Sie sollten eine Menge von + .deb + Paketen finden. Diejenigen, die Sie benötigen, heißen "+ nginx-common_1.6.2-5-pagespeed_all.deb " (mit den allgemeinen Nginx-Dateien) und " nginx-light_1.6.2-5-pagespeed_amd64.deb " (mit Ihrem benutzerdefinierten Light-Server). Der Teil " pagespeed " kann variieren, wenn Sie in der Datei " changelog +" ein anderes benutzerdefiniertes Tag angegeben haben.

Führen Sie den folgenden Befehl aus, um Ihr benutzerdefiniertes Nginx mit Pagespeed-Modul zu installieren:

sudo dpkg -i nginx-common_1.6.2-5-pagespeed_all.deb nginx-light_1.6.2-5-pagespeed_amd64.deb

Schritt 4 - Aktivieren Sie das Pagespeed-Modul

Sie haben jetzt Nginx installiert. Der nächste Schritt ist die Aktivierung des Moduls ngx_pagespeed.

Bevor Sie das Modul aktivieren, müssen Sie einen Ordner erstellen, in dem die Dateien für Ihre Website zwischengespeichert werden:

sudo mkdir -p /var/ngx_pagespeed_cache

Stellen Sie sicher, dass Sie den Besitzer dieses Ordners in den Nginx-Benutzer ändern, damit der Webserver darin Dateien speichern kann:

sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

Öffnen Sie dann die Nginx-Hauptkonfigurationsdatei "+ nginx.conf +" in Ihrem bevorzugten Texteditor wie folgt:

sudo nano /etc/nginx/nginx.conf

Fügen Sie in dieser Datei die folgenden Zeilen zum + http + - Block hinzu und speichern Sie die Änderungen:

/etc/nginx/nginx.conf

##
# Pagespeed Settings
##

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Sie können diese Zeilen an einer beliebigen Stelle im + http + - Block einfügen, in unserem Beispiel jedoch am Ende des Blocks.

So sollte die Datei "+ / etc / nginx / nginx.conf" jetzt aussehen:

/etc/nginx/nginx.conf

...
http {

       ##
       # Basic Settings
       ##

       sendfile on;
       tcp_nopush on;
       tcp_nodelay on;
       keepalive_timeout 65;
       types_hash_max_size 2048;
       # server_tokens off;

       # server_names_hash_bucket_size 64;
       # server_name_in_redirect off;







...

Außerdem müssen Sie jeglichen "+ server " - Blockdateien, die sich in " / etc / nginx / sites-available " befinden, Pagespeed-Konfigurationszeilen hinzufügen. Bearbeiten Sie beispielsweise die Datei ` / etc / nginx / sites-available / default +`:

sudo nano /etc/nginx/sites-available/default

Fügen Sie dem + server + Block Folgendes hinzu:

/ etc / nginx / sites-available

#  Ensure requests for pagespeed optimized resources go to the pagespeed
#  handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Die obigen Konfigurationszeilen für Pagespeed stellen sicher, dass Pagespeed die Ressourcen jeder Site optimiert.

Starten Sie den Nginx-Server neu, damit die Änderungen wirksam werden:

sudo service nginx restart

Schritt 5 - Testen Sie die Installation

Führen Sie die Nginx-Binärdatei folgendermaßen aus, um zu überprüfen, ob das Modul ngx_pagespeed erfolgreich installiert wurde:

sudo /usr/sbin/nginx -V

Wenn die Installation erfolgreich war, sollte das Modul ngx_pagespeed unter den anderen Modulen aufgeführt sein:

Outputnginx version: nginx/1.6.2
...
--add-module=/home//custom-nginx/nginx-1.6.2/debian/modules/ngx_pagespeed

Das oben Gesagte bedeutet noch nicht, dass die Seitengeschwindigkeit aktiviert ist und für Ihre Website funktioniert. Um dies zu bestätigen, können Sie "+ curl ", ein Tool und eine Bibliothek für clientseitige URL-Übertragungen verwenden. Wenn Sie " curl +" noch nicht installiert haben, installieren Sie es mit dem folgenden Befehl:

sudo apt-get install curl

Überprüfen Sie danach den + X-Page-Speed ​​+ Header wie folgt:

curl -I -p http://localhost| grep X-Page-Speed

Wenn das Modul ngx_pagespeed einwandfrei funktioniert, sollten Sie es in der Ausgabe zusammen mit seiner Version sehen:

OutputX-Page-Speed: 1.9.32.6-7321

Wenn dieser Header nicht angezeigt wird, stellen Sie sicher, dass Sie die Seitengeschwindigkeit gemäß den Anweisungen aus dem vorherigen Schritt aktiviert haben.

Schritt 6 - Fixieren Sie Ihr benutzerdefiniertes Nginx-Paket

Um zu verhindern, dass Ihr benutzerdefiniertes Nginx-Paket in Zukunft durch "+ apt +" mit einer neueren Version von Nginx ersetzt wird, sollten Sie Ihr Paket mit den folgenden Schritten fixieren (anhalten):

Erstellen Sie eine neue + nginx + Datei in + / etc / apt / preferences.d +:

sudo nano /etc/apt/preferences.d/nginx

Fügen Sie dann die folgenden Zeilen ein und speichern Sie sie:

/etc/apt/preferences.d/nginx

Package: nginx-light
Pin: version 1.6.2-5-pagespeed
Pin-Priority: 1001

Bitte geben Sie das Nginx-Paket an, für das Sie sich entschieden haben. In unserem Beispiel war es "+ nginx-light ". Geben Sie außerdem die genaue Version zusammen mit Ihrem benutzerdefinierten Tag an, z. B. " 1.6.2-5-pagespeed +".

Fazit

So können Sie Nginx mit einem benutzerdefinierten Modul, pagespeed, erstellen. Diese Schritte gelten für alle anderen Module, die in Nginx noch nicht verfügbar sind. Darüber hinaus ist der gesamte Vorgang zum Installieren eines Pakets aus dem Quellcode für andere Softwarepakete, die Sie möglicherweise anpassen müssen, ähnlich. Vergessen Sie nicht, dass Sie diese Pakete selbst warten und neu installieren müssen, wenn es eine neue Version gibt.