Juan Rabadan

19Jan/100

Entornos de configuración dinámica

Cuando comenzamos a desarrollar un proyecto web por lo general lo hacemos en nuestros servidores de desarrollo, luego hacemos algunas pruebas en el servidor del cliente (estado conocido como staging) y por último ponemos la aplicación online en el servidor de producción.

La idea de este artículo es comentarles como podemos configurar de manera dinámica estos tres escenarios.

Suponiendo que el servidor de desarrollo será http://app1.servidoruno.com.ar, el servidor de staging será http://pruebas.app1.com y por último el servidor de producción será http://www.app1.com.

Lo primero que haremos será definir dos variables estáticas en el archivo de configuración config.php, el que se encuentra dentro de /{application}/config/

Allí pondremos el siguiente código

define('DEV_SERVER_NAME', 'http://app1.servidoruno.com.ar');
define('STA_SERVER_NAME', 'http://pruebas.app1.com');

Luego agregaremos un bloque switch para definir la variable base_url de cada uno de los escenarios.

switch ($_SERVER['SERVER_NAME']) {
case DEV_SERVER_NAME:
//servidor de desarrollo
$config['base_url'] = "http://app1.servidoruno.com.ar/";
break;
case STA_SERVER_NAME:
// servidor de staging
$config['base_url'] = "http://pruebas.app1.com";
break;
default:
// servidor de producción
$config['base_url']    = "http://www.app1.com";
break;
}

Ahora haremos algo similar pero relacionado con las diferentes configuraciones de las bases de datos de los 3 escenarios.

Dentro de la carpeta /{application}/config/ hay un archivo database.php en el que agregaremos un bloque switch para definir cual será el "active_group"

switch ($_SERVER['SERVER_NAME']) {
case DEV_SERVER_NAME:
// servidor de desarrollo
$active_group = "dev";
break;
case STAG_SERVER_NAME:
// servidor de staging
$active_group = "sta";
break;
default:
// servidor de producción
$active_group = "pro";
break;
}

Luego crearemos los tres bloques para cada escenario con cada uno de los parámetros necesarios.
$db['dev']['hostname'] = "localhost";
$db['dev']['username'] = "DEV_USERNAME";
$db['dev']['password'] = "DEV_PASSWORD";
$db['dev']['database'] = "DEV_DATABASENAME";
$db['dev']['dbdriver'] = "mysql";
$db['dev']['dbprefix'] = "";
$db['dev']['pconnect'] = FALSE;
$db['dev']['db_debug'] = TRUE;
$db['dev']['cache_on'] = FALSE;
$db['dev']['cachedir'] = "";
$db['dev']['char_set'] = "utf8";
$db['dev']['dbcollat'] = "utf8_general_ci";
$db['sta']['hostname'] = "localhost";
$db['sta']['username'] = "STG_USERNAME";
$db['sta']['password'] = "STG_PASSWORD";
$db['sta']['database'] = "STG_DATABASENAME";
$db['sta']['dbdriver'] = "mysql";
$db['sta']['dbprefix'] = "";
$db['sta']['pconnect'] = FALSE;
$db['sta']['db_debug'] = TRUE;
$db['sta']['cache_on'] = FALSE;
$db['sta']['cachedir'] = "";
$db['sta']['char_set'] = "utf8";
$db['sta']['dbcollat'] = "utf8_general_ci";
$db['pro']['hostname'] = "localhost";
$db['pro']['username'] = "LIVE_USERNAME";
$db['pro']['password'] = "LIVE_PASSWORD";
$db['pro']['database'] = "LIVE_DATABASENAME";
$db['pro']['dbdriver'] = "mysql";
$db['pro']['dbprefix'] = "";
$db['pro']['pconnect'] = FALSE;
$db['pro']['db_debug'] = TRUE;
$db['pro']['cache_on'] = FALSE;
$db['pro']['cachedir'] = "";
$db['pro']['char_set'] = "utf8";
$db['pro']['dbcollat'] = "utf8_general_ci";

Artículos relacionados:

  1. Funciones para extender el date helper en CodeIgniter
  2. Funciones para incluir en nuestros helpers de codeigniter
  3. Colección de screencast sobre CodeIgniter
  4. El archivo application.php
  5. Desarrollando aplicaciones web con CodeIgniter
Comentarios (0) Trackbacks (0)

No hay comentarios para esta nota.


Comenta esta nota


No trackbacks yet.