Cuando la mayoría de la gente comienza a hacer el desarrollo de WordPress, su flujo de trabajo implica descargar un archivo de un tema o plugin a través de FTP, editarlo, subirlo a través de FTP, actualizar la página, averiguar que salió mal y luego comenzar todo el proceso de nuevo. Esta estrategia, conocido como "codificación de vaqueros" no sólo es ineficiente, sino peligrosa.
Una vez que hayas dejado atrás tus días de vaquero, será obvio que ningún desarrollo serio de WordPress se puede hacer de esa manera. La alternativa requiere un poco de trabajo conseguir la configuración y acostumbrado a, pero el pago es más que vale la pena.
Desarrollar su sitio de WordPress en un entorno local, uno que está en su computadora personal, es una práctica esencial que acelerará su desarrollo y evitará que cualquiera de los errores que inevitablemente cometa de ser mostrado al mundo. Trabajar localmente le permite experimentar sin temor a hacer que su sitio no esté disponible para sus usuarios.
En este artículo voy a darle una visión general de un flujo de trabajo confiable, eficiente y seguro para desarrollar y mantener su sitio localmente e implementarlo en un servidor en vivo mientras crea copias de seguridad automáticas. Voy a discutir tecnologías específicas que utilizo y recomiendo. No voy a cubrir todas las opciones o hacer un tutorial en profundidad sobre cada una.
Si bien te invito a dejar un comentario sobre por qué prefieres otra herramienta a la que estoy sugiriendo, por favor piensa en este post como más sobre una estrategia general que un conjunto de reglas o recomendaciones duras y rápidas. Una vez que se haya familiarizado con el concepto, puede mejorarlo para adaptarse a sus necesidades.
Before We Begin
Entornos locales vs remotos
Para evitar confusiones para cualquier persona que pueda ser nueva en esto, me gustaría asegurarme de que todo el mundo tiene claro que cuando me refiero a un entorno local o servidor local, me refiero a cualquier servidor web que se ejecuta en un equipo personal y se utiliza para el desarrollo, es decir, no para hacer que el sitio esté realmente disponible para otros en Internet. Por el contrario, los términos "producción", "remoto" y "en vivo" por sí mismos o delante de "servidor", "host" o "entorno" se refieren al servidor web que se utiliza para servir la página a Internet. Este tipo de servidor es generalmente proporcionado por una empresa de alojamiento de algún tipo.
Mis herramientas
Aquí está una lista de las herramientas que utilizo para administrar mi entorno local de WordPress e implementarlo en mi servidor en vivo. Le recomiendo que les pruebe a medida que comience a mejorar su propio flujo de trabajo.
- DesktopServer – Hay una variedad de herramientas para crear sitios locales de WordPress. En mi opinión, la mejor herramienta es Vagrant, pero el más fácil y segundo mejor es DesktopServer. Vagrant es un sistema automatizado para crear y administrar entornos de servidor completos en una máquina virtual. DesktopServer crea un servidor para usted mediante XAMMP, utilizando una interfaz gráfica de usuario sencilla.
- SourceTree – Una herramienta de GUI gratuita, fácil de usar y muy potente para Git.
- Private BitBucket Git Repository – Aunque la mayoría de las veces la única información verdaderamente sensible en una instalación de WordPress está en el archivo wp-config, que no incluyo en mi repositorio Git, mantenlo sitios enteros en repositorios privados, que están libres de Bitbucket. El abastecimiento abierto de todo el sitio podría tener sentido, pero es algo para pensar a fondo antes de hacerlo, y errar en el lado de la precaución es una buena política, especialmente cuando se hace el trabajo del cliente.
- WP Migrate DB Pro: aunque Git puede mantener todos los archivos del sitio sincronizados entre entornos, se requiere una herramienta diferente para mantener sincronizados los flujos de datos MySQL. WP Migrate DB Pro es un excelente plugin que automatiza este proceso.
- Web Hosting With Git – Cada vez más en estos días, incluso el alojamiento compartido ofrece acceso Ssh y preinstalado de Git. Si el host compartido no ofrece estas características, le recomiendo que obtenga uno nuevo, ya que Git y SSH son esenciales para el desarrollo web moderno. Muchos hosts, como WP Engine y Site Ground, ahora ofrecen Git como una característica estándar en sus paquetes de alojamiento de gama baja.
El flujo de trabajo que estoy delineando aquí es para una configuración simple, un servidor por sitio, lo que permite el uso de Git como una herramienta de implementación.
Si utiliza una configuración de servidor más compleja o puede estar en el futuro, poner el sitio bajo control de versiones es el primer paso para usar una herramienta de implementación más adecuada para ese tipo de trabajo, como Beanstalk. Beanstalk hace que insertar un repositorio Git en varios hosts sea muy fácil, así como mejorar la mayoría de los demás aspectos de la implementación. Para un sitio simple puede ser útil, pero realmente no es necesario.
Configuración de sitios locales y remotos con Git
Paso 1: Crear un sitio local
Crear un sitio local de WordPress con DesktopServer toma sólo unos pocos clics, pero antes de comenzar querrá crear algunos blueprints. Un blueprint es una carpeta de WordPress o un archivo zip que DesktopServer usará para crear su sitio. Se almacenan en el directorio blueprints de la carpeta de la aplicación DesktopServer.

Esta característica le permite crear uno o más puntos de partida desde los que trabajar. Incluso puede personalizar el archivo wp-config en el blueprint modificando wp-config-sample.php según sea necesario. Deje la configuración de la base de datos y las sales de seguridad tal cual, y DesktopServer las rellenará cuando configure el sitio. Personalmente, guardo dos planos a la vez. Ambos tienen WordPress en sí mismo en un subdirectorio del directorio raíz, con una carpeta de contenido en el directorio raíz también. Cargo las carpetas de temas y plugins con los temas y plugins que siempre me gusta tener instalados.
Para obtener información sobre cómo hacerlo, consulte mi artículo sobre los ajustes de wp-config. Los resultados finales están fuertemente inspirados en WordPress Skelton de Mark Jaquith.
(Tenga en cuenta que WordPress se agrega como un submódulo git desde el espejo Git de WordPress. La principal diferencia entre los dos blueprints que utilizo es que uno tiene ese submódulo establecido en la rama maestra, y el otro se establece en la rama para la última versión.)
Una vez que haya configurado los blueprints, abra DesktopServer y reinicie el servidor web. Una vez que se haya iniciado, seleccione la opción "Crear un nuevo sitio web de desarrollo".
En la siguiente pantalla le dará al sitio un nombre, que será su dirección con el dominio de nivel superior falso .dev anexado a él. También puede seleccionar el blueprint, establecer la ubicación en la que se guardará el sitio y elegir permitir wordPress multisitio o no.
Una vez que haya introducido su configuración, haga clic en "Crear" para crear su sitio. Cuando DesktopServer haya terminado, le dará un enlace a la página de instalación de WordPress, y a partir de ahí, la experiencia es como usar cualquier otro sitio de WordPress que haya utilizado.
Paso 2: Crear repositorio Git local
El siguiente paso es poner el sitio bajo control de versiones. En el árbol de origen, seleccione "Nuevo/Clonar" en el menú de archivos. En la ventana que aparece seleccione "Nuevo repositorio", seleccione Git para "Tipo de repositorio" y vaya al nivel raíz de su nuevo sitio en el campo "Ruta de destino". Una vez que haga clic en crear, verá su nuevo repositorio en la ventana de marcadores. Adelante, ábrelo.

Antes de hacer que su compromiso de puño, que será todo en el árbol de trabajo, es muy importante decir git primero para ignorar su archivo wp-config. Abordaremos la gestión de los diferentes archivos wp-config para los diferentes servidores en breve. Conseguir que git ignore wp-config es tan simple como hacer clic derecho en él en la lista "Archivos en el árbol de trabajo" y seleccionar "Ignorar". Una vez hecho esto, comete todo lo demás.
1.6 millones de superhéroes de WordPress leen y confían en nuestro blog. Unirse a ellos y obtener publicaciones diarias entregados a su bandeja de entrada – gratis!
Implementación en el sitio en vivo
Paso 1: Empuje a Bitbucket
Es posible enviar su sitio directamente desde su computadora personal a su sitio remoto, pero no me gusta hacer esto. En su lugar, implemento desde BitBucket.Este paso adicional me ahorra tener que configurar claves SSH en el sitio remoto y, lo que es más importante, crea una copia de seguridad automática de todos los archivos de sitio que se almacenan en mi servidor o en mi equipo personal.
También significa que si me muevo a una configuración de hospedaje más compleja que requiere una herramienta de implementación como Beanstalk o un servicio similar, ya tengo el repositorio Git remoto necesario listo para ir. Además, si quiero colaborar con otro desarrollador, todo lo que tengo que hacer es darles acceso al repositorio de BitBucket.

Puede crear repositorios en su cuenta de Bitbucket o GitHub desde dentro de SourceTree. Simplemente vuelva al repositorio que creamos en el paso 2 y seleccione "Agregar remoto" en el menú "Repositorio" en SourceTree.
En la ventana que aparece, haz clic en el icono de planeta tierra junto al campo "URL/ ruta".
En la siguiente ventana emergente seleccione "Nuevo repositorio."
Si aún no lo ha hecho, deberá proporcionar su nombre de usuario y contraseña para su cuenta de BitBucket o GitHub. Una vez que lo haya hecho, SourceTree le permitirá crear y nombrar el nuevo repositorio.
Una vez que se agrega el nuevo control remoto, puede insertar una rama en él haciendo clic con el botón derecho en el nombre de las ramas en la columna de la derecha de SourceTree y seleccionándolo en el submenú "Push To".
Paso 2: Preparar el servidor remoto
En el servidor remoto, tendremos que crear una base de datos, un archivo wp-config y un directorio, con nada más que un repositorio git vacío. Usted querrá crear una nueva base de datos manualmente y luego hacer una copia de su archivo wp-config local, cambiar los detalles de la base de datos y cualquier otra constante que se debe cambiar para su uso en vivo, como WP_DEBUG, y luego cargarlo un nivel por encima del directorio raíz de WordPress con un cliente FTP.
WordPress encontrará automáticamente el archivo wp-config allí, por lo que no hay ninguna configuración adicional necesaria para hacer que esto funcione, y probablemente aumenta la seguridad de su sitio.
Este enfoque tiene la ventaja añadida de mantener la información confidencial del wp-config en el repositorio de git. Esto significa que puede usar un repositorio público y no preocuparse por exponer la información de la base de datos o sales de seguridad durante las extracciones regulares de Git.
Repositorio Git
La creación del repositorio Git vacío es probablemente la única parte de este proceso donde tendrá que trabajar desde la línea de comandos, ya que la mayoría de los paquetes de alojamiento tienen un asistente en su panel de control para crear bases de datos MySQL.
Abra la aplicación de terminal y cree una conexión SSH con el servidor remoto.
Una vez que estés dentro, navega a la raíz web o a cualquier directorio desde el que estarás ejecutando WordPress y clona el repositorio BitBucket allí. Puede obtener la dirección desde la ventana de configuración remota de SourceTree o desde la página de repositorios de la aplicación web BitBucket.
1 2 3 4 5 |
$ ssh -p [email protected] $ cd public_html/wordpress_directory Clon de git $ |
Paso 3: Sincronizar la base de datos
Ahora tendrá un sitio de WordPress en su sitio remoto con todos sus archivos de WordPress, pero una base de datos totalmente diferente. Aquí es donde entra en contacto WP Migrate DB Pro. Asegúrese de tenerlo instalado tanto en el sitio local como en el sitio remoto, y que ha activado la clave de API en ambos sitios.

En el sitio remoto, en la pestaña de configuración de la pantalla de administración de WP Migrate Pro, seleccione la opción "Aceptar solicitudes push permitir que esta base de datos se sobrescriba" y, a continuación, copie el contenido del campo "Información de conexión".
Una vez hecho esto, vaya al mismo lugar en el sitio local y seleccione "Aceptar solicitudes de extracción permiten que esta base de datos se exporte y descargue."
El siguiente paso, todavía en su sitio local, es ir bajo la pestaña "Migrar" para seleccionar push e ingresar la información de conexión para el sitio remoto.
Una vez hecho esto, haga clic en Conectar para establecer el vínculo entre los dos sitios. Una vez establecido, puede insertar la base de datos local en el sitio remoto.
En el futuro, puede invertir este proceso para actualizar la base de datos del entorno local con nuevos elementos agregados al sitio remoto.
Permanecer en sincronía y otras consideraciones
Siempre y cuando utilice DB Migrate Pro para mantener sincronizadas las bases de datos locales y remotas, y no vuelva a las antiguas formas de codificación de vaqueros de hacer cambios en los archivos de WordPress del sitio en vivo, permanecer sincronizado y respaldado será automático.
Como dije al principio, este es un artículo introductorio, una vez que empieces a trabajar de esta manera, nuevas formas de mejorar tu flujo de trabajo deberían hacerte evidente.
El problema de las cargas
El único problema que tiene el flujo de trabajo que he descrito en este artículo es que los archivos multimedia u otros archivos cargados agregados en el sitio en vivo no se sincronizan de nuevo con el sitio local. Las entradas de la base de datos se sincronizarán, pero no los propios archivos reales.
Muchas personas eligen que Git ignore toda su carpeta de cargas y la mantengan sincronizada manualmente a través de FTP, o escriben un script independiente para manejar la carga y descarga automática. Personalmente, dejo que Git se encargue de las cargas y realice las descargas manualmente.
Esta es una razón muy válida para no estar de acuerdo con mi directiva de no conexión directa entre la directiva de repositorios Git local y remoto. Creo que vale la pena las compensaciones para mí, pero no uso toneladas de medios en mis sitios. Tendrás que ser el mejor juez de tus propias necesidades.
WP Migrate DB Pro anunció recientemente un nuevo complemento de archivos multimedia que sincroniza la biblioteca multimedia de WordPress junto con su base de datos. Este nuevo complemento, que no he probado, sólo está disponible con sus opciones de licencia más caras. Sin embargo, puede ser una posible solución para este problema con sitios que tienen muchos archivos multimedia.
Opción: Implementación directa con DesktopServer
DesktopServer tiene una herramienta de implementación integrada. No lo uso porque no es compatible con instalaciones de subdirectorio, que no es un iniciador para mí. Si solo está ejecutando un sitio en su servidor y está en el directorio raíz, esta herramienta puede ser una buena opción para usted.
Más opciones para crear entornos locales de WordPress
Recomiendo DesktopServer o Vagrant para crear entornos locales de WordPress, pero hay un gran grupo de otras grandes opciones por ahí. Para un buen desglose de algunas opciones más, consulte el artículo 10 de Sarah Gooding maneras de configurar un entorno de prueba para WordPress.
Función de seguridad de bonificación gratuita
Una de las tareas clave que un plugin de seguridad de WordPress realiza es escanear sus archivos en busca de código malicioso que podría haber sido introducido por cualquiera de los métodos nefastos que los hackers utilizan para obtener código malhese en su sitio.
Una vez que tenga su sitio bajo control de versiones, puede probar los cambios no deseados, incluidos los introducidos en el plugin de seguridad en sí, simplemente ejecutando el comando "estado git" en su sitio en vivo.
Cuando ejecute el estado de Git, verá todo lo que ha cambiado desde la última confirmación. Si algo ha cambiado que no debería haberlo hecho, simplemente puede volver a antes de que se introdujeran los cambios. Por supuesto, usted querrá averiguar cómo el código malicioso llegó allí y lidiar con la vulnerabilidad directamente.
Putting Aside The Cowboy Hat
Bueno, eso es lo que se necesita para quitarse el sombrero de vaquero e implementar un entorno de desarrollo de WordPress adecuado. Hay innumerables otras maneras de mejorar el proceso, por ejemplo, automatizar el proceso con enlaces web personalizados y scripts de Composer.
Cada vez que se pone en la mejora de su flujo de trabajo debe ser devuelto a usted en multitud cuando se trata de aumentos de eficiencia.
Me encantaría saber qué improvisaciones sobre la estrategia básica que estoy esbozando aquí se me ocurre. Avísame en los comentarios.