Puesta en producción web higiene postural (Azure, AWS)
Con referencia a la puesta en producción de la web de higiene postural en la plataforma Azure, hemos realizado los mismos pasos que hicimos en el punto 9. Accesibilidad a servicios externos a la hora de levantar nuestros servicios, pero, con una pequeña peculiaridad. Esta peculiaridad se trata de que comprimimos nuestros volúmenes de Docker con la herramienta tar, con la finalidad de transferirlos posteriormente a nuestra máquina Azure, descomprimirlos y levantar nuevamente los servicios solicitados con la información que ya teníamos antes en dichos volúmenes, es decir, sin perder ningún tipo de información y configuración que efectuamos en su día.
Esto, lo llevaremos a cabo a partir de la herramienta SCP (Secure Copy Protocol), que como ya dice su nombre, se trata de una herramienta para copiar archivos de manera segura a otros equipos. Aclarado esto, dejémonos de rodeos y veamos como se hace.
Transferencia de los volúmenes Docker a máquina Azure
1) En primer lugar, tenemos que tener claro que los volúmenes de Docker se guardan por defecto en el directorio /var/lib/docker/volumes y que no podremos acceder a él si no somos root (súperadministrador). Por dicha razón, deberemos iniciar sesión como root e intentar seguir todos los pasos que veamos sin errores, dado que, con un comando mal ejecutado, podríamos afectar nuestro sistema.
sudo su
2) En segundo lugar, cuando hayamos iniciado como root, procederemos a dirigirnos al directorio donde Docker guarda por defecto los volúmenes que hemos creado en nuestro fichero docker-compose.yml. Para ello, ejecutaremos el siguiente comando:
cd /var/lib/docker/volumes
3) Una vez nos encontremos en el directorio /var/lib/docker/volumes, con el comando ls podremos verificar cuantos volúmenes tenemos en total. En nuestro caso, tendremos un total de 9, los cuales se nombrarán con el nombre del directorio donde tengamos nuestro docker-compose.yml guardado más el nombre que le pusimos en la configuración del docker-compose.yml (normalmente aparecerán con el nombre de color azul):
ls
4) Después de comprobar la existencia de nuestros volúmenes, crearemos un directorio donde guardaremos todas las compresiones que realizaremos a nuestros volúmenes existentes. Para crear dicho directorio ejecutaremos el siguiente comando:
1. mkdir backup_volumenes
2. ls
5) Posteriormente, accederemos al directorio que hemos creado y comenzaremos con las compresiones de cada uno de nuestros volúmenes. Para ello, ejecutaremos el siguiente comando que veremos a continuación con cada uno de los nombres de nuestros volúmenes:
1. cd backup_volumenes
2. tar cvf <nombre que le queramos dar a nuestra compresión> /var/lib/docker/volumes/<nombre del volumen a comprimir>
6) Ulteriormente, cuando finalicemos de hacer todas las compresiones de nuestros volúmenes, procederemos a utilizar la herramienta SCP para hacer la transferencia del directorio que contiene todas estas compresiones. Dicho esto, deberemos retroceder un directorio atrás para apuntar correctamente al directorio que queremos transferir y, ejecutar un comando ping hacia la máquina a la que queremos hacerle dicha transferencia para verificar si tenemos comunicación con ella, si no, esta operación no funcionará.
1. cd ..
2. ping <dirección IP de destino>
En caso de que la comunicación sea exitosa, podremos proceder a hacer la transferencia de la siguiente manera:
¡NOTA! ---> Deberemos usar la misma clave privada que utilizamos para acceder a nuestra máquina Azure.
Transferencia de ficheros
3. scp -i <clave privada máquina Azure> <nombre fichero> <nombre de usuario destino>@<dirección IP del destino>:<ruta de destino>
Transferencia de directorios
3. scp -i <clave privada máquina Azure> -r <nombre directorio> <nombre de usuario destino>@<dirección IP del destino>:<ruta de destino>
Nuestro caso
3. scp -i ieti-cloud-grupo2_key.pem -r backup_volumenes [email protected]:/home/ieticloudgrupo2
7) Ya casi acabando último, cuando tengamos todos nuestros volúmenes comprimidos en la máquina deseada, descomprimiremos cada uno de nuestros volúmenes en la ruta /var/lib/docker/volumes de la siguiente forma:
1. cd backup_volumenes
2. tar xvf <nombre de unos de nuestros volúmenes comprimidos> -C /var/lib/docker/volumes
8) Por último, teniendo todos nuestros volúmenes descomprimidos en la ruta /var/lib/docker/volumes, deberemos dirigirnos a la ruta /home/<nombre de nuestro usuario>, crear un directorio con el mismo nombre que teníamos en nuestra máquina anterior (directorio donde se alojaba nuestro docker-compose.yml y Dockerfile) y arrancar los servicios con nuestro fichero docker-compose.yml y Dockerfile exactamente igual como hicimos en el punto 9. Accesibilidad a servicios externos:
1. cd /home/<nombre de nuestro usuario>
2. mkdir <nombre de nuestro directorio en la anterior máquina>
3. docker-compose up -d
Solución del problema de acceso al WordPress (wp_options)
Una vez hayamos realizado la transferencia de nuestros volúmenes Docker con la información y configuración de nuestros servicios y lo hayamos puesto en marcha, es posible que tengamos un problema a la hora de iniciar nuestro WordPress nuevamente, ya que, la base de datos MySQL que está enlazada con él, tiene una dirección IP y puerto diferente al que tenemos ahora en nuestra máquina Azure. Por dicha razón, deberemos acceder a nuestro contenedor MySQL y cambiar un pequeño detalle. Veamos como se hace:
1) En primer lugar, ejecutaremos el comando docker ps -a para visualizar cada uno de nuestros contenedores en el sistema:
sudo docker ps -a
2) Posteriormente, nos fijaremos cuál de ellos es nuestro contenedor MySQL y accederemos a el de la siguiente forma:
docker exec -it <ID de nuestro contenedor || nombre de nuestro contenedor> /bin/bash
3) Una vez nos encontremos dentro del contenedor MySQL, accederemos a MySQL con nuestro usuario root de la siguiente forma:
1. mysql - u root -p
2. Enter password: <introducir la contraseña de nuestro usuario root MySQL>
4) Ulteriormente, cuando ya hayamos accedido a MySQL con nuestro usuario root, procederemos a actualizar la tabla wp_options de la siguiente manera para que tenga coherencia con la dirección IP y puerto de nuestra máquina Azure:
¡ATENCIÓN! ---> Utilizad vuestra respectiva base de datos en la línea marcada.
1. use ieti_wordpress;
2. UPDATE wp_options SET option_value = "http://(dirección IP de nuestro Azure):(puerto)" WHERE option_name LIKE 'siteurl' OR option_name LIKE 'home';
5) Por último, saldremos del contenedor MySQL con la combinación de teclas Control + D y detendremos y arrancaremos nuevamente nuestros servicios para que se apliquen todos los cambios:
1. sudo docker-compose down
2. sudo docker-compose up -d