Pasos para migrar un proyecto web

LAMP MigrationMigrar un proyecto web (php/mysql) de un servidor a otro(s) puede parecer un proceso sencillo, pero rara es la vez en la que no salen imprevistos. Por esta raz贸n, prefiero tener bien documentado todo el proceso de migraci贸n, antes de empezar, para evitar sobresaltos e ir sobre seguro.

La idea del siguiente proceso, es clonar la base de datos del servidor a migrar al nuevo servidor, y una vez clonada, modificar el c贸digo del servidor a migrar para empezar a usar la base de datos del nuevo server en lugar de la que usaba hasta ahora. De esta manera, no se perder谩n datos cuando se inicie la modificaci贸n de las DNS para apuntar al nuevo servidor.

REQUISITOS

  • En el nuevo servidor, abrir (por lo menos) los puertos 22 y 3306 para la IP del servidor a migrar.
  • Apache y MySQL instalados y configurados en el nuevo server, inclu铆do el vhost del proyecto.
  • Resto de dependencias del proyecto instaladas en el nuevo server.

PRODUCCION – copia del c贸digo web

1- Indicamos a los programadores que no realicen ning煤n cambio en el c贸digo del proyecto hasta que no finalice la replicaci贸n de las DNS del 煤ltimo punto

// Hacemos backup del c贸digo del proyecto
2- tar -czvf /tmp/backup.tar.gz /var/www/proyecto

// Copiamos el c贸digo del proyecto al nuevo server
3- sftp [email protected]

NUEVO SERVER – restaurar c贸digo web

// Restauramos el c贸digo del proyecto en el nuevo server
4- tar -zxvf backup.tar.gz

5- Modificamos el c贸digo del proyecto en el nuevo server, para usar el mysql local y, si ya ten铆amos alguna copia de la bbdd en local, verificamos funcionamiento

PRODUCCION – copia de la bbdd

// Paramos apache
6- /etc/init.d/httpd stop

// Hacemos backup de la base de datos
7- mysqldump -u root -p dbname > dbname.sql
8- gzip dbname.sql

// Copiamos la base de datos al nuevo server
9- sftp [email protected]

NOTA: Los pasos 7,8 y 9, se podr铆an querer meter en un cron, para ejecutarse autom谩ticamente antes de iniciar el proceso de migraci贸n, si la base de datos fuera muy grande, ya que en este caso el proceso de dump, gzip y copia por sftp podr铆a durar bastante.

NUEVO SERVER – restaurar la bbdd

// Si no existe, creamos la bbdd
10- mysql -u root -p
create database dbname; exit;

// Descomprimimos y restauramos la bbdd
11- gunzip dbname.zip
12- mysql -u root -p -D dbname < dbname.sql

// Reiniciamos mysql y apache y testeamos el nuevo entorno
13- /etc/init.d/mysqld restart
14- /etc/init.d/httpd restart

PRODUCCION – PR pasa a usar la bbdd del nuevo server

//Paramos mysqld
15- /etc/init.d/mysqld stop
16- chkconfig mysqld off

17- Modificamos el c贸digo del proyecto para usar la base de datos del nuevo server

//Iniciamos httpd y volvemos a estar UP
18- /etc/init.d/httpd start

19- Testeamos que funcione todo correctamente y que los datos se est茅n almacenando en la nueva bbdd

DNS

20- Modificamos las DNS para que se empiece a replicar la IP del nuevo servidor

Una vez modificadas las DNS, bastar谩 con esperar 48-72h a que se replique por completo la IP del nuevo servidor (en realidad a los pocos minutos ya deber铆a empezar a verse la replicaci贸n en los servidores DNS principales). Pasadas 72h, ya podremos detener el Apache del antiguo servidor, y eliminarlo definitivamente tras verificar el correcto funcionamineto del nuevo entorno.

Flickr! Foto por Serge Melki

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada.