Nginx met Google PageSpeed installeren op Ubuntu 20.04

Nginx is een vrije en open-source webserver die veel sites op het internet van stroom voorziet. Het kan gebruikt worden als reverse proxy en load balancer. Hij staat bekend om zijn hoge prestaties en stabiliteit.

ngx_pagespeed is een open-source Nginx module die gebruikt kan worden om de prestaties van je website te optimaliseren. Het is ontwikkeld door Google en verkort de laadtijd van pagina’s en versnelt de responstijd van je website.

In deze zelfstudie laten we je zien hoe je ngx_pagespeed als een dynamische module compileert met Nginx op Ubuntu 20.04 server.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een geldige domeinnaam gericht met het IP van je server. In deze handleiding gebruiken we het domein example.com.
  • Een root wachtwoord is de server geconfigureerd.

Aan de slag

Voor je begint moet je je systeempakketten bijwerken tot de laatste versie. Je kunt ze bijwerken door het volgende commando uit te voeren:

apt-get update -y

Als alle pakketten geïnstalleerd zijn, moet je nog enkele vereiste afhankelijkheden op je systeem installeren. Je kunt ze allemaal installeren met het volgende commando:

apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 git libpcre3-dev unzip -y

Als alle pakketten geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Installeer Nginx Webserver

Vervolgens moet je de Nginx webserver op je systeem installeren. Je kunt hem installeren met het volgende commando:

apt-get install nginx -y

Als de installatie voltooid is, kun je de geïnstalleerde versie van Nginx verifiëren met het volgende commando:

nginx -v

Je zou de Nginx versie moeten zien in de volgende uitvoer:

nginx version: nginx/1.18.0 (Ubuntu)

Als je klaar bent, kun je verder gaan met de volgende stap.

Download en compileer ngx_pagespeed

Voordat je ngx_pagespeed downloadt en compileert. Je zult de Nginx broncode in je systeem moeten downloaden. Je kunt het Nginx bronpakket downlaoden met het volgende commando:

Opmerking: Zorg ervoor dat de gedownlaodde Nginx versie overeenkomt met de geïnstalleerde Nginx versie. Hier is de geïnstalleerde versie van Nginx 1.18.0. Je moet dus Nginx broncode van versie 1.18.0 downloaden van de Nginx website.

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

Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

tar -xvzf nginx-1.18.0.tar.gz

Download vervolgens de ngx_pagespeed broncode uit de Git repository met het volgende commando:

git clone https://github.com/apache/incubator-pagespeed-ngx.git

Als de download voltooid is, verander je de directory in de gedownloade directory en bekijk je de stabiele versie met het volgende commando:

cd incubator-pagespeed-ngx
git checkout latest-stable

Je zou de volgende uitvoer moeten krijgen:

Note: switching to 'latest-stable'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 11ba8ea54 Update PSOL_BINARY_URL

Kat uit de bovenstaande uitvoer het “PSOL_BINARY_URL” bestand om de PSOL download URL te zien:

cat PSOL_BINARY_URL

Je zou de volgende uitvoer moeten krijgen:

https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz

Voer nu het volgende commando uit om PSOL te downloaden met de bovenstaande URL:

wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz

Pak vervolgens het gedownloade bestand uit met het volgende commando:

tar -xvzf 1.13.35.2-x64.tar.gz

Verander vervolgens de directory in de Nginx broncode en installeer alle vereiste afhankelijkheden met het volgende commando:

cd /root/nginx-1.18.0
apt-get build-dep nginx
apt-get install uuid-dev

Compileer vervolgens de ngx_pagespeed module met het volgende commando:

./configure --with-compat --add-dynamic-module=/root/incubator-pagespeed-ngx

Je zou de volgende uitvoer moeten krijgen:

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

Voer vervolgens het volgende commando uit om de Pagespeed module te bouwen:

make modules

Kopieer vervolgens de gegenereerde module naar de Nginx modules directory:

cp objs/ngx_pagespeed.so /usr/share/nginx/modules/

Op dit punt is de ngx_pagespeed module in je systeem gecompileerd. Je kunt nu verder gaan met de volgende stap.

Configureer Nginx om de ngx_pagespeed module te gebruiken

Vervolgens moet je Nginx configureren om de ngx_pagespeed module te gebruiken. Bewerk eerst het hoofdconfiguratiebestand van Nginx en definieer het ngx_pagespeed module pad:

nano /etc/nginx/nginx.conf

Voeg de volgende regel toe aan het begin van het bestand:

load_module modules/ngx_pagespeed.so;

Sla het bestand op en clsoe het als je klaar bent.

Maak vervolgens een directory voor pagespeed caches met het volgende commando:

mkdir -p /var/ngx_pagespeed_cache

Stel het juiste eigendom in met het volgende commando:

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

Bewerk vervolgens het Nginx standaard virtuele host configuratiebestand en voeg de pagespeed configuratie toe:

nano /etc/nginx/sites-available/default

Vervang alle regels door de volgende:

server {
     listen 80;
     server_name example.com; 

     root /var/www/html;
     index index.nginx-debian.html index.html index.htm;

     access_log   /var/log/nginx/access.log;
     error_log    /var/log/nginx/error.log;

     location / {
         try_files $uri $uri/ =404;
     }

     pagespeed on;
     pagespeed FileCachePath "/var/ngx_pagespeed_cache/";
     pagespeed RewriteLevel OptimizeForBandwidth;

     location ~ ".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+" {
         add_header "" "";
     }

     location ~ "^/pagespeed_static/" { }
     location ~ "^/ngx_pagespeed_beacon$" { }
pagespeed RewriteLevel CoreFilters;

 }

Sla het bestand op en sluit het als je klaar bent. Controleer Nginx dan op eventuele syntaxfouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten krijgen:

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

Herstart tenslotte de Nginx dienst om de veranderingen toe te passen:

systemctl restart nginx

Je kunt ook de status van de Nginx dienst controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten krijgen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-11-26 05:32:23 UTC; 20s ago
       Docs: man:nginx(8)
    Process: 363 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 385 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 386 (nginx)
      Tasks: 3 (limit: 2353)
     Memory: 14.4M
     CGroup: /system.slice/nginx.service
             ??386 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??387 nginx: worker process
             ??388 nginx: worker process

Nov 26 05:32:23 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 26 05:32:23 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Als je klaar bent, kun je verder gaan met de volgende stap.

Verifieer de ngx_pagespeed module

Op dit punt is Nginx geconfigureerd met ngx_pagespeed ondersteuning. Nu is het tijd om te testen of de module geïnstalleerd is of niet.

Om de pagespeed te testen, voer je het volgende commando uit door je domeinnaam te beveiligen:

curl -I -p http://example.com

Als alles in orde is, zou je de volgende uitvoer moeten krijgen:

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Date: Wed, 25 Nov 2020 11:58:56 GMT
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache

In de bovenstaande uitvoer betekent X-Page-Speed: 1.13.35.2-0 dat PageSpeed actief is en je website optimaliseert.

Conclusie

Gefeliciteerd! Je hebt met succes ngx_pagespeed geïnstalleerd met Nginx op Ubuntu 20.04 server. Ik hoop dat deze module je Nginx webserver beter laat presteren en je website sneller maakt. Voel je vrij me te vragen als je vragen hebt.