433 - Migrando webs WordPress a Docker
Te cuento como he migrado dos web @WordPress llevándolas a @Docker para mejorar su mantenimento y desempeño completando con Redis y Ofelia
Este fin de semana ha tocado la gran migración. Y no porque estemos camino del invierno y toque cambiar de continente, si no porque ya tocaba.Lo cierto, es que llevaba ya algún tiempo con esta tarea pendiente de realizar, y al final ha llegado el momento. Quizá por los vientos que están soplando, y es momento de replegar velas y empezar a ser algo mas austeros. Sea como fuere, la cuestión como te decía, es que ya era necesaria esta migración, por varias razones que te iré desvelando a lo largo del podcast. Así que este episodio va de migrando webs a Docker.
Migrando webs WordPress a Docker
Una del abuelo cebolleta
Si bien, he tenido atareao.es en distintas gestores de contenido, como Joomla, Drupal, e incluso estuvo en los albores de Pelikan, lo cierto, es que me considero hijo de WordPress.
Este proyecto atareao.es ha ido evolucionando con el paso del tiempo, pasando por los distintos gestores de contenido que te he ido mencionando, y lo cierto, es que me ha servido para probar unos y otros. Para finalmente decantarme por el que menos trabajo me daba y mas posibilidades me ofrecía.
No solo esto, sino que me ha permitido ir adaptándolo conforme a mis necesidades. Creando mi propio tema, y los plugins que me hacían falta.
Así todo nació con un único sitio web, y actualmente estoy gestionando de una forma u otra al menos cuatro de forma continua. Luego, hay algunos mas que vienen y van.
La situación
De estos cuatro, hay dos que están en su propio hosting, y de los que yo solo me encargo de la parte del tema y de los complementos, pero tenía dos que estaban alojados en uno de los VPS. Actualmente, tengo unos cinco VPS, de los cuales uno lo utilizo únicamente para los tutoriales, en otro tengo hospedado todos mis servicios de uso personal, y un tercero donde estaban estas dos sitios web.
Son precisamente de estos dos de los que te quería hablar, los que he migrado durante este fin de semana. Estos dos sitios web estaban instalados de forma tradicional. Es decir, tenían un servidor web, Apache o Nginx, no recuerdo ciertamente. Un servidor de bases de datos MariaDB o MySQL, tampoco recuerdo, y por supuesto su correspondiente PHP. Pero todo instalado en la propia máquina.
¿Porque migrar?
Son varias las razones que me han llevado a migrar, La primera, y un poco, por lo que he comenzado este episodio del podcast, es precisamente por replegar velas. Sin embargo, y como adelantaba no es la única de las razones.
La siguiente, es por supuesto el mantenimiento. Llevar todos estos servicios a Docker, es por comodidad. Me resulta, muchísimo mas cómodo, mantener Apache o PHP o incluso WordPress en contenedores, que hacerlo directamente sobre la propia máquina.
Por no hablar de los dichosos certificados. Hace algunos meses, estuve preparando un vídeo en el que generaba los certificados con el certbot y luego utilizando o bien Traefik, o bien Caddy. Finalmente desistí de hacerlo a mano, me aburrí soberanamente. Con los proxy inverso como Traefik o Caddy esto te olvidas.
Pero no solo esto, además está la parte de migrar un servicio de una máquina a otra o incluso publicar una actualización del software. Tan sencillo como levantar un contenedor en un sitio y tumbarlo en otro.
Todo esto me llevó a decidirme a realizar la migración de webs a Docker
¿Pero porque no lo había hecho todavía?
Llegados a este punto y con las ventajas que te acabo de contar, seguro que te estás preguntando, pero ¿porque no lo había hecho todavía?. Hay dos razones fundamentales,
- La primera de las razones es la pereza. Siempre encontraba alguna excusa para no hacerlo, para posponerlo, para retrasarlo. Además estaba el tema de mover la base de datos y los datos. Buscar un plugin de WordPres que se encargara de hacer la migración. etc.
- Y si esto no era poco, estaba la procrastinación. Siembre había alguna razón de peso, para postergar este trabajo. Bueno, realmente, no hacía falta tampoco que fuera una razón de peso, cualquier razón era mas que suficiente, para retrasarlo.
Sobre todo, la parte de la pereza estaba ocasionada hacer la copia de seguridad y restaurarla. Lo cierto, es que hace algún tiempo que estuve buscando diferentes plugin para WordPress para hacer esta operación. Sin embargo, ayer en un momento de lucidez mental, caí en que no necesitaba buscar nada de esto.
Todos los días hago una copia de seguridad de la base de datos, con lo que en realidad no tenía que preocuparme de esto. Simplemente tenía que hacer exactamente lo mismo, una copia de seguridad y una restauración, y posteriormente, hacer un poco de limpieza, porque en ese servidor de MariaDB, estaban las bases de datos de las dos bases de datos, que ahora quería separar en dos contenedores distintos.
Y sin embargo, estaba completamente ofuscado con el tema de buscar un complemento de WordPress para hacer algo que es mucho mas sencillo tirando de terminal, o al menos a mi me lo parece así.
Así que dicho y hecho. No solo esto, sino que hice unas sencillos scripts que dejo en las notas del podcast para hacer copias de seguridad y restaurar directamente desde los contenedores.
Las tontunas
Llegados a este punto y como estaba restaurando todo, me monté yo solo un bonito lío. Al hacer la restauración no me di cuenta que estaba cambiando la contraseña del administrador del MariaDB… Esto me llevó un buen rato darme cuenta que había cambiado la base de datos. No sabía que estaba sucediendo.
Por otro lado, los malditos cachés. Al restaurar las dos páginas tuve varios momentos de frustración hasta que me di cuenta que estaban cacheadas las páginas, los DNS, que estaba cacheado todo. Esto también me despistó mucho.
Lo cierto es que de una vez a otra que hago estas cosas, se me olvidan, tenía que tenerlas apuntadas en un papelito. O bien, como en esta ocasión que he preparado scripts de todo.
backup
para hacer una copia de la base de datosrestore
para restaurar la base de datosmariadb
para acceder al cliente de mariadb y continuar con mis tontunasup
para levantar eldocker-compose
down
para tumbar eldocker-compose
logs
para mostrar los logs de forma continuawpcli
para ejecutar elwp-cli
Para rematar la fiesta, actualicé Traefik a la última versión, y esto fue una auténtica hecatombe. Conseguí que todos los servicios que actualmente tengo levantados y que he comentado en los últimos episodios del podcast dejaran de funcionar… Todo un auténtico fenómeno.
Por supuesto que no solo fueron mis propios servicios, también fue Wallabag, Mattermost, Shaarli, y un largo etcétera.
Para terminar, copias de seguridad
Por supuesto que todavía me quedaba el final de fiesta, la automatización de las copias de seguridad. Inicialmente, para esto pensé primero en un servicio que implementado en Rust para esto, y luego recordé que en el grupo de atareao de Telegram, se comentó la opción de utilizar Ofelia. Si, Ofelia es la secretaria de Mortadelo y Filemón. Se trata de un contenedor que te permite realizar determinadas automatizaciones.
Sin embargo, me lié yo solito, y al final, terminé tocando ligeramente mi servicio y poniéndolo en funcionamiento, directamente en la propia máquina. No me termina de convencer, pero, que le vamos a hacer.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Hola Lorenzo.
Donde se pueden encontrar los scripts para hacer backup de las BBDD?
Gracias.