deployment - Implementación de la aplicación CakePHP
(1)
Estoy interesado en descubrir cómo la gente está implementando sus aplicaciones CakePHP. Recientemente me han contactado para hacer un desarrollo freelance de CakePHP, lo que sería una buena oportunidad para obtener algo de experiencia en el nivel de presentación (en mi trabajo de FT hago desarrollo de Java EE en los niveles de negocios y persistencia).
Mis pensamientos están un poco desorganizados en este momento, pero estoy considerando los siguientes escenarios:
El desarrollador que trabaja en un IDE modifica un archivo, que se sincroniza automáticamente (en segundo plano) con un servidor web de desarrollo que se ejecuta localmente. Este escenario es como me gustaría idealmente hacer el desarrollo ... hacer un cambio y poder ver el cambio en acción sin ningún paso adicional.
El desarrollador que trabaja en un IDE modifica un archivo, que se sincroniza automáticamente (en segundo plano) a través de FTP con un servidor web de desarrollo que se ejecuta de forma remota. Este escenario sería útil cuando estoy viajando con mi netbook (que ejecuta mi IDE con la suficiente lentitud, ya que no tiene un servidor web en la mezcla).
- El 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.
- El 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.
- El 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.
- El 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 el logro de los escenarios.
Preguntas:
- ¿Son estos escenarios razonables o debo pensar en el desarrollo y la implementación de una manera diferente?
- ¿Qué herramientas existen que pueden ayudar a simplificar el desarrollo / despliegue? ¿Sería mejor para mí lanzar 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 la actualización a una versión más reciente (o la reversión 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 el aumento de los niveles de depuración y registro utilizados durante el desarrollo, evitando que los pagos se envíen a pasarelas de pago durante el desarrollo, etc.
- ¿Cómo afecta la actualización o revertir una implementación a los clientes? Por ejemplo, ¿qué sucede si están en medio de una transacción (por ejemplo, comprando un producto)?
- ¿Cómo manejamos diferentes tipos de instalación de CakePHP? Es posible que los archivos deban instalarse 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 el desarrollo, la producción y las instalaciones avanzadas.
Lo siento por tantas preguntas en una 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.
¿Son estos escenarios razonables o debo 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. :)
Considere usar un IDE que le permita conectarse a un servidor a través de (S) FTP, o usar uno de los siguientes ...
¿Qué herramientas existen que pueden ayudar a simplificar el desarrollo / despliegue? ¿Sería mejor para mí lanzar mi propia solución con Ant, scripts, etc.?
Jenkins , Capistrano , Phing , Ant, git push/pull
, rsync
, 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 la actualización a una versión más reciente (o la reversión 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 la cake schema generate
y cake schema run update
.
¿Cómo configuramos las propiedades que varían entre las implementaciones? Por ejemplo, considere el aumento de 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.
Nombre los archivos que difieren en consecuencia (es decir, core.php.prd
vs core.php.dev
) y cambie el nombre en la instalación.
¿Cómo afecta la actualización o revertir una implementación a los clientes? Por ejemplo, ¿qué sucede si están en medio de una transacción (por ejemplo, comprando un producto)?
Por lo tanto, los archivos de la aplicación no terminan en un estado inconsistente, debe comenzar por retirar una copia nueva de la aplicación en una nueva carpeta. Copie en cualquier archivo enviado por el usuario, cambie el *.prd
archivos *.prd
y luego cambie la copia antigua con la nueva copia (cambiando el nombre o usando enlaces simbólicos). Las sesiones deben almacenarse en algún lugar que sobrevivan a la actualización (es decir, php
o database
, en lugar de cake
).
¿Cómo manejamos diferentes tipos de instalación de CakePHP? Es posible que los archivos deban instalarse 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 el desarrollo, la producción y las instalaciones avanzadas.
La instalación de desarrollo es tan segura como cualquier aplicación PHP que use archivos .htaccess
para redirigir las solicitudes (las personas no verán su código a menos que desinstale / mod_rewrite
mal el 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 encuentran en dos ubicaciones separadas, pero pueden estar en un solo repositorio)