Arquitectura

Cambiar tu web de servidor sin parar el negocio

Por Bryan Taylor Reverón 18 min de lectura

Cambiar tu web de servidor se puede hacer sin que nadie lo note. Pero tiene más pasos de los que parece, y dos sitios donde es fácil equivocarse. Esta guía recoge lo que hemos aprendido en más de treinta migraciones. Cuándo compensa, qué puede fallar, cómo se evita y qué hay que dejar hecho después. Está escrita para quien decide. Las instrucciones técnicas van al final, en un bloque aparte para quien vaya a hacerlo.

Cuándo compensa cambiar de servidor y cuándo no

Una web pequeña, con poco contenido y pocas visitas, puede vivir bien en un alojamiento normal. Suele costar menos y se maneja desde un panel. Migrar a un servidor propio en la nube compensa en estos casos.

  • La web se ha quedado lenta o se cae cuando hay muchas visitas. Y tu proveedor no puede darle más potencia sin cambiar de plan entero.
  • Necesitas mandar en el servidor: qué versiones lleva, qué tareas se ejecutan y a qué hora, quién entra.
  • Quieres que la web aguante los ataques y que las fotos no la frenen.
  • Te importa dónde están físicamente tus datos. Aquí eliges el país, y nuestros servidores están dentro de la Unión Europea.
  • Piensas crecer y no quieres volver a migrar dentro de un año.

Frente a un alojamiento compartido, un servidor propio en la nube te da tres cosas. Tiene más potencia cuando la necesitas, y se amplía en minutos. El precio es fijo y lo sabes de antemano. Y decides cada pieza. A cambio, alguien tiene que mantener ese servidor: actualizaciones, copias de seguridad, seguridad y avisos de error. Si nadie en tu empresa va a hacerlo, la respuesta no es «no migres». Es «migra con alguien que lo mantenga por ti».

Qué puede salir mal y cómo se evita

Que la web esté un rato caída

Es el riesgo más visible. Se evita montando la web nueva entera y probada antes de cambiar la dirección. Y preparando el cambio de dirección el día antes, para que se note en minutos y no en horas. Bien hecho, la parada son los minutos que tarda el cambio en extenderse. En nuestras migraciones, menos de 15 minutos.

Que algo no funcione igual

Puede fallar un complemento que necesitaba algo del servidor viejo. O una versión distinta del software del servidor. O un ajuste que se quedó sin copiar. Se evita con una revisión previa de la web y probando la web nueva antes de cambiar la dirección. Los fallos aparecen mientras la dirección todavía apunta a la web vieja, y da tiempo a corregirlos.

Que vaya más lenta de lo esperado

Un servidor nuevo no hace una web rápida por sí solo. Un servidor pequeño que fabrica cada página en cada visita puede ir peor que el alojamiento anterior. Se evita de tres formas. Eligiendo el servidor según lo que hoy consume tu web, no a ojo. Guardando cada página ya hecha, para no fabricarla otra vez en la visita siguiente. Y sirviendo las imágenes desde servidores repartidos por el mundo. Después de la migración, mide la velocidad igual que antes y compara.

Que la seguridad quede mal montada

Un servidor propio es tu responsabilidad. Los fallos típicos son tres. El primero, dejar abiertas puertas que no hacen falta. El segundo, entrar con una contraseña normal. Es mejor entrar con un fichero de acceso que solo tiene tu ordenador: es mucho más difícil de robar. El tercero, un WordPress sin actualizar.

Se evita dejando abierto solo lo imprescindible para que la web funcione y para poder entrar a mantenerla. Se entra siempre con ese fichero de acceso. Se activan las actualizaciones y se pone delante el filtro que para los ataques. Y se cambian las contraseñas de todo lo que se copió de la web antigua.

Que la factura se dispare

El precio del servidor es fijo y conocido. Lo que puede crecer es el tráfico de los servidores repartidos por el mundo y el espacio de las imágenes. Pasa si sirves mucho vídeo o imágenes sin comprimir. Se evita activando avisos de gasto desde el primer día y comprimiendo las imágenes antes de subirlas. Con nosotros no pasa: el precio es fijo y lo sabes desde el primer día.

¿Prefieres que la migración la hagamos nosotros?

Hemos hecho más de treinta migraciones de WordPress, con paradas de minutos. Si quieres que nos encarguemos, en migrar tu WordPress a PF Hosting explicamos cómo lo hacemos y qué necesitamos de ti. Y si prefieres ver primero un ejemplo real, en el caso migraciones de WordPress contamos dos historias. Una revista digital que se caía varias veces al día pasó a no caerse y a costar un 30 % menos. Y una empresa de regalos promocionales migró en una semana.

Cómo es el servidor de destino

Para casi todas las webs de empresa y tiendas medianas recomendamos el mismo montaje. Es el que mejor equilibra coste, velocidad y facilidad de mantenimiento.

  • Un servidor solo para tu web, con un tamaño fijo y un precio fijo al mes. Viene con WordPress ya instalado. Si la web crece, se pasa a un servidor mayor sin reinstalar nada.
  • Las imágenes, los vídeos y el código, aparte. Se guardan en un almacén propio y se sirven desde servidores repartidos por el mundo. Tu servidor queda libre para lo único que solo él puede hacer: fabricar las páginas.
  • Un filtro delante que para los ataques antes de que lleguen a la web.
  • Ayudas automáticas para tareas sueltas, como dejar más ligeras las fotos que subes. Solo se pagan cuando se usan, y son opcionales.

Cómo se hace, a grandes rasgos

Se monta la web nueva entera y se prueba a fondo mientras la vieja sigue en marcha. Solo entonces se cambia la dirección. Así la parada son minutos, no horas.

Hay dos caminos. Uno, con un complemento que empaqueta los ficheros y la base de datos. Otro, a mano. Nosotros preferimos el camino a mano cuando la web tiene muchas imágenes o ajustes especiales. Así se controla cada paso y se sabe qué ha fallado si algo falla. Los siete pasos, con sus instrucciones, están en el bloque final.

Antes de empezar, ten esto a mano

  • Una copia de seguridad completa de la web actual, comprobada: descargada y abierta, no solo «creada».
  • El acceso al sitio donde se gestiona la dirección de tu dominio. Y pedir el día antes que el cambio de dirección se note en minutos.
  • La lista de complementos activos, con sus licencias, y de los servicios externos conectados: pago, correo, gestión de clientes.
  • Qué versión de WordPress y del software del servidor usa hoy tu web, para comprobar que el sitio nuevo las admite.
  • Un aviso a quien deba saberlo, aunque el objetivo sea que nadie note nada.

Después de la migración

El correo saliente

El servidor nuevo no envía correo por sí mismo. Los formularios, los avisos de pedido y la recuperación de contraseña dejan de llegar hasta que se conecta un servicio de envío. Se configura una vez. Si tu empresa ya usa un correo de empresa, no cambia nada: solo cambia cómo envía WordPress.

Copias de seguridad

Hay dos copias distintas y conviene no confundirlas.

La foto del servidor entero sirve para volver atrás si algo se rompe. Se hace una a mano antes de cada cambio y se activan las automáticas diarias. Con ella se recrea el servidor tal y como estaba ese día. También sirve para pasar a un servidor mayor o para montar un sitio de pruebas.

Las versiones que guarda WordPress sirven para recuperar un texto concreto. Si alguien borra un párrafo de una página, no hace falta tocar el servidor.

Y conviene guardar copias también fuera del proveedor.

La primera semana

Una migración no termina cuando cambia la dirección. La primera semana es donde aparecen los problemas que la prueba previa no enseña:

  • Mantén la web antigua encendida unos días, sin publicar en ella. Si algo falla, volver atrás es cambiar la dirección de nuevo. Cuando estés seguro, cancélala y guarda su última copia de seguridad.
  • Formularios y correo: envía un mensaje desde cada formulario y comprueba que llega. Es lo primero que se rompe y lo último que alguien avisa.
  • Tareas automáticas: pide que las lance el propio servidor, no las visitas. Es un cambio de cinco minutos que evita caídas.
  • Google: comprueba que sigue viendo la web y que no han aparecido errores. Si el dominio no cambia, no hace falta nada más. Si cambia, hay que redirigir cada dirección antigua a la nueva.
  • Los avisos de error: pide a quien mantenga la web que los revise cada día, aunque todo se vea bien. Un aviso que se repite suele anunciar la caída que viene.
  • Una medida de velocidad, para comparar con la de antes. Si no ha mejorado, la guía de velocidad de WordPress es el siguiente paso.

Tus datos, en la Unión Europea

Nosotros alojamos en la Unión Europea. Tus datos, sus copias de seguridad y tus imágenes se quedan dentro de la Unión Europea, y te lo damos por escrito.

El servidor no se puede abrir desde fuera. A tu web solo se llega pasando antes por el filtro que para los ataques. Hacemos copias de seguridad todos los días y el equipo entra por una conexión privada.

Si tu cliente o la ley te piden más

Que el servidor esté en Europa no basta por sí solo. Cuenta también cómo se configura, quién entra y si se puede saber quién hizo qué y cuándo. Nuestro servicio se monta con ese criterio.

Si vendes a la administración, te pueden pedir que cumplas el ENS, las normas de seguridad que pide la administración. Si tratas datos personales, el RGPD, la ley europea de protección de datos, te pide saber dónde están y quién accede a ellos. Un servidor bien mantenido en la Unión Europea es una base sólida para las dos cosas. Y documentamos lo que se hizo, para cuando alguien de fuera venga a revisarlo.

Con qué lo hacemos

Lo que usa esta guía. AWS son los centros de datos de Amazon. El servidor es una instancia de Amazon Lightsail con el plano de WordPress de Bitnami. Las imágenes van a un bucket privado de S3 y las sirve Amazon CloudFront con AWS WAF delante. El correo saliente se puede enviar por Amazon SES, que se contrata aparte. Las tareas sueltas, cuando hacen falta, en AWS Lambda. Para migrar el sitio usamos rsync, mysqldump y WP-CLI, o un plugin como All-in-One WP Migration, Duplicator, WP Migrate, UpdraftPlus o Migrate Guru.

Lo que usa PF Hosting. Nuestro producto va sobre servidores propios en una región de la Unión Europea, sin dirección pública. Delante lleva Amazon CloudFront y AWS WAF. Las copias de seguridad son diarias y las actualizaciones las hace nuestro equipo. El correo no va incluido: se contrata aparte.

Para quien lo va a hacer: los pasos con comandos

Lo que sigue es para la persona que va a ejecutar la migración. Si no eres tú, pásaselo. Haz una copia completa antes de empezar y no cambies el DNS hasta haber probado la web nueva.

Cómo queda montado

Amazon Lightsail para WordPress. Lightsail es la versión simplificada de los servidores de AWS. Es una instancia con un tamaño fijo de CPU, memoria, disco y transferencia, y un coste mensual fijo. Su plano de WordPress (mantenido por Bitnami) trae Apache, PHP, MariaDB y WordPress instalados y configurados, con la web en /opt/bitnami/wordpress. Si el sitio crece, se cambia a una instancia mayor a partir de una instantánea, sin reinstalar nada.

S3 y CloudFront para el contenido estático. Las imágenes, los vídeos, las hojas de estilo y los scripts se guardan en un bucket privado de Amazon S3. Los sirve Amazon CloudFront, la CDN de AWS. Los copia en decenas de puntos del mundo y los entrega desde el más cercano al visitante. Delante de CloudFront se activa AWS WAF, un cortafuegos de aplicaciones que filtra el tráfico malicioso antes de que llegue a la web. Cómo montar esta CDN, paso a paso, está en la guía de velocidad de WordPress.

Lambda para tareas sueltas, no para WordPress. AWS Lambda ejecuta código sin servidor y se paga por ejecución. No sirve para alojar WordPress, que necesita un servidor siempre encendido. Sí sirve para tareas concretas alrededor de él: optimizar y convertir las imágenes que se suben al bucket, minificar ficheros o generar informes. Es una pieza opcional, útil cuando el volumen de imágenes es grande.

Herramientas para migrar el sitio

  • All-in-One WP Migration: exporta todo el sitio (base de datos, medios, plugins y temas) a un único fichero que se importa en el destino. El más sencillo para sitios pequeños y medianos.
  • Duplicator: crea un paquete completo del sitio más un instalador que lo despliega en el servidor nuevo. Muy usado para clonar.
  • WP Migrate: especializado en la base de datos. La exporta reemplazando las URL y las rutas antiguas por las nuevas, que es el paso que más se olvida.
  • UpdraftPlus: es un plugin de copias de seguridad que también restaura en otro servidor. Sirve para migrar y para las copias posteriores.
  • Migrate Guru: automatiza la migración completa entre dos servidores sin pasar por tu ordenador. Útil para sitios grandes.

Un plugin puede sustituir los pasos 5 y 6 del camino manual que sigue.

Paso 1: evalúa el sitio actual

Antes de migrar nada, mira qué vas a migrar. Cuánto ocupan la base de datos y la carpeta de medios. Qué plugins están activos y cuáles se pueden borrar antes de la migración. Qué tema usa la web y si tiene código a medida. Es también el momento de limpiar: una base de datos sin revisiones antiguas ni spam se transfiere más rápido y arranca mejor en el destino. Anota cualquier cosa rara: tareas programadas, reglas en .htaccess, carpetas fuera de WordPress.

Paso 2: crea la cuenta de AWS y elige el servicio

Si no tienes cuenta en AWS, créala con un correo de la organización, no personal, y activa el segundo factor en el usuario raíz. Después decide dónde va a vivir WordPress. Para un sitio corporativo o una tienda mediana, Lightsail; para aplicaciones grandes con varios servidores y balanceo, EC2. Esta guía sigue el camino de Lightsail, que es el que recomendamos y el que usamos en nuestras migraciones. Elige una región de la Unión Europea si tus visitantes y tus datos están en Europa.

Paso 3: lanza la instancia

En la consola de Lightsail, «Crear instancia»: una región de la Unión Europea, plataforma Linux, plano «WordPress». Elige el tamaño según el sitio actual; se puede subir después, pero no bajar sin rehacer la instancia. Cuando esté en marcha, asígnale una IP estática desde la pestaña «Redes». Sin ella, la IP cambia al reiniciar y el DNS deja de apuntar a la web. Abre el cliente SSH del navegador o conéctate desde tu terminal con la clave que Lightsail te da. La contraseña inicial del administrador de WordPress está en el fichero bitnami_application_password de la carpeta de inicio.

Paso 4: prepara el sitio de origen

En el hosting actual, exporta la base de datos completa a un fichero .sql (desde phpMyAdmin o con mysqldump). Descarga la carpeta wp-content, que es donde viven los temas, los plugins y los medios. El núcleo de WordPress no hace falta copiarlo: la instancia ya lo trae. Si el sitio actual y el nuevo van a convivir unos días, anota la fecha de esta copia. Todo lo que se publique después habrá que volver a exportarlo, o congelar la publicación hasta el cambio de DNS.

Paso 5: transfiere los ficheros

En el plano de WordPress de Lightsail, la web vive en /opt/bitnami/wordpress, no en /var/www como en otros servidores. Es el error de ruta más repetido en tutoriales de migración. Copia tu wp-content a la instancia con SCP o rsync. Después devuelve los permisos que Bitnami espera, con el usuario bitnami y el grupo daemon:

rsync -avz wp-content/ bitnami@IP-DE-LA-INSTANCIA:/opt/bitnami/wordpress/wp-content/
sudo chown -R bitnami:daemon /opt/bitnami/wordpress/wp-content
sudo find /opt/bitnami/wordpress/wp-content -type d -exec chmod 775 {} \;
sudo find /opt/bitnami/wordpress/wp-content -type f -exec chmod 664 {} \;

Paso 6: crea la base de datos e importa la copia

La instancia trae MariaDB con una base de datos ya creada para el WordPress de muestra. Puedes reutilizarla o crear una propia, que es lo que hacemos para que el nombre y el usuario sean los tuyos. Entra en el servidor de base de datos con la contraseña de bitnami_application_password:

mysql -u root -p
CREATE DATABASE mi_web;
CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'una-contraseña-larga';
GRANT ALL PRIVILEGES ON mi_web.* TO 'mi_usuario'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Sube el fichero .sql a la instancia e impórtalo. Después usa WP-CLI, que el plano trae instalado. Reemplaza en toda la base de datos el dominio antiguo por el nuevo (o por la IP estática mientras pruebas). WordPress guarda URL absolutas en cientos de sitios:

mysql -u mi_usuario -p mi_web < copia.sql
cd /opt/bitnami/wordpress
wp search-replace 'https://web-antigua.com' 'https://www.mi-web.com' --all-tables

Paso 7: ajusta wp-config.php, cambia el DNS y prueba

Haz una copia del fichero de configuración y edítalo con los datos de la base de datos nueva:

cd /opt/bitnami/wordpress
sudo cp wp-config.php wp-config.php.backup
sudo nano wp-config.php
define('DB_NAME', 'mi_web');
define('DB_USER', 'mi_usuario');
define('DB_PASSWORD', 'una-contraseña-larga');
define('DB_HOST', 'localhost');

Comprueba también que el prefijo de tablas ($table_prefix) coincide con el de la base de datos importada. Reinicia los servicios con sudo /opt/bitnami/ctlscript.sh restart. Prueba el sitio por la IP estática. Mejor aún: edita el fichero hosts de tu ordenador para que el dominio apunte a la IP nueva, sin tocar el DNS todavía. Revisa la portada, una entrada, una página con formulario, el proceso de compra si lo hay y el panel de administración. Cuando todo funcione, cambia el registro A del dominio a la IP estática. Activa el HTTPS en la instancia con la herramienta bncert-tool de Bitnami, que lo configura y lo renueva sola. Si bajaste el TTL del DNS con un día de antelación, el cambio se nota en minutos.

Seguridad y costes: los ajustes concretos

En el cortafuegos de Lightsail deja abiertos solo los puertos 22, 80 y 443. Entra por SSH solo con clave, nunca por contraseña. Activa las actualizaciones y pon CloudFront con WAF delante de la web. Cambia las contraseñas de todo lo que se copió del sitio antiguo. En Lightsail el coste es fijo; lo que puede crecer es la transferencia de CloudFront y el almacenamiento de S3. Activa alertas de facturación en AWS desde el primer día.

Dónde están los logs

Cuando algo falla, los logs lo cuentan. En el plano de Bitnami están aquí:

  • Accesos de Apache: /opt/bitnami/apache/logs/access_log
  • Errores de Apache: /opt/bitnami/apache/logs/error_log
  • Errores de PHP: /opt/bitnami/php/logs/php-fpm.log

Para ver las últimas líneas de uno de ellos mientras reproduces un error:

tail -n 100 -f /opt/bitnami/apache/logs/error_log

El correo saliente con SES

Una instancia de Lightsail no envía correo por sí misma. La opción natural dentro de AWS es Amazon SES. Se verifica el dominio con unos registros DNS y se crean credenciales SMTP. Después se configura WordPress con un plugin como WP Mail SMTP para que envíe a través de SES. Ten en cuenta que SES empieza en modo de pruebas, que solo entrega a direcciones verificadas, y hay que pedir la salida de ese modo. Si la organización ya usa Google Workspace o Microsoft 365 para el correo, los registros MX se quedan como están. Solo cambia el envío desde WordPress, que puede ir por SES o por el SMTP del proveedor.

Copias de seguridad con instantáneas

Lightsail hace copias de la instancia entera con instantáneas. En la página de la instancia, pestaña «Instantáneas», se crea una a mano con un nombre descriptivo, y se activan las instantáneas automáticas diarias. Lightsail conserva las últimas instantáneas automáticas; el número exacto lo indica tu consola. Una instantánea se restaura creando una instancia nueva a partir de ella. Por eso también sirve para cambiar de tamaño o para clonar un entorno de pruebas. Es una copia de servidor, no de contenido: para volver a una versión anterior de una sola entrada siguen sirviendo las revisiones de WordPress. Para guardar copias fuera de AWS, un plugin como UpdraftPlus enviándolas a otro almacenamiento. Tenemos una entrada dedicada a las copias de seguridad de WordPress en Lightsail. Y otra a montar un entorno de pruebas en Lightsail a partir de una instantánea.

Tareas programadas y Search Console

WordPress ejecuta sus tareas (publicaciones programadas, copias, envíos) cuando alguien visita la web. En un servidor propio es mejor lanzarlas desde el cron del sistema, cada cinco minutos, y desactivar el mecanismo interno en wp-config.php. Es un cambio pequeño que evita muchas caídas por picos de carga.

En Search Console, comprueba que Google sigue viendo el sitio, que el mapa del sitio responde y que no han aparecido errores de rastreo. Si el dominio no cambia, no hace falta nada más. Si cambia, hay que declarar el cambio de dirección y redirigir cada URL antigua a la nueva.