Tengo una configuración de la que estoy bastante orgulloso, y funciona extremadamente bien para mi equipo.
Estructura general
Mantengo toda la instalación bajo git. Todos los cambios, ya sea una actualización del sistema, agregar / actualizar un complemento, agregar / actualizar un tema, pasan por el mismo flujo de trabajo. Los cambios se pueden revertir en cualquier momento. Tengo un servidor de implementación (un escritorio P4 antiguo) ejecutando gitosis pero podría usar github o gitolite . En git, tengo dos sucursales "especiales", master
y develop
(explicadas más abajo). Mis servidores de producción y de ensayo están basados en la nube.
Entornos de desarrollo
Cada desarrollador ejecuta su propio servidor de desarrollo en su propia máquina. En términos de bases de datos, la necesidad de datos en vivo casi nunca ha sido un problema. Principalmente utilizamos los datos de prueba de la unidad temática . De lo contrario, la exportación e importación cubre la mayoría de las cosas. Si la pieza de la base de datos era crucial, podría configurar la replicación o configurar algo para la sincronización bajo demanda. Cuando instalé esta estructura inicialmente, pensé que esto sería crucial, así que comencé a escribir un conjunto de herramientas para haz esto, pero para mi sorpresa realmente no eran necesarias. (nota: ya que no eran necesarios, nunca los pulí, así que hay errores, por ejemplo, que reemplazarán el dominio en los datos serializados).
Entorno de ensayo
Cuando las confirmaciones se transfieren de la rama develop
a gitosis, se implementan automáticamente en nuestro servidor de pruebas. La base de datos provisional es un esclavo de la base de datos de producción.
Entorno de producción
Cuando las confirmaciones se envían a gitosis en la rama master
, se implementa automáticamente en el servidor de producción.
El problema wp-config.php
Desea que wp-config.php
sea único de un servidor a otro, pero también desea mantenerlo bajo el control de versiones. Mi solución fue utilizar .gitignore
para ignorar wp-config.php
, y almacenar las versiones de prueba y producción como archivos con nombres diferentes. Luego en cada servidor, enlace simbólico, por ejemplo. %código%. Cada usuario mantiene su propia base de datos con sus propias credenciales, con su propia configuración wp-config.php (sin seguimiento).
Otras notas
Uso Rackspace Cloud , que es fenomenal y económico. Con él puedo mantener idénticos mis servidores de ensayo y producción. También estoy escribiendo complementos ahora que utilizan su API para permitirme controlar mis servicios desde WordPress, es maravilloso.
Los directorios de caché, directorios de carga de archivos, etc., se agregan a .gitignore. Si lo desea, puede configurar una tarea cron para verificar las subidas de forma rutinaria y enviarlas a gitosis, pero eso nunca me pareció necesario.
La estructura maestra / desarrollada está configurada para imitar parcialmente modelo de bifurcación de Vincent Driessen . También utilizo su extensión git git-flow y también lo sugiero.
He tenido alrededor de 10 desarrolladores trabajando en esta estructura durante más de un año y ha sido un sueño trabajar con ellos. Fiable, seguro, rápido, funcional y ágil, ¡no puedes pedir mucho más!