Os explico mi experiencia en el viaje de la migración de un proyecto web, alojado en un VPS, a otro servidor privado virtual, alojado, en este caso, en nuestro proveedor de confianza Clouding.io.

Como se suele decir, «cada maestrillo tiene su librillo», por lo que estos pasos no tienen porque ser los mejores y quizás puedes pensar, querido lector o lectora, que tú lo harías de otra forma. En cualquier caso, es una manera fiable y comprobada de hacer la migración.

He descartado utilizar plugins de WordPress para la migración. Muchos de ellos son de dudosa valía. Quizás con el único que he tenido una buena experiencia es con «Duplicator» pero, cuando manejamos proyectos grandes como el nuestro, el pobre se vuelve un poco loco. Pero si dispones de un proyecto menor que el nuestro te puede servir perfectamente.

Recuerda que esta es la tercera parte de esta historia. Primero de todo os comenté que nos movíamos a Clouding.io y, en una segunda parte, os expliqué cómo preparar el nuevo VPS para la migración, instalando un servidor web con Nginx, MariaDB y PHP.

Cosas a tener en cuenta en la migración

En el caso de nuestro proyecto utilizamos WordPress sobre una base de datos MariaDB y por último, que no menos importante,  certificados SSL de Let’s Encrypt.

En lo que respecta al contenido web, lo que haremos es copiar la carpeta del proyecto de un servidor a otro. Para ello nos servimos de la herramienta RSYNC, empleando una sincronización cifrada y comprimida.

Si quieres saber más sobre Rsync

puedes consultar esta entrada en mi blog personal:

Copias de seguridad con Rsync

Copiamos el contenido y la base de datos

Desde el servidor de destino:

rsync -havz [email protected]:/var/www/html/colaboratorio.net /var/www/html/

Una vez finalizada la copia, accedemos al VPS antiguo y exportamos la base de datos utilizada para el proyecto web, utilizando la herramienta «Mysqldump» como sigue:

mysqldump -u usuario -p base_de_datos > fichero_exportado.sql

Si no sabes cuál es la base de datos utilizada por tu WordPress debes consultar el fichero de configuración, ubicado dentro de la carpeta del proyecto. Se llama «wp-config.php» y allí verás indicado el usuario, nombre y contraseña de la base de datos.

El siguiente paso, respecto a la base de datos, lo debemos hacer desde el VPS de destino. Primero de todo será acceder al motor de bases de datos y crear una con el mismo nombre, que, de momento, estará vacía. También hemos de habilitar un usuario denominado igual que en el antiguo VPS. Así facilitaremos las cosas al asignarle, también, la misma contraseña. De esta manera te ahorrarás modificar los ficheros de configuración de WordPress.

Si no sabes como hacerlo

aquí te dejo otro pequeño tip al respecto:

Crear una base de datos MYSQL en GNU Linux

Una vez hecho esto, copias el fichero de la base de datos exportada de un VPS a otro y ya podrás importarla:

mysql -u usuario -p base_de_datos < fichero_a_importar.sql

Vale, ya tenemos copiado el contenido y la base de datos. Ahora, además, copiaremos el fichero de configuración de Nginx para el proyecto. Este, en nuestro caso, se llama «colaboratorio.net» y está ubicado dentro de «/etc/nginx/sites-available» en el antiguo VPS.

Como nuestro usuario de operaciones «operador» no tiene permisos sobre esa ubicación lo que haremos será acceder al viejo servidor privado virtual y copiar dicho fichero a la «home» de ese usuario.

De esta manera ya podemos realizar una copia al nuevo VPS:

scp [email protected]:/home/operador/colaboratorio.net /etc/nginx/sites-avaible

Además, modificaremos el fichero de configuración del Virtual Host, ya que en el antiguo servidor utilizamos PHP-FPM en la versión 7.0 y ahora, en el nuevo, utilizamos la 7.2.

sed -i 's/7.0/7.2/g' /etc/nginx/sites-avaible/colaboratorio.net

Quedando como sigue:

 ssl_certificate_key /etc/letsencrypt/live/colaboratorio.net/privkey.pem;

 ssl_prefer_server_ciphers on;
 ssl_dhparam /etc/ssl/certs/dhparam.pem;
 ssl_ciphers '';
 ssl_session_timeout 1d;
 ssl_session_cache shared:SSL:50m;
 ssl_stapling on;
 ssl_stapling_verify on;
 add_header Strict-Transport-Security max-age=15768000;

 root /var/www/colaboratorio.net/html;
 index index.php index.html index.htm;

 server_name colaboratorio.net;

 access_log /var/log/nginx/colaboratorio-access.log;
 error_log /var/log/nginx/colaboratorio-error.log error;


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

 location ~ /.well-known {
                allow all;
        }

 error_page 404 /404.html;
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root /usr/share/nginx/html;
 }

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

(...)

OK, ya hemos hecho bastante del trabajo. Pero ahora nos falta un tema un poco peliagudo que, realmente, no lo es tanto. Debemos migrar los certificados SSL.

Migrar los certificados SSL de Lets Encrypt

Para hacerlo debemos saber dónde están y cuáles migrar.

Los ficheros que nos interesan son los siguientes:

cd /etc/letsencrypt/live/colaboratorio.net/
ls
lrwxrwxrwx 1 root root   24 May  6 19:34 cert.pem -> ../../archive/cert.pem
lrwxrwxrwx 1 root root   25 May  6 19:35 chain.pem -> ../../archive/chain.pem
lrwxrwxrwx 1 root root   29 May  6 19:35 fullchain.pem -> ../../archive/fullchain.pem
lrwxrwxrwx 1 root root   27 May  6 19:35 privkey.pem -> ../../archive/privkey.pem

En dicha carpeta lo que tenemos son unos enlaces simbólicos que apuntan a la ruta «/etc/letsencrypt/archive«. Son de esa ruta, pues, desde donde los tenemos que copiar.

También debemos copiar este fichero:

cd /etc/ssl/certs
-rw-r--r-- 1 root root 424 May  6 19:38 dhparam.pem

Haremos lo mismo que en pasos anteriores: copiamos el contenido a la «home» del usuario «operador» y, desde el nuevo servidor, los recogemos:

rsync -havz [email protected]ón-viejo-vps:/home/operador/*.pem /etc/letsencrypt/archive/

Movemos el fichero «dhparam.pem» a donde le corresponde:

mv /etc/letsencrypt/archive/dhparam.pem /etc/ssl/certs

Y creamos los enlaces simbólicos:

ln -s /etc/letsencrypt/archive/cert.pem /etc/letsencrypt/live/colaboratorio.net/
ln -s /etc/letsencrypt/archive/chain.pem /etc/letsencrypt/live/colaboratorio.net/
ln -s /etc/letsencrypt/archive/fullchain.pem /etc/letsencrypt/live/colaboratorio.net/
ln -s /etc/letsencrypt/archive/privkey.pem /etc/letsencrypt/live/colaboratorio.net/

Para renovar los certificados de forma automática añadiremos las siguientes tareas programadas:

30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Si no tenemos el script de renovación lo podemos copiar del antiguo servidor:

scp [email protected]:/opt/letsencrypt/letsencrypt-auto /opt/letsencrypt/

Ahora ya podemos añadir el proyecto web a Nginx:

ln -s /etc/nginx/sites-available/colaboratorio.net /etc/nginx/sites-enabled/

Reiniciamos Nginx:

systemctl restart nginx

Si todo ha ido bien hasta ahora ya podemos cambiar la dirección IP en el DNS ¡y empezar a surfear!


Imagen del usuario PublicDomainPictures, que puedes encontrar en Pixabay.

avatar

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  Subscribe  
Notificarme de