Cómo instalar Nginx con Google PageSpeed en Ubuntu 20.04

Nginx es un servidor web gratuito y de código abierto que impulsa muchos sitios en Internet. Puede utilizarse como proxy inverso y equilibrador de carga. Es conocido por su alto rendimiento y estabilidad.

ngx_pagespeed es un módulo de Nginx de código abierto que puede utilizarse para optimizar el rendimiento de tu sitio web. Está desarrollado por Google y reduce el tiempo de carga de la página y acelera el tiempo de respuesta del sitio web.

En este tutorial, te mostraremos cómo compilar ngx_pagespeed como módulo dinámico con Nginx en el servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor. En este tutorial, utilizaremos el dominio example.com.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, tendrás que actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos ejecutando el siguiente comando:

apt-get update -y

Una vez instalados todos los paquetes, tendrás que instalar en tu sistema algunas dependencias necesarias. Puedes instalarlas todas con el siguiente comando:

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

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar el servidor web Nginx

A continuación, tendrás que instalar el servidor web Nginx en tu sistema. Puedes instalarlo con el siguiente comando:

apt-get install nginx -y

Una vez completada la instalación, puedes verificar la versión instalada de Nginx con el siguiente comando:

nginx -v

Deberías ver la versión de Nginx en la siguiente salida:

nginx version: nginx/1.18.0 (Ubuntu)

Una vez que hayas terminado, puedes pasar al siguiente paso.

Descargar y compilar ngx_pagespeed

Antes de descargar y compilar ngx_pagespeed. Necesitarás descargar el código fuente de Nginx en tu sistema. Puedes descargar el paquete fuente de Nginx con el siguiente comando:

Nota: Asegúrate de que la versión de Nginx descargada coincide con la versión de Nginx instalada. En este caso, la versión instalada de Nginx es la 1.18.0. Así que tendrás que descargar el código fuente de Nginx de la versión 1.18.0 del sitio web de Nginx.

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

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf nginx-1.18.0.tar.gz

A continuación, descarga el código fuente de ngx_pagespeed del repositorio Git con el siguiente comando:

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

Una vez completada la descarga, cambia el directorio al descargado y comprueba la versión estable con el siguiente comando:

cd incubator-pagespeed-ngx
git checkout latest-stable

Deberías obtener la siguiente salida:

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

De la salida anterior, haz un cat del archivo «PSOL_BINARY_URL» para ver la URL de descarga de PSOL:

cat PSOL_BINARY_URL

Deberías obtener la siguiente salida:

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

Ahora, ejecuta el siguiente comando para descargar PSOL utilizando la URL anterior:

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

A continuación, extrae el archivo descargado con el siguiente comando:

tar -xvzf 1.13.35.2-x64.tar.gz

A continuación, cambia el directorio a la fuente de Nginx e instala todas las dependencias necesarias con el siguiente comando:

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

A continuación, compila el módulo ngx_pagespeed con el siguiente comando:

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

Deberías obtener la siguiente salida:

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"

A continuación, ejecuta el siguiente comando para construir el módulo Pagespeed:

make modules

A continuación, copia el módulo generado en el directorio de módulos de Nginx:

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

En este punto, el módulo ngx_pagespeed está compilado en tu sistema. Ahora puedes pasar al siguiente paso.

Configurar Nginx para utilizar el módulo ngx_pagespeed

A continuación, tendrás que configurar Nginx para que utilice el módulo ngx_pagespeed. Primero, edita el archivo de configuración principal de Nginx y define la ruta del módulo ngx_pagespeed:

nano /etc/nginx/nginx.conf

Añade la siguiente línea al principio del archivo:

load_module modules/ngx_pagespeed.so;

Guarda y clsoe el archivo cuando hayas terminado.

A continuación, crea un directorio para las cachés de pagespeed con el siguiente comando:

mkdir -p /var/ngx_pagespeed_cache

Establece la propiedad adecuada con el siguiente comando:

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

A continuación, edita el archivo de configuración del host virtual por defecto de Nginx y añade la configuración de pagespeed:

nano /etc/nginx/sites-available/default

Sustituye todas las líneas por las siguientes:

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;

 }

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis mediante el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

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

Por último, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes verificar el estado del servicio Nginx utilizando el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? 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 vez que hayas terminado, puedes pasar al siguiente paso.

Verificar el módulo ngx_pagespeed

En este punto, Nginx está configurado con el soporte ngx_pagespeed. Ahora, es el momento de probar si está instalado o no.

Para probar el pagespeed, ejecuta el siguiente comando segregando tu nombre de dominio:

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

Si todo está bien, deberías obtener la siguiente salida:

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

En la salida anterior, X-Page-Speed: 1.13.35.2-0 significa que PageSpeed está activo y optimizando tu sitio web.

Conclusión

Enhorabuena! has instalado con éxito ngx_pagespeed con Nginx en el servidor Ubuntu 20.04. Espero que este módulo aumente el rendimiento de tu servidor web Nginx y acelere el sitio web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...