WordPress Logo

Pasar el Blog WordPress a Docker y AWS

Informática

Siento no escribir mucho. Pero la verdad es que no se me ocurre de qué escribir. Hoy voy a hablar de lo que realmente controlo. «Informatica» y como he migrado mi blog WordPress a AWS

Que es WordPress la aplicación que permite este blog este arriba

Esta noticia se está escribiendo no como parte de la migración de mi web.

Así hablo de cómo ha cambiado la informática con un ejemplo. Estoy migrando muy web de un clásico proveedor de servicios web a AWS – Amazon Web Service. Esto suena a muy complicado pero realmente es ir de dificil a fácil.

El blog esta hecho en WordPress.

Para los profanos realmente es una aplicación hecha en «PhP» lenguaje, donde no «codificas». Usas temas y plugins para añadir estructura y el propio WordPress te permite crear páginas y entradas. Con un conocimiento muy básico de informática cualquiera puede abrir un blog WordPress configurar los plugins y el tema que le interese y empezar a escribir.

Había tres vías en el pasado para empezar:

  1. Ir a wordpress.com y crear tu blog usando la funcionalidad de la propia web. 
  2. Ir a cualquier proveedor de servicios web como GoDaddy y crear tu WordPress.
  3. Montarlo en tu ordenador para empezar a cacharrear y luego migrar a WordPress o a tu proveedor de páginas web. En plan probando con «gaseosa».

Como yo soy un freak de esto yo use la via 3. Para ello había que instalar el PhP, descargarte la versión de WordPress y una base de datos relacional (MySQL o MariaDB) y hacer de un verdadero administrador web para ejecutar todo «bien». Todo esto tenía un inconveniente: Que instalas muchas cosas en tu PC y que seguramente se ejecutan en segundo plano hasta que las desinstalas. Eso ensucia tu PC y lo hace lento.

Docker el siguiente paso

Para realizar la migración quería move todo lo que tenía en la web en local. Principalmente para saber si era capaz de migrarlo todo.

Para hacer eso ha llegado algo increíble esto se llama «Docker». Es un gestor de containers o contenedores. Tu puedes ejecutar cualquier software y cuando no lo quieres apagas el «contenedor» y ya está. Así no tengo que instalar ni PhP, ni la base de datos ni el blog en mi ordenador, ni nada.

Es decir docker me deja «usarlo» hasta que yo decida que no lo necesito algo.

He creado un pequeño docker con docker compose que te permite crear todo en un solo documento. Esto me crea:

  • una base de datos MySQL, «exponemos» el puerto 3310 para poder acceder a ella de forma pública.
  • un WordPress completamente operativo. exponen el puerto 8100 y el directorio ./html, para poder manipularlo.
version: '3.7'

services:
  db:
    container_name: mysql
    image: mysql/mysql-server:latest
    ports:
      - 3310:3306
    command: mysqld --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: xxxxxxx
      MYSQL_DATABASE: xxxxxxx
      MYSQL_USER: xxxxxx
      MYSQL_PASSWORD: xxxxxx
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - 8100:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: xxxxxxx
      WORDPRESS_DB_NAME: xxxxxxx
      WORDPRESS_DB_PASSWORD: xxxxxx
    working_dir: /var/www/html
    volumes:
      - ./html:/var/www/html

Después de arrancamos estos contenedores. Pones http://localhost:8100, ves el WordPress y con http://localhost:8100/wp-admin, puedes entrar para administrar. En 3 min

Como podéis ver es super fácil crear el documento se lee super bien. Y lo mejor de todo primero es super rápido en 2 minutos se crea todo y se arranca y en segundos lo paras.

Tareas en Docker para migrar mi blog

He hecho estas tareas:

  1. Primero conseguir una copia de seguridad de mi base de datos de mi antiguo proveedor.
  2. Usando FileZilla, conseguir una copia de seguridad de todo lo que hay en «html» directorio.
  3. Copio toda la información de la base de datos en MySQL Contenedor.
    1. Tienes que crear el usuario y darle los privilegios necesarios
    2. Uso el Script/copia de seguridad, en mi caso fallaban creando algunos indices pero lo resolví cambiando el documento, creando cada índice que daba error por separado.
  4. Guardo todo lo bajado ./html, que para eso lo he dejado expuesto.
  5. Recargo el WordPress contenedor.
    1. Encuentro problemas porque al intentar acceder la wp-admin me lleva a la web original. hay que cambiar en la base de datos estas línea:
update wp_options wo
set wo.option_value = 'http://localhost:81006/'
where wo.option_name = 'siteurl'
;

Con esto tengo todo funcionando en mi PC, ya estoy preparado para pasar todo a amazon web services AWS.

Tenemos Docker ok y vamos con AWS

La siguiente parte es pasar la web a AWS. AWS tiene cientos de servicios. Pero he encontrado el mejor servicio para mi web. «Un pequeño WordPress sin mucha actividad». El servicio AWS Lightsail. Que crea servicios adhoc en segundos por una pequeña cantidad mensual.

Si usar docker en local fue facil, con algunos problemillas pero en 2 tardes los había resuelto. Lightsail fue montar un servicio wordpress en 3 minutos.

En otro post cuento todas las cosas que hay que hacer.

Migrar Dominio

Lo siguiente es usar AWS Route53 para pedir a mi antiguo proveedor para migrar mi domino.

Rellenas un formulario en Route53 te aseguras que tu correo en tu antiguo proveedor esté bien y en mi caso que tengo un dominio es. Recibí un correo de red española «red.es» para autorizar dicha migración de dominio y en menos de un día migrado

De esto hablare en otro blog me ha costado un poco pero he aprendido un monton sobre configurar dominos y como propagarlos.

Y con todo esto he conseguido que mi blog este en Amazon Web Service pagando menos que en GoDaddy y además la velocidad de respuesta es infinitamente superior la he bajado de 20 segundos de carga a poco menos de 1 segundo. Biennn!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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