Crear un host virtual puede ser útil por varias razones, una de las más comunes es que nos permitirá hacer pruebas de nuestros sitios de manera local utilizando exactamente la misma URL de nuestro sitio alojado en un servidor remoto, accederemos a nuestro sitio con URL como
www.misitio.com en vez de utilizar subdominios sobre el localhost como
localhost/misitio/ lo cual podría generar algunos conflictos de redirecciones y problemas con URL amigables, enlaces relativos, etc.
Para crear nuestro servidor virtual necesitaremos tener instalado apache por lo tanto utilizaremos el paquete Xampp que es un software libre multiplataforma, el cual de manera predeterminada nos instalara el servidor Apache, PHP, MySQL y algunos otros servicios.
Podemos descargar Xampp directamente desde el siguiente enlace
https://www.apachefriends.org/es/index.html
Su instalación es bastante sencilla, solo debemos seguir el asistente de instalación por lo que no necesita mayor explicación, una vez instalado el paquete Xampp continuaremos con la creacion de nuestro servidor virtual.
Lo primero que debemos hacer es modificar el archivo Host.
En Windows lo abriremos con el block de notas, si utilizando alguna distribución Linux como Debian puedes utilizar nano, mousepad, gedit o el editor de texto que prefieras.
Nota: Las rutas de los archivos corresponden a las versiones de windows 7 y Debian Wheezy para otros sistemas operativos buscar las rutas correspondientes en google.
En Windows:
C:\Windows\System32\drivers\etc\host
En Linux:
/etc/hosts
Al final del archivo host agregamos las líneas de las redirecciones correspondientes a nuestro servidor virtual, en mi caso quedara de esta manera.
Nota: todo lo que esta precedido de una almoadilla # son comentarios de ayuda y no son interpretados por apache.
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
# Mi primer virtual host
127.0.0.1 www.richardcollao.cl
Guardamos los cambios y cerramos el archivo.
Los siguiente será editar el archivo httpd.conf
En Windows:
C:\xampp\apache\conf\httpd.conf
En Linux:
/opt/lampp/apache/conf/httpd.conf
Buscamos y descomentamos (quitar almoadilla #) la siguiente línea:
# Include conf/extra/httpd-vhosts.conf
Quedando de esta manera, por lo general esta línea en las últimas versiones de apache ya se encuentra descomentada.
Include conf/extra/httpd-vhosts.conf
Guardamos los cambios y cerramos el archivo.
Solo falta modificar el archivo httpd-vhosts.conf
En Windows:
C:\xampp\apache\conf\extra\httpd-vhosts.conf
En Linux:
/opt/lampp/apache/conf/extra/httpd-vhosts.conf
En Xampp existe una carpeta llamada htdocs que es la carpeta por defecto donde se encuentran los sitios como el index de Xampp, PHPMyAdmin, etc. Perfectamente podríamos crear una subcarpeta dentro de esta para nuestro servidor virtual pero lo recomendable es utilizar una ruta dentro de nuestra carpeta personal de usuario. Por ejemplo:
Para Windows sería:
C:\Users\usuario\www\richardcollao
En Linux:
/home/usuario/www/richardcollao
De esta manera creamos una carpeta contenedora por lo general llamada
www que es donde pondremos nuestros sitios web, teniendo esto claro, abrimos el archivo httpd-vhosts.conf y al final del archivo agregamos las siguientes líneas:
En windows quedaría de esta manera.
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs "
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot " C:\Users\usuario\www\richardcollao"
ServerName www.richardcollao.cl
<Directory " C:\Users\usuario\www\richardcollao">
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
En Linux quedaría de esta manera.
<VirtualHost *:80>
DocumentRoot "/opt/lampp/ htdocs "
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot " /home/usuario/www/richardcollao"
ServerName www.richardcollao.cl
<Directory "/home/usuario/www/richardcollao ">
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
Guardamos los cambios y cerramos el archivo.
Solo una aclaración final, como podemos ver el nuevo servidor virtual www.richardcollao.cl a diferencia de servidor localhost, contiene la directiva
<directory> que lo que hace es otorgar permisos a la ruta donde se encuentra nuestro sitio ya que este se encuentra fuera de la ruta por defecto htdocs por lo tanto no hereda sus permisos, sino hacemos esto nos devolverá un
error 403.
Acceso prohibido!
Usted no tiene permiso para accesar al directorio solicitado. No existe un documento índice, o el directorio está protegido contra lectura.
Estamos listos, reiniciamos el servicio apache y podemos trabajar en nuestro servidor virtual.