26 jun 2010

Virtual hosts on Apache 2.2

Creando servidores virtuales en Apache 2.2


Apache 2.2 adopta una estructura modular para sus ficheros de configuración.
Así la definición de servidores virtuales la realizamos en un archivo externo extra/httpd-vhosts.conf.
Incluimos este archivo dentro del archivo de configuración principal httpd.conf.
También impone unas restricciones más severas en acceso que versiones anteriores, por lo que debemos configurar propiedades extra para conseguir acceso a los servidores virutales y no obtener el siguiente mensaje:

Forbidden

  • You don't have permission to access /index.php on this server.
Debido a estos permisos más estrictos, recomiendo crear un directorio raiz donde colgar nuestros servidores virtuales.


Suponemos que nuestro directorio de servidores virtuales es D:\vhosts.

Nota: Las restricciones de seguridad de Windows Vista y Windows 7 previenen el guardar datos en los archivos que mencionamos en estas instrucciones, incluso aunque estes logado como administrador.


  • Crear un directorio dentro de D:\htdocs para cada servidor virtual.
  • Abre C:\WINDOWS\system32\drivers\etc\hosts con tu editor de textos, y añade una línea como éstas por cada servidor virutal.


    127.0.0.1 localhost
    127.0.0.1 vhExample

  • Abre conf\httpd.conf en tu editor de texto y busca la sección #Virtual hosts ,y descomenta la línea
    #Include conf/extra/httpd-vhosts.conf
  • Abre conf\extra\httpd-vhosts.conf en tu editor de texto. La imagen muestra su típica estructura:

    Contents of   httpd-vhosts.conf
  • Al comienzo del archivo insertamos las siguientes líneas:
    <directory>
    Order Deny,Allow
    Allow from all
    </directory>


    Esto define los permisos correctos para el directorio que contiene los sites que queremos tratar como servidores virtuales.
    La ruta del archivo debe usar forward slashes e incluirse entre comillas si tiene espacios en blanco.
    Mientras que los servidores virutales estén en subdirectorios de este directorio raiz, tienen los permisos adecuados.
    Si hay varios directorios raiz, podemos crear diferentes directivas <directory> para ellos.
  • De los comandos que arriba se usan para definir un servidor virutal solo DocumentRoot y ServerName son obligatorias.
    Cuando usamos virutal hosting, Apache desactiva la raiz del servidor principal, así que nuestro primer servidor virutal debe replicar la raiz original del servidor.
    Luego añadimos tantos modulos virutalHost como servidores queramos definir, con su localización como DocumentRoot, y su nombre.
    Volvemos a usar forward slashes e incluir entre comillas si necesario.

    <VirtualHost *:80>
    DocumentRoot D:/htdocs/
    ServerName localhost
    </VirtualHost>

    <VirtualHost *:80>
    DocumentRoot D:/htdocs/vhExample
    ServerName vhExample
    </VirtualHost>

  • Guardamos los cambios en httpd-vhosts.conf, y reiniciamos Apache.
    Todos los sites configurados siguen siendo accesibles como http://localhost/sitename/.
    Además podemos acceder a cada servidor virtual de forma directa como http://vhExample/.
  • Si continuas teniendo problemas para acceder a los servidores virtuales, asegúrate de haber añadido la directiva DirectoryIndex en httpd.conf.

No hay comentarios:

Publicar un comentario