WordPress estático con WP2static

Última revisión: 2 de octubre de 2021

Si tenemos sitios sencillos, simplemente con información, pero en los cuales los usuarios no interactúan con nada, podríamos plantearnos crear sitios estáticos en los que todo sea HTML, CSS, JavaScript y contenidos como imágenes o documentos, pero sin que intervenga PHP.

Esto lo podemos hacer con una herramienta de código abierto como WP2static que busca todas las URL y contenidos del sitio, y genera una versión estática de la misma en unos pocos pasos.

Esta herramienta no viene creada a modo de plugin directamente, por lo que tendremos que crear algunos pasos previos, además de configurar dos sitios, el que tiene el WordPress (que puede ser no público) y el que tiene los contenidos finales estáticos, al que accederán los usuarios.

Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.

Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.

COLABORACIÓN

Requisitos

  • Acceso SSH a tu cuenta del servidor
  • WP-CLI (para que funcione de forma óptima)

Sobre WP2static

Hay que tener presente que este plugin sólo tiene el código básico, pero no viene «creado como un plugin», por lo que tendremos que generarlo según vayan apareciendo versiones nuevas.

Esto va a requerir varios elementos:

  • Descargar y actualizar el plugin con Git
  • Actualizar sus componentes mediante Composer
  • Crear el Plugin
  • Subir el plugin a un sitio «no público»
  • Generar el sitio estático de forma pública

El WordPress original no debe estar de forma pública (puede estarlo, pero puede ser un sitio protegido, pero no para que entren los usuarios). Puedes ponerlo en un subdominio, por ejemplo working.example.com aunque luego tengamos el sitio en www.example.com.

Para empezar, necesitaremos tener una carpeta «no pública» donde poder trabajar y crear el plugin. Si tu hosting te da unas carpetas del estilo a /home/example/public_html/, podemos usar algo tipo /home/example/wp2static/. Es posible que tu sistema permita la creación de subcarpetas como si se tratasen de subdominios.

Primera instalación

Lo primero que vamos a hacer y conseguir es crear el plugin que deberemos instalar en nuestro WordPress. El desarrollador inicial tiene creado el núcleo del plugin, pero requiere de ciertas dependencias, así que necesitamos «crear nuestro plugin» antes de poder instalarlo.

Iremos a la carpeta base donde vamos a situar el Git.

cd /home/example/

Haremos la clonación por primera vez del repositorio Git donde está el WP2Static.

git clone https://github.com/leonstafford/wp2static.git

Entraremos en la carpeta recién creada donde estarán los ficheros.

cd wp2static/

Por defecto, WP2Static, viene para trabajar en modo desarrollo, pero esta versión puede contener fallos o problemas. Así que cambiaremos a la carpeta principal estable.

git checkout master

Ahora que tenemos el código principal, descargaremos todas las actualizaciones de las dependencias que son necesarias para que el plugin funcione, mediante Composer.

composer install

En este momento tenemos ya el software creado y listo para crear nuestro plugin.

Actualización y mantenimiento

Si ya hemos creado previamente el plugin, o queremos validar que esté 100% puesto al día para crear una siguiente versión, podemos realizar unas tareas previas de mantenimiento antes de generar el plugin.

Accederemos a la carpeta previamente creada por el Git.

cd /home/example/wp2static/

Actualizaremos la información del Git.

git pull

Nos aseguramos de estar en la rama master.

git checkout master

Realizamos una actualización de los componentes.

composer update

En este momento tenemos ya el software actualizado y listo para crear nuestro plugin.

Creando el Plugin

Ahora que tenemos el software actualizado, completo, y con todos sus componentes, podremos crear el plugin fácilmente.

Este comando creará un fichero ZIP que será compatible con los plugins de WordPress, y que podremos subir directamente al panel de administración mediante el Añadir Nuevo (plugin).

composer build wp2static

Esto crea un fichero ZIP que se encuentra en la carpeta Downloads.

cd ../Downloads/
ls -la

Allí tendremos el fichero wp2static.zip, que podremos descargar y usar como Plugin para nuestro WordPress.

Instalando / actualizando el plugin

Iremos a nuestro sitio web WordPress, accediendo al Panel de Administración working.example.com/wp-admin/ y allí accederemos a la zona de Plugins, donde pulsaremos en «Añadir nuevo».

Subiremos el fichero y comenzará el proceso de instalación o actualización. Una vez acabado, validaremos que el plugin esté activo.

Una vez activado tendremos la opción WP2Static en el menú de opciones.

En la sección de Options actualizaremos la información de la URL que vamos a utilizar https://www.example.com sin la barra final, y configuraremos una cuenta de correo si queremos recibir notificaciones cada vez que se publique una actualización del sitio.

Una vez tengamos la configuración, confirmaremos que en la zona de Diagnostics tenemos todo al día y que todo tiene luz verde.

Si todo está correctamente configurado, pasaremos a la sección de Jobs, donde en principio estará todo activado. La parte de WP-Cron la dejaremos por defecto a «disable» ya que aprovecharemos WP-CLI para la ejecución de las tareas.

Ejecutando los procesos

Antes de activar todo el sistema por defecto, haremos una primera prueba para comprobar que todo funciona correctamente. recuerda que para que funcione, necesitas tener instalado y funcionando WP-CLI.

Tendremos como base que nuestro sitio WordPress para ejecutar el plugin está en el dominio working.example.com y que se encuentra en la ruta /home/example/working/.

cd /home/example/working/

Una vez allí, ejecutaremos los 3 comandos que nos van generando diferentes situaciones. Comenzaremos por la detección de todo el sistema y su validación.

wp wp2static detect

Esto nos devolverá una serie de mensajes por pantalla

[2020-12-11T19:24:05+00:00] Starting to detect WordPress site URLs.
[2020-12-11T19:24:08+00:00] Detection complete. 623 URLs added to Crawl Queue.

El siguiente paso es que se revisen todas las URL detectadas en el paso anterior y las descargue.

wp wp2static crawl

Esto nos devolverá una serie de mensajes por pantalla

[2020-12-11T19:24:27+00:00] Starting crawling
[2020-12-11T19:24:27+00:00] Starting to crawl detected URLs.
[2020-12-11T19:24:27+00:00] Using CrawlCache.
[2020-12-11T19:24:28+00:00] 404 for URL /blog/page/1/
[2020-12-11T19:24:30+00:00] Crawling complete. 1 crawled, 622 skipped (cached).
[2020-12-11T19:24:30+00:00] Crawling completed

Finalmente, con estos contenidos, crearemos todo el sitio listo para navegar, cambiando las URL a las direcciones definitivas.

wp wp2static post_process

Esto nos devolverá una serie de mensajes por pantalla

[2020-12-11T19:24:46+00:00] Processing crawled site.
[2020-12-11T19:24:48+00:00] Finished processing crawled site.

Podemos comprobar que todo el sitio está disponible en la ruta que genera para su almacenamiento.

cd wp-content/uploads/wp2static-processed-site/

Automatizando la generación

Si todo este proceso de creación manual ha funcionado, podemos automatizarlo mediante la creación de un cron que haga todos los pasos por nosotros.

*/5 * * * * WP_CLI_PHP=/usr/local/bin/php; SHELL=/bin/bash; /usr/local/bin/wp wp2static detect --path=/home/example/working/ && /usr/local/bin/wp wp2static crawl --path=/home/example/working/ && /usr/local/bin/wp wp2static --- --path=/home/example/working/ >/dev/null 2>&1 

Este sistema regenerará la web cada 5 minutos.

Paso a producción

Ahora que tenemos el sitio creado tenemos varias opciones a la hora de ponerlo en producción, y dependerá de los recursos que tengamos, si el sitio estará en la misma máquina…

Copiando los contenidos

Si el sitio web público está en la misma máquina donde está nuestro WordPress de trabajo, podemos hacer algo tan simple como copiar los contenidos entre distintas carpetas.

cp -rf /home/example/wp2static/wp-content/uploads/wp2static-processed-site/* /home/example/public_html/

En cualquier caso, deberemos automatizar esta copia añadiéndola al Cron que previamente hemos creado, para que cuando acabe toda la creación de ficheros, automáticamente se copien.

Otra opción, si queremos reservar recursos y no tener dos copias del sitio, puede ser la de mover los contenidos.

mv -f /home/example/wp2static/wp-content/uploads/wp2static-processed-site/* /home/example/public_html/

Hay que recordar que al finalizar deberemos revisar los permisos de ficheros y carpetas, tanto de los propietarios como la disponibilidad de que estén legibles.

Otras opciones que podemos utilizar son el uso de un SCP o de un rsync para la copia de los ficheros a otros servidores.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.