GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Compile Nginx con el módulo ngx_pagespeed en Ubuntu 16.04

ngx_pagespeed es un módulo Nginx de código abierto que aplica automáticamente las mejores prácticas para optimizar la velocidad del sitio web. En este tutorial, discutiremos cómo compilar Nginx con el módulo ngx_pagespeed en Ubuntu 16.04 LTS.

1. Copia de seguridad de los archivos de configuración de Nginx

Una vez que se compila e instala Nginx, se sobrescribirán los archivos de configuración originales de Nginx. Puede usar el siguiente comando para hacer una copia de seguridad del archivo de configuración principal y los archivos de bloqueo del servidor en su directorio de inicio. La tilde representa su directorio de inicio.

cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~

2. Agregar repositorio oficial de Nginx

El tutorial demostrará la compilación de la última versión de la línea principal de Nginx, 1.11.1 en el momento de escribir este artículo. El repositorio de Ubuntu 16.04 tiene Nginx 1.10. Agregamos el repositorio oficial de Nginx como se muestra a continuación.

Primero obtenga la clave Nginx GPG e impórtela al sistema Ubuntu 16.04.

wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

Luego edite el sources.list archivo.

sudo nano /etc/apt/sources.list

Agregue las siguientes dos líneas al final de este archivo. La línea deb-src nos permite descargar paquetes fuente de Nginx con apt source comando.

deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

Presione Ctrl+O para guardar el archivo. Presione Ctrl+X para cerrar el archivo. Luego actualice el índice de paquetes local.

sudo apt update

Ahora el repositorio oficial de Nginx se agrega a Ubuntu 16.04.

3 Descargar el paquete fuente de Nginx

Haremos un nginx directorio bajo el directorio de inicio para almacenar las fuentes de Nginx y luego cd en ese directorio.

mkdir ~/nginx && cd ~/nginx

Instalar dpkg-dev y descargue el paquete fuente de Nginx con el siguiente comando:

sudo apt install dpkg-dev
sudo apt source nginx

Echa un vistazo a los archivos descargados.

ls ~/nginx/

Salida:

nginx-1.11.1                               nginx_1.11.1-1~xenial.dsc
nginx_1.11.1-1~xenial.debian.tar.xz        nginx_1.11.1.orig.tar.gz

4. Descargue el paquete fuente ngx_pagespeed

Para compilar Nginx con el módulo ngx_pagespeed, también necesitamos el paquete fuente ngx_pagespeed. Vaya a la página de descarga de Github ngx_pagespeed. ( https://github.com/pagespeed/ngx_pagespeed/releases ) Descargue la última versión beta en su directorio de inicio.

v1.11.33.2-beta en el momento de escribir este artículo. Es posible que deba cambiar el número de versión.

cd ~

wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.11.33.2-beta

descomprímelo:

sudo apt-get install unzip

unzip v1.11.33.2-beta

cd al directorio recién creado:

cd ngx_pagespeed-1.11.33.2-beta/

También necesitamos descargar la biblioteca psol. (Biblioteca de optimización de PageSpeed) y extráigalo. El número de versión corresponde al número de versión de la velocidad de la página.

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

tar xvf 1.11.33.2.tar.gz

Creará un psol directorio bajo ngx_pagespeed-1.11.33.2-beta directorio y ahí es donde tiene que estar.

5. Agregue el módulo ngx_pagespeed a las reglas de compilación de Nginx

Edite el archivo de reglas de compilación de Nginx.

sudo nano ~/nginx/nginx-1.11.1/debian/rules

Al final de COMMON_CONFIGURE_ARGS sección, agregue la siguiente línea. Reemplazar username con su nombre de usuario real. Esta línea especifica la ubicación del módulo ngx_pagespeed.

--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta

Este tutorial descarga la página de origen de ngx_pagespeed en el directorio de inicio. Si usa una cuenta raíz, reemplace /home/username con /root . porque el directorio de inicio para el usuario root es /root .

También tenga en cuenta que debe agregar una barra invertida en --with-ld-opt línea como la captura de pantalla a continuación. Si no lo hace, el –add-module la línea que agregó se ignorará cuando se compile Nginx.

Ahora guarde y cierre el archivo.

6. ¡Empieza la compilación!

Asegúrese de estar en el directorio fuente de Nginx.

cd ~/nginx/nginx-1.11.1/

Instale todas las dependencias necesarias para construir nuestro paquete deb de Nginx.

sudo apt build-dep nginx

Ahora use el siguiente comando para compilar el paquete deb.

sudo dpkg-buildpackage -b

Toma una taza de café y espera unos minutos. En un VPS OpenVZ de un solo núcleo, este proceso de compilación tomó alrededor de 20 minutos. Cuando termine, habrá 7 archivos deb en ~/nginx/ directorio. Solo necesitamos instalar el nginx_1.11.1-1~xenial_amd64.deb o nginx_1.11.1-1~xenial_i386.deb paquete, dependiendo de la arquitectura de su sistema operativo. Los otros son el paquete de módulos dinámicos de Nginx y un paquete de depuración. También puede instalarlos si lo desea.

Si ha instalado Nginx anteriormente, es hora de eliminar la versión anterior y luego instalar la nueva versión.

sudo apt remove nginx nginx-common nginx-full

cd ~/nginx

sudo dpkg -i nginx_1.11.1-1~xenial_amd64.deb

o

sudo dpkg -i nginx_1.11.1-1~xenial_i386.deb

Ahora comencemos con Nginx.

sudo systemctl start nginx

Si ve el siguiente mensaje de error.

Failed to start nginx.service: Unit nginx.service is masked.

Luego desenmascare nginx y emita el comando de inicio nuevamente.

sudo systemctl unmask nginx

Tenga en cuenta que el proceso de Nginx podría ejecutarse como usuario nginx o www-data . Esto se puede cambiar editando la primera línea en /etc/nginx/nginx.conf expediente. Solo asegúrese de que Nginx se ejecute como el mismo usuario con PHP-FPM.

Ahora revisa los argumentos de configuración de Nginx.

sudo nginx -V

Si ve la siguiente línea al final, el módulo ngx_pagespeed se agregó correctamente a Nginx.

--add-module=/home/username/ngx_pagespeed-1.11.33.2-beta

7. Habilitar el módulo ngx_pagespeed

PageSpeed ​​se instala junto con Nginx, pero está deshabilitado de forma predeterminada. Antes de habilitarlo, le recomiendo que pruebe la velocidad de su sitio web en pingdom.com o webpagetest.org. Preste atención al tamaño de la página, la cantidad de solicitudes, el tiempo de carga de la página, etc. Después de habilitar PageSpeed, realice una prueba nuevamente para comparar los dos resultados.

Cree una carpeta para cachés de velocidad de página y cambie su propiedad a usuario de Nginx (www-data o nginx) para que Nginx pueda escribirla.

sudo mkdir -p /var/ngx_pagespeed_cache

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

Ahora edite el archivo de configuración del bloque del servidor Nginx.

sudo nano /etc/nginx/conf.d/your-domain.conf

Agregue las siguientes directivas de velocidad de página en la sección del servidor.

# enable pagespeed module on this server block
pagespeed on;

# Needs to exist and be writable by nginx. Use tmpfs for best performance.
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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

pagespeed RewriteLevel CoreFilters;

Si aloja varios sitios web en un solo servidor, agregue las directivas de velocidad de página anteriores a cada archivo de configuración de bloque de servidor para habilitar la velocidad de página en cada uno de ellos.

La última directiva establece CoreFilters como el nivel de reescritura. PageSpeed ​​ofrece 3 niveles de reescritura:CoreFilter , PassThrough y OptimizeForBandwidth . CoreFilter es el predeterminado ya que contiene filtros que se consideran seguros para la mayoría de los sitios web.

CoreFilter contiene los siguientes filtros.

   add_head
   combine_css
   combine_javascript
   convert_meta_tags
   extend_cache
   fallback_rewrite_css_urls
   flatten_css_imports
   inline_css
   inline_import_to_link
   inline_javascript
   rewrite_css
   rewrite_images
   rewrite_javascript
   rewrite_style_attributes_with_url

Guarde y cierre el archivo de configuración del bloque del servidor. Luego recarga Nginx.

sudo systemctl reload nginx

8. Comprobar si PageSpeed ​​funciona

Ve a tu sitio web. Actualice varias veces y luego verifique la fuente de su página. Presiona Ctrl+F tecla y búsqueda pagespeed . Verá que muchos de los recursos de su sitio web han sido procesados ​​por la velocidad de la página. Algunos archivos css y archivos javascript se combinan en un solo archivo. Si utiliza el navegador Google Chrome, verá que las imágenes de su sitio web se han convertido a webp formato. webp puede reducir considerablemente el tamaño del archivo de imagen.

También puede encontrar que ngx_pagespeed está funcionando comparando la prueba de velocidad de su sitio web.

También en su servidor puede emitir el siguiente comando:

curl -I -p http://your-domain.com| grep X-Page-Speed

Verá X-Page-Speed ​​y su número de versión.

X-Page-Speed: 1.11.33.2-7423

9. Evite que Nginx se actualice

Si hay disponible una versión más reciente de Nginx en el repositorio, la actualización apt-get El comando actualizará Nginx de forma predeterminada y su módulo ngx_pagespeed desaparecerá. Por lo tanto, debemos evitar que Nginx se actualice. Esto se puede lograr con el siguiente comando:

sudo apt-mark hold nginx

Para mostrar qué paquetes se guardan:

apt-mark showhold

Es posible que desee agregar algunas directivas de velocidad de página en los archivos de configuración de bloqueo del servidor Nginx que no están en CoreFilters.

pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters insert_dns_prefetch;

No olvide volver a cargar Nginx después de modificar los archivos de configuración del bloque del servidor.

Para obtener una explicación detallada de cada filtro, vaya a la página de Google PageSpeed ​​Filter.

Los comentarios, preguntas o sugerencias son siempre bienvenidos. Si encuentra útil esta publicación, 🙂 ¡compártala con sus amigos en las redes sociales! Estén atentos para más tutoriales de Linux.


Ubuntu
  1. Ubuntu 20.04:instalación de WordPress con Nginx

  2. Instale Nginx con ngx_pagespeed en CentOS 7

  3. Implemente Modsecurity con Nginx en Ubuntu 20.04 LTS

  4. Cómo proteger Nginx con Letsencrypt en Ubuntu 20.04

  5. Instale PHP 7.1 con Nginx en Ubuntu 16.04

Cómo instalar OSClass con Nginx en Ubuntu 20.04

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04

Cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx

Cómo instalar Nginx con el módulo Ngx_Pagespeed en Ubuntu 16.04 LTS

Cómo instalar Nginx con el módulo Google PageSpeed ​​en Ubuntu 20.04 LTS

Instalar WordPress con Nginx en Ubuntu 18.04