2009-07-02 13 views
5

Empiezo un proyecto en el que 2 personas desarrollarán un sitio en WordPress. También puede ser necesario tener una configuración de servidor de desarrollo donde mi cliente pueda ver los cambios en el sitio antes de que lo publiquemos. También puede haber cambios en la base de datos (como la configuración de WordPress) que deben ser empujados desde el desarrollo hasta el desarrollo y la producción.¿Cuál es su flujo de trabajo para crear sitios web basados ​​en WordPress?

Me pregunto cuál es la mejor flujo de trabajo es para esto. Entiendo los conceptos generales porque generalmente desarrollo en Rails y, por lo tanto, ejecuto migraciones y uso capistrano y git, pero me gustaría tener el mismo flujo de trabajo ajustado para un sitio de WordPress. ¿Algún desarrollador experimentado de WordPress por ahí?

Actualización: Tal vez no lo aclare lo suficiente, pero entiendo wordpress. Creé 5-10 blogs de wordpress y funcionalidades personalizadas. Sin embargo, nunca he trabajado en un sitio de wordpress con varias personas o he tenido que lidiar con tener un entorno de desarrollo y de desarrollo.

Gracias!

Respuesta

0

WordPress tiende a ser bastante modular; Creo que un control de fuente ayudará, y quizás escriba una secuencia de comandos para automatizar la carga en un sitio de vista previa. Puede mantener una carpeta que solo está actualizada por SVN y una carpeta de trabajo.

WordPress es modular en un sentido que puede utilizar plantillas y widgets de página, así como plugins. Puede escribir piezas de su sitio como widgets y complementos y unirlas para que funcionen. Para páginas con diseño personalizado o código PHP, puede usar Plantillas de página. Rara vez necesita tocar los archivos centrales de WordPress (ni tampoco nadie), así que si se apega a las herramientas de extensión proporcionadas por WordPress, estaría bien.

+0

bien, entiendo wordpress. tal vez debería haber dejado eso más claro. esta pregunta es específicamente sobre el flujo de trabajo y estoy buscando una respuesta con detalles. Espero que en los casos en que necesite escribir guiones, la gente pueda proporcionar los enlaces – Tony

0

Es posible que desee probar el plugin administrador de funciones para la gestión de permisos y Turnkey Wordpress para wp instalación rápida en la máquina virtual. Sin embargo, no tengo ni idea de algo que pueda tener un papel de git.

1

Flujo de trabajo ¿eh? Bueno, trabajé con un par de personas en sitios web complejos de WordPress y aún lo hago. Utilizamos Subversion y Trac la mayor parte del tiempo y rara vez se trata de hacer algunos cambios en la base de datos. Solo durante la configuración, supongo.

Aquí está la secuencia de comandos:

#!/bin/sh 
echo Copying $1 to $2 ... 
mysqldump -uroot -pPASSWORD $1 > /tmp/tempdump.sql 
mysql -uroot -pPASSWORD -e "CREATE DATABASE $2;" 
mysql -uroot -pPASSWORD $2 < /tmp/tempdump.sql 
rm -f /tmp/tempdump.sql 
echo Complete 

Es demasiado simple, lo sé, pero esa es la manera que me gusta;) No se olvide de reemplazar contraseña con la contraseña y pehaps que no le gustaría use la raíz del usuario para estos fines (realmente no me importa, es por eso que lo hago).

Guarde el archivo en copydb.sh por ejemplo, entonces chmod + x copydb.sh y luego se puede ejecutar la siguiente manera: ./copydb.sh database1 database2;)

+0

¿Utiliza sitios dev o solo un sitio prod? si usa un sitio dev, tendrá que copiar la configuración de la base de datos cada vez que agregue un complemento. sin embargo, probablemente no sea demasiado doloroso, solo quería obtener algunos comentarios sobre si era o no una mala idea – Tony

+0

genial ... ¿te importa compartir el guión? – Tony

+0

Claro, mira la actualización de la respuesta – kovshenin

2

Para hacer frente a este tipo de DEV y entorno de producción, que he escrito una secuencia de comandos perl para ayudarme con lo que de otra manera sería un trabajo manual. He dado ciertos pasos a los nombres familiares, así que recuerdo ejecutarlos en el orden correcto. Solo tengo DEV bajo SVN. Creo un entorno de PRODUCCIÓN cada vez con este script. De esa forma no tengo que preocuparme por mantener 2 ramas de código.

estoy usando SVN así que elegir un nuevo directorio de la caja (como/tmp/foobar) de mi código DEV. No va a estar allí por mucho tiempo.

paso 0 opcionales: diff estructuras de bases de datos

mysqldump -d -u USER -pPASS mydotcom > production.sql 
mysqldump -d -u USER -pPASS mydotcom_dev > development.sql 
vim -d production.sql development.sql 

veces plugins añadir tablas, y esto va a demostrar que. De lo contrario, reproduciré los cambios realizados dentro de las tablas (instalaré un complemento) cuando no valga la pena diferir ciertas tablas y copiar sentencias SQL.

paso 1 limpiar: La secuencia de comandos elimina todos los archivos en el directorio actual, hacer una nueva comprobación de svn de la rama DEV. Este proceso de pago se transformará en el código PRODUCTION y se copiará en su webroot.

paso 2 make: perl ejecuta un vim buscar y reemplazar el nombre de la base de datos en wpconfig.php. La búsqueda y el reemplazo se realizan con la misma facilidad en Perl.

system('vim -c "%s/define(\'DB_NAME\', \'mydotcom_dev\'/define(\'DB_NAME\', \'mydotcom\'/g | w | q" wp-config.php'); 

Elimina el directorio de cargas de archivos locales (para que no sobrescribamos el de producción). wpcontent/uploads Creo que está en una instalación estándar.

Otra búsqueda y reemplazo en todos los archivos de texto dentro del proyecto que tiene la URL de mi DEV, por ejemplo

vim -c "%s/dev\.mydot\.com/www.mydot.com/g | w | q FILENAME.php 

paso 3 instalación. Haga una copia de seguridad del wpcontent/uploads con dircopy() para estar seguro. Haga una dircopy() de este directorio limpio en la webroot de PRODUCTION. Eliminar todos los directorios .svn dentro de la web raíz de este modo:

find /PRODUCTION/WEBROOT -ignore_readdir_race -name .svn -exec rm -fr {} \; >/dev/null 2>&1 

Ahora su código DEV se ha transformado en el código de producción reemplazando todas las URL codificada y mantener segura en todo el directorio de archivos que no está en SVN. Incluso puedes hacer que se detenga e iniciar apache para ti también. Espero que mi solución te ayude a resolver tu problema.

Cuestiones relacionadas