Instalar Symfony2 en un ambiente compartido

Este artículo forma parte de la serie Symfony2

Symfony2 es una plataforma de trabajo orientada a componentes desacoplados y reutilizables creados con el objetivo de acelerar el desarrollo de aplicaciones web.

Symfony2 ha sido reescrito desde cero basado en el principio «Separation of concerns» y con una fuerte base en la especificación HTTP implementando patrones de diseños como: Inyección de Dependencias (Dependency Inyection), Observer, Brigde, otros; está muy bien integrado al ORM Doctrine posee una activa comunidad y una buena documentación. No obstante en su sitio oficial no se hace referencia a: Como instalar Symfony2 de modo que pueda usarse en varios proyectos a la vez o sea en un ambiente compartido, por tanto esté artículo esta enfocado en esa dirección

Nota: Este procedimiento ha sido probado en un Servidor CentOS 5.7

Instalar componentes

#
# Copyleft LibreByte
# Licence: GPL
# Flossblog en Github
# https://github.com/yoander/sysadmin/blob/master/shscript/sf2-bundles
#
#!/usr/bin/env bash
if (($1 == 'update'))
then
    pear update -c symfony2
    pear update -c doctrine
    pear update -c twig
    exit
fi

#Symfony 2
pear channel-discover pear.symfony.com
COMPONENTS="BrowserKit ClassLoader Config Console CssSelector DependencyInjection DoctrineBridge DomCrawler Finder Form Locale MonologBridge Process Routing Security Serializer Templating Translation TwigBridge Validator Yaml"
for component in $COMPONENTS
do
    pear install symfony2/$component
done

# Doctrine ORM
pear channel-discover pear.doctrine-project.org
pear install doctrine/DoctrineORM

#Twig
pear channel-discover pear.twig-project.org
pear install twig/Twig

Instalar Bundles

#
# Copyleft LibreByte
# Licence: GPL
# Flossblog en Github
# https://github.com/yoander/tools.git
#
#!/usr/bin/env bash
VERSION=$1
[[ '' == $VERSION ]] && { echo "Debe especifícar la versión de Symfony2"; exit; }

wget  http://symfony.com/download?v=Symfony_Standard_Vendors_$VERSION.tgz -P /tmp

tar xzvf /tmp/Symfony_Standard_Vendors_$VERSION.tgz -C /tmp

# Suppose you use sudo
sudo rsync -avz --no-p --no-o --no-g /tmp/Symfony/vendor/symfony/src/Symfony/{Bundle,Bridge} /usr/share/pear/Symfony/

sudo rsync -avz --no-p --no-o --no-g /tmp/Symfony/vendor/bundles/Symfony/Bundle /usr/share/pear/Symfony/

sudo rsync -avz --no-p --no-o --no-g /tmp/Symfony/vendor/bundles/{JMS,Sensio} /usr/share/php/

sudo rsync -avz --no-p --no-o --no-g /tmp/Symfony/vendor/monolog/src/Monolog /usr/share/php/

sudo rsync -avz --no-p --no-o --no-g /tmp/Symfony/vendor/assetic/src/Assetic /usr/share/php/

Desplegar al servidor Web

$ sudo rsync -avz --no-p --no-o --no-g --exclude="vendor" /tmp/Symfony /var/www/

Abrimos el app/autoload.php y agregamos lo siguiente

$os = php_uname('s');
$fallback = '';
if ('Windows NT' === $os || 'WINNT' === $os) {
   $fallback = explode(';', get_include_path());
}
if (empty($fallback)) {
   $fallback = explode(':', get_include_path());
}
$loader->registerNamespaceFallbacks($fallback);
$loader->registerPrefixFallbacks($fallback);

Cambiar permisos al dir cache y logs

$ sudo chmod -c 777 /var/www/Symfony/app/{cache,logs}

Crear Virtual host y apuntar al dir /var/www/Symfony/web

Instalar y configurar Apache HTTP server en CentOS / Fedora/ RHEL

Lecturas recomendadas

Proyecto oficial Symfony

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.