Migrar un sitio web de hosting compartido a un VPS Linux

3 min
Hosting VPS/VDS

Pasar un sitio PHP/MySQL a un VPS Linux Infrawire le da recursos dedicados y control total de la pila. La clave de una migración sin sobresaltos es preparar todo en el nuevo servidor, probarlo antes de tocar el DNS y solo entonces cambiar el tráfico. Esta guía sigue ese orden.

📋 Requisitos previos

  • Un VPS Linux con Ubuntu 24.04 o Debian 12 (la IP y la contraseña de root están en su área de cliente)
  • Acceso al hosting compartido (gestor de archivos, FTP/SSH y una herramienta de base de datos como phpMyAdmin)
  • Acceso a la zona DNS de su dominio
  • Un dominio example.com y la IP de su VPS, escrita VPS_IP más abajo

1. Hacer el inventario del sitio antiguo

Anote lo que necesita el sitio: versión de PHP, extensiones, nombre de la base de datos, tareas cron, reglas .htaccess, certificado SSL y, sobre todo, dónde está alojado su correo. En el panel antiguo consulte la versión de PHP; si tiene acceso SSH:

Bash
php -v php -m | sort crontab -l

Reduzca también ya el TTL de sus registros DNS a 300 segundos, al menos un día antes de la migración, para que el cambio final sea rápido.

2. Exportar archivos y base de datos

Desde el VPS puede traer los archivos directamente si el hosting antiguo ofrece SSH:

Bash
mkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/

Sin SSH, descargue un archivo comprimido por FTP o con el gestor de archivos y súbalo con scp. Exporte la base de datos con mysqldump (o el botón Exportar de phpMyAdmin):

Bash
mysqldump --single-transaction -u DBUSER -p DBNAME > db.sql

3. Preparar la pila en el VPS

Bash
sudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v

Ubuntu 24.04 incluye PHP 8.3 y Debian 12 PHP 8.2; el socket es /run/php/php8.3-fpm.sock o /run/php/php8.2-fpm.sock. Cree el sitio de Nginx en /etc/nginx/sites-available/example.com:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

Nginx ignora .htaccess: traduzca sus reglas de reescritura a bloques location.

4. Importar archivos y base de datos

Bash
sudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql

Después edite la configuración de la aplicación (por ejemplo wp-config.php) con el nuevo nombre de base de datos, usuario y contraseña. El host pasa a ser localhost.

5. Probar antes del cambio

En su propio ordenador, haga que el dominio apunte al VPS editando el archivo hosts (/etc/hosts en Linux y macOS, C:\Windows\System32\drivers\etc\hosts en Windows):

Bash
VPS_IP example.com www.example.com

O pruebe sin cambiar nada:

Bash
curl -I --resolve example.com:80:VPS_IP http://example.com/

Navegue por el sitio, inicie sesión, envíe un formulario y revise los registros en /var/log/nginx/error.log. Después elimine la línea del archivo hosts.

6. Cambiar el DNS y gestionar el correo

Congele los cambios de contenido en el sitio antiguo, repita el rsync y la exportación/importación de la base de datos para recoger los cambios recientes, y luego cambie el registro A a VPS_IP y el registro AAAA a la dirección IPv6 del VPS. Cuando el DNS se haya propagado, emita el certificado:

Bash
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

Correo: cambie solo los registros A/AAAA. Deje intactos los registros MX, SPF y DKIM si sus buzones siguen con el proveedor antiguo. Cancele el hosting antiguo solo tras unos días sin problemas.

🔧 Solución de problemas

502 Bad Gateway
El socket PHP de fastcgi_pass no coincide con la versión instalada. Compruebe con ls /run/php/ y systemctl status php8.3-fpm.

«Error establishing a database connection»
Credenciales o host incorrectos en el archivo de configuración. Pruebe con mysql -u dbuser -p dbname.

403 o página en blanco
Revise propietario y permisos (chown -R www-data:www-data), y consulte sudo tail -n 50 /var/log/nginx/error.log y los registros de PHP.

El sitio antiguo sigue apareciendo tras el cambio
Las cachés DNS siguen activas. Compruebe con dig +short example.com y espere a que expire el TTL.


✅ Su sitio ya funciona en su propio VPS, migrado sin interrupciones y con una vía segura de vuelta atrás.

Mantente al día con las últimas ofertas, descuentos y promociones especiales.

Ver promociones

Utilizamos cookies

Utilizamos cookies analíticas para mejorar su experiencia en nuestro sitio. No vendemos datos a terceros. Más información en nuestra política de privacidad.