Instalar Symfony en un servidor

Pasos para instalar una aplicación Symfony2 en un alojamiento web o servidor

Instalar Symfony en un servidor o "hacer deploy" para subir la aplicación a la web se puede hacer en unos pocos pasos, pero hay que tener lista la configuración del servidor para que no de problemas:

  • Lo primero es necesario asegurarse de tener la última versión de PHP instalada. La mínima obligatoria es PHP 5.4 para Symfony2, pero para Symfony3 será PHP 5.5 o incluso una superior.

  • Sube los archivos al servidor. Esto se puede hacer manualmente mediante FTP/SCP o utilizado algún Sistema de Control de Versiones como git, que es lo más recomendable. En mi caso yo utilizo Bitbucket para almacenar mis trabajos y luego los paso directamente a un servidor VPS. También pueden emplearse herramientas como Capifony que a veces evitan quebraderos de cabeza.

    Si utilizas una plataforma como servicio PaaS (Platform as a Service) como Heroku, te será más sencillo instalar Symfony, ya que suele estar todo preparado y con guías específicas para PHP y frameworks concretos como Symfony o Laravel.

  • Instala las dependencias. Mediante composer, puedes hacerlo con "composer install" o hacerlo directamente con "composer update". Al hacer este paso te pedirá los datos del parameters.yml si no lo has subido (si usas git este archivo está en el .gitignore).

  • Instala las bases de datos. Mediante el código "php app/console doctrine:schema:create" para crear la estructura de tablas. Si quieres instalar algunos fixtures también puedes con "php app/console doctrine:fixtures:load".

  • Limpia la caché. Básicamente con "php app/console cache:clear" y "php app/console cache:clear --env=prod" para el entorno de producción.

Una vez está hecho lo básico, ahora es el momento de comprobar y asegurar el buen funcionamiento. Existe un código que te permite saber si tu servidor tiene las necesidades básicas o más recomendables para Symfony:

php app/check.php

Si no tienes instalada alguna extensión de PHP como Intl te lo indicará.

Instala los archivos o assets. Si utilizas Assetic tan sólo tienes que escribir un código:

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

Aunque también se instalan al hacer composer install o update.

Cambiar la url principal de Symfony "/web"

Symfony tiene los archivos públicos de la aplicación en el directorio /web. Haciendo una instalación normal como la anterior para acceder tendrás que ir a la url ejemplo.com/web. Hay varias soluciones:

  • Hacer un RewriteBase en el .htaccess. Esta opción no es nada recomendable, ya que los archivos internos de tu aplicación estarán disponibles al público.

  • Cambiar el directorio /web y llamarlo _/publichtml, puedes hacerlo en el archivo composer.json:
        "extra": {
            ...
            "symfony-web-dir": "public_html"
        }

Pero para esto tendrás que tener los archivos internos en la carpeta /home, donde probablemente haya más archivos y dará problemas con git.

  • Cambiar el Document Root o dominio primario. Esta es la opción más recomendable. Necesitas tener acceso como root o sino preguntar en tu hosting para cambiar el Document Root. En Apache, accede mediante SSH y escribe:
    vim /var/cpanel/userdata/usuario/ejemplo.com

Usuario será el nombre de tu cuenta cPanel. Modifica el apartado documentroot:

    documentroot: /home/usuario/public_html/web

Reinicia Apache

    service httpd restart

Es posible que tengas que instalar Node.js si no lo tienes instalado para utilizar Assetic o el módulo LESS de Node si lo utilizas.