h1

Cómo configurar VirtualHosts en Apache2 + Webalizer en Debian (I parte)

23 abril 2009

Estos 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:

#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:

#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:

#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:

#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:

#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)

<VirtualHost 192.168.1.3>
ServerAdmin webmaster@dominio1.com
ServerName  http://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)
</VirtualHost>

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)

<VirtualHost 192.168.1.3>
ServerAdmin webmaster@dominio2.com
ServerName  http://www.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)
</VirtualHost>

Ahora solamente nos queda que activamos los dos sitios:

#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.

# /etc/init.d/apache2 reload

y miramos si la configuración de los virtualhosts está bien:

#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:

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. ;)

About these ads

9 comentarios

  1. muy bueno, se adapta tambien a ubuntu, si puedes sacar UN MANUAL de servidor DNS. con eso estaria completo.

    SALUDOS


  2. Buenas, esoty trabajando con este tema que publicaste. El problema que tengo es que desde afuera de mi LAN no pueden acceder a mi pagina web, solo entrar al index.html que viene por defecto que dice: IT`s WORKS… a mi index.php no entra, solo entra a un index.html, y el redireccionamiento que hice dentro del index.html es:

    Esto ultimo da error de que no encuentra la pagina o que no puede acceder.

    Como configuro apache2 para que desde afuera puedan entrar a mi pagina, es decir que me reconozca index.php desde afuera de mi LAN, dentro de la LAN todo bien.

    Gracias y saludos.-


  3. META HTTP-EQUIV=’REFRESH’ CONTENT=’1; URL=http://locahost/index.php’ TARGET=’_blank’

    esta parte no salio arriba


    • Realmente me ha parecido genial este artículo. No estoy muy hábil aún con Linux y lo he podido seguir al detalle. El único problema es que no me funciona el VirtualHost. Tengo bajo el mismo IP 2 sitios (escuela.dominio.com e intranet.dominio.com) pero siempre se activa el primer VirtualHost. La configuración parece estár perfecta. No tengo errores. Se me agotaron las ideas. Agradecería alguna ayuda. Gracias


  4. Solucionado !!… nada que yo mismo me he dado cuenta del problema. La cuestión es que definí mal el ServerAlias y siempre coincidia con la primera aparición del sitio. Eliminado y todo funciona genial… Muchas gracias y saludos


  5. He configurado xampp en Debian y me sale mi Ip y no el dominio en teoria esta bien configurado si me podeis echar una mano es un problema ya que cuando alguien conecta con tu servidor sale tu ip Debian 686 xampp 173a


    • Hola creo que he configurado xampp en Debian y me sale mi Ip y no el dominio en teoria esta bien configurado si me podeis echar una mano es un problema ya que cuando alguien conecta con tu servidor sale tu ip Debian 686 xampp 173a


  6. # Logfiles
    ErrorLog /var/www/anuncios/logs/error.log
    CustomLog /var/www/anuncios/logs/access.log combined
    Directory “/var/www/anuncios/logs”
    Deny from All
    /Directory
    /VirtualHost


  7. Excelente instructivo! Me ha sido de gran ayuda.



Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: