Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Instalar proyecto Web de Symfony2 en el servidor

20 de agosto de 2014

Hola,

Es mi primera vez instalando un proyecto en un servidor. En mi proyecto utilizo Symfony2 como framework y Mongodb como base de datos. Estoy intentando hace las instalaciones y no entiendo bien varias cosas y me gustaría que alguien me explicara mejor cada cosa por favor.

Antes de nada, mi servidor es Centos. Instalé Apache como servidor Web, PHP y MongoDB. Ahora no sé si con esto es suficiente para poder instalar la carpeta de mi proyecto, y en qué carpeta exactamente hay que ponerlo. Otra cosa, por ahora desde localhost puedo acceder a un fichero html que creé en /var/www/html pero desde la dirección IP directamente se queda pensando y luego falla la conexión y no sé que es exactamente lo que no estoy contemplando.

Gracias de antemano.


Respuestas

#1

@LamiaaBcr si ya tienes Apache y PHP bien instalados y configurados, ya lo tienes todo para ejecutar aplicaciones Symfony2. Como entiendo que el proyecto no lo has desarrollado en el servidor sino en otro ordenador, lo que tienes que hacer es copiar todas las carpetas de la aplicación Symfony2 salvo app/cache/, app/logs/ y vendor/`.

El contenido de las carpetas cache y logs no hace falta copiarlo al servidor porque se regenera cada vez que se ejecuta la aplicación por primera vez. La carpeta vendor/ no hace falta copiarla porque son miles y miles de archivos y existe una forma mucho más sencillo de hacerlo.

Si utilizas Symfony2 es seguro que usas Composer, la herramienta con la que todas las aplicaciones PHP gestionan sus dependencias. Así que si copias el proyecto sin la carpeta vendor/, puedes regenerarla muy fácil en el servidor ejecutando el comando composer install dentro de la carpeta del proyecto. Puedes leer el manual oficial de Composer si necesitas más información o pregúntanos en este foro cualquier duda que tengas con Composer.

Después de pasar todas las carpetas de la aplicación Symfony, lo que tienes que hacer es configurar bien Apache. Lo más fácil es que utilices este configurador online publicado por el sitio symfony.es para saber qué tienes que poner exactamente en la configuración de tu servidor Apache.

Por otra pare, aunque te recomiendo que ahora mismo no lo utilices porque es mejor aprender a instalar aplicaciones Symfony a mano, existe un proyecto llamado Capifony cuyo objetivo es simplificar al máximo la instalación de aplicaciones Symfony.

En cualquier caso, como es difícil que la primera vez todo funcione bien, vete paso a paso instalando la aplicación y no dudes en preguntar aquí cualquier duda que tengas o cualquier problema que se produzca.

@javiereguiluz

20 agosto 2014, 22:14
#2

Muchísimas gracias por tu aportación @javiereguiluz Voy a probar con lo que me has dicho. :)

@LamiaaBcr

20 agosto 2014, 22:51
#3

La verdad que no me va bien esto. Seguro que no estoy haciendo bien algo pero hay algunos comandos que dan fallo a la hora de reiniciar apache y cuando los he quitado me ha salido otro fallo:

httpd: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName

Parece que no me estoy enterando de algo

@LamiaaBcr

21 agosto 2014, 21:30
#4

Me temo que están sucediendo muchas cosas a la vez y por eso deberíamos ir paso a paso. Lo primero que me gustaría saber es si cuando te refieres a que estás instalando la aplicación en un servidor, estás diciendo que es un servidor público que está en algún hosting o si es tu propio ordenador local.

Por ejemplo el error que mencionas es porque falta alguna cosa para configurar Apache del todo bien. En concreto te falta indicar un valor en la directiva ServerName del archivo httpd.conf de Apache. Si tu servidor es local, solucionarlo es tan fácil como incluir lo siguiente:

ServerName localhost

El siguiente paso sería configurar bien el virtual host para tu aplicación. De nuevo todo depende de si es un servidor local o un servidor público. Danos por favor más información y así podremos guiarte hasta el final.

@javiereguiluz

21 agosto 2014, 23:43
#5

Hola,

Es un servidor privado lo que utilizo.

En la pregunta anterior utilicé la configuración que sale en symfony.es tal cual.

Pero ahora, he vuelto a configurarlo manteniendo la estructura por defecto solo poniendo mi ServerName y directorio y root. Ahora bien, en el indexdirectory cuando pongo app.php en vez de cargarme la página cuando pongo mi IP, me carga el contenido del fichero en si. No sé si hay que hacer algo más o si es indispensable el hecho de utilizar el VirtualHost.

Si quieres te vuelvo a poner aqui el contenido del fichero.

Gracias de antemano.

@LamiaaBcr

22 agosto 2014, 13:46
#6

Me temo que colocar toda la aplicación Symfony directamente en el directorio raíz del servidor es una práctica peligrosa y que se desaconseja siempre. Por eso a continuación te indico cómo deberías instalar el proyecto Symfony2 en tu servidor, que sigue el mismo método que cualquier aplicación PHP moderna y profesional.

Imaginemos que has desarrollado un proyecto que se llama "mi-proyecto" cuyo código fuente se encuentra en "/home/usuario/proyectos/mi-proyecto/". Para ejecutar el proyecto localmente en tu ordenador, vas a acceder a el a través del navegador mediante la URL http://mi-proyecto.dev/.

Con todo esto, lo que tienes que hacer es:

// si no tienes Composer instalado globalmente, ejecuta esto
$ curl -sS https://getcomposer.org/installer | php 
$ sudo mv composer.phar /usr/local/bin/composer
 
// entra en el directorio donde guardas tus proyectos
$ cd /home/usuario/proyectos/
 
// crea un proyecto Symfony2 vacío en mi-proyecto/
$ composer create-project symfony/framework-standard-edition mi-proyecto/ "2.5.*"

Ahora debes configurar un host virtual para tu proyecto. Edita el archivo /etc/hosts y añade la siguiente línea:

127.0.0.1    mi-proyecto.dev

Y por último, configura el virtual host en Apache. Abre el archivo de configuración del servidor y añade lo siguiente (que es una versión simplificada de la configuración que se recomienda para loa servidores de producción y es la que puedes encontrar en el sitio symfony.es):

<VirtualHost * :80>
    ServerName      mi-proyecto.dev
    ServerAlias     www.mi-proyecto.dev
 
    DocumentRoot    "/home/usuario/proyectos/mi-proyecto.dev/web"
    DirectoryIndex  app.php
 
    <Directory "/home/usuario/proyectos/mi-proyecto.dev/web">
        AllowOverride None
        Allow from All
 
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>
</VirtualHost>

Ahora ya puedes programar tu aplicación Symfony2 y ver los progresos accediendo con tu navegador a http://mi-proyecto.dev/. Si quieres acceder al entorno de desarrollo, utiliza http://mi-proyecto.dev/app_dev.php

Espero que ahora esté todo un poco más claro.

@javiereguiluz

22 agosto 2014, 15:46