Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿Alguna vez te has preguntado cómo puedes usar el Control de versiones con
WordPress? Si prefieres trabajar en tus proyectos de WordPress localmente, pero debes
sincronizarlos de forma remota, este tutorial es para ti. Probablemente haya intentado
sincronizar entre las dos configuraciones cargando manualmente los archivos
modificados y utilizando PHPmyAdmin para exportar e importar su base de datos una vez
cambiada, y (muy probablemente) se rompió algo en el proceso. En este tutorial, vamos
a automatizar el proceso de sincronización; para que pueda concentrarse en lo que se
supone que debe hacer en lugar de luchar con migraciones interminables.
El problema
Por lo general, comenzamos el desarrollo de WordPress en nuestras máquinas locales.
Siempre es más rápido y más fácil, especialmente cuando tienes una conexión a internet
lenta. Pero hay ocasiones en las que necesitas trabajar de forma remota. Es posible que
desee hacer un pequeño cambio, corregir algunos rellenos o simplemente publicar una
nueva publicación. Las modificaciones no se guardan en la instalación de la máquina
local de WordPress y ahí es cuando comienza el desastre..
El desorden se inicia porque es posible que necesite lanzar una nueva versión y, como
trabaja de manera local, los cambios que realizó de manera remota deben ponerse fuera
de línea. Es un verdadero dolor. Debe averiguar qué archivos ha cambiado y
descargarlos / FTP. A veces, los cambios ocurren en la base de datos, por lo que
necesita una herramienta especial como phpmyAdmin para llevar los cambios.
En el proceso, puede romper algo u olvidar una modificación. Ahí es cuando todo se
vuelve desordenado. En este caso, necesita dos cosas: control de versión y
sincronización. En este tutorial, describiré la solución que estoy siguiendo para organizar
mi desarrollo y sincronizar entre mi máquina local y mi servidor remoto..
Elija Mercurial si está en una máquina con Windows. Cuenta con Tortoise, una interfaz
fácil de usar, para administrar tus repositorios. La herramienta de control de versión debe
instalarse en sus máquinas locales y remotas. Dicho esto, necesitará un servidor
dedicado o un VPS para poder instalar la aplicación de terceros..
Tenga en cuenta que sólo copié la parte que importa. En mi servidor remoto, esta parte
debe diferir ligeramente
El truco es escribir algún código que detecte dónde se encuentra WordPress. La variable
a utilizar es la variable PHP. _SERVER ["HTTP_HOST"]. El código evalúa la variable y
asigna la configuración de la base de datos..
En el ejemplo anterior, solo tengo dos parámetros que cambiaron: Nombre de la base de
datos y contraseña. Usted puede tener más que eso. Por ejemplo, si está alojando mySql
en un servidor externo, deberá cambiar el nombre de host para la configuración de su
servidor remoto. También es mejor que limites el acceso del blog de WordPress al nivel
de usuario con capacidades limitadas en lugar del nivel de administrador..
Compruebe que su versión local de WordPress funciona. Si lo hizo, entonces estás medio
hecho!
hg servir
Ahora debería poder acceder a su repositorio desde su navegador. Escriba la URL que
se muestra en su línea de comandos. Por lo general, es localhost: 8000. El repositorio
también está disponible en línea. Puede acceder a él desde cualquier computadora
conectada a Internet usando su dirección: 8000.
Pero no recomiendo este método porque no es seguro. Hay una manera fácil y segura de
hacerlo. Es un repositorio central alojado por un servicio de terceros. Estoy usando
BitBucket. Cuenta con un servicio bueno y confiable y también ofrece seguimiento de
errores y un wiki..
Se te pedirá que vuelvas a instalar tu blog de WordPress, ya que tu base de datos está
vacía. Después de la instalación, su blog de WordPress está listo. Puede realizar
cambios en la versión remota o local y sincronizarlos con Mercurial.
Pero todavía hay un problema importante: la base de datos no se sincroniza con los
archivos. Esto es importante porque hay cosas como publicaciones de blog, comentarios,
tablas personalizadas de complementos. No será lo mismo en la versión local y remota..
WordPress tiene una característica de importación / exportación. Pero no es útil, ya que
no hace una sincronización real. Lo que necesita es ir a su phpmyadmin, exportar todas
sus tablas de WordPress en un lado (remoto o local) y luego ir al otro lado phpmyadmin y
reemplazar las tablas.
Después de hacer esto, sus bases de datos de WordPress serán las mismas. Tendrá que
cambiar, sin embargo, la fila site_url en la tabla wp_options. Este proceso se vuelve
doloroso a medida que la base de datos se vuelve más pesada..
Lo que necesitamos es un script que sincronice las bases de datos locales y remotas sin
romper nada. La idea que se me ocurrió es incluir la base de datos en el control de
revisión. El contenido de la base de datos se exportará a un archivo que el control de
revisión rastreará. Cada vez que hacemos cambios, el contenido de la base de datos
será reemplazado por este archivo, lo que hará que nuestra base de datos esté
actualizada..
Ya que hay un par de filas que difieren de un host a otro (la url del sitio y la url de la
página de inicio), necesitamos otro script de mysql que actualice estos con los valores
correctos.
Otra cosa importante son los conflictos. Si está trabajando y realizando cambios
(confirmaciones) tanto en la versión remota como en la local, esto creará un conflicto. Un
escenario típico es cuando está trabajando y comprometiéndose con su versión local, y
alguien (en línea) está agregando nuevo contenido a su blog. No puedo ayudar en esta
situación, necesita aprender sobre la fusión y el trabajo en equipo de Mercurial (o su
sistema de control de revisiones).
Este paso es un poco sensible, así que asegúrese de seguir los pasos con cuidado.
Primero, voy a explicar cómo funciona la solución final. Vas a tener dos guiones: empujar
y tirar. Dependiendo de su sistema operativo, será push.sh y pull.sh (Linux) o push.bat o
pull.bat (Windows). Estoy usando Windows localmente y Linux (Ubuntu) de forma remota,
por lo que este tutorial cubrirá ambos sistemas operativos.
El primer script empujará los cambios al servidor de Bitbucket. Cuando realice algunos
cambios en la base de datos, use el script de inserción para cargar los cambios en su
repositorio de BitBucket. Push volcará la base de datos actual en un archivo
(/db/db_sync.sql) que el sistema de control de versiones rastrea. El archivo se enviará
junto con los otros archivos y se cargará a BitBucket.
El segundo script extraerá los cambios del servidor de Bitbucket. El script de extracción
también leerá el archivo (/db/db_sync.sql) y reemplazará la base de datos. Esto
actualizará la base de datos con la versión con la que empujó. Dado que tienen
diferentes nombres de host, el script de extracción modificará los campos necesarios, a
saber, la URL del sitio y la URL de la página de inicio..
Empujando a BitBucket
En el servidor remoto y local, cree un nuevo directorio llamado "db". El archivo de base
de datos exportado se guardará allí. En su servidor local (supongo que está utilizando
Windows) cree un nuevo archivo llamado push.bat. Realmente no importa dónde coloque
el archivo (solo asegúrese de estar usando las rutas correctas). Pongo el archivo en el
directorio raíz de mi repositorio de WordPress.
En el lado del servidor (Linux / Ubuntu), las cosas no son muy diferentes. La extensión
del archivo cambia de .bat a .sh, y posiblemente a su nombre de usuario, contraseña y
nombre de la base de datos del servidor mySql. El contenido del archivo es exactamente
el mismo.
Tirando de BitBucket
Tirar es un poco más difícil. Requiere importar el archivo SQL y también cambiar algunos
campos críticos que difieren de un entorno a otro.
En su carpeta db, agregue un archivo llamado "db.sql". Este archivo tiene sentencias de
SQL que harán los cambios necesarios para coincidir con la configuración del host.
Puede agregar más declaraciones si necesita.
El proceso
Ahora debería tener 2 archivos ejecutables en cada entorno (extracción y inserción).
También debe tener un script sql (db.sql) que no debe agregarse al control de versiones.
Ahora podemos probar nuestro pequeño sistema.