2010-01-01 28 views
16

Estoy interesado en descubrir cómo las personas están implementando sus aplicaciones CakePHP. Recientemente me han contactado para hacer un poco de desarrollo independiente de CakePHP, lo que sería una buena oportunidad para obtener experiencia en el nivel de presentación (en mi trabajo de FT, desarrollo Java EE en los niveles de negocios y de persistencia).Despliegue de la aplicación CakePHP

Mis pensamientos son un poco desorganizado en este momento, pero estoy teniendo en cuenta los siguientes escenarios:

  • desarrollador que trabaja en un IDE modifica un archivo, que es de forma automática (en el fondo) sincronizados con una servidor web de desarrollo ejecutándose localmente. Este escenario es la forma ideal en que me gustaría hacer el desarrollo ... hacer un cambio y poder ver el cambio en acción sin ningún paso adicional.

  • Desarrollador que trabaja en un IDE modifica un archivo, que se sincroniza automáticamente (en el fondo) a través de FTP con un servidor web de desarrollo que se ejecuta de forma remota. Este escenario sería útil cuando viajo usando mi netbook (que ejecuta mi IDE lo suficientemente lento ya que es sin un servidor web en la mezcla).

  • Administrador implementa la última versión de una aplicación CakePHP desde un repositorio de código fuente a un servidor web que se ejecuta localmente.
  • Administrador implementa la última versión de una aplicación CakePHP desde un repositorio de código fuente a un servidor web a través de FTP.
  • Administrador implementa una versión anterior de una aplicación CakePHP desde un repositorio de código fuente a un servidor web que se ejecuta localmente.
  • Administrador implementa una versión anterior de una aplicación CakePHP desde un repositorio de código fuente a un servidor web a través de FTP.

Las herramientas de desarrollo con las que me siento más cómodo son Eclipse, Ant y Subversion. Mi preferencia es continuar usándolos, pero consideraría cambiar si hacerlo facilita la consecución de los escenarios.

Preguntas:

  • Son estos escenarios razonables, o debe hacer tengo que pensar en el desarrollo y despliegue de una manera diferente?
  • ¿Qué herramientas existen que pueden ayudar a simplificar el desarrollo/implementación? ¿Sería mejor para mí rodar mi propia solución con Ant, scripts, etc.?
  • ¿Cómo manejamos los problemas de la base de datos durante la implementación? ¿Cómo se especifican las propiedades de conexión de la base de datos para una implementación en particular? ¿Qué sucede si actualizar a una versión más nueva (o volver a una versión anterior) de la aplicación CakePHP requiere un cambio en el esquema de la base de datos y la migración de datos?
  • ¿Cómo configuramos las propiedades que varían entre las implementaciones? Por ejemplo, considere aumentar los niveles de depuración y registro utilizados durante el desarrollo, evitando que los pagos se envíen a las pasarelas de pago durante el desarrollo, etc.
  • ¿Cómo afecta la actualización o la reversión de una implementación a los clientes? Por ejemplo, ¿qué sucede si se encuentran en medio de una transacción (por ejemplo, comprando un producto)?
  • ¿Cómo manejamos diferentes tipos de instalación de CakePHP? Los archivos pueden necesitar ser instalados en diferentes ubicaciones dependiendo del tipo de instalación. ¿Cómo podemos saber dónde se deben instalar los archivos? El libro de CakePHP describe desarrollo, producción e instalaciones avanzadas.

Lo siento por tantas preguntas en una sola publicación, pero creo que todas las preguntas están relacionadas y pensé que sería útil mantener la discusión en un solo lugar.

Respuesta

12

¿Son estos escenarios razonables, o debo tener que pensar en el desarrollo y la implementación de una manera diferente?

Parece razonable, aunque la sincronización de FTP me hace pensar en Dreamweaver. :)

considerar el uso de un IDE que le permite conectarse a un servidor a través de (S) FTP, o utilizar una de las siguientes ...

¿Qué herramientas existen que puede ayudar a simplificar el desarrollo/implementación? ¿Sería mejor para mí rodar mi propia solución con Ant, scripts, etc.?

Jenkins, Capistrano, Phing, Hormiga, git push/pull, rsync, etc.

¿Cómo manejamos los problemas de base de datos durante la implementación? ¿Cómo se especifican las propiedades de conexión de la base de datos para una implementación en particular? ¿Qué sucede si actualizar a una versión más nueva (o volver a una versión anterior) de la aplicación CakePHP requiere un cambio en el esquema de la base de datos y la migración de datos?

Use cake schema generate y cake schema run update.

¿Cómo configuramos las propiedades que varían entre las implementaciones? Por ejemplo, consideremos aumento de los niveles de depuración y de registro utilizadas durante el desarrollo, la prevención de los pagos se envíen a las pasarelas de pago durante el desarrollo, etc.

los nombres de archivos que difieren en consecuencia (es decir. core.php.prd vs core.php.dev) y cambiar el nombre de la instalación.

¿Cómo afecta la actualización o la reversión de una implementación a los clientes? Por ejemplo, ¿qué sucede si se encuentran en medio de una transacción (por ejemplo, comprando un producto)?

Para que sus archivos de aplicación no terminen en un estado incoherente, debe comenzar por verificar una nueva copia de la aplicación en una nueva carpeta. Copie a través de los archivos enviados por el usuario, cambie el nombre a los archivos *.prd y luego cambie la copia anterior por la nueva (mediante el cambio de nombre o el uso de enlaces simbólicos). Las sesiones deben almacenarse en algún lugar que sobreviva a la actualización (es decir, php o database, en lugar de cake).

¿Cómo manejamos los diferentes tipos de instalación de CakePHP? Los archivos pueden necesitar ser instalados en diferentes ubicaciones dependiendo del tipo de instalación. ¿Cómo podemos saber dónde se deben instalar los archivos? El libro de CakePHP describe desarrollo, producción e instalaciones avanzadas.

El desarrollo instalar es tan segura como cualquier aplicación PHP que utiliza .htaccess archivos para redirigir las peticiones (la gente no podrá ver su código a menos que desinstale/desconfigurar mod_rewrite y PHP). La instalación de producción es un poco más complicada a menos que pueda editar las raíces de documentos de sus hosts virtuales. La instalación avanzada le permite instalar Cake en cualquier lugar del sistema de archivos, pero agrega más complejidad (ya que sus archivos se ubican en dos ubicaciones separadas, pero pueden ubicarse en un único repositorio)

+0

Se pueden encontrar scripts de migración DB alternativos aquí: http://stackoverflow.com/questions/2522372/good-db-migrations-for-cakephp – deizel