2010-01-13 19 views
19

Estoy trabajando en la construcción de un sitio de Magento, y es con mucho el paquete más gigantesco con el que he trabajado. Decidí configurar un servidor de desarrollo adecuado y utilizar Subversion para el control de versiones. Estoy llegando a un par de obstáculos y necesito ayuda.Magento & Subversion (SVN) - ¿Cómo iniciar un entorno de desarrollo?

Lo que he hecho hasta ahora:

  1. Configurar alojamiento web en un host que utiliza cPanel. Mi sitio 'Live' (mysite.com) residirá en ~/public_html /.
  2. Creó un subdominio 'Desarrollo' (dev.mysite.com) que apunta a ~/public_html/dev /.
  3. Comenzó un repositorio SVN dentro de ~/svn /. Mi repositorio contiene carpetas sucursales | etiquetas | el maletero.
  4. Importé un magento tarball recién desatado (v.1.3.2.4) en mi repositorio en trunk/magento.
  5. Se crearon dos bases de datos a. mysite_live y b. mysite_dev.
  6. desprotegido el código de Magento de mi repo en ~/public_html/dev/(dev.mysite.com)
  7. ejecutó el instalador Magento inicial, que llena mi mysite_dev Db y creó algunos archivos de configuración (app/etc/local .xml es el único que conozco, ¿puede haber otros?).

Aquí es donde estoy atascado:

así que tengo una Magento completamente funcional Instalar en mi espacio prog. Lo que quiero hacer ahora es conseguir que mi sitio en vivo implementado sea idéntico a mi sitio de desarrollo, como punto de partida. Porque la configuración es diferente en el archivo de la aplicación/etc/local.xml; además, Magento almacena el valor de {{base_url}} dentro de la base de datos, no es tan fácil como actualizar mi troncal svn desde mi sitio dev y luego exportar/importar el db.

A medida que avanzo en este camino, quiero que haya una ruta directa para empujar todo en mi sitio dev a través de SVN y a mi sitio en vivo, junto con mantener las bases de datos sincronizadas excepto por el valor de { {base_url}}. He leído un par de publicaciones en el foro que hacen referencia a svn: ignorar para evitar ciertos archivos y directorios específicos del entorno, pero no sé cómo configurarlo en mi sitio en vivo y asegurar que todo esté sincronizado correctamente.

Debería ver una copia del código base de trunk/magentoo de mi repositorio en el espacio de mi sitio en vivo, luego ejecutar una instalación, luego configurar svn para ignorar local.xml, y asumir que son idénticos, excepto para las diferencias locales?

En este punto, simplemente no sé cómo proceder, y soy reacio a hacer alguna conjetura en caso de que tenga como resultado tener que borrar todo y comenzar de nuevo en un futuro próximo.

Como nota al margen: también necesito crear una rama 'Demo' del código para otro subdominio; mostrar a las personas como una prueba de concepto. Probablemente cruzaré ese puente cuando llegue a eso. Tal vez todo tendrá sentido cuando llegue a esa tarea.

tl; versión dr - cómo administro Magento desarrollo & código en vivo & Db's con SVN?

¡Gracias a todos por tomarse el tiempo para leer y responder!

Respuesta

21

Lo primero que debe hacer es comprobar en la versión instalada del programa.De esa manera, la copia del programa en el repositorio es una que funciona y que realmente puede usar. Luego deberá ignorar algunos archivos y directorios para que pueda ejecutar los otros entornos. local.xml es un buen ejemplo, sino también establecer ignoran en lo siguiente:

/var/report/* 
/var/log/exception.log 
/var/log/system.log 
/var/locks/* 
/var/session/* 
/var/cache/* 
/var/tmp/* 
/media/tmp/* 

Probablemente hay otros, pero esto debe darle un buen comienzo. Si cree que podría hacer cambios en local.xml (y podría hacerlo), copie local.xml a local.xml.dist y verifique la versión .dist en el repositorio. Cuando finalice la compra en sus otros sitios, tendrá que realizar los cambios manualmente, pero será más fácil rastrearlos.

Para la base de datos, una práctica común es hacer un mysqldump en el entorno de desarrollo y mantenerlo en el repositorio también.

mysqldump -u user -p database > mysqldump.sql

Usted tendrá que introducir su contraseña para que uno. Ahora la copia en el repositorio es una copia completa del sitio. Para configurar otro entorno, verificará la base de códigos completa y luego importará el archivo MySQL en la base de datos.

Recuerde que cuando hace esto (y cada vez que actualiza la base de datos en el repositorio y luego desea actualizar los cambios en otros entornos) necesitará cambiar {base_url} y {secure_url} en la base de datos. He visto algunos entornos donde los desarrolladores crearon scripts para lograr esto automáticamente.

Finalmente, intente realizar todos los cambios en su copia de desarrollo del sitio, ya que ayudará a mantener su base de datos sincronizada. Si realiza cambios en la copia en vivo sin al menos también reflejarlos en dev, es probable que los sobrescriba accidentalmente más adelante con uno de los volcados y luego se pregunte dónde fue su funcionalidad.

Espero que ayude. Si tiene otras preguntas específicas, hágamelo saber.

Gracias, Joe

+0

Si no desea cambiar {base_url} y {secure_url}, puede configurar el mismo host virtual –

9

Sé que esto no es exactamente lo que usted pidió, pero sólo quiero decirle sobre mi configuración, porque creo que no es práctico para seguir para sincronizar la base de datos dev para la producción una vez que pasan en vivo . Probablemente quiera realizar cambios en su base de datos de desarrollo para realizar pruebas que no siempre son fáciles de revertir. Creando tu contenido (productos, etc.) en el entorno en vivo y ocasionalmente copiando la base de datos al desarrollo, creo que funciona muy bien.

Para mi proyecto he construido mi entorno real mediante la instalación de Magento desde cero y acaba de comprobar los directorios desde SVN en estos puntos:

/app/code/local/MyOrg 
/app/design/frontend/default/myorg 
/skin/frontend/default/myorg 

cualquier personalización que realice debe estar en uno de estos directorios.

administro este directorio manualmente en el servidor en vivo:

/app/etc/modules 

Sólo es necesario crear un archivo de allí si se crea un nuevo módulo de ti mismo.

4

Escribí Module Manager específicamente para resolver estos problemas.

No recomiendo la aplicación de versiones/etc/local.xml para que cada entorno pueda tener credenciales de base de datos diferentes, pero sí recomiendo versionar todo lo demás usando modman. Además, recomiendo que modman ejecute una secuencia de comandos que borre la caché de Magento y aplique las actualizaciones de la base de datos, como the one found here.

Cuando se usa correctamente, puede "svn commit" en su troncal y simplemente ejecutar "modman update-all" en sus otros entornos (incluso en vivo) para actualizar. Para una actualización más segura en 1.4, puede ejecutar

touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag 
+0

Por "todo lo demás" quiero decir * su * código y otros archivos como robots.txt. Modman elimina la necesidad de usar svn: ignorar por completo. – ColinM

0

estamos usando diferentes archivos local.xml. Nombrarte depende de ti, pero se recomiendan local.xml.qa o local.xml.live teniendo una cadena de conexión específica del medio ambiente :-)

una nota: magento procesa todos los archivos * .xml en la carpeta de la aplicación/etc, así que ten cuidado nombrando

Cuestiones relacionadas