El hosting o servidor perfecto para WordPress

Dificultad del post: facilmediadificil
[Total:5    Promedio:4.2/5]
servidor perfecto wordpress

Vamos a empezar el post con una frase o concepto: “El servidor perfecto para WordPress”.

¿Existe el servidor o hosting perfecto para WordPress? Pues…bajo mi punto de vista, no exactamente existe un servidor perfecto, sino una configuración o combinación de servicios mas acertada para X circunstancias.

WordPress es un CMS que tiene unos requisitos mínimos muy bajos: servidor web con interprete PHP y servidor de bases de datos MySQL o compatible.

servidor para wordpress

Los que acabas de ver son los requisitos mínimos para funcionar, pero…no quiere decir que con eso bastante, ya que, para conseguir la máxima eficiencia y la máxima velocidad de carga, necesitamos por ejemplo PHP 7.1 o superior y MariaDB funcionara mejor que MySQL bajo presión.

Vamos a definir algunas cosas antes de empezar con la parte práctica del post.

Empezaremos por el servidor web:

  • Servidor web mínimo: Apache o compatible.
  • Servidor web recomendado: Nginx, LiteSpeed y NUNCA Apache, ya que Apache es muy lento y poco eficiente. Existe mucha diferencia entre el rendimiento de Apache y el resto de servidores web actuales.

Continuamos por el interprete de PHP y la versión:

  • Requisitos mínimos de PHP: PHP 5.6 o superior, aunque la recomendada es la 7.3. No se especifica nada más. Existen mucha diferencia de rendimiento entre la rama 5.6 de PHP y la rama 7.X de PHP.
  • Requisitos recomendados de PHP: PHP 7.1 es el mínimo imprescindible y con PHP 7.3 si conseguimos la total compatibilidad ira mas rápido. La forma ideal de ejecutar PHP para WordPress es mediante PHP-FPM, aunque no exista especificación oficial para esto.

Y ahora vamos con la base de datos:

  • Requisitos mínimos de DB: MySQL 5.6 o MariaDB 10.1.
  • Requisitos recomendados: En condiciones de estrés es mejor utilizar MariaDB como motor de base de datos.

Además de esto, un servidor ideal para WordPress debe tener instalado Memcached o Redis para ser utilizado como cache de objetos con WordPress, ya que un cache de objetos ayuda bastante con el cache de zonas dinámicas.

¿Te ha quedado claro? Es fácil, ¿no?

No me voy a liar más, y te voy a comentar una cosa…existe un stack LEMP ideal para WordPress y que te ofrece todo lo necesario para que tu WordPress vuele sobre un servidor Linux.

En este post te voy a hablar de Centmin Mod, un stack LEMP que instala y preconfigura un servidor web optimizado con Nginx, PHP-FPM, MariaDB, Memcached, etc…

servidor para wordpress

Vamos a empezar por el principio, ¿Qué incluye el stack LEMP de Centmin Mod?

  • Nginx como servidor web con SPDY, HTTP2 y el módulo ngx_pagespeed.
  • PHP-FPM como intérprete de PHP, con la versión configurable desde la 5.3 hasta la 7.3.
  • MariaDB 10 como motor de bases de datos.
  • Memcached Server con las librerías de PHP necesarias para funcionar.
  • APC y XCache por si queremos utilizarlos como OPCache o como cache de objetos.
  • CSF como firewall.
  • Servicio FTP con Pure-FTPD.

Todo esto instalable en CentOS 6 o CentOS 7 con un par de ENTER con un script bastante intuitivo que vamos a ver en este post.

Esto no es todo, ya que Centmin Mod puede gestionar VHOST, certificados SSL Let´s Encrypt y sus renovaciones, optimizaciones realizadas con el módulo de PageSpeed para Nginx, etc…

Si quieres buscar información, puedes encontrarla aquí: https://centminmod.com/

¡Vamos al lio!

 

1 – Servidor para Centmin Mod

Evidentemente al tratarse de un stack LEMP optimizado, no requiere muchos recursos para funcionar.

En igualdad de condiciones con un stack LAMP con Apache, Nginx consume muchos menos recursos y por lo tanto con menos RAM puede atender las mismas visitas.

servidor para wordpress

Te lo voy a resumir: con un VPS con 1GB de RAM y 1 núcleo de CPU de un procesador Intel Xeon de ultima generación, puedes llegar a servir CIENTOS de visitas concurrentes, es decir, al mismo tiempo, e incluso optimizando bien el WordPress y si no es muy complejo, creo que podríamos servir incluso mas de MIL visitas concurrentes.

En los siguientes test de estrés o benchmarks puedes ver como existe mucha diferencia entre ejecutar Nginx y Apache a nivel respuesta (req/sec) y memoria RAM utilizada a igualdad de peticiones:

servidor para wordpress

servidor para wordpress

La primera gráfica generada con excel es la que siempre utilizo, ya que la hice yo en su momento hace unos cuantos años y pese a que ha pasado tiempo, sigue siendo vigente y son las configuraciones que yo actualmente sigo utilizando, además de LiteSpeed Web Server claro.

La segunda gráfica es sacada de Internet, pero la tenia guardada y no recuerdo exactamente de donde la saque.

¿A dónde quiero llegar con esto? A que con Centmin Mod vas a necesitar muchísimos menos recursos para servir exactamente las mismas peticiones que con cualquier otro stack LAMP con Apache.

En Raiola Networks tenemos unos servidores VPS bastante buenos y que se adaptan bastante bien a Centmin Mod, ya que tenemos bastante experiencia con este stack en sistemas que sirven mucho tráfico.

Nuestros servidores VPS llevan discos SSD NVme o SSD en raid 10, depende de la configuración elegida, eso hace que sirvan los contenidos de forma rápida.
Además utilizamos procesadores Intel Xeon de ultima generación y memoria RAM DDR4.

servidor para wordpress

Cualquier servidor VPS de los que puedes encontrar aquí te servirán para funcionar con CentMin Mod a la máxima velocidad: https://alvarofontela.com/servidoresvpsssd

 

 

2 – Instalar Centmind Mod en el VPS

Antes de nada, vamos a instalar CentOS 7 en nuestro servidor VPS, sea cual sea nuestro proveedor de hosting, lo normal es tener CentOS 7 disponible, ya que es el sistema operativo mas utilizado para entornos LAMP y LEMP por su seguridad y rendimiento.

Una vez que tenemos el servidor VPS (o servidor dedicado) contratado, activo y funcionando, entramos a el con un cliente SSH como Putty (que puedes descargarlo desde aquí: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) y lo primero que vamos a hacer es actualizar.

Siguiendo con el tema con el que estábamos, como he dicho, lo primero que vamos a hacer es actualizar el CentOS 7 para partir de una buena base, antes de instalar Centmin Mod.

Lo primero que vamos a hacer es ejecutar este comando:

Y el sistema empezara a actualizarse:

hosting para wordpress

Cuando finalice la instalación, vamos a instalar Centmin Mod usando su instalador oficial, vamos a ejecutar el siguiente comando:

Con este comando instalaremos la última versión estable de Centmin Mod.

hosting para wordpress

El tiempo de instalación va a variar dependiendo de la potencia que tenga el servidor VPS o servidor dedicado donde estamos instalado Centmin Mod, pero unos 10 o 15 minutos no nos los va a sacar nadie por mucha RAM, CPU y muchos discos SSD NVme que tengamos.

Cuando haya finalizado el proceso de instalación, podremos ver algo así en la pantalla del cliente SSH (Putty):

hosting para wordpress

Bueno, ahora ya podemos empezar a meter webs en nuestro servidor con Centmin Mod, pero eso es en el siguiente paso.

 

3.1 – Instalar WordPress en el VPS Centmin Mod

En este primer caso, vamos a dar por hecho que queremos instalar un WordPress nuevo sobre nuestro servidor.

Lo primero que vamos a hacer es apuntar el dominio que queremos configurar al servidor VPS, para este ejemplo voy a hacerlo con un subdominio llamado rapido.alvarofontela.com.

Como Centmin Mod no está preparado de forma predeterminado para gestionar DNS, debemos utilizar unas DNS externas, para mí las dos opciones favoritas son estas:

  • CloudFlare como DNS: Gratis.
  • Amazon Route53: De pago.

Ambas son geodistribuidas y muy rápidas, pero si necesitas mas opciones ordenadas por velocidad dependiendo de la zona geográfica del planeta, aquí tienes una referencia: https://www.dnsperf.com/

Si quieres ver como configurar CloudFlare aquí tienes un vídeo que he subido a mi canal de Youtube:

Cuando tengamos los registros A de CON y SIN WWW configurados en el DNS y apuntando a la IP del VPS, vamos a darle algo de tiempo para que propaguen.

hosting para wordpress

Cuando las DNS esten propagadas y listas para funcionar, al acceder con el navegador nos tenemos que encontrar esta pantalla:

hosting para wordpress

Ahora vamos a abrir el menú de Centmin Mod desde la consola con Putty, para ello vamos a ejecutar el siguiente comando en la terminal:

Y eso nos tiene que abrir esta pantalla:

hosting para wordpress

Si es la primera vez que instalamos Centmind Mod, es posible que se tenga que instalar algún componente necesario y por eso puede que tarde algunos minutos en aparecernos la pantalla anterior.

Vamos a elegir la opción 22, para ello solo tenemos que poner el numero 22 en la consola y pulsar ENTER:

hosting para wordpress

Y empezara el asistente de configuración del vhost en Nginx para el nuevo WordPress.

Lo primero que nos va a preguntar es el nombre del nuevo vhost, es decir, el nombre del dominio nuevo que vamos a configurar. En mi caso es un subdominio por lo que lo introduzco directamente.
En caso de ser un dominio, siempre sin WWW.

Al pulsar ENTER después de rellenar el nombre del vhost nos saldrá una pregunta. Nos preguntara si queremos crear un certificado autofirmado para el nuevo vhost, le contestamos que sí.

Ahora vamos a introducir el email de administrador del sitio web nuevo:

hosting rapido wordpress

Y para finalizar nos pedirá un usuario y una contraseña de FTP (la contraseña se autogenerará si queremos), que es importante que guardemos en un lugar seguro después de configurarlo.

hosting rapido wordpress

Centmin Mod revisara la contraseña para saber si es segura y si no es segura tendremos que configurar una que sea segura.

Si al pulsar ENTER ves algo como esto no te asustes, ya que simplemente esta generando una contraseña aleatoria y encriptada:

hosting rapido wordpress

Va a tardar un minuto o dos y después de eso simplemente nos aparecerá una ventana como esta:

hosting rapido wordpress

Como ves, el script empieza con la descarga de WordPress desde el repositorio oficial. Se descarga la versión en_US, pero después desde el dashboard podemos cambiar esto a la versión es_ES.

Cuando finalice, nos saldrá de nuevo el menú principal y debemos ir a probar la nueva web al navegador.

Puede que nos aparezca esto:

hosting rapido wordpress

Ves lo que falla, ¿no? Desde la versión 5.X de WordPress, esta mucho mas “tiquismiquis” con la versión de PHP y como dice en el mensaje que puedes ver en la captura anterior, es necesario como mínimo la versión 5.6 de PHP para funcionar (algo que veo totalmente normal).

Vamos a cambiar la versión a la 7.1 de PHP, para ello nos vamos al menú de Centmin Mod otra vez y marcamos la opción 5:

hosting rapido wordpress

Ahora nos preguntara si queremos que YUM (el instalador) haga las comprobaciones, le marcamos Y, aunque aumenta algo el tiempo de actualización, merece la pena estar seguros de que no se instalan paquetes corruptos:

hosting rapido wordpress

Y ahora debemos esperar algo de tiempo para que se instalen ciertas herramientas necesarias para compilar las nuevas versiones de PHP que vamos a instalar en nuestro servidor para WordPress.

hosting rapido wordpress

Cuando termine (el tiempo depende de la potencia del servidor), podremos ver una ventana como esta, evidentemente pulsamos Y y después ENTER:

hosting rapido wordpress

Y ahora ya podremos elegir la versión de PHP a la que queremos actualizar el servidor Centmin Mod:

hosting rapido wordpress

¿No sabes que versión poner? Pues es importante leer exactamente lo que pone en la captura anterior, ya que es un mensaje que va variando dependiendo de la versión de Centmin Mod.
En el momento de escribir esto, para la versión de Centmin Mod estable que estamos usando, la última versión disponible es la 7.0.33 y si quisiéramos utilizar las siguientes deberíamos usar la rama BETA de Centmin Mod.

La rama BETA de Centmin Mod no va mal, pero puede no ser tan estable en algunos momentos como lo es la rama estable.

En este caso yo voy a poner 7.0.33 para actualizar la versión de PHP a esa versión:

hosting rapido wordpress

Al pulsar ENTER nos pregunta si queremos sobrescribir los archivos de configuración. Al ser un servidor VPS que teóricamente aun no tiene ninguna personalización en esos archivos, pulsamos Y y después ENTER.

hosting rapido wordpress

Y, por último, pulsamos Y y ENTER de nuevo para que se compile la versión de PHP 7.0 con Zend OPCache como OPCode Cache para PHP:

hosting rapido wordpress

Y ahora toca esperar a que termine de compilar la versión de PHP que le hemos indicado.

El tiempo va a ser mayor o menor dependiendo de la potencia de proceso del servidor donde tengamos instalado Centmin Mod, como siempre.

Cuando haya acabado, nos volverá la pantalla de menú de Centmin Mod y podremos probar en el navegador web si ya carga nuestro WordPress.

Si nos carga esta ventana de selección de idioma todo habrá funcionando correctamente:

wpo server wordpress

En la pantalla de la captura anterior, seleccionamos el español de España y acto seguido pulsamos el botón “Continuar”.

Ahora hacemos la configuración básica de cualquier sitio WordPress empezando por el titulo y acabando por la contraseña de administrador:

wpo server wordpress

Si necesitas ayuda con la configuración básica de WordPress, puedes consultar el siguiente articulo publicado en este blog: https://alvarofontela.com/configurar-wordpress-despues-instalar/

Y si necesitas ayuda con la instalación de WordPress, también puedes consultar este otro articulo publicado en este blog: https://alvarofontela.com/como-instalar-wordpress/

Pero en este caso, después de lo que es la configuración inicial, podremos acceder al sitio web sin problema:

wpo server wordpress

Pero cuando queramos ir al WP-ADMIN o WP-LOGIN.PHP nos encontraremos con esto:

wpo server wordpress

Debemos entrar a la consola del servidor por Putty, salir del menú de Centmin Mod y ejecutar el siguiente comando:

Y esto para la versión SSL:

En ambos casos nos encontraremos un editor como este editando un archivo:

wpo server wordpress

Ahora buscamos algo así:

Eliminamos estas líneas de los archivos de configuración y acto seguido reiniciamos Nginx con el siguiente comando:

El resultado debe ser algo así si no tenemos ningún problema de sintaxis importante que le impida al servidor web reiniciar.

wpo server wordpress

Con esto, ya deberíamos poder acceder al panel de administración de WordPress:

wpo server wordpress

Otra cosa que debemos tener en cuenta, es que los certificados que se han generado hasta el momento son autofirmados y por lo tanto no son válidos:

wpo server wordpress

Para tener un certificado valido para los navegadores, debemos generar uno con Let´s Encrypt, pero esto lo explico en la sección 4 de este tutorial.

Con esto, WordPress ya tendríamos WordPress instalado y listo para darle forma, a falta de configurar Let´s Encrypt y cambiar el WordPress a HTTPS con alguna de las multiples formas que existen.

En Raiola Networks ofrecemos el servicio de cambio de HTTP a HTTPS, si en algún momento lo necesitas, no dudes en contactar conmigo: https://alvarofontela.com/contacto/

 

3.2 – Migrar WordPress a Centmin Mod

Cambiando un poco de “segmento” aquí la cosa comparte muchos puntos con la parte 3.1 de este post, pero cambian algunas cosas.

Lo primero que yo personalmente te recomiendo para hacer esto, ya que tenemos distintas formas de hacerlo, es seguir el manual anterior paso a paso y cuando lo tengas terminado, vamos a hacer algunas cosas para migrar la web desde otro servidor.

Como he dicho, vamos a partir de la situación anterior, que tenemos un WordPress instalado en el servidor.

wpo server wordpress

Y ahora vamos a hacer lo siguiente…

Entramos por FTP al servidor con la cuenta que hemos configurado durante la creación del vhost y borramos todos los archivos del WordPress recién instalado que hay dentro de la carpeta PUBLIC excepto el archivo wp-config.php que lo descargamos a nuestro ordenador:

wpo server wordpress

Ahora vamos a subir los archivos del WordPress que vamos a migrar también mediante FTP arrastrándolos.
También vamos a subir el DUMP .sql de la base de datos de nuestro WordPress que vamos a importar a la raíz de nuestro sitio web, es decir, junto con los archivos del WordPress que estamos migrando, ya que vamos a cargarlo posteriormente.

Si necesitas ayuda para subir por FTP con Filezilla los archivos, puedes ver el siguiente vídeo que tengo en mi canal de Youtube:

Ahora vamos con la base de datos MySQL / MariaDB que WordPress necesita para funcionar. Vamos a utilizar la misma base de datos que se ha creado con WP-CLI durante la instalación del nuevo WordPress del paso anterior.

Para ello, vamos a utilizar el archivo wp-config.php que hemos descargado de la instalación anterior, de ahí vamos a sacar los datos de conexión a la DB MySQL / MariaDB.

Lo primero que vamos a hacer es autentificarnos en nuestra base de datos con los datos (usuario y contraseña) que hemos sacado del wp-config.php de la instalación NUEVA:

Ahora vamos a encontrar la DB y su nombre, a pesar de que lo tenemos en el wp-config.php, si ponemos el siguiente comando podremos ver el listado y la DB que vamos a utilizar:

Ahora vamos a vaciar la base de datos MySQL / MariaDB para importar la nueva para la migración, para ello usamos el comando siguiente sobre la base de datos que hemos visto el nombre anteriormente y que también podemos ver en el wp-config.php que nos hemos descargado.

Y ahora vamos a importar la nueva base de datos, teniendo en cuenta que la tenemos en la raíz de nuestro sitio web, para ello primero vamos en la consola al directorio:

Y posteriormente ejecutamos el siguiente comando:

Ahora comprobamos que tenemos nuestro WordPress funcionando correctamente a través del navegador web y si todo carga correctamente, ya tendremos el sitio web funcionando y ya solo nos falta darle los últimos retoques, como por ejemplo el certificado Let´s Encrypt que vamos a ver en la sección 4 de este post.

 

4 – Ajustes en Centmin Mod para WordPress

Aunque parece que WordPress ya esta listo para funcionar en cualquiera de los dos casos anteriores, la verdad es que aun faltan algunas cosillas por hacer antes de dar por finalizado.

La setup de Centmin Mod no tiene panel de control, pero como habrás visto, en condiciones normales es muy fácil de configurar todo y…mediante asistentes.
Esto normalmente es así, pero si todo se complica, vamos a necesitar conocimientos avanzados para tener todo bajo control.

 

4.1 – Certificado Let´s Encrypt en Centmin Mod

Desde ya hace algún tiempo, Centmin Mod lleva una herramienta para generar automáticamente certificados Let´s Encript además de los autofirmados, pero en la versión estable en el momento de escribir este post aún no está disponible.

Para que funcione correctamente el certificado Let´s Encrypt lo primero que debemos tener en cuenta es que el dominio o subdominio sobre el que vamos a configurar el certificado debe estar resolviendo correctamente contra el servidor en el que vamos a configurar el certificado.

wpo server wordpress

Lo primero que vamos a hacer es ir a esta herramienta y generar el vhost con certificado Let´s Encrypt: https://centminmod.com/vhost.php

wpo server wordpress

Al pulsar el botón “Submit” nos va a generar algunas cosas y entre ellas un comando que debemos ejecutar en nuestro servidor para configurar el certificado Let´s Encrypt y que va a variar dependiendo de tu dominio:

wpo server wordpress

Lo ejecutamos y esperamos a que termine de generar el certificado con los datos que le hemos pasado en el comando anterior:

wpo server wordpress

Como siempre, va a tardar mas o menos dependiendo de la potencia que tenga el servidor sobre el que estamos trabajando con Centmin Mod.

Ahora vamos a ir a la siguiente ruta:

Y buscamos con DIR si está el archivo acmetool.sh:

wpo server wordpress

Si no está, vamos a crearla con el siguiente comando y el contenido de la siguiente URL: https://github.com/centminmod/centminmod/blob/master/addons/acmetool.sh

Y el segundo comando que ves es para darle permisos de ejecución al archivo .sh que acabamos de crear en el directorio de addons.

Ahora vamos a continuar ejecutando el siguiente comando o más bien, grupo de comandos:

Nos saldrá algo así y pulsamos Y para después pulsar ENTER:

wpo server wordpress

Esperamos y nos tiene que salir algo como esto:

wpo server wordpress

Con esto se crea un CRON que actualiza automáticamente y renueva los certificados Let´s Encrypt.

Aun nos quedan unos cuantos comandos mas por ejecutar, el siguientes este, otros dos generados por el generador de vhost:

wpo server wordpress

Ahora vamos a editar este contenido:

wpo server wordpress

Y metemos el contenido que nos dice el generador dentro del el sustituyendo el actual.

Ahora vamos a crear el siguiente archivo:

Y vamos a meter el contenido que nos dice el generador:

wpo server wordpress

Y ahora vamos a crear este otro archivo:

Y metemos esto dentro:

Ahora vamos a editar el archivo correspondiente a este en nuestra instalación:

Y la idea es realizar esta modificación:

wpo server wordpress

Vamos, que todo esto no tiene mucha ciencia, ya que todos los pasos se describen para tu dominio están en el generador de vhost: https://centminmod.com/vhost.php

De todas formas, es MUY importante seguir todos los pasos punto por punto y asegurarnos de que el dominio esta correctamente apuntando tanto con WWW como sin WWW a nuestro servidor, ya que un error en un paso, puede resultar en no poder hacer el siguiente, pero tampoco volver atrás, obligándonos a volver a empezar.

¿Existe otra forma de configurar un certificado gratuito? Si, con CloudFlare, debemos configurar CloudFlare como CDN para que el tráfico pase a través de él y después configurar el método “FULL” para que todo funcione correctamente:

wpo server wordpress

Actualmente, tener un certificado SSL para una web es algo necesario y actualmente obligatorio por temas de SEO y Google, pero ya no es necesario pagar por un certificado SSL salvo excepciones, sobre todo existiendo certificados gratuitos validos como Let´s Encrypt, el certificado de CloudFlare o StarEncrypt.

 

Share on twitter
Twitter
Share on facebook
Facebook
Share on linkedin
LinkedIn
Álvaro Fontela
Álvaro Fontela
Soy ponente en eventos de marketing digital, consultor WordPress y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.

7 comentarios en “El hosting o servidor perfecto para WordPress”

Deja un comentario

Share on twitter
Share on facebook
Share on linkedin
¿Quieres recibir mi contenido semanal?
¡Te enviare todas las semanas mi contenido!
Cabecera del formulario de suscripción
  • RESPONSABLE:

    RAIOLA NETWORKS, S.L.

    C.I.F.: B27453489

    Avda de Magoi, 66, Semisótano, Dcha., 27002 Lugo (Lugo)

    Telefono: +34 982776081

    e-mail: info@raiolanetworks.es

    FINALIDAD:Atender solicitudes de información, ejecución de la contratación de servicios y remisión de comunicaciones comerciales.
    LEGITIMACIÓN:Consentimiento del interesado y contratación de productos y/o servicios del Responsable
    DESTINATARIOS:

    No se ceden datos a terceros, salvo obligación legal.

    Personas físicas o jurídicas directamente relacionadas con el Responsable

    Encargados de Tratamiento adheridos al Privacy Shield

    DERECHOS:Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, derecho a no ser objeto de decisiones automatizadas, así como a obtener información clara y transparente sobre el tratamiento de sus datos.
    INFORMACIÓN ADICIONAL:Se puede consultar la política de privacidad de forma más detallada aquí.
  • Este campo es un campo de validación y debe quedar sin cambios.