23 enero 2013

Configurar Virtual Hosts en Apache para un proyecto de Symfony en Ubuntu

El contenido de este post está basado y extraído del libro Practical symfony 1.3 & 1.4. Yo he probado esta configuración y lo que voy a describir en:

  • Ubuntu 10.10 Apache/2.2.16 (Ubuntu)
  • PHP 5.3.3-1ubuntu9.3
  • mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686)

Una buena práctica web es poner bajo el directorio raíz web sólo los archivos a los que necesita tener acceso el navegador web: las hojas de estilo, JavaScripts, o imágenes.

Te recomendamos almacenar estos archivos en el subdirectorio web de un proyecto symfony. Si echas un vistazo a este directorio, encontrarás algunos sub-directorios para los recursos web y los dos archivos de los controladores frontales. Los controladores frontales son los únicos archivos PHP que necesitan estar bajo el directorio raíz web. Todos los demás archivos PHP se pueden ocultar del navegador, la cual es una buena idea en lo que respecta a seguridad. 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 tener sólo una vez esta línea en su configuración
NameVirtualHost 127.0.0.1:8080

# Esta es la configuración de Jobeet
Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
   DocumentRoot "/ruta/al/directorio/web"
   DirectoryIndex index.php
   <Directory "/ruta/al/directorio/web">
      AllowOverride All
      Allow from All
   </Directory>

   Alias /sf /ruta/al/archivo/symfony/data/web/sf
   <Directory "/ruta/al/archivo/symfony/data/web/sf">
      AllowOverride All
      Allow from All
   </Directory>
</VirtualHost>

El alias /sf te da acceso a las imágenes y los archivos JavaScript necesarios para adecuadamente mostrar las páginas symfony por defecto y la barra de herramientas de depuración web.

En esta configuración, Apache escucha en el puerto 8080 de tu máquina, por lo que el sitio web de Jobeet será accesible en la siguiente URL: http://localhost:8080/ Puedes cambiar 8080 por cualquier número mayor que 1024, ya que no se requieren derechos de administrador en esos puertos.

Hasta ahora hemos logrado indicarle al apache que nos muestre e interprete el contenido web que tenemos en una determinada carpeta, en este caso la carpeta web de Symfony, pero se puede ir un paso mas allá y establecer un nombre de dominio.

Si eres el administrador de tu equipo, es mejor configurar un virtual host en lugar de añadir un nuevo puerto cada vez que se inicia un nuevo proyecto. En lugar de añadir un puerto y agregar una declaración Listen, elige un nombre de dominio y añade la declaración ServerName:


# This is the configuration for Jobeet
<VirtualHost 127.0.0.1:80>
   ServerName jobeet.localhost
   DocumentRoot "/ruta/al/directorio/web"
   DirectoryIndex  index.php
   <Directory "/ruta/al/directorio/web">
      AllowOverride All
      Allow from All
   </Directory>
   Alias /sf /ruta/al/archivo/symfony/data/web/sf
   <Directory "/ruta/al/archivo/symfony/data/web/sf">
      AllowOverride All
      Allow from All
   </Directory>
</VirtualHost>

El nombre de dominio jobeet.localhost tiene que ser declarado localmente. Si se ejecuta un sistema Linux, que tiene que hacerse en el archivo /etc/hosts. Añade la siguiente línea:

 127.0.0.1 jobeet.localhost 

Recomendación: Cuando se complican con estos pasos, los usuarios de Distribuciones Linux, como Ubuntu, pueden usar una herramienta gráfica que simplifique aún más esta configuración. Rapache, es un software para sistemas Gnome que hace la configuración básica y necesaria, en los archivos /etc/hosts y httpd.conf, en un solo paso además de permitir el reinicio de Apache con un clic.

1 comentario: