Migrando WordPress a un VPS

Este tutorial mostrará cómo migrar un blog de WordPress actual a un nuevo VPS, debido a que:

Tu sitio actual está en un alojamiento compartido y deseas más flexibilidad
Tu blog se está volviendo muy popular y quieres que tu sitio esté disponible para todos esos visitantes.
Estás instalando todos sus sitios en un nuevo VPS y uno de ellos está en WordPress
Puedes tener varios sitios WP y deseas una guía sobre cómo transferirlos al nuevo VPS.

Prerrequisitos
El VPS al que migrarás tu instalación de WordPress se ejecutará en
Ubuntu 16.04 con al menos 512Mb de RAM y 15Gb de espacio libre en disco.
Necesitarás acceso de usuario root.
LAMP (Linux, Apache, MySQL, PHP) ya está instalado.

En el host anterior deberías poder exportar y comprimir la base de datos, ya sea a través del panel de control o utilizando el acceso SSH.

En la computadora de escritorio, debe tener:

Cliente FTP para conectarse al nuevo VPS (FileZilla), y
editor de archivos de texto (Notepad ++ en Windows y BBEdit o TextEdit en una Mac)

PASO 1:

Con cPanel, puedes descargar la base de datos a través de las  opciones phpMyAdmin o Backup Wizard desde el menú principal de cPanel. Vamos a hacerlo con phpMyAdmin.

Inicia sesión en phpMyAdmin y busca en el lado izquierdo la base de datos que necesites migrar.  Para una instalación típica de WordPress, el nombre de la base de datos terminaría con _wrdp1 . 

Sin embargo, si has instalado WordPress varias veces, los nombres pueden ser _wrdp2_wrdp3 y necesitas saber cuál usar exactamente.

Haz clic en una base de datos y phpMyAdmin lo expandirá con la lista de tablas que contiene:

Haz clic en la pestaña Exportar y luego desplázate hacia abajo y presiona 
Ir . 
Descarga y guarda el archivo, y anota el nombre de archivo y la ubicación en su máquina local.

PASO 2: Instalar FTP en el servidor

Ahora usamos un paquete conocido llamado vsftpd para instalar un servidor FTP en el nuevo VPS.  Luego nos conectaremos a través de FileZilla y cargaremos la base de datos que exportamos en el paso anterior.

Para instalar vsftpd , ejecutamos los siguientes comandos:

sudo apt update
sudo apt install vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd


El servicio FTP debería estar en funcionamiento.

También configuramos un firewall para restringir el acceso solo a ciertos puertos. El más sencillo de usar es ufw (firewall sin complicaciones). 
Instálalo ejecutando:

sudo apt install uwf

Luego, ejecuta los siguientes comandos para permitir el acceso a los protocolos SSH, HTTP, HTTPS, FTP (activo y pasivo):

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp


Finalmente, habilítalo:

sudo ufw enable

Agrega un usuario de FTP, establece sus permisos y permite que cambie los archivos en el directorio html:

sudo adduser ftpuser
sudo usermod -d /var/www ftpuser
sudo chown ftpuser:ftpuser /var/www/html


Crea una contraseña segura cuando te pide que la ingreses. Lo necesitaremos más tarde.

Haz una copia de seguridad del archivo de configuración antiguo y crea uno nuevo con nano:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo rm /etc/vsftpd.conf
sudo nano /etc/vsftpd.conf


Añade las siguientes líneas:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
ssl_enable=NO
force_dot_files=YES


Guarda y cierra el archivo. 

La configuración que se muestra arriba ordena a vsftpd permitir el acceso a cuentas de usuarios locales.

Reiniciamos vsftpd para que la configuración tenga efecto:
sudo systemctl restart vsftpd

PASO 3: Configurar FileZilla

Vamos a configurar los detalles de la conexión VPS en FileZilla. 

Haz clic en Archivo> Administrador del sitio en el menú principal y luego, en la pestaña General , ingresa la dirección IP del servidor, el nombre de usuario de FTP y su contraseña:

En la pestaña Avanzado , ingresa el directorio local así como también / var / www / html para el directorio remoto. 

Si lo deseas, marca Usar navegación sincronizada

Esa opción guarda muchos clics y «te pone en la misma página» con respecto a las rutas, tanto de forma local como remota.

Carga la base de datos exportada a través de FileZilla al nuevo servidor, en la carpeta / html. 

Una vez cargado, puede verificar su contenido desde la consola SSH:
sudo nano /var/www/html/<db name>.sql

PASO 4: Crear una base de datos en el nuevo servidor

Ejecutar MySQL shell:
sudo mysql -u root -p

Cuando se solicite, ingresa la contraseña para la  raíz de usuario de MySQL 

Una vez en el indicador de MySQL, copia y pega el siguiente código, luego presiona Intro en el teclado:

CREATE DATABASE blogdb character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES on blogdb.* to [email protected] identified by "<your strong password>";
FLUSH PRIVILEGES;
USE blogdb;
SOURCE /var/www/html/<your db file name>.sql;
FLUSH PRIVILEGES;
SHOW TABLES;
EXIT;


Reemplaza con tu contraseña y el nombre exacto del archivo, donde se indique.

La primera línea creará la base de datos blogdb y especificará que charset sea UTF8.
GRANT ALL PRIVILEGES crea un nuevo usuario llamado bloguser y le otorga todos los privilegios en la base de datos blogdb.
FLUSH PRIVILEGES vuelve a cargar los permisos de usuario con los cambios realizados. 
* USE * indica qué base de datos usar y SOURCE ejecuta el contenido del archivo, que en realidad importará la base de datos.
Para confirmar que el comando SOURCE se ejecutó correctamente, ejecutamos 
MOSTRAR TABLAS para enumerar todas las tablas importadas.

El último comando es EXIT , para cerrar el indicador de MySQL y volver al shell de Ubuntu habitual.

Con esto, la base de datos del sitio anterior se copió con éxito en una base de datos en el sitio nuevo. Por razones de seguridad, elimina el archivo de base de datos exportado ahora cuando ya no sea necesario:
sudo rm /var/www/html/<your db file name>.sql

PASO 5: Instalar WordPress en el VPS

Con la base de datos configurada, el siguiente paso es copiar la instalación de WordPress anterior en el VPS.

Desde FileZilla, descarga tu antigua instalación de WordPress en la computadora local. 

Luego, cárgala en una carpeta de VPS llamada blog . 

Esto llevará algún tiempo terminar, así que ten paciencia.
Deberás usar una cuenta de FileZilla para acceder al blog original y otra cuenta, la que instalamos en este tutorial, para cargar archivos en el nuevo servidor.

Una forma más rápida de cargar la instalación de WordPress es comprimir la carpeta completa en la computadora de escritorio y luego usar FileZilla para cargarla en la carpeta / var / www / html en el nuevo servidor. Veamos:

Elige Administrador de archivos de cPanel, haz clic en el directorio del blog y luego en la opción Comprimir .

Descarga el archivo comprimido a la computadora de escritorio a través de FileZilla. 

¡Es importante hacer una copia de seguridad de la instalación de WordPress comprimida en su computadora de escritorio!

Si tienes acceso SSH al servidor antiguo, puedes usar los comandos zip o tar para comprimir el directorio del blog.

Usa el comando cd para transferir al directorio correcto del servidor antiguo, luego ejecuta 

zip -r pruebablog.zip blog

En el nuevo servidor, haz esto (para zip):
cd /var/www/html
wget https://prueba.com/pruebablog.zip
zip -r pruebablog.zip blog

Transferirá el archivo comprimido y descomprimirá WordPress.

Para tar:

La misma idea, pero otro comando en el servidor antiguo:
tar -czvf pruebablog.tar blog
Ahora en el nuevo servidor:
cd /var/www/html
wget https://prueba.com/pruebablog.tar
tar -xzvf pruebablog.tar


Cuando la transferencia haya finalizado, elimina el archivo comprimido del servidor antiguo:
rm pruebablog.tar

PASO 6: Reconfigurando WordPress

Nuestro nuevo blog reside en 
/ var / www / html / blog . 

Ahora cambiamos los parámetros para el acceso a la base de datos, porque creamos uno nuevo en el Paso 4.

WordPress almacena su configuración en un archivo llamado wpconfig.php, así que abramos para editarlo:
sudo nano /var/www/html/blog/wp-config.php

Busca las líneas que configuran las credenciales de la base de datos y reemplazalas por las siguientes:

/** The name of the database for WordPress */
define( 'DB_NAME', 'blogdb' );

/** MySQL database username */
define( 'DB_USER', 'bloguser' );

/** MySQL database password */
define( 'DB_PASSWORD', '<your db password>' );


Recuerda reemplazar la contraseña de usuario de la base de datos en la última línea, luego guarda y cierra el archivo.

Ahora puedes navegar a http://SERVER_IP/blog. Verás tu blog de WordPress, que debería verse igual que el del alojamiento anterior, solo que con una dirección diferente.

Qué hacer a continuación

Debes apuntar un nombre de dominio a tu nuevo VPS, si aún no lo has hecho. 
Tendrás que esperar 48 horas para estar bastante seguro de que los nuevos registros DNS se han propagado a toda la Internet. 

En esos dos días, algunos visitantes verán el antiguo y otros verán el nuevo sitio, por lo que es posible que no desees agregar ningún contenido nuevo durante ese período. 

También puedes desactivar los comentarios en el sitio anterior, para que los nuevos comentarios no se desechen.

Si deseas dejar tu host anterior, puedes hacerlo después de que hayan transcurrido estas 48 horas. 

Tendrás la copia de seguridad del sitio en tu máquina local y sería conveniente hacer una copia de seguridad de esa copia de seguridad, por si acaso.