Virtual Host (ingles) es la expresión con la que comúnmente se le conoce al Hosting Virtual (español), consiste en hacer funcionar más de un sitio web en una misma máquina física y con nombres diferentes. En este enlace pueden encontrar mayor documentación al respecto.
Bueno lo primero que se necesita para tener un hosting virtual, es obviamente un servidor web, en este caso yo trabajo con Apache Web Server, cuya instalación en Ubuntu o Debian es muy sencilla, así como también la instalación de los módulos necesarios para que el servidor haga lo que su administrador desee. La documentación oficial de Ubuntu, sobre Apache Web Server, la pueden encontrar aquí, o una simple búsqueda en google nos puede ayudar también.
Instalado el servidor, ya podemos configurar un hosting virtual, a continuación voy a describir una serie de pasos para configurar un hosting virtual en una maquina local, el nombre por defecto de nuestro servidor es localhost (recontra conocido), voy a crear un virtual host con el nombre «sergio», la manera más sencilla podría ser la siguiente:
Abrir un CLI, o un emulador de terminal como gnome-terminal o cualquier otro.
Dirigirse hacia la carpeta donde están los archivos de configuración de Apache2 y ubicar la carpeta sites-available:
sergio@optimux:~$ cd /etc/apache2/sites-available/
Sacar una copia del archivo default y nombrarla nuevamente con el nombre que deseamos usar en vez de localhost, en este caso renombraré la copia como sergio (se puede usar sudo o la cuenta de root):
sergio@optimux:/etc/apache2/sites-available$ sudo cp default sergio
Abrir para su edición, el archivo renombrado (en este caso sergio) con el editor de texto de preferencia:
sergio@optimux:/etc/apache2/sites-available$ sudo vim sergio
Cambiar las siguientes líneas, agregar las que no se encuentren, dejar el resto de líneas intactas, guardar y cerrar. (Yo he creado una carpeta en /home/sergio con el nombre www):
<VirtualHost *:80>
ServerAdmin webmaster@sergio
ServerName sergioDocumentRoot /home/sergio/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/sergio/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
…(aqui vienen mas lineas, dejarlas como tal)
Luego se debe llamar al script a2ensite + nombre del host virtual, esta acción permitirá habilitar un host virtual en apache:
sergio@optimux:/etc/apache2/sites-available$ sudo a2ensite sergio
Luego se debe editar el archivo hosts para que cada vez que usemos el nombre del hosting virtual nos redirija hacia su ubicación local correcta:
sergio@optimux:~$ sudo vim /etc/hosts
y agregar las siguientes linea:
#hosting virtual sergio
127.0.0.1 sergio
Por último se debe reiniciar el servicio web de Apache.
sergio@optimux:~$ sudo /etc/init.d/apache2 restart
Listo, ya esta configurado el hosting virtual «sergio», la forma de acceder es muy sencilla, ahora en vez de escribir en mi navegador web favorito: http://localhost, escribiré http://sergio y me direccionará hacia /home/sergio/www donde puedo ya ubicar mis archivos que estarán disponibles en el sitio web con el nuevo nombre.
Happy hacking 🙂
Actualización:
En Debian Gnu/Linux se debe tener en cuenta una línea en particular en la configuración del virtual host. Esta línea es: (se encuentra a la mitad del archivo aproximádamente)
#RedirectMatch ^/$ /apache2-default/
Lo que indica esta línea es que se redireccionará a una sub-carpeta llamada /apache2-default/, dentro del directorio principal del virtual host, para que esto no genere errores, esta línea podría comentarse con un #, de tal manera que al momento de llamar al virtualhost sergio (por ejemplo) no redireccione a sergio/apache2-default