¿Qué es un virtual host?
Un virtual host es una forma de poder utilizar varios dominios basados en una misma ip. Esto facilita el trabajo en un servidor local ya que podemos crear un dominio para cada aplicación que estemos desarrollando, por ejemplo, si estamos trabajando en un sitio de WordPress llamado misitio, podemos crear un virtual host para acceder a la instalación local de wordpress desde la url
http://misitio.dev.
Los pasos que siguen a continuación dan por sentado que ya tenemos una instalación de apache funcionando en el servidor local.
Pasos a seguir para crear el virtual host en ubuntu
Estoy usando ubuntu como ejemplo, pero en otras distribuciones de linux los pasos van a ser muy similares.
Lo primero que debemos hacer es crear el virtual host, lo podemos hacer con el siguiente comando:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/misitio.dev
Sustituir misitio.dev por el nombre que le queremos dar al host.
Configurando el virtual host
Debemos configurar este archivo recién creado para que apache reconozca el dominio, abrimos el archivo en nano (u otro editor de texto):
sudo nano /etc/apache2/sites-available/misitio.dev
Ahora hay que agregar la siguiente línea en el archivo:
ServerName misitio.dev
El siguiente paso será cambiar la raíz del virtual host para que apunte al lugar dónde tenemos instalada la aplicación, en este caso de ejemplo sería:
/var/www/misitioDocumentRoot /var/www/misitio
Activar el host
Debemos activar el host en dos lugares diferentes, primero en apache:
sudo a2ensite misitio.dev
Y luego en nuestro archivo /etc/hosts para que al entrar la url en el navegador, este se redireccione a nuestro servidor local y utilice el virtual host de apache.
Accedemos al archivo:
sudo nano /etc/hosts
Y agregamos la ip local y el nuevo dominio
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
#Virtual Hosts
127.0.0.1 misitio.dev
Reiniciar apache
Para que los cambios tengan efecto tenemos que reiniciar apache:
sudo service apache2 restart
Espero que haya servido este pequeño tuto