Configurar VirtualHosts en Apache2 + Webalizer Ubuntu


stos días he tenido que preparar un servidor Apache2 para que funcionase con varios dominios diferentes desde la misma IP, es decir, que un único servidor Apache alojase y resolviese 2 dominios por separado. Es lo que se conoce como configurar VirtualHosts basados en nombres.

Lo primero es instalar el servidor Apache2:

Código HTML:
apt-get install apache2 apache2-common
Una vez instalado, toda la configuración de Apache está en /etc/apache2/.

Mirando el contenido de este directorio, observamos distintos archivos y directorios, entre los cuales están: sites-available y sites-enabled.

En ambos directorios debe existir un archivo “default”, el cual tomaremos como base para editar la configuración de nuestros Hosts Virtuales. En sites-available tendremos los VirtualHosts disponibles (pero no “activados”) para ser usados y en sites-enabled, tendremos los VirtualHosts que tenemos funcionando. La forma de trabajar entre estos directorios es a través de un enlace simbólico; así el default de sites-enabled será un enlace simbólico del default de sites-available.

Debian incluye sus propias herramientas para activar y desactivar tanto sitios web como módulos:

a2ensite-> Activa un sitio web.
a2dissite-> Desactiva un sitio web
a2enmod-> Activa un módulo de apache disponible en mods-available.
a2dismod->Desactiva un módulo.

Por defecto, apache nos crea un “index.html” como página de inicio de nuestro servidor web. Para desactivarla y comenzar a hacer uso de los VirtualHosts desactivaremos antes este inicio por defecto:

Código HTML:
a2dissite default
Imaginamos que tenemos “dominio1.com” y “dominio2.com”. Vamos a comenzar a preparar estos dos VirtualHosts. Para ello nos dirigimos a /etc/apache2/available-sites/ y utilizaremos el archivo default como base para preparar la configuración de estos, para ello hacemos una copia:

Código HTML:
cp default dominio1.com
cp default dominio2.com
El contenido de estos dos sitios web lo podemos volcar en /var/www/dominio1 y en /var/www/dominio2 respectivamente. Para ello, creamos estos dos directorios donde volcaremos los contenidos de ambas webs:

Código HTML:
mkdir  /var/www/dominio1
mkdir  /var/www/dominio2
Una vez creado estos dos directorios volcado el contenido de las webs en ellos, sólo queda editar los archivos de configuración de los hosts virtuales.

Editaremos en primer lugar el del dominio1. Para ello:

Código HTML:
nano /etc/apache2/sites-available/dominio1.com
El cual debe quedar parecido a esto:


dominio1.com (/etc/apache2/sites-available/www.dominio1.com)



NameVirtualHost 192.168.1.3 -> (IP de nuestro servidor)


ServerAdmin webmaster@dominio1.com
ServerName www.dominio1.com
ServerAlias dominio1.com *.dominio1.com

# Indexes + Directory Root.
DirectoryIndex index.html index.php
DocumentRoot /var/www/dominio1/

# Logfiles
ErrorLog /var/www/dominio1/logs/error.log -> (hay que crear los directorios si no existen)
CustomLog /var/www/dominio1/logs/access.log combined -> (hay que crear los directorios si no existen)


Y lo mismo con elotro virtualHost /etc/apache2/sites-available/dominio2.com


dominio2.com (/etc/apache2/sites-available/www.dominio2.com)


NameVirtualHost 192.168.1.3 -> (IP de nuestro servidor)


ServerAdmin webmaster@dominio2.com
ServerName dominio2.com
ServerAlias dominio2.com *.dominio2.com

# Indexes + Directory Root.
DirectoryIndex index.html index.php
DocumentRoot /var/www/dominio2/

# Logfiles
ErrorLog /var/www/dominio2/logs/error.log -> (hay que crear los directorios si no existen)
CustomLog /var/www/dominio2/logs/access.log combined -> (hay que crear los directorios si no existen)


Ahora solamente nos queda que activamos los dos sitios:

Código HTML:
a2ensite dominio1.com
a2ensite dominio2.com
Esto creará el enlace simbolico de estos archivos entre sites-available y sites-enabled. Ahora sólo tendremos que recargar la configuración para que apache coja los cambios.

Código HTML:
/etc/init.d/apache2 reload
y miramos si la configuración de los virtualhosts está bien:

Código HTML:
apache2 -S
VirtualHost configuration:
192.168.1.3:* is a NameVirtualHost
default server dominio1.com (/etc/apache2/sites-enabled/dominio1.com:2)
port * namevhost dominio1.com (/etc/apache2/sites-enabled/dominio1.com:2)
port * namevhost dominio2.com (/etc/apache2/sites-enabled/dominio2.com:2)
Syntax OK

Con esto, ya podemos comprobar si realmente funcionan nuestros VirtualHosts.

* Si no hemos dado de alta dominio1.com y dominio2.com en un servidor de DNS para hacer pruebas podemos editar el /etc/hosts para que las peticiones a esos dominios vayan a nuestros servidor:
Código HTML:
192.168.1.3 dominio1.com dominio2.com
En el próximo capítulo veremos como configurar Webalizer para conocer las estadísticas de ambos dominios por separado.