Hosting Virtual en Apache (Parte I)

Si queremos publicar varios dominios, no haría falta tener tantos servidores como dominios.

Con el Virtual Hosting de Apache podríamos montar tantos dominios como quisieramos en un servidor.

Hoy es la primera entrega para desarrollar de forma práctica esta temática, dentro de unos días aparecerá en este blog la segunda entrega: Hosting Virtual en Apache (Parte II).

Hay dos tipos de Hosting Virtual:

  • El basado en Nombre: con una IP sirves varios dominios.
  • El basado en IP: Cada dominio puede tener su IP, tantas IP como interfaces de red tenga instalado nuestra máquina.

Lo normal (en los que a servidores caseros se refiere) es hacer el “basado en Nombre” ya que nos solemos liar y hacer más de un portal web en nuestro dominio, ó incluso alojar otros portales (espero que lo hagais previo pago). A mi me ha pasado, naturalmente, y os voy a contar mis peripecias con varios casos y aplicaciones concretas.

En Apache2 los virtual hosts se administran en un directorio. De forma que podeis hacer include de tantos ficheros como sitios tengais en el archivo /etc/apache2/sites-available/default.

Sitio básico: www

El sitio www.tudominio.com es un subdominio en realidad de tudominio.com, por tanto este ejemplo sirve para blog.tudominio.com, motos.tudominio.com,….

OJO: Eso sí nunca debeis olvidar dar de alta el subdominio en vuestro Servidor DNS (podeis ver más detalladamente como aquí); ó si no teneis servidor propio hacerlo a través de vuestro registrador de dominio.

La estructura básica de la etiqueta es:

<VirtualHost *>
        ServerAdmin webmaster@tudominio.com
        ServerName www.tudominio.com
        ServerAlias tudominio.com
        DocumentRoot /var/www/tudominio

        ErrorLog /var/log/apache2/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

Comentando las etiquetas una a una tenemos:

  • ServerAdmin: Correo del administrador del servidor web.
  • ServerName: A que peticiones de nombre de dominio a este servidor debo responder.
  • ServerAlias: Esta etiqueta es para resolver errores, como los xlientes olvidadizos que se olvidan de poner la www.
  • DocumentRoot: el directorio donde alojemos el contenido que queremos publicar.
  • ErrorLog: El log donde queremos que apunte los fallos. Así no inundamos el general, y no se convierte en inmanejable.
  • LogLevel: El nivel de detalle de errores que queremos que recoja.
  • CustomLog: El log donde se apunta quien accede a tu sitio.
  • ServerSignature: La línea final en las páginas autogeneradas; donde se indica el sistema operativo, servidor web, versiones, etc.

Redirigir a un ejecutable cgi fuera del arbol web

Por ejemplo para publicar la páqina de carga de un sai; el software que te proporciona el fabricante es un cgi:

<VirtualHost *>
        ServerName sistema.tudominio.com
        DocumentRoot /var/www/tudominio/sistema

        ScriptAlias /sai/ "/usr/lib/cgi-bin/nut/"
        <Directory "/usr/lib/cgi-bin/nut">
                AllowOverride None
                Options +ExecCGI
                Order allow,deny
                Allow from all
        </Directory>

</VirtualHost>

Tenemos en las dos primeras líneas el nombre para el dominio sobre el que se responderá al alias, y el directorio base. En realidad el grueso de esta estrategia está en la etiqueta ScriptAlias y la directiva Directory, que pueden estar en cualquier dominio planteado:

  • ScriptAlias: Dice el sobrenombre (/sai/) que va a poner al directorio donde se alojan nuestros cgi’s.
  • Directory: Simplemente especifica como manejar este directorio externo al arbol.

De esta forma llamaremos desde el cliente web a nuestro cgi de la siguiente manera: http://sistema.tudominio.com/sai/ejecutable.cgi

Podeis continuar con la segunda entrega de este artículo en el enlace: Hosting Virtual en Apache (Parte II).

2 thoughts on “Hosting Virtual en Apache (Parte I)

  1. Holayo estoy trabajando con apache y necesito que este servidor web ademas de mostrarme su pagina por defecto, me muestre los reportes del programa sarg que tengo levantado en la misma maquina.
    La pagina que me muestra los reportes de sarg esta en /var/www/squid-reports.

    PAra esto, siguiendo diferentes paginas y leyendo varios foros, hice lo siguiente:

    En el archivo hosts que esta en etc agregue la siguiente linea:
    127.0.0.1 http://www.squid-reports.com

    Luego dentro de etc/apache2/sites-available cree un archivo llamado squid-reports.com que tiene las siguientes lineas:

    ServerName http://www.squid-reports.com
    ServerAlias squid-reports.com *squid-reports.com
    DocumentRoot /var/www/html/squid-reports
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined

    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all

    luego ejecuto la linea a2ensite squid-reports.com

    reinicio apache2

    Luego desde un navegador si quiero ver la pagina por defecto esta todo bien, ahora cuando escribo: http://www.squid-reports.com me tira error y como tengo en la maquina internet explorer no veo que error es.

    Que puede ser? por su ayuda desde ya muchas gracias….

Leave a Reply

Your email address will not be published. Required fields are marked *