Está en la página 1de 9

Cómo sincronizar un blog de WordPress local

y remoto mediante el control de versiones


Código Share

¿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..

Paso 1 Configuración de la Fundación


Explicando el plan
Primero, déjame explicarte lo que vamos a hacer. Nuestro objetivo es sincronizar
fácilmente entre la versión remota y local. Trabajarás en la versión que desees y luego
las harás idénticas. Para hacerlo, primero debemos tener en cuenta las diferencias entre
la configuración remota y la local..

WordPress almacena información sobre su blog en archivos estáticos y en su base de


datos. Parte de esta información es relativa a su alojamiento actual. Es por eso que
cuando carga todo su directorio de WordPress y reemplaza la versión remota, no
funcionará.

La información se divide, desafortunadamente, en dos partes:

Archivos estáticos: WordPress coloca la información de su servidor de base de datos


en el archivo wp-config.php.
Base de datos: WordPress coloca la URL del sitio y la página de inicio en la tabla de
opciones de wp.

Para wp-config.php, implementaremos un proceso que detectará si estamos en el


servidor local o remoto. De esa manera, el mismo archivo funcionará en ambos entornos.
Para la base de datos, lo integraremos con el sistema de control de versiones y lo
actualizaremos para que coincida con la configuración del host local o remoto..
Integración del control de versiones
Yo uso Mercurial para el control de versiones. Git es más popular en el campo del
desarrollo web, pero en nuestro caso son casi similares: solo necesitas una herramienta
de control de versiones..

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..

Para inicializar un repositorio en Mercurial, escriba lo siguiente en su consola

cd / mydev_directory hg init hg add hg commit

En la primera línea, cambiamos nuestro directorio de trabajo a la carpeta en la que


queremos habilitar el control de versiones. Este será su directorio de WordPress (donde
instalará WordPress). La siguiente línea inicializa el repositorio. La tercera línea le dice a
mercurial que controle la versión de todos los archivos en el directorio. Esto incluirá
subcarpetas también. La última línea crea un nuevo conjunto de cambios en el directorio;
su editor de texto se abrirá y se le pedirá que escriba una descripción de este
compromiso.

Este tutorial no cubre cómo usar Mercurial. Si no conoces el control de versiones,


deberías aprenderlo. Esa es una herramienta importante para agregar a su conjunto de
habilidades. Aquí hay algunos tutoriales que sugiero:

Hginit: Definitivamente el mejor tutorial de Mercurial, todavía.


Mercurial en Ubuntu: Este tutorial muestra cómo configurar Mercurial en Ubuntu. Útil si
ejecuta Ubuntu en su VPS o servidor dedicado.

Paso 2 Configuración de su blog de WordPress local


Haremos una nueva instalación de WordPress en nuestra máquina local. Descargue la
última versión de WordPress, extráigala dentro de un directorio vacío de su elección en
su servidor web e instálela desde su navegador o cambiando el archivo wp-config.php.

Ahora vamos a activar el control de versiones en nuestro directorio de WordPress.

cd / testpress Hg init Hg agregar Hg commit

Estos comandos inicializan el repositorio y crean el primer conjunto de cambios. Ahora,


simplemente podemos clonar este repositorio en nuestro servidor, instalar WordPress y
poder sincronizar entre la distribución local y remota..

Sin embargo, hay diferencias como dijimos anteriormente. Antes de implementar el


proceso de sincronización, necesitamos implementar un script que compruebe dónde se
está ejecutando la instalación de WordPress y que cargue la configuración correcta.
La configuración que se debe cambiar es la información de la base de datos. Se
encuentran en el archivo wp-config.php y WordPress los carga desde este archivo. Mi
versión local se ve así

// ** Configuración de MySQL: puede obtener esta información de su

Tenga en cuenta que sólo copié la parte que importa. En mi servidor remoto, esta parte
debe diferir ligeramente

// ** Configuración de MySQL: puede obtener esta información de su

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..

/ * * Variables unificadas * / $ nombre_usuario = 'raíz'; $ hostna

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!

Paso 3 Sincronizando los repositorios mercuriales


Configuración del repositorio de servidor remoto
Puede comenzar ahora a trabajar en su instalación local de WordPress. Cada vez que
realice una modificación importante, haga un compromiso con Mercurial para rastrear los
cambios. En el servidor remoto, suponiendo que tiene instalado Apache, cree una nueva
carpeta donde cargará su repositorio de WordPress.

cd / apache mkdir mywp_repo cd mywp_repo

Tenga en cuenta que estos comandos deben ejecutarse en su servidor remoto.


Necesitará acceso SSH y una línea de comandos también. Estoy usando Putty en
Windows para conectarme a mi servidor.
Una vez que se inicializa nuestro repositorio, podemos empujar (cargar) y extraer
(descargar) los conjuntos de cambios de otros repositorios para mantenerlo actualizado.
Para que ocurra este proceso, necesitará el servidor local o el servidor remoto para
publicar el repositorio, de modo que pueda extraerlo / empujarlo..

Al servidor web de Mercurial le faltan algunas características importantes como el control


de acceso, la autenticación y SSL. Por lo tanto, no es seguro utilizarlo en su servidor
remoto. Preferiblemente, deberá ejecutar el servidor web de Mercurial localmente y
extraer los cambios del servidor local al servidor remoto..
Para ejecutar el servidor Mercurial, escriba lo siguiente en su máquina local:

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.

Hg pull 192.xxx.xxx.xxx:8000 Hg update

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..

Regístrese y cree una cuenta en BitBucket. Ofrecen depósitos ilimitados privados y


públicos con hasta 5 usuarios gratis. Cree un nuevo repositorio en BitBucket y debería ir
a esta página.
BitBucket tiene soporte HTTPS y SSH. Si su repositorio es privado, como en mi caso,
tendrá que autenticarse con su nombre de usuario y contraseña para poder empujar y
extraer del repositorio.
Después de crear su nuevo repositorio en BitBucket, ejecute los siguientes comandos en
su máquina local

hg push https: //username@bitbucket.org/username/repository

Se le pedirá que proporcione su contraseña y el repositorio se cargará a BitBucket.


Después de subir a BitBucket, clone el repositorio a su servidor remoto.

hg clone https: //username@bitbucket.org/username/repository hg up

La clonación descarga los archivos a un nuevo directorio (con el nombre igual al


directorio del repositorio); puede cambiar el nombre de este directorio. Esto hará
que el primer paso en esta sección (donde creamos el directorio de configuración de
WordPress) sea bastante obsoleto..

Piense en BitBucket como un intermediario entre su computadora y su host remoto. Es


posible tener su propio servidor Mercurial seguro en su servidor remoto, pero esto está
fuera del alcance de este tutorial. La ventaja es ser independiente del intermediario. Esto
permite empujar cambios directamente a su servidor web..

Entonces, ¿cómo es esto mejor que FTP?

1. No tienes que averiguar qué archivos han cambiado.


2. Es más conveniente y lleva menos tiempo..
3. Mucho más rápido ya que Mercurial solo empuja los archivos que cambiaron.

Instalación del blog del servidor remoto


¿Ya cansado? No te preocupes, ya casi llegamos. Después de extraer el repositorio de
su máquina local o de BitBucket, deberá ejecutar la instalación de WordPress
nuevamente; esta vez en el sitio del servidor remoto. Asegúrese de que la configuración
que coloque en el archivo wp-config.php que hicimos anteriormente sea correcta, y
cargue su sitio remoto de WordPress.

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..

Paso 4 Sincronizando las bases de datos


Como vimos anteriormente, la base de datos es un poco problemática. No se sincroniza
con los archivos, es más difícil de alcanzar y requiere actualizar dos campos cada vez
que se sincroniza. No es divertido hacerlo una y otra vez. La automatización es la
solución; En realidad, ese es nuestro trabajo..

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).

Para evitar conflictos, asegúrese de extraer el repositorio de BitBucket antes de


realizar cambios; y también para confirmar y enviar los cambios a BitBucket después
de realizarlos. Esto asegurará que BitBucket siempre tenga la última versión, y
también está trabajando en la última versión.

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.

mysqldump -u nombre de usuario -ppassword nombre_base de datos> db

Puede eliminar el comando "hg add db / db_sync.sql" después de ejecutar el script


por primera vez. Esto solo es requerido una vez.

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 máquina local, cree un archivo llamado pull.bat

hg pull https: //username@bitbucket.org/username/repository hg upd

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.

USE testpress; ACTUALIZAR wp_options SET option_value = "http: //

Aparte de la extensión de archivo, la configuración de mySql y el nombre de la base de


datos nada cambian realmente en el servidor remoto. Esto es porque estamos
ejecutando comandos de programas. Los comandos y su uso es independiente de la
plataforma. Asegúrese de ingresar los valores correctos para la URL del sitio web en el
archivo "db.sql". Deben coincidir con la URL de su blog, si no está seguro de que también
puede verificar los valores en la tabla wp_options.
Para ejecutar los scripts, en Windows haga doble clic en? .Bat? y en su terminal de
servidor remoto ejecute el comando? sh script_name.sh?.

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.

1. En su máquina local, agregue una nueva entrada de blog


2. Empuje los cambios desde su máquina local
3. Tire de los cambios en la máquina remota
4. Compruebe si el blog se está ejecutando correctamente y si se agregó la publicación
del blog.

También podría gustarte