Instalando el recinto de seguridad del CMF

Esta guía muestra cómo instalar el recinto de seguridad del CMF de Symfony, una demostración de la plataforma dirigida a exhibir las características básicas de la herramienta corriendo en un entorno demo. La puedes usar para evaluar la plataforma o para ver código real en acción, ayudándote a entender la herramienta.

Si bien lo puedes utilizar tal cual, este recinto de seguridad no pretende ser una plataforma de desarrollo. Si estás buscando instrucciones de instalación para una configuración de desarrollo, por favor revisa:

Requisitos previos

Debido a que el CMF de Symfony está basado en Symfony2, deberías asegurarte de que cubres los Requisitos para que funcione Symfony2. Git 1.6+, Curl y PHP Intl también son necesarios para seguir los pasos de instalación enumerados más adelante.

If you wish to use Jackalope + Apache JackRabbit as the storage medium (recommended), you will also need Java (JRE). Para otros mecanismos y sus requisitos, por favor refiérete a sus respectivas secciones.

Instalando

Apache Jackrabbit

El recinto de seguridad del CMF de Symfony de manera predeterminada usa Jackalope con Apache JackRabbit. Puedes configurar métodos de almacenamiento alternativo, pero este es el más probado, y debería ser el más fácil de configurar.

Puedes conseguir la más reciente versión de Apache Jackrabbit en la página de descarga oficial del proyecto. Para lanzarlo, usa la siguiente orden:

java -jar jackrabbit-standalone-*.jar

By default the server is listening on the 8080 port, you can change this by specifying the port on the command line.

java -jar jackrabbit-standalone-*.jar --port 8888

For unix systems, you can get the start-stop script for /etc/init.d here

Consiguiendo el código del recinto de seguridad

El código fuente del recinto de seguridad del CMF de Symfony está disponible en github. Para conseguirlo usa:

git clone git://github.com/symfony-cmf/cmf-sandbox.git

Ve al directorio y copia los archivos de configuración predefinidos:

cd cmf-sandbox
cp app/config/parameters.yml.dist app/config/parameters.yml
cp app/config/phpcr_jackrabbit.yml.dist app/config/phpcr.yml

These two files include the default configuration parameters for the sandbox storage mechanism. Los puedes modificar para cubrir mejor tus necesidades.

Nota

The second configuration file refers to specific jackalope + jackrabbit configuration. There are other files available for different stack setups.

Next, get composer and install and the necessary bundles (this may take a while)

curl -s http://getcomposer.org/installer | php --
php composer.phar install

Nota

En Windows necesitas ejecutar el intérprete de ordenes como administrador o editar el archivo composer.json`y cambiar la línea `“symfony-assets-install”: “symlink”`` a "symfony-assets-install": "". Si fallas al hacerlo podrías recibir:

[Symfony\Component\Filesystem\Exception\IOException]
Imposible crear el enlace simbólico debido al error código 1314: 'El cliente no cuenta con un privilegio requerido'. ¿Tienes el privilegio de administrador requerido?

Preparando el repositorio PHPCR

Now that you have all the code, you need to setup your PHPCR repository. PHPCR organizes data in workspaces, and sandbox uses the “default” workspace, which is exists by default in Jackrabbit. If you use other applications that require Jackrabbit, or if you just wish to change the workspace name, you can do so in app/config/phpcr.yml. La siguiente orden creará un nuevo espacio de trabajo llamado «sandbox» en Jackrabbit. Si decides utilizar el espacio de trabajo «default», la puedes omitir.

app/console doctrine:phpcr:workspace:create sandbox

Once your workspace is set up, you need to register the node types for phpcr-odm:

app/console doctrine:phpcr:repository:init

Import the fixtures

La interfaz de administración sigue en una etapa temprana. Hasta que mejore, lo más fácil es crear los datos programáticamente. La mejor manera de hacerlo es con los accesorios de Doctrine. El DoctrinePHPCRBundle incluido en el repositorio symfony-cmf proporciona una orden para cargar accesorios.

app/console -v doctrine:phpcr:fixtures:load

Ejecuta esta orden para cargar los accesorios desde el MainBundle del recinto de seguridad, la cual poblará tu repositorio con datos maniquí, es decir, carga las páginas demo.

Accediendo a tu recinto de seguridad

El recinto de seguridad ahora debería ser accesible en tu servidor web.

http://localhost/app_dev.php

Para ejecutar el recinto de seguridad en modo de producción necesitas generar los delegados de Doctrine y volcar los activos de assetic:

app/console cache:warmup --env=prod --no-debug
app/console assetic:dump --env=prod --no-debug

Mecanismos de almacenamiento alternativo

El CMF de Symfony y el recinto de seguridad son de almacenamiento agnóstico, lo cual significa que puedes cambiar el mecanismo de almacenamiento sin tener que cambiar tu código. El mecanismo de almacenamiento predefinido para el recinto de seguridad es Jackalope + Apache Jackrabbit, puesto que es la configuración más probada y estable. Sin embargo, hay otras alternativas disponibles.

Jackalope + DBAL de Doctrine

Nota

De manera predeterminada, cuándo utilizas el DBAL de Doctrine, los datos se almacenan utilizando una base de datos Sqlite. Revisa la página del proyecto para instrucciones de instalación. Si deseas utilizar otros sistemas de base de datos, cambia los parámetros de configuración en el archivo app/config/parameters.yml. Consulta la página sobre la configuración del DBAL de Doctrine en Symfony o la documentación de Doctrine para más información.

Ve al directorio del recinto de seguridad y copia el archivo de configuración predefinido para configurar el DBAL de Doctrine:

cd cmf-sandbox
cp app/config/phpcr_doctrine_dbal.yml.dist app/config/phpcr.yml

Next, you need to install the actual Doctrine DBAL bundle required by jackalope:

php composer.phar require jackalope/jackalope-doctrine-dbal:dev-master

Y crea e inicia tu base de datos:

app/console doctrine:database:create
app/console doctrine:phpcr:init:dbal

Después de esto, deberías seguir los pasos en Preparando el repositorio PHPCR.

Memorizando en caché con Doctrine

Opcionalmente, para mejorar el rendimiento y habilitar los metadatos, puedes instalar LiipDoctrineCacheBundle escribiendo la siguiente orden:

php composer.phar require liip/doctrine-cache-bundle:dev-master

And adding the following entry to your app/AppKernel.php:

// app/AppKernel.php
public function registerBundles()
{
  $bundles = array(
      // ...
      new Liip\DoctrineCacheBundle\LiipDoctrineCacheBundle(),
      // ...
  );
}

Finalmente descomenta las opciones de caché en el archivo phpcr.yml así como las de liip_doctrine_cache en el archivo config.yml.

# app/config/phpcr.yml
caches:
    meta: liip_doctrine_cache.ns.meta
    nodes: liip_doctrine_cache.ns.nodes
# app/config/config.yml

# jackalope doctrine caching
liip_doctrine_cache:
    namespaces:
        meta:
            type: file_system
        nodes:
            type: file_system

Proveyendo PHPCR para Midgard2

Si quieres correr el recinto de seguridad del CMF con el proveedor PHPCR de Midgard2 en vez de Jackrabbit, necesitas instalar la extensión midgard2 de PHP. En sistemas Debian/Ubuntu actuales, esto se hace simplemente con:

sudo apt-get install php5-midgard2

En OS X lo puedes instalar utilizando cualquier Homebrew con:

brew install midgard2-php

o MacPorts con

sudo port install php5-midgard2

You also need to download midgard_tree_node.xml and midgard_namespace_registry.xml schema files, and place them into “<your-midgard2-folder>/schema” (defaults to “/usr/share/midgard2/schema”)

To have the Midgard2 PHPCR implementation installed run the following additional command:

php composer.phar require midgard/phpcr:dev-master

Finalmente, cambia uno de los archivos de configuración de Midgard2:

cp app/config/phpcr_midgard_mysql.yml.dist app/config/phpcr.yml

o

cp app/config/phpcr_midgard_sqlite.yml.dist app/config/phpcr.yml

After this, your should follow the steps in `Preparing the PHPCR repository`_ to continue the installation process.

Bifúrcame en GitHub