Ver índice de contenidos del libro

1.11. Configurar correctamente el servidor web

Una buena práctica web consiste en colocar en el directorio raíz del servidor web solamente los archivos que necesitan los navegadores, como las hojas de estilos, los archivos JavaScript y las imágenes. Nuestra recomendación es que guardes todos estos archivos en el subdirectorio web/ del proyecto Symfony.

Si echas un vistazo a este directorio, verás algunos subdirectorios creados para cada tipo de archivo (css/ y images/) y los archivos de los dos controladores frontales. Estos dos controladores frontales son los únicos archivos PHP que deben encontrarse bajo el directorio raíz del servidor web. El resto de archivos PHP se pueden ocultar a los navegadores, lo que es una buena idea desde el punto de vista de la seguridad.

1.11.1. Configuración del servidor web

A continuación debes modificar la configuración de Apache para hacer accesible el proyecto a cualquier usuario del mundo.

Localiza el archivo de configuración httpd.conf y añade lo siguiente justo al final del archivo:

# Asegúrate de que sólo tienes esta línea una vez en todo el archivo de configuración
NameVirtualHost 127.0.0.1:8080
 
# Esta es la configuración para Jobeet
Listen 127.0.0.1:8080
 
<VirtualHost 127.0.0.1:8080>
  DocumentRoot "/home/sfprojects/jobeet/web"
  DirectoryIndex index.php
  <Directory "/home/sfprojects/jobeet/web">
    AllowOverride All
    Allow from All
  </Directory>
 
  Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
  <Directory "/home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Nota El alias /sf se necesita para las imágenes y archivos JavaScript que utilizan las páginas por defecto de Symfony y la barra de depuración web.

En Windows reemplaza la línea Alias por algo como lo siguiente:

Alias /sf "c:\development\sfprojects\jobeet\lib\vendor\symfony\data\web\sf"

Además, la ruta /home/sfprojects/jobeet/web se debe sustituir por algo como lo siguiente c:\development\sfprojects\jobeet\web

La configuración anterior hace que Apache espere las peticiones en el puerto 8080 de tu máquina, por lo que el sitio web de Jobeet se puede acceder en la siguiente URL:

http://localhost:8080/

Puedes sustituir 8080 por cualquier otro número que prefieras, pero se recomienda utilizar un número mayor que 1024 para que no tengas que utilizar permisos de administrador.

1.11.2. Probar la nueva configuración

Reinicia el servidor web Apache y comprueba que puedes acceder a la aplicación abriendo un navegador y accediendo a la URL http://localhost:8080/index.php/ o http://jobeet.localhost/index.php/ dependiendo de la configuración de Apache que elegiste en la sección anterior.

Página de bienvenida de Symfony

Figura 1.4 Página de bienvenida de Symfony

Nota Si tienes el módulo mod_write correctamente instalado en Apache, puedes eliminar la parte index.php/ de todas las URL. El motivo es que Symfony crea el archivo web/.htaccess que ya incluye las reglas necesarias para reescribir las URL.

También puedes probar a acceder a la aplicación en el entorno de desarrollo. Para ello, accede a la siguiente URL:

http://jobeet.localhost/frontend_dev.php/

La principal diferencia es que ahora se muestra la barra de depuración web en la esquina superior derecha, incluyendo unos pequeños iconos si has configurado correctamente el alias para la ruta sf/.

La barra de depuración web del entorno de desarrollo

Figura 1.5 La barra de depuración web del entorno de desarrollo

La barra de depuración web se muestra en todas las páginas del entorno de desarrollo y al pinchar en cada pestaña se tiene acceso a mucha información: la configuración de la aplicación, los mensajes de log de la petición actual, las sentencias SQL ejecutadas en la base de datos, información sobre la memoria consumida y el tiempo total de ejecución de la petición.

Nota La configuración es un poco diferente si quieres ejecutar Symfony en el servidor web IIS de Windows, por lo que deberías leer el tutorial sobre cómo configurar IIS para Symfony.