2009-01-01 22 views
12

Me gustaría configurar dos entornos para mi nuevo sitio web escritos en PHP. Uno: desarrollar nuevas versiones y probarlas. Y una segunda producción en la que estará disponible mi versión estable del sitio web.Entorno de desarrollo y producción en PHP

El sitio web en PHP constará de muchos archivos PHP y otros (JS, imágenes, etc.). Así que creo cómo preparar este entorno de la mejor manera para facilitar el control de fuente, copiar rápidamente el sitio web del entorno de desarrollo al entorno de producción y hacer que la versión de desarrollo esté disponible para las personas en la web para que puedan ver el progreso real del trabajo y sugerir cambios o reportar errores.

¿Podría darme algún consejo a dónde ir desde este punto de partida? ¿Hay libros sobre esto (desde el punto de vista práctico?) O ¿tiene experiencia o consejos sobre qué debe cuidar y qué es importante para que este proceso sea fácil y bueno para mí y otras personas involucradas en el desarrollo de un nuevo proyecto?

Respuesta

3

Prefiero que el desarrollo se produzca en el cuadro local de desarrolladores si es posible. Si están involucrados otros desarrolladores, probablemente desee configurar su control de versión de modo que tanto el esquema de la base de datos, javascript, css y el código php puedan ser revisados ​​y configurados en el cuadro personal del desarrollador con bastante facilidad (suponiendo que tengan el LAMP/Configuración de WAMP)

También lo he visto donde las personas mantienen un sitio web de prueba en un servidor donde se produce un desarrollo activo. Evitaría esto para el desarrollo activo, pero utilicé esto para pruebas de caja negra del último código registrado (la última compilación).

Una vez que su sitio web de prueba se retira, es cuestión de exportar el código desde el control de su versión a la ubicación del sitio web en vivo. Con svn, puedes simplemente hacer una actualización del código en vivo con svn update especificando una revisión o etiqueta que indique la versión actual en vivo.

Recomendaría además mantener algunas configuraciones, como acceso a db/nombre de usuario/pase, en un archivo incluido separado que no está controlado por la versión. Mantenga esto en otro lugar, permita que los desarrolladores conecten los derechos de acceso a su base de datos local en su PC. En su servidor, conecte todo lo que necesita para acceder a la base de datos allí. Este debería ser un código realmente trivial (que define algunas variables) por lo que no tenerlo controlado no debería ser un gran problema. Si lo desea, podría controlar la versión de una plantilla, pero no pondría la información de la base de datos real en el control de la versión.

6

Trabajo con una configuración como esta, por lo que puedo darle algunos consejos sobre cómo hacer esto. He estado haciendo esto por un tiempo, resolviendo las fallas aquí y allá, y siento que esta es una configuración que honestamente puedo decir que es bastante productiva.

Nota pequeña: trabajo en OSX, por lo que las aplicaciones específicas utilizadas pueden ser un poco diferentes de usted si usted es un usuario de Linux/Windows.

Ejecuto un 'servidor' de producción en mi Mac, usando MAMP (www.mamp.info) para facilitarme fácilmente un servidor Apache con PHP y MySQL. Puede usar una herramienta similar como XAMPP o instalar todo manualmente, depende de usted.

Luego tengo mis servidores en vivo, donde se alojan mis sitios web y sitios web de clientes. Para cada nuevo proyecto de sitio web (tomemos abc.com como ejemplo), creo un subdominio llamado staging.abc.com, en el cual hago mi prueba. Siempre es bueno probar cosas con exactamente el mismo hardware y software antes de realmente comenzar a funcionar.

Utilizo Subversion (o en resumen, SVN) para mis necesidades de control de versiones, con la ventaja añadida de que puedo agregar fácilmente 'ganchos' para actualizar automáticamente mi servidor de producción en línea cada vez que envío mi versión actualizada al servidor SVN.SVN también le permite trabajar fácilmente con más de una persona en el mismo proyecto. Para obtener más información sobre SVN y cómo usarlo, sugiero el gran libro en línea (y gratuito) que se encuentra aquí: http://svnbook.red-bean.com/

En resumen: Trabajo localmente con MAMP proporcionándome un servidor local de "trabajo". Después de eso, pruebo en línea en una ubicación de staging.abc.com para ver si todo funciona bien, y para permitir que otros vean el proyecto (en caso de que desee que su cliente vea lo que está sucediendo, por ejemplo), y después de eso, realmente publico el proyecto poniéndolo en el dominio real.

Hay muchas cosas más que se pueden hacer para optimizar su flujo de trabajo, pero esto debería ayudarlo a comenzar.

Espero que esto ayude!

-Dave

13

Para empezar utilizan los tres siguientes:

  1. SVN - esto le dará control de origen y permitirá realizar un seguimiento cambios. Es posible que desee obtener GUIs en la parte superior de esto (Tortoise es popular) para facilitar la curva de aprendizaje.

  2. RSYNC - esto le permitirá agilizar su sincronización entre el sitio local y remoto con un solo comando. RSYNC usa un motor de diferencias para sincronizar lo que significa que las sincronizaciones incrementales ocurren en cuestión de segundos. Durante la programación intensa, algunas veces sincronizaré de 4 a 5 veces en una hora, generando pequeños cambios muy rápido solo porque puedo hacerlo tan fácilmente.

  3. MySQLDump - Esto le permitirá importar/exportar datos de su sitio de producción. Normalmente hago esto una vez a la semana para obtener datos de producción en mis servidores locales, lo que no solo me proporciona una copia de seguridad local, sino que también me permite compartir datos de producción en un entorno de prueba local.

Esos tres solo le ahorrarán mucho tiempo en el largo plazo y le permitirán escalar. Más adelante, puede buscar herramientas de compilación automatizadas, marcos de pruebas de unidades, marcos de documentación xml y similares para crear algunos productos serios.

+0

¿Por qué rsync si puede verificar su revisión actual desde SVN en el servidor? –

+0

¿Cómo se hace un seguimiento de los cambios en la base de datos? Intento agregar cambios como sql en un dir/sql separado, pero a veces me olvido de hacer eso; que me deja con un compromiso "roto". – bouke

+0

@bouke - ver cinco series de partes vinculadas en esta publicación http://www.codinghorror.com/blog/archives/001050.html – aleemb

Cuestiones relacionadas