Una vez que tu aplicación esté lista para ser desplegada, hay algunas cosas que debes hacer.
Puedes clonar tu repositorio en tu servidor de producción y luego seleccionar la
revisión/etiqueta que deseas ejecutar. Luego, ejecuta composer install
. Aunque esto requiere
un cierto conocimiento sobre git y una instalación existente de git
y composer
,
este proceso se encargará de las dependencias de las bibliotecas y los permisos de archivos y carpetas.
Ten en cuenta que al desplegar a través de FTP deberás corregir los permisos de archivo y carpeta.
También puedes utilizar esta técnica de despliegue para configurar un servidor de pruebas o demostración (preproducción) y mantenerlo sincronizado con tu entorno local.
Querrás hacer algunos ajustes en la configuración de tu aplicación para
un entorno de producción. El valor de debug
es extremadamente importante.
Al desactivar debug = false
se deshabilitan una serie de características de desarrollo que no deberían
ser expuestas a Internet en general. Deshabilitar debug cambia las siguientes
características:
Los mensajes de depuración, creados con pr()
, debug()
y dd()
,
están deshabilitados.
La duración de las cachés básicas de CakePHP se establece en 365 días, en lugar de 10 segundos, como en desarrollo.
Las vistas de errores son menos informativas y se muestran páginas de error genéricas en lugar de mensajes de error detallados con trazas de pila.
Los avisos y errores de PHP no se muestran.
Además de lo anterior, muchos complementos y extensiones de la aplicación usan debug
para modificar su comportamiento.
Puedes utilizar una variable de entorno para establecer dinámicamente el nivel de depuración
entre entornos. Esto evitará desplegar una aplicación con debug
true
y también te ahorrará tener que cambiar el nivel de depuración cada vez
antes de desplegar en un entorno de producción.
Por ejemplo, puedes establecer una variable de entorno en tu configuración de Apache:
SetEnv CAKEPHP_DEBUG 1
Y luego puedes establecer dinámicamente el nivel de depuración en app_local.php:
$debug = (bool)getenv('CAKEPHP_DEBUG');
return [
'debug' => $debug,
.....
];
Se recomienda que coloques la configuración que se comparte en todas los entornos de tu aplicación en config/app.php. Para la configuración que varía entre entornos, utiliza config/app_local.php o variables de entorno.
Si estás lanzando tu aplicación al mundo, es una buena idea asegurarte de que no tenga ningun problema de seguridad obvio:
Asegúrate de estar usando el componente o middleware Middleware CSRF.
Puedes habilitar el componente FormProtection. Puede ayudar a prevenir varios tipos de manipulación de formularios y reducir la posibilidad de problemas de asignación masiva.
Asegúrate de que tus modelos tengan las reglas de Validation correctas habilitadas.
Verifica que solo tu directorio webroot
sea públicamente visible y que tus
secretos (como tu sal de aplicación y cualquier clave de seguridad) sean privados y únicos
también.
Establecer correctamente la raíz en tu aplicación es un paso importante para
mantener tanto tu código como tu aplicación seguros. Las aplicaciones de CakePHP
deben tener la raíz establecida en el webroot
de la aplicación. Esto
hace que los archivos de aplicación y configuración sean inaccesibles a través de una URL.
Establecer la raíz es diferente para diferentes servidores web. Consulta la
documentación de URL Rewriting para obtener información específica del servidor web.
En todos los casos, querrás establecer la raiz del host virtual/dominio en
webroot/
. Esto elimina la posibilidad de que se ejecuten archivos fuera del directorio raíz.
La carga de clases puede llevarse una gran parte del tiempo de procesamiento de tu aplicación. Para evitar este problema, se recomienda que ejecutes este comando en tu servidor de producción una vez que la aplicación esté implementada:
php composer.phar dumpautoload -o
Dado que manejar los archivos estáticos, como imágenes, archivos JavaScript y CSS de
los complementos, a través del Dispatcher
es increíblemente ineficiente, se recomienda encarecidamente crear enlaces simbólicos para producción. Esto se puede hacer usando
el comando plugin
:
bin/cake plugin assets symlink
El comando anterior creará enlaces simbólicos del directorio webroot
de todos los complementos cargados
a la ruta adecuada en el directorio webroot
de la aplicación.
Si tu sistema de archivos no permite crear enlaces simbólicos, los directorios se copiarán en lugar de enlazarse. También puedes copiar explícitamente los directorios usando:
bin/cake plugin assets copy
CakePHP utiliza internamente assert()
para proporcionar comprobación de tipos en tiempo de ejecución y
proporcionar mejores mensajes de error durante el desarrollo. Puedes hacer que PHP omita estas
comprobaciones assert()
actualizando tu php.ini
para incluir:
; Desactivar la generación de código assert().
zend.assertions = -1
Omitir la generación de código para assert()
proporcionará un rendimiento de ejecución más rápido,
y se recomienda para aplicaciones que tienen una buena cobertura de pruebas o que están
usando un analizador estático.
En cada implementación es probable que tengas algunas tareas para coordinar en tu servidor web. Algunas tareas típicas son:
Instalar dependencias con composer install
. Evita usar composer
update
al hacer implementaciones, ya que podrías obtener versiones inesperadas de paquetes.
Ejecutar migraciones de base de datos con el complemento Migrations u otra herramienta.
Limpiar la caché del esquema del modelo con bin/cake schema_cache clear
. La página Herramienta de esquemas de caché (Schema Cache)
tiene más información sobre este comando.