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