Saludos , voy a describir el proceso de despliegue y puesta en produccion de una aplicacion Symfony 2. Informo de antemano que es en base a unas pruebas que he realizado para probar el servidor en que desplegare proximamente un proyecto asi que no es muy tecnico y tal vez no sea la manera mas adecuada pero al final cumple con el objetivo.
Asi que agradezco la retroalimentacion y mejoras que podamos incluir en el hilo para poder tener una base de guia.
El proceso consta de varios pasos:
1. Una vez que tengas ya tu proyecto listo , a nivel local debes destruir la base de datos que tengas creada para crearla nuevamente a partir de las entidades del proyecto, esto asegura realmente el como sera la base de datos final con la del proyecto, esto a que se debe muchas veces se hacen proyectos en donde se realiza la base de datos por separado y luego la importamos al proyecto, asi que hay que tener presente que la importacion no es tan fiel a la original por tratarse de un proceso de ingenieria inversa asi que es una forma de estar seguros que la base de datos esta acorde totalmente con las entidades; luego de ello podemos emplear en mi caso que uso mysql , usemos phpyadmin para exportar la base de datos que acabamos de crear y con ello la creamos en el hosting. Previamente en el hosting debemos de tener ya creada la base de datos vacia asi como el usuario , esto se hace en muchos casos empleando el administrador del hosting, en mi caso se emplea es CPanel.
2. Luego debemos crear una carpeta en la raiz del hosting para almacenar todo el proyecto, ya que en la parte publica del hosting ira todos los archivos que estan en la carpeta web del proyecto. Lo que he realizado es vaciar el contenido de la carpeta web en el public_html, y consecuentemente elimino la carpeta web ya que no servira de nada haciendo esto.
3. Luego de ya creada la base de datos procedemos a modificar los valores en el archivo parameter en donde le colocamos los valores como son nombre de la base de datos que se creo en el hosting, el nombre del usuario y el password. Lo referente al manejo y configuracion para el gestor de correo no tengo informacion al respecto pues no he llegado hasta ahi.
4. ahora viene una lista de archivos a borrar.
En la carpeta publica eliminamos: App_dev.php , el config.php
En la carpeta app del proyecto eliminamos: El contenido de la carpeta cache, el contenido de la carpeta logs,
En la carpeta src eliminamos la carpeta Acme
Dentro de la carpeta App/config eliminamos: config_dev.yml, config_test.yml, routing_dev.yml , se debe tener presente que las rutas de su proyecto en i caso lo he hecho estan dentro del archivo routing.yml asi como las modificaciones en el config.yml
Eliminamos el archivo check.php que esta dentro de la carpeta app.
5. Ahora viene una lista de archivos a modificar.
El archivo app.php que esta en la carpeta publica , en donde indican las 3 primeras lineas, debemos adecuar la direccion para que pueda localizar la carpeta del proyecto en donde debes tantos /../ para poder el controlador frontal encontrar el proyecto. ahora en la linea que dice
$kernel = new AppKernel('prod', false);
debemos cambiar el false por true quedando asi
$kernel = new AppKernel('prod', true);
En caso de querer puedes habilitar se hace eliminando las barras de comentarios , la tercera linea donde hace referencia a AppCache.php y ademas la que dice $kernel = new AppCache($kernel); no tengo aun conocimiento de la funcion que cumplen, asi que personalmente aun no las he habilitado.
Ya con esto queda la aplicacion lista. Ahora si no les ingresa a la pagina como fue mi caso, deben verificar si les ingresa colocando en la direccion del navegador el nombre del controlador frontal, si ven que ahi si les ingresa a la pagina significa que tienen que desactivar la reescritura de las direcciones asi que vayan al archivo .htacces que esta en la carpeta publica y modifique la linea que dice
RewriteEngine On
cambienla que quede
RewriteEngine Off
ahora tener presente no cambiar el nombre del controlador app.php por el de index deben mantenerlo asi ya que de lo contrario podran ingresar al pagina principal pero no la de los proyectos.
Ahora en vista de que ya les aparece correctamente en los enlaces la direccion completa incluyendo el nombre del controlador se presenta otra cosa y es que si ingresan en la direccion web principal del proyecto no les ingresa por que el busca un archivo index.php o index.html y en el caso el controlador es app.php. Para solucionar esto y considero que es un hack hacerlo pero por el momento no he encontrado alguna solucion mejor deben crear un archivo llamado index.html dentro de la carpeta publica y colocar dentro la instruccion de redireccion como esta
<html>
<head>
<meta http-equiv="Refresh" content="0;URL=http://direccionwebdelproyecto.com/app.php" />
</head>
<body>
</body>
con esto ya queda solucionado lo del ingreso por la pagina principal y de ahi en adelante ya todas los enlaces y redirecciones del proyecto funcionan bien.
NOTA: 1. Este proceso que he descrito es en base a mi experiencia en el proceso de pruebas para probar el servidor de producción, así que muy seguramente que debe haber otro método mejor para hacerlo pero en vista de que no encontré información al respecto me di a la tarea de probar por mi cuenta y plasmar aquí esa experiencia. Así que son bienvenidos todos los comentarios para mejorar el proceso anteriormente descrito.
2. Si alguien sabe como solucionar mejor el problema del direccionamiento de la pagina principal hacia el proyecto, por favor cuentenos como hacerlo.
3. Este proceso se realizo teniendo en cuenta que el hosting donde sera desplegado el proyecto es un servidor compartido por el cual no tengo acceso a modificarle nada su configuracion y a la que se puede acceder para subir, bajar archivos y administrar el sitio solo es por CPanel que ofrece el proveedor del hosting por lo tanto no hay forma de acceder por consola, todo es desde solamente el navegador web
Si encuentras la solucion a tu problema no olvides postearla, es por el beneficio de todos en la lista.
Atentamente,
Hely Suarez Marin
Desarrollador PHP Symfony
Miembro del Semillero de Investigación y Desarrollo de Software Libre UFPS
No a la Piratería de Software !Sea Legal con Colombia! Usa Software Libre...
Cúcuta