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.