Nginx è un server Web gratuito e open source che alimenta molti siti su Internet. Può essere utilizzato come proxy inverso e bilanciamento del carico. È noto per le sue alte prestazioni e stabilità.
ngx_pagespeed è un modulo Nginx open source che può essere utilizzato per ottimizzare le prestazioni del tuo sito web. È sviluppato da Google e riduce il tempo di caricamento della pagina e velocizza il tempo di risposta del sito web.
In questo tutorial, ti mostreremo come compilare ngx_pagespeed come modulo dinamico con Nginx sul server Ubuntu 20.04.
Prerequisiti
- Un server che esegue Ubuntu 20.04.
- Un nome di dominio valido puntato con l'IP del tuo server. In questo tutorial utilizzeremo il dominio example.com.
- Una password di root è configurata sul server.
Per iniziare
Prima di iniziare, dovrai aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli eseguendo il seguente comando:
apt-get update -y
Una volta installati tutti i pacchetti, dovrai installare alcune dipendenze richieste sul tuo sistema. Puoi installarli tutti con il seguente comando:
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 git libpcre3-dev unzip -y
Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.
Installa il server web Nginx
Successivamente, dovrai installare il server web Nginx sul tuo sistema. Puoi installarlo con il seguente comando:
apt-get install nginx -y
Una volta completata l'installazione, puoi verificare la versione installata di Nginx con il seguente comando:
nginx -v
Dovresti vedere la versione di Nginx nel seguente output:
nginx version: nginx/1.18.0 (Ubuntu)
Una volta terminato, puoi procedere al passaggio successivo.
Scarica e compila ngx_pagespeed
Prima di scaricare e compilare ngx_pagespeed. Dovrai scaricare il sorgente Nginx nel tuo sistema. Puoi scaricare il pacchetto sorgente Nginx con il seguente comando:
Nota:assicurati che la versione scaricata di Nginx corrisponda alla versione installata di Nginx. Qui, la versione installata di Nginx è 1.18.0. Quindi dovrai scaricare il sorgente Nginx della versione 1.18.0 dal sito Web di Nginx.
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Una volta completato il download, estrai il file scaricato con il seguente comando:
tar -xvzf nginx-1.18.0.tar.gz
Quindi, scarica il sorgente ngx_pagespeed dal repository Git con il seguente comando:
git clone https://github.com/apache/incubator-pagespeed-ngx.git
Una volta completato il download, cambia la directory nella directory scaricata e controlla la versione stabile con il seguente comando:
cd incubator-pagespeed-ngx
git checkout latest-stable
Dovresti ottenere il seguente output:
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 -cOr 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
Dall'output sopra, cat il file "PSOL_BINARY_URL" per vedere l'URL di download di PSOL:
cat PSOL_BINARY_URL
Dovresti ottenere il seguente output:
https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz
Ora, esegui il seguente comando per scaricare PSOL utilizzando l'URL sopra:
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
Quindi, estrai il file scaricato con il seguente comando:
tar -xvzf 1.13.35.2-x64.tar.gz
Quindi, cambia la directory nel sorgente Nginx e installa tutte le dipendenze richieste con il seguente comando:
cd /root/nginx-1.18.0
apt-get build-dep nginx
apt-get install uuid-dev
Quindi, compila il modulo ngx_pagespeed con il seguente comando:
./configure --with-compat --add-dynamic-module=/root/incubator-pagespeed-ngx
Dovresti ottenere il seguente output:
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"
Quindi, esegui il seguente comando per creare il modulo Pagespeed:
make modules
Quindi, copia il modulo generato nella directory dei moduli Nginx:
cp objs/ngx_pagespeed.so /usr/share/nginx/modules/
A questo punto, il modulo ngx_pagespeed è compilato nel tuo sistema. Ora puoi procedere al passaggio successivo.
Configura Nginx per utilizzare il modulo ngx_pagespeed
Successivamente, dovrai configurare Nginx per utilizzare il modulo ngx_pagespeed. Innanzitutto, modifica il file di configurazione principale di Nginx e definisci il percorso del modulo ngx_pagespeed:
nano /etc/nginx/nginx.conf
Aggiungi la seguente riga all'inizio del file:
load_module modules/ngx_pagespeed.so;
Salva e chiudi il file quando hai finito.
Quindi, crea una directory per le cache di pagespeed con il seguente comando:
mkdir -p /var/ngx_pagespeed_cache
Imposta la proprietà corretta usando il seguente comando:
chown -R www-data:www-data /var/ngx_pagespeed_cache
Quindi, modifica il file di configurazione dell'host virtuale predefinito di Nginx e aggiungi la configurazione della velocità di pagina:
nano /etc/nginx/sites-available/default
Sostituite tutte le righe con le seguenti:
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; }
Salva e chiudi il file quando hai finito. Quindi, verifica Nginx per eventuali errori di sintassi utilizzando il comando seguente:
nginx -t
Dovresti ottenere il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Infine, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
Puoi anche verificare lo stato del servizio Nginx usando il seguente comando:
systemctl status nginx
Dovresti ottenere il seguente output:
? 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.
Una volta terminato, puoi procedere al passaggio successivo.
Verifica il modulo ngx_pagespeed
A questo punto, Nginx è configurato con il supporto ngx_pagespeed. Ora è il momento di testarlo se è installato o meno.
Per testare la velocità della pagina, esegui il seguente comando secercando il tuo nome di dominio:
curl -I -p http://example.com
Se tutto va bene, dovresti ottenere il seguente output:
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
Nell'output sopra, X-Page-Speed:1.13.35.2-0 significa che PageSpeed è attivo e sta ottimizzando il tuo sito web.
Conclusione
Congratulazioni! hai installato correttamente ngx_pagespeed con Nginx sul server Ubuntu 20.04. Spero che questo modulo aumenterà le prestazioni del tuo server web Nginx e accelererà il sito web. Sentiti libero di chiedermi se hai domande.