¿Cómo migrar un sitio web a un nuevo VPS? Guía completa de un desarrollador experimentado

¡Hola, colega! Migrar un sitio web a un nuevo VPS es una tarea con la que se ha enfrentado cualquiera que haya trabajado un poco con servidores. Parece sencillo, pero en la práctica puedes atascarte durante días resolviendo errores y matices. En esta guía, yo, un desarrollador experimentado, compartiré mi experiencia y te contaré cómo hacerlo de forma rápida, sin problemas y, lo más importante, sin pérdida de datos. Prepara un café, ten paciencia: ¡empezamos! Espero que esta guía se convierta en tu salvavidas en el turbulento mar de la migración de sitios web.

Preparación para la migración
¿Cómo migrar un sitio web a un nuevo VPS? - Esquema de preparación para la migración del sitio

Antes de empezar, es necesario planificarlo todo cuidadosamente. Lo primero es determinar el tipo de sitio web que tienes: WordPress, personalizado, en otro motor. De ello dependerá el plan de acción posterior. Necesitarás acceso SSH a ambos servidores, el antiguo y el nuevo. Anota todos los datos necesarios: direcciones IP, nombres de usuario, contraseñas (¡por supuesto, guárdalos en un lugar seguro!). También averigua las versiones de PHP, MySQL/MariaDB, la versión del servidor web (Nginx o Apache) en el servidor actual. Esto te ayudará a configurar el nuevo VPS de la misma manera que el antiguo, evitando problemas de compatibilidad. Comprueba que el nuevo VPS tenga suficientes recursos (RAM, CPU, espacio en disco) para tu sitio web. No querrás enfrentarte a problemas de rendimiento después de la migración, ¿verdad?


# Comprobación de versiones en el servidor antiguo
php -v
mysql --version
nginx -v

No olvides comprobar también la disponibilidad del nombre de dominio. Si utilizas servidores DNS de tu proveedor, tendrás que actualizar los registros DNS, indicando la nueva dirección IP de tu VPS. Aquí es donde a menudo surgen problemas. Recuerda: ¡la verificación de los registros DNS es un punto crítico!


# Comprobación de registros DNS (ejemplo con dig)
dig example.com

Copia de seguridad de los datos
¿Cómo migrar un sitio web a un nuevo VPS? - Copia de seguridad de datos

Mira, yo he estado ahí… la pérdida de datos es una catástrofe. Por lo tanto, *siempre*, **siempre**, haz una copia de seguridad *antes* de cualquier cambio crítico. Para WordPress existen muchos plugins que permiten crear copias de seguridad completas del sitio (base de datos y archivos). Para sitios web personalizados tendrás que utilizar otros métodos. Puedes copiar todos los archivos del sitio con `rsync` o `scp`, y la base de datos con la utilidad `mysqldump`. Por cierto, `mysqldump` es mi mejor amigo, me ha salvado muchas veces.

VPS Hosting

Virtual servers with guaranteed resources

Choose VPS


# Copia de seguridad de la base de datos MySQL
mysqldump -u your_username -p your_database_name > backup.sql

# Copia de los archivos del sitio con rsync (ejemplo)
rsync -avz -e ssh user@old_server:/path/to/website/ /path/to/backup/

Consejo profesional: guarda las copias de seguridad en varios lugares: en un disco duro externo, en un almacenamiento en la nube. La redundancia es la clave de la tranquilidad. Normalmente hago copias de seguridad cada pocas horas, por si acaso. Además, esto ayuda a volver a una versión anterior en caso necesario.

Configuración del nuevo VPS

Ahora configuramos el nuevo VPS. Instala el software necesario: servidor web (Nginx o Apache), PHP, MySQL/MariaDB. Para Ubuntu/Debian, esto se puede hacer con `apt`. Para CentOS/RHEL, `yum` o `dnf`. Aquí es importante instalar las mismas versiones que en el servidor antiguo. La no coincidencia de versiones puede provocar problemas inesperados. A menudo he utilizado `apt-get`, pero `apt` es un análogo más moderno.


# Instalación de Nginx en Ubuntu/Debian
sudo apt update
sudo apt install nginx

# Instalación de PHP 8.1 en Ubuntu/Debian (ejemplo)
sudo apt install php8.1 php8.1-fpm php8.1-mysql

Configura Nginx o Apache. Necesitarás crear un archivo de configuración para tu sitio web. Aquí tienes un ejemplo de archivo de configuración de Nginx:


server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

Después de los cambios, no olvides reiniciar el servidor web: `sudo systemctl restart nginx`. ¡Esto es muy importante! Una vez lo olvidé y perdí media jornada en la depuración… ¡No repitas mis errores!

Migración de los archivos del sitio

Ahora migramos los archivos del sitio al nuevo VPS. Puedes usar `rsync`, `scp` o FTP. `rsync` es mi favorito personal, porque es rápido y permite sincronizar los archivos de forma eficiente. No olvides indicar la ruta correcta al directorio de tu sitio web en el nuevo servidor. A menudo utilizo `/var/www/` o `/home/user/public_html`, dependiendo de la configuración.


# Migración de archivos con rsync
rsync -avz -e ssh user@old_server:/path/to/website/ /var/www/example.com/

Después de completar la migración de los archivos, verifica su integridad. Compara los tamaños de las carpetas y los archivos en los servidores antiguo y nuevo. Las diferencias pueden indicar errores en la migración. Si algo sale mal, siempre puedes usar la copia de seguridad. ¡Esa es la *verdadera* magia de las copias de seguridad! ¡Sin bromas!


# Comprobación del tamaño del directorio
du -sh /var/www/example.com/

Configuración de la base de datos

Migramos la base de datos. Aquí puedes usar `mysql` u otros clientes para trabajar con MySQL. Importa la copia de seguridad de la base de datos (archivo `backup.sql`) que creamos anteriormente. Durante el proceso de importación puede aparecer un error relacionado con los permisos de acceso a la base de datos o la ausencia de un usuario. Esto es fácil de resolver, pero a veces este paso requiere un esfuerzo extra.


# Conexión a MySQL
mysql -u your_username -p

# Importación de la base de datos
mysql -u your_username -p your_database_name < backup.sql

No olvides actualizar los archivos de configuración de tu sitio web, indicando los datos correctos para conectarte a la nueva base de datos. Normalmente estos datos se almacenan en el archivo `wp-config.php` para WordPress o en los archivos de configuración correspondientes de tu framework/CMS. Verifica de nuevo la configuración de la base de datos para evitar sorpresas desagradables. ¡Ya he pasado por eso!

Verificación y pruebas

¡El acorde final! Después de migrar los archivos y la base de datos, comprueba si tu sitio web funciona. Ábrelo en el navegador. Si todo está en orden, ¡felicidades! ¡Lo has conseguido! Pero no te apresures a regocijarte. Realiza pruebas exhaustivas: comprueba todas las funciones del sitio, comprueba si se muestran correctamente todas las páginas. Utiliza herramientas para comprobar el rendimiento, como GTmetrix o PageSpeed Insights.


# Comprobación del estado del servidor web
systemctl status nginx

Si algo no funciona, no te asustes. Revisa los registros del servidor web y de PHP. Contienen información valiosa que te ayudará a encontrar y corregir los errores. He salvado situaciones varias veces analizando los registros. Es como leer una novela negra, solo que más misteriosa. ¿Alguna vez te has preguntado por qué sucede esto? A menudo, el problema radica en pequeños detalles, como una ruta incorrecta o permisos de acceso incorrectos.


# Visualización de los registros de Nginx
tail -f /var/log/nginx/error.log

Después de las pruebas exitosas, actualiza los registros DNS, indicando la nueva dirección IP de tu VPS. ¡Bum! ¡Eso es todo! Ahora tu sitio web funciona en el nuevo VPS. ¡Hurra! Espero que esta guía te haya ayudado a superar este proceso más fácilmente. ¡Recuerda hacer copias de seguridad y permanece atento para obtener más consejos útiles!

«Migrar un sitio web siempre es estresante, pero con la preparación y el plan de acción adecuados, todo será mucho más sencillo.»

Ivan Ivanov, Ingeniero Senior de DevOps

“Siempre haz una copia de seguridad de tus datos antes de realizar cambios importantes. Es la única forma de asegurarte de que puedes recuperarte de cualquier problema.”

Jane Doe, Desarrolladora Web Principal, Example Company
CaracterísticaAntiguo VPSNuevo VPS
Memoria RAM4 GB8 GB
Procesador2 núcleos4 núcleos
Espacio en disco50 GB100 GB

Recursos adicionales: DigitalOcean, Linode