Contenido
Como instalar, optimizar y acelerar WordPress: La guía definitiva
Cuando tienes que crear varios sitios webs con WordPress, el proceso inicial siempre es el mismo. Descarga, instalación, borrado de contenido innecesario, instalación de temas y plugins básicos… ¿cómo evitar esto y ser más productivo?. Pues muy fácil, haciendo este proceso una vez y guardando bien la configuración para poder reproducirla una y mil veces con un solo clic. Así que vamos a ver cómo instalar, optimizar y acelerar nuestra instalación de WordPress para tenerla siempre disponible como punto de partida de nuestros proyectos.
Entorno inicial
Ya sabes que la mejor manera de empezar a crear tus sitios con WordPress es desarrollar en un entorno local. Para ello tienes la opción de instalar en tu equipo un entorno WAMP (si trabajas en Windows) o LAMP si cuentas con una máquina Linux.
Yo, que me gusta enredar tengo un entorno diferente y optimizado. La base es Nginx y MariaDB sobre un entorno Linux. Todo ello montado en una Raspberry Pi. Si quieres , puedes ver como tener tu propio entorno de desarrollo local en forma de servidor web casero.
Así que la configuración de la que partimos es de Nginx + mariaDB +PHP 7.0. El servidor de pruebas perfecto para desarrollar nuestras webs en WordPress.
Descarga e instalación de wordpress en nuestro servidor de pruebas
Comencemos por el principio, descargamos e instalamos WordPress en nuestro servidor web. Para ello necesitamos crear una carpeta nueva. La llamaremos wpbasico. Y una nueva base de datos. yo lo hago a través de webmin o por línea de comandos. Dependiendo de tu configuración, lo debes hacer de una u otra manera. también la llamaremos wpbasico. En mi caso una vez creada la base de datos con webmin, hay que actualizar los privilegios para evitar:
grant all privileges on wpbasico.* to root@localhost identified by 'tupassword';
Tras estos simples pasos, procedemos con una instalación normal de wordpress. Para ello accedemos a la url de nuestro servidor de pruebas y ejecutamos la instalación de WordPress. Si todo va bien, tendremos funcionando un sitio básico creado con WordPress.
Ajustes básicos iniciales
Para que WordPress funcione correctamente con NGINX, debemos ajustar un par de cosillas antes, de manera que funcionen las urls amigables. Así que vamos con ello. De todas formas podéis consultar la guía detallada en inglés.
Primero debemos crear un archivo adicional para cambiar la configuración de NGINX y optimizarla para que funcione WordPress correctamente.
sudo mkdir/etc/nginx/global sudo nano /etc/nginx/global/restrictions.conf
con el siguiente contenido:
# Global restrictions configuration file. # Designed to be included in any server {} block. location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~ /\. { deny all; } # Deny access to any files with a .php extension in the uploads directory for the single site location ~ ^/wp-content/uploads/.*\.php$ { deny all; } # Deny access to any files with a .php extension in the uploads directory # Works in sub-directory installs and also in multisite network # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~* /(?:uploads|files)/.*\.php$ { deny all; }
Y modificar nuestro site default de nginx:
sudo nano /etc/nginx/sites-available/default
Que a mí me queda de la siguiente manera:
# You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # https://www.nginx.com/resources/wiki/start/ # https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ # https://wiki.debian.org/Nginx/DirectoryStructure # # In most cases, administrators will remove this file from sites-enabled/ and # leave it as reference inside of sites-available where it will continue to be # updated by the nginx packaging team. # # This file will automatically load configuration files provided by other # applications, such as Drupal or WordPress. These applications will be made # available underneath a path with that package name, such as /drupal8. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name _; include global/restrictions.conf; # Additional rules go here. # Only include one of the files below. # include global/wordpress.conf; # include global/wordpress-ms-subdir.conf; # include global/wordpress-ms-subdomain.conf; # } location / { # This is cool because no php is touched for static content. # include the "?$args" part so non-default permalinks doesn't break when using query string try_files $uri $uri/ /index.php?$args; } location /wpbasico { # This is cool because no php is touched for static content. # include the "?$args" part so non-default permalinks doesn't break when using query string try_files $uri $uri/ /wpbasico/index.php?$args; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } # pass PHP scripts to FastCGI server # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # }
No alcanzo a entender que WordPress nos obligue, instalación tras instalación, a cambiar el tema de los ajustes permanentes. Pero bueno, vamos a hacerlo una vez más y así nos aseguramos que nuestros nuevos sitios web generados a partir de esta semilla cumple con uno de los requisitos básicos del SEO: las urls-amigables. A mí me gusta dejarlos así:
De esta manera podemos emplear la estructura SILO, tan importante a la hora de tener un buen SEO en nuestras webs.
Borrado de basura
Ahora es el momento de cargarnos todo el contenido que wordpress añade por defecto. Para ello los pasos a seguir son muy simples:
- nos vamos a entradas y nos cargamos la famosa ¡Hola Mundo!
- en páginas, eliminamos la página de ejemplo y la política de privacidad
y ya hemos terminado de limpiar nuestra instalación básica de WordPress. Llega el momento de empezar a optimizarla
Instalando nuestro tema favorito
Básico. Tenemos que buscar un tema que reúna las siguientes características:
- Gratis, muy importante
- Altamente personalizable y configurable
- Ligero y optimizado para SEO
¿Mi favorito? OceanWP, reúne las tres principales características y se lleva muy bien con Elementor. Además tienen una gran cantidad de extras que irás descubriendo. Así que para instalarlo, buscamos la opción Apariencia => Temas. Introducimos OceanWP en el cuadro de búsqueda y pulsamos en instalar.
Antes de activarlo es fundamental crear un tema hijo para no verse afectado por futuras actualizaciones del tema. Una vez creado lo activamos y podemos seguir con el proceso de creación de nuestro wordpress semilla. En este caso nos toca instalar algunos de los plugins fundamentales para exprimir al máximo las capacidades de wordpress.
Los plugins de WordPress son un arma de doble filo. Estamos de acuerdo en que hay plugins para todo. Pero también en que están programados por personas muy distintas, con unas técnicas de programación de plugins muy dispares. Esto puede dar lugar a que, si nos pasamos instalando plugins, sobrecarguemos más de lo debido nuestra instalación y nos carguemos la experiencia de usuario.
Después de mucha experimentación y estudio, la combinación que yo suelo usar es la siguiente:
Plugins para acelerar y optimizar nuestro WordPress
Autoptimize
Principalmente su función es la de agrupar, comprimir, minificar y cachear los scripts javascript y las hojas de estilo de tu instalación de wordpress. Es una manera de contrarrestar lo que acabamos de hablar acerca de pasarnos con la instalación de plugins. Autoptimize se encarga de agrupar todo el css, comprimirlo y minificarlo para servirlo de manera óptima. Lo mismo hace con todo el javascript de nuestro tema y de los plugins que tengamos instalados. Un plugin básico para optimizar WordPress. Os dejo unas capturas de mi configuración:
WP Super Caché
Otro de los plugins imprescindibles para optimizar tu instalación de WordPress es WP Super Caché. Su función es la de acelerar la carga de tu sitio web y, con ello, mejorar la experiencia de usuario. Con más de 2.000.000 de instalaciones, su principal función es la servir a tus visitantes archivos html estáticos en lugar de procesar todas las peticiones. ¿qué conseguimos con ello? Por un lado descargar de trabajo a nuestro servidor al no tener que procesar archivos php ni hacer consultas a la base de datos. Y por otro, acelerar nuestro WordPress
Really Simple SSL
Plugins básicos en toda instalación de WordPress
Duplicator
BackUpWordPress
Elementor
Shortcodes Ultimate
clickDatos RGPD
Plugins imprescindibles para el SEO
Yoast SEO
Google Analytics Dashboard for WP (GADWP)
Table of Contents Plus
Mi plugin de clusters
Guardando el resultado final
Y cuando ya hemos hecho la limpieza, instalado y personalizado el tema, y puesto a punto todos los plugins, llega el momento de guardar nuestra semilla. Para ello nos vamos a duplicator y seleccionamos crear un paquete nuevo. Le damos un nombre y vamos dando a siguiente. Para finalizar, descargamos la copia que hemos creado y la guardamos a buen recaudo porque nos servirá para todas las webs que podamos crear en el futuro.
Generando una nueva web en wordpress con nuestra semilla
Gracias a la web base que hemos creado es tan sencillo como hacer una carpeta en nuestro alojamiento. Después creamos una base de datos. Subimos el instalador y el archivo que creamos anteriormente e ingresamos a la url del installer.php. Duplicator nos pedirá los datos de la nueva instalación