Introduzione
Nginx è un server web gratuito e open source utilizzato per molti siti su Internet. Può essere utilizzato come proxy inverso e load balancer. È 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 accelera i tempi di risposta del sito web.
In questo tutorial, ti mostreremo come compilare ngx_pagespeed come modulo dinamico con Nginx sul server Ubuntu 20.04 LTS Focal Fossa.
Prerequisiti
- Un server che esegue Ubuntu 20.04 LTS Focal Fossa.
- Un nome di dominio valido puntato con l'IP del server.
- Utente root.
Se desideri installare Nginx con Google PageSpeed su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Installare le dipendenze
Prima di iniziare, sarà necessario aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli eseguendo il seguente comando:
apt-get update -y
Una volta installati tutti i pacchetti, sarà necessario installare alcune dipendenze richieste sul 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.
Installare Nginx Webserver
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.
Scaricare e compilare ngx_pagespeed
Prima di scaricare e compilare ngx_pagespeed. Dovrai scaricare il sorgente Nginx nel tuo sistema.
Nota: assicurati che la versione di Nginx sottoposta a downlaod corrisponda alla versione di Nginx installata. 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.
Puoi scaricare il pacchetto sorgente Nginx con il seguente comando wget:
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:
tar -xvzf nginx-1.18.0.tar.gz
Successivamente, scarica il codice sorgente di 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 -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
Dall'output precedente, seleziona 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
Successivamente, estrai il file scaricato con il seguente comando:
tar -xvzf 1.13.35.2-x64.tar.gz
Successivamente, cambia la directory con il comando cd 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
Successivamente, 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
Successivamente, 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 possibile procedere al passaggio successivo.
Configurare 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.
Successivamente, crea una directory per le cache pagespeed con il seguente comando:
mkdir -p /var/ngx_pagespeed_cache
Imposta la proprietà corretta utilizzando il seguente comando:
chown -R www-data:www-data /var/ngx_pagespeed_cache
Successivamente, modifica il file di configurazione dell'host virtuale predefinito di Nginx e aggiungi la configurazione ddi pagespeed:
nano /etc/nginx/sites-available/default
Sostituite tutte le righe con le seguenti righe:
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;
}
Modifica example.com con il tuo nome dominio. Salva e chiudi il file quando hai finito.
Quindi, verifica Nginx per qualsiasi errore di sintassi utilizzando il seguente comando:
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 utilizzando 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 Tue 2020-12-08 23:55:27 CET; 1s ago
Docs: man:nginx(8)
Process: 7773 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCE>
Process: 7783 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 7784 (nginx)
Tasks: 3 (limit: 2286)
Memory: 22.0M
CGroup: /system.slice/nginx.service
├─7784 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─7785 nginx: worker process
Una volta terminato, puoi procedere al passaggio successivo.
Verificare 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 specificando il tuo nome di dominio:
curl -I -p http://nome_dominio.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
Date: Tue, 08 Dec 2020 22:55:37 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 ottimizza il tuo sito web.
Conclusione
In questo tutorial abbiamo visto come installare con successo ngx_pagespeed con Nginx sul server Ubuntu 20.04 LTS Focal Fossa.