Nginx mit ngx_pagespeed auf CentOS 7 installieren

Ngx-pagespeed ist ein kostenloses und quelloffenes Nginx-Modul, das verwendet werden kann, um Ihre Website zu beschleunigen und die Seitenladezeit zu verkürzen. Es funktioniert durch die automatische Anwendung von Best Practices zur Web-Performance auf Seiten und zugehörige Assets, ohne dass Sie Ihre bestehenden Inhalte oder Ihren Workflow ändern müssen. Mit dem Ngx-pagespeed-Modul können Sie verschiedene Dateien wie CSS, HTML, png und jpg einfach optimieren.

Ngx-pagespeed verfügt über viele Funktionen, von denen einige unten aufgeführt sind:

  • Unterstützt die dynamische Größenänderung, Rekompression und Optimierung von Bildern.
  • Geringe Ressourceneinsparung.
  • HTML-Rewriting.
  • Verlängerung der Lebensdauer des Cache.
  • Verschieben des Ladevorgangs von JavaScript und Bildern.

In diesem Tutorial wird erläutert, wie man Nginx mit dem Modul ngx_pagespeed auf dem CentOS 7-Server kompiliert.

Anforderungen

  • Neuer CentOS 7-Server auf Ihrem System installiert.
  • Sudo-Benutzer mit Root-Rechten.

1 Aktualisieren des Systems

Lassen Sie uns damit beginnen, Ihr System auf die neueste stabile Version zu aktualisieren. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

sudo yum update -y

Sobald Ihr System aktualisiert ist, starten Sie das System neu und melden Sie sich mit sudo user an.

2 Installation der erforderlichen Abhängigkeiten

Sie müssen einige Pakete installieren, um Nginx zu kompilieren. Sie können alle diese Abhängigkeiten installieren, indem Sie den folgenden Befehl ausführen:

sudo yum install gcc cmake unzip wget gcc-c++ pcre-devel zlib-devel -y

Sobald alle erforderlichen Abhängigkeiten installiert sind, können Sie mit dem nächsten Schritt fortfahren.

3 Kompilieren Sie Nginx mit Ngx-pagespeed.

Um Nginx mit dem ngx-pagespeed-Modul zu installieren, müssen Sie Nginx aus dem Quellcode kompilieren. Zuerst müssen Sie den Nginx-Quellcode herunterladen. Sie können es herunterladen, indem Sie den folgenden Befehl ausführen:

wget http://nginx.org/download/nginx-1.12.0.tar.gz

Um Nginx mit dem Modul ngx_pagespeed zu kompilieren, müssen Sie auch das Quellpaket ngx_pagespeed herunterladen. Du kannst es mit dem folgenden Befehl herunterladen:

wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip

Sobald beide Pakete heruntergeladen sind, extrahieren Sie sie mit dem folgenden Befehl:

tar -xvzf nginx-1.12.0.tar.gz
tar -xvzf v1.12.34.2-stable.zip

Als nächstes müssen Sie auch die PageSpeed-Optimierungsbibliotheken herunterladen, um Nginx zu kompilieren. Du kannst es mit dem folgenden Befehl herunterladen:

cd ngx_pagespeed-1.12.34.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz
cd ..

Beginnen wir nun mit der Kompilierung von Nginx mit dem pagespeed-Modul.

Wechseln Sie zunächst mit dem folgenden Befehl das Verzeichnis in das Nginx-Quellverzeichnis:

cd nginx-1.12.0

Als nächstes konfigurieren Sie die Nginx-Quelle mit dem folgenden Befehl:

sudo ./configure --add-module=$HOME/ngx_pagespeed-1.12.34.2-stable --user=nobody --group=nobody --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}

Sobald die Konfiguration abgeschlossen ist, kompilieren Sie Nginx, indem Sie den folgenden Befehl ausführen:

sudo make

Der obige Befehl dauert einige Minuten. Danach können Sie nginx installieren, indem Sie den folgenden Befehl ausführen:

sudo make install

Sobald Nginx installiert ist, müssen Sie einen Symlink für die Nginx erstellen:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

4 Nginx-Startskript erstellen

Sie müssen auch ein Startskript für Nginx erstellen, um Nginx zu stoppen und zu starten. Sie können dies tun, indem Sie eine nginx-Datei im Verzeichnis /etc/init.d erstellen:

sudo nano /etc/init.d/nginx

Füge die folgenden Zeilen hinzu:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
       done
    fi
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

Speichern und schließen Sie die Datei, wenn Sie fertig sind, und geben Sie ihr dann die Ausführungserlaubnis:

sudo chmod +x /etc/init.d/nginx

Starten Sie nun den nginx-Dienst und aktivieren Sie ihn, damit er beim Booten mit dem folgenden Befehl starten kann:

sudo systemctl start nginx
sudo systemctl enable nginx

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

5 Nginx konfigurieren

Jetzt wird Nginx mit ngx-pagespeed-Unterstützung installiert. Standardmäßig ist PageSpeed deaktiviert. Bevor Sie es aktivieren, wird empfohlen, die Geschwindigkeit Ihrer Website zu testen. Als nächstes müssen Sie ein Cache-Verzeichnis für ngx-pagespeed erstellen und auch Nginx das Eigentum dafür zuweisen:

sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R nobody:nobody /var/ngx_pagespeed_cache

Als nächstes müssen Sie einige Änderungen in der Datei /etc/nginx/nginx/nginx.conf vornehmen. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

sudo nano /etc/nginx/nginx.conf

Fügen Sie den folgenden Code zwischen dem Serverblock hinzu:

# Pagespeed main settings

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

# 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" { }

Hinweis: Wenn Sie virtuelles Hosting verwenden, fügen Sie die obigen Pagespeed-Richtlinien zu jeder Serverblock-Konfigurationsdatei hinzu, um Pagespeed auf jeder Website zu aktivieren.

Speichern und schließen Sie die Datei, wenn Sie fertig sind, und überprüfen Sie dann die Nginx mit dem folgenden Befehl auf eventuelle Konfigurationsfehler:

sudo nginx -t

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe sehen:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Starten Sie schließlich Nginx neu, damit die Änderungen wirksam werden:

sudo systemctl restart nginx

Sobald Nginx konfiguriert ist, können Sie mit dem Testen von Ngx-pagespeed fortfahren.

6 Test der Ngx-Seitengeschwindigkeit

Nginx ist nun betriebsbereit. Es ist an der Zeit zu überprüfen, ob das Modul funktioniert oder nicht. Sie können es überprüfen, indem Sie den folgenden Befehl ausführen:

curl -I -p http://localhost

Sie sollten die folgende Ausgabe sehen:

HTTP/1.1 200 OK
Server: nginx/1.12.0
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Date: Wed, 21 Jun 2017 17:21:08 GMT
X-Page-Speed: 1.12.34.2-0
Cache-Control: max-age=0, no-cache

Du solltest X-Page-Speed und seine Versionsnummer in der obigen Ausgabe sehen. Das bedeutet, dass Sie Ngx_pagespeed erfolgreich auf Ihrem Server installiert haben.

Fazit

Herzlichen Glückwunsch! Sie haben Nginx mit Ngx-pagespeed Modulunterstützung erfolgreich installiert. Ich hoffe, dass Sie es jetzt einfach in einer Produktionsumgebung einsetzen können. Zögern Sie nicht, mich zu kommentieren, wenn Sie Fragen haben.

Das könnte Dich auch interessieren …