Configurar un entorno ideal de Symfony
Condiciones iniciales
Se piensa en un entorno que:- Permita mantener entornos independientes para 3 desarrolladores.
- Permita mantener sincronizado el código de forma fácil con un repositorio de código.
- Optimice el contenido para evitar repetir la información estática entre entornos.
Configuración del espacio de cada desarrollador
Para el caso que nos ocupa se ha optado por una estructura del tipo: Sobre esta estructura están mapeados 3 Virtual Host, uno para cada desarrollador. Estas rutas además son accesibles por SAMBA para facilitar su manipulación en Zend desde Windows (el caso que se tratará aquí). Así pues si ahora dejamos un archivo /data/dev1.mydomain/www/index.php con su pertinente echo "Hello World!"; podremos acceder directamente al mismo desde http://dev1.mydomain siempre que tengamos correctamente configurado correctamente el archivo archivo hosts.Instalación de Symfony
Se ha optado por la instalación de Symfony vía SVN checkout entre otras razones para poder aplicar parches de forma rápida. También se ha optado por esta opción ya que para compartir las librerías en el servidor de desarrollo esta es una de las mejores opciones. Vamos a suponer que el espacio de desarrollo (no donde apuntan los vhosts) es /data. Así pues se hace un checkout mediante el comandosvn co http://svn.symfony-project.com/branches/1.1
o
svn co http://svn.symfony-project.com/tags/RELEASE_1_1_4
Creado un proyecto symfony
En este momento tenemos configurados convenientemente los 3 vhosts y las librerías de symfony listas para poder trabajar, así que lo que nos falta es configurar un proyecto de Symfony que haga uso de las mismas. Este tipo de instalación de symfony (SVN checkout) espera que ya exista una estructura de proyecto creada, como este no es el caso, tenemos que procurarnos una, bien a través de la descarga de la SandBox bien a partir de la creación de una sandbox desde nuestra instalación a de Symfony.[data/dev1.mydomain] $ cd /data/common/symfony/1.1/data/bin [data/common/symfony/1.1/data/bin]$ ./create_sandbox.sh [data/common/symfony/1.1/data/bin]$ rm sf_sanbox.zip [data/common/symfony/1.1/data/bin]$ tar xvf sf_sandbox.tgz [data/common/symfony/1.1/data/bin]$ rm xvf sf_sandbox.tgz [data/common/symfony/1.1/data/bin]$ mv sf_sandbox/* /data/d1.mydomain/
[data/common/symfony/1.1/data/bin]$ cd /data/d1.mydomain [dev1.mydomain] $ ./symfony -V
> symfony version 1.1.5-DEV (/data/common/symfony/1.1/lib)
Reconectando las librerías
Bien, lo que nos interesa ahora es desenchufar el proyecto de la versión incorporada en la SandBox para que haga uso de las librerías descargadas y residentes en /data/symfony. Esto se consigue editando /data/dev1.mydomain/config/ProjectConfiguration.class.php<?php
require_once dirname(__FILE__).
'/../../common/symfony/1.1/lib/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
// ...
}[dev1.mydomain]$ rm -r lib/symfony/
[dev1.mydomain]$ mv web www
<?php
require_once dirname(__FILE__).
'/../../common/symfony/1.1/lib/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
$this->setWebDir($this->getRootDir().'/www');
}[dev1.mydomain]$ rm -r www/sf/ [dev1.mydomain]$ ln -s /data/common/symfony/1.1/data/web/sf/ www/sf
[dev1.mydomain]$ rm -r data/symfony [dev1.mydomain]$ rm data/sandbox.db
Configuración de más áreas compartidas
En el apartado anterior hemos visto como se ha eliminado el directorio /sf que viene con la distribución de la SandBox para que pase a unificarse en una ruta única para todas los entornos de desarrollo. Estos han tenido que crear un link simbólico a ese nuevo /sf. Esta misma filosofía se sigue para otra información, que llamaremos estática y que no interesa replicar en cada entorno, para este objeto se piensa en:- Tenemos la necesidad de crear una ruta (que no es código) a la que deben tener acceso todos los entornos de desarrollo (por ejemplo /images/user_avatars).
- Si es algo común (no único de un entorno) se deja en /data/common/
- Se procede a la creación de los links simbólicos (mediante ln -s) desde los entornos de desarrollo.