Una de las grandes cualidades que tiene el servidor web Apache es la posibilidad de gestionar varios dominios diferentes en una misma máquina. De este modo un servidor web con Apache puede tener cientos de sitios web alojados en un mismo equipo. Esto da pie a lo que comercialmente se llama alojamiento compartido donde cientos de clientes comparten la misma máquina con sus webs lo que a la vez explica el bajo rendimiento de estos servicios.
Para un uso más personal, los dominios virtuales podemos usarlos para el desarrollo web donde podemos tener múltiples proyectos que van a comportarse de modo idéntico al de un sitio en producción. Configurar un dominio virtual es fácil una vez entendidos los elementos que subyacen. Estos son:
- Activar el modulo.
- Habilitar los directorios para el dominio y el registro de errores.
- Configurar Apache para el nuevo dominio.
- Activar el nuevo dominio.
- Resolver el dominio a la ip de la máquina que lo aloja.
Esta guía esta probada con Ubuntu Server 11.04 aunque funcionará sin cambios en multitud de distribuciones Linux. Para el ejemplo nuestro dominio será www.example.com y lo alojaremos en nuestro usuario que será usuario. Para cada situación los cambiaremos el dominio o el usuario para adecuarnos a nuestras necesidades. Empecemos accediendo a la máquina donde esta el servidor LAMP con Apache instalado mediante un terminal.
Activamos el modulo de Apache que da el servicio VirtualHost:
sudo a2enmod vhost_alias
sudo /etc/init.d/apache2 restart
Dentro de nuestro usuario creamos el directorio que contendrá el nuevo sitio web:
mkdir /home/usuario/www.example.com
Creamos la carpeta que contendrá los archivos de log del host virtual:
mkdir /home/usuario/log
mkdir /home/usuario/log/www.example.com
Creamos un fichero de prueba que se mostrará en nuestro sitio:
echo "<?php echo '<h2>www.example.com</h2>'; ?>" > /home/usuario/www.example.com/index.php
Preparamos la configuración del alojamiento virtual para Apache, partiendo del la configuración por defecto copiandola:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www.example.com
Debemos editar este archivo para cambiar y añadir algunas claves. Lo abrimos con
sudo nano /etc/apache2/sites-available/www.example.com
Editar si queremos ServerAdmin con la dirección de un correo propio. Para que Apache use el dominio, debajo de ServerAdmin añadimos:
ServerName example.com
ServerAlias www.example.com
Editamos DocumentRoot con la ruta de donde esta nuestro host virtual. IMPORTANTE!! no lleva barra al final.
DocumentRoot /home/usuario/www.example.com
Editamos la clave <Directory /var/www/>. La misma ruta que antes pero esta vez si lleva la barra al final. Veamoslo:
<Directory /home/usuario/www.example.com/>
Pasamos a configurar los archivos de log. El primero registra los errores y el segundo registra los accesos. Editamos ErrorLog y CustomLog y los dejamos así:
ErrorLog /home/usuario/log/www.example.com/error.log
CustomLog /home/usuario/log/www.example.com/access.log combined
Guardamos y salimos.
Activamos el dominio y recargamos Apache para que considere la nueva configuración:
sudo a2ensite www.example.com
sudo /etc/init.d/apache2 reload
Con esto ya estaría listo. Ahora un servidor de nombres de domino debería apuntar a nuestra máquina para resolver la dirección ip con el dominio. Para nuestro propósito podemos usar el archivo hosts de modo que realice en nuestra máquina la conversión dominio por ip. Así podremos probar que funciona como esperamos y usar esta característica para desarrollo web.
Debemos editar el archivo /etc/hosts
sudo nano /etc/hosts
y añadimos:
127.0.0.1 example.com www.example.com
Guardamos y salimos del archivo hosts. Ahora podremos desde un navegador probar nuestro sitio escribiendo en la barra de direcciones http://www.example.com. Si queremos acceder desde otra máquina distinta al servidor debemos añadir en su fichero hosts la ip del servidor en vez de 127.0.0.1.
El sitio www.example.com existe en Internet y esta reservado por IANA en el documento RFC2606. Su función es la de usarse como ejemplo en documentación. Una vez editado el archivo hosts no podremos acceder a ese sitio salvo que lo eliminemos de hosts.