Entorno de desarrollo para WP exitente

Cómo crearnos un entorno de desarrollo con un WP ya existente y funcionando.

Cuando necesitamos levantar un entorno de desarrollo de un Wordpress existente en un servidor.

Utilizaremos los contenedores de ... Aplicaicon-PHP: https://gitlab.com/Didweb/dockers/tree/master/Aplicacion-PHP

El procedimiento es parecido al del ejemplo anterior "Cómo levantar un entorno", por lo tanto algunos pasos no están tan detallados y surgen dudas repasar ese ejemplo.

Qué diferencia hay con levantar un entorno desde 0?

La diferencia es que el proyecto ya tiene archivos creados y una base de datos modificada.

Por lo tanto la diferencia será que tenemos que traernos los archivos y la base de datos del proyecto a replicar.

Con esto tendremos en nuestra máquina local funcionando un WP con copia del proyecto existente.

Para hacer una réplica de Prestashop es también muy parecido pero con alguna diferencia.

Descripción del Proceso

  • Paso 1. Copiamos los archivos del Docker Aplicacion-PHP en una carpeta en nuestra máquina.

  • Paso 2. Descargamos los archivos del proyecto existente dentro de ... html.

  • Paso 3. Obtenemos la base de datos del proyecto existente (exportamos desde PhpMyAdmin del proyecto existente )

  • Paso 4. Modificamos las urls antiguas por las nuevas.

  • Ya tenemos nuestra réplica en nuestra máquina.

Llegado este punto ya solo falta conectarnos con el repositorio, crear nuestra rama y a Desarrollar!!

Paso 1. Obtener los archivos de docker-compose

Estos están en: https://gitlab.com/Didweb/dockers/tree/master/Aplicacion-PHP

Obtener los del directorio Aplicacion-PHP

Si quereis podeis cambiar el nombre del directorio Aplicacion-PHP por uno más descriptivo del proyecto.

Paso 2. Copiamos los archivos del proyecto existente

Los obtenemos de por ejemplo el servidor o bien un compañero nos proporciona un zip con todos los archivos.

Los copiamos dentro del directorio html

Levantamos el entorno como en el ejemplo de "Cómo levantar un entorno"...

docker-compsoe build

Y luego...

docker-compose up -d

Ya tenemos el entorno levantado. Recordar que en el archivo .env están los datos de conexión a la base de datos y puertos, luego los necesitaremos.

Si nos vamos al navegador http://localhost:8080 podremos ver un Wordpress con problemas de conexión ...

Esto es normala hemos copiado los archivos del proyecto existente y este tenia otros datos de conexión, además nuestra base de datos ha sido creada ahora mismo y no contiene ninguna tabla. El error que da es que no encuentra la base de datos.

Vamos a modificar los datos de conexión de nuestro nuevo Wordpress. Nos vamos a html/wp-config y lo editamos ... Con los datos de .env qeu son los datos de configuración con los que se creó el contendor.

Ahora ya puede encontrar el host...

Aún tenemos un problema pero ya encuentra el servidor, hemos de acordarnos que aún tenemos nuestra base de datos (del contenedor) vacía.

Paso 3. Obtener la base de datos del proyecto existente.

Lo obtenemos mediante el PhpMyAdmin o bien un compañero nos proporciona el archivo xxxx.sql con la base de datos. Por ejemplo dentro del zip de los archivos. Nos saltamos como obtener la base de datos del proyecto existente para centrarnos en el proceso. Pero es fundamental tener el archivo xxxxx.sql.

Ahora vamos a ...

  1. Copiar el archivo xxxx.sql dentro del contenedor de la base de datos.

  2. Copiar la base de datos dentro de MariaDB.

Aunque parezca que la base de datos estará dentro del contendor realmente se mantendrá fuera de él en el volúmen data, por lo tanto aunque se elimine el contenedor la base de datos persistirá...

Copiamos el archivo dentro del contenedor. entramos en el terminal, en la raíz del proyecto. (Donde esta el docker-compose.yml)

1.

Primero hacer un ...

docker ps

Os ayudará a saber el ID del contenedor de MariaDB

docker cp bd_original.sql 7770ea:bd_original.sql

En ele ejemplo el archivo sql se llama bd_original.sql , también se da pro supuesto que lo hemos colocado en ese directorio si no es así colocarlo en ese sitio para que sea más accesible... y 7770ea es el ID del contenedor de la base de datos. En la imagen se ve más claro ...

2.

Ahora copiaremos la base de datos dentro de nuestro contenedor (recordar que la base de datos realmente permanecerá en el directorio data, pero se procesa todo desde el servicio de este contenedor)

Ejecutamos en el mismo punto desde la terminal....

docker exec 7770ea /bin/bash -c 'mysql -umyuser -p123456 name_db < /bd_original.sql'

Esto puede tardar un poco ya que esta copiando la base de datos y dependerá del tamaño.

  • 7770ea = es el ID del contenedor de MariaDB.

  • -umyuser = es el nombre de usuario de la base de datos del contenedor con -u adelante el usuario es myuser por lo tanto -> -umyuser

  • -p123456 = Es el password con -p delante.

  • name_db = Es el nombre de la base de datos del contenedor.

  • bd_original.sql = es el nombre del archivo sql (La base de datos traída del proyecto existente.)

¿Cómo sabemos el usuario y password de nuestro contendor?

En el archivo .env están los datos de conexión con los que se han levantado los contendores...

Ahora ya tenemos la base de datos de nuestro contenedor y salvaguardado en nuestro volúmen data.

Paso 3. Cambiar Urls antiguas

Si accedemos ahora a con el navegador (el puerto esta en .env ) . Seguramente nos redirige a la url del proyecto existente. Esto es porque Wordpress almacena la url principal en la base de datos y nos redirige a esa url almacenada. Esto quiere decir que esta obteniendo los datos de la nueva base de datos, buena señal.

Abriremos el contendor de PHPMyAdmin para cambiar las urls, recordar el puerto y credenciales de la base de datos está en .env bajo el nombre de PORT_PHPMYADMIN ... http://localhost:8011

Buscamos en la tabla wp_options los registros con donde el campo option_name sea ... siteurl y home y le ponemos la url de nuestro contenedor de aplicación... en este caso http://localhost:8080 (Este dato está en .env )

Ahora si vamos a nuestro navegador con la url de nuestro contenedor este caso http://localhost:8080 podremos ver al web. A mi de io un fallo de cache y pude hacerlo entrando como incognito.

Ya tenemos una réplica del proyecto existente en nuestra máquina, ya podemos empezar a trabajar.

Todo este proceso lógicamente se ejecuta solo la primera vez. Si al día siguiente entramos y queremos levantar nuestro entorno simplemente, con la consola nos situamos en el directorio justo donde está el docker-compose.yml y ejecutamos...

docker-compose up -d

Y en cuestion de 5 a 10 segundos estarán todos los contendores levantados, si no recordamos el puerto ... ejecuta ...

docker ps

Verás los contenedores activos junto a sus puertos. Fijate el de la aplicación, verás el de mariadb y phpmyadmin esos ahor ano los necesitas.

Podrás entrar en wp-admin con las credenciales del mismo proyecto existente ya que hemos copiado la base de datos.

Ahora ya solo queda conectarte con el repositorio y enviar tus cambios al repositorio.

Posibles problemas con Wordpress

Como se comentó Wordpress almacena las urls en la base de datos, en este tutorial se han modificado las principales. Pero es muy probable y más si es un proyecto existente.

Algunos plugins y widgths almacenan los datos de forma serializada o bien en otras partes de la base de datos. Así que podría ser que algunos plugins o partes de la web no funcionen correctamente. Para solucionar esto desde wp-admin podemos utilizar plugins para modificar las urls de la base de datos.

Plugins para cambiar urls en Wordpress: