Pere Garriga

Entorno de desarrollo y producción en Yii2

Una de les cosas que me gustó mucho cuando empecé con el framework de PHP, Yii2, fue la posibilidad de disponer distintas configuraciones para entorno de desarrollo y entorno de producción. En este post intentaré explicar un poco esta herramienta y como nos ayudará al día día de de nuestro proyecto.

¿Como configurar el entorno de desarrollo y producción?

En la siguiente imagen, se puede apreciar la estructura básica de una aplicación avanzada de Yii2.

Imagen estructura de los entornos de desarrollo y producción

Resaltado con azul, encontramos el directorio de environments, donde configuraremos las distintas configuraciones, tanto de producción (prod), como de desarrollo (dev).

Configurando index.php

En este archivo, configuraremos, entre otras cosas, los permisos de nuestro proyecto tanto en el entorno de desarrollo, como en el de producción. Por defecto, Yii2 viene con esta configuración:

return [
    'Development' => [
        'path' => 'dev',
        'setWritable' => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
        ],
        'setExecutable' => [
            'yii',
            'tests/codeception/bin/yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
        ],
    ],
    'Production' => [
        'path' => 'prod',
        'setWritable' => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
        ],
        'setExecutable' => [
            'yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
        ],
    ],
];

Como podemos observar, tanto en el entorno de desarrollo, como en el de producción, daremos los mismos permisos de escritura, pero no de ejecución.

Además, Yii2 nos permite crear nuestros propios entornos, como por ejemplo, nos podría interesar tener un entorno beta para que solo algunos usuarios probaran las nuevas mejoras de nuestro proyecto. Para ello, simplemente deberíamos cambiar el name y el path de la configuración de este entorno en el archivo de index.php

 

Configurando cada entorno

El siguiente paso para tener correctamente configurados nuestros entornos, será configurar cada modulo para cada entorno. Por ejemplo, en el directorio common/config, que alberga la configuración común de todos los módulos del proyecto, podremos configurar los datos de conexión a la base de datos en el entorno de Desarrollo, que obviamente, serán distintos que los datos de conexión del entorno de producción.

Además, también podremos configurar parámetros específicos de cada entorno. Por poner un ejemplo, supongamos que tengamos un proyecto donde los usuarios pueden hacer alguna compra a través de Paypal, pues nosotros podríamos configurar Desarrollo para que apunte al Sandbox, y Producción al propio Paypal. Por otra banda, también podremos hacer los mismo con la configuración y los parámetros en todos los módulos del proyecto.

Captura de pantalla 2016-03-18 a las 22.09.15

 

Para finalizar, simplemente deberemos hacer un “php init” y seleccionar el environment deseado. Automáticamente se seleccionaran todas las configuraciones correctas.

1 Comment

  1. Amigo podrías ampliar un poco más el tema, por ejemplo lo de configurar cada entorno, poder decir que archivos, como viene originalmente y que se debe poner para caba ambiente, muchas gracias.

Leave a Comment