sábado, 1 de diciembre de 2007

Configurar un vhost para apache2:

¿Qué es un vhost?

Un vhost o "VirtualHost" son archivos de texto plano que le dicen a apache donde tiene que buscar una determinada página cuando se la piden. De este modo podemos alojar diversas páginas web con dominios distintos en un mismo servidor.


Desde aquí vamos a hacer un vhost muyyy simple que solo cumpla con su cometido, mostrar la página sin más dando por hecho que ya está instalado apache2 en tu Debian.

Ejemplo de la página web www.pepito.org:

Requisitos previos:

  • Tener instalado apache
  • Tener una página web index.html con algo que mostrar en /var/www/pepito

Creamos un fichero de texto /etc/apache2/sites-avalaible/ con el nombre pepito:

vi /etc/apache2/sites-avalaible

Y escribimos dentro del fichero:


ServerName www.pepito.org
DocumentRoot /var/www/pepito

ServerAlias pepito.org


Guardamos cambios y salimos a la shell.

Cambiamos al directorio /etc/apache2/sites-enabled

cd /etc/apache2/sites-enabled

Y hacemos un enlace simbólico al vhost que acabamos de crear:

ln -s /etc/apache2/sites-avalaible/

Si no tenemos un DNS que apunte con la dirección www.pepito.org a nuestro ordenador podemos engañarlo editando el fichero /etc/hosts y al final de la línea correspondiente a la ip 127.0.0.1(si no la hay la podemos crear sin problemas) añadimos un espacio y el nombre de la pagina. Quedaría algo así:

127.0.0.1 www.pepito.org pepito.org

Reiniciamos apache para que los cambios tengan efecto

/etc/init.d/apache2 restart

Prueba ahora a poner en tu Firefox/Iceweasel www.pepito.org y ¡voila! verás tu página y lo que es mejor, podrás poner muchas páginas más con el nombre que se te ocurra.

Ahora que tenemos un simple VirtualHost funcionando vamos a añadirle un pequeño detalla pero que puede a llegar a ser útil: Contraseña

De esta manera podemos hacer que solo puedan visitar la página aquellos que conozcan el usuario y contraseña adecuados. Para ello añadimos en /etc/apache2/sites-avalaible/pepito justo debajo de ServerAlias el siguiente texto:


AuthName "Pon lo que quieras, es como un título..."
AuthType Basic
AuthUserFile "/etc/apache2/users/pepito.pwd"
require user pepon admin



Guardamos cambios y salimos.

A continuación creamos la carpeta /etc/apache2/users:

mkdir /etc/apache2/users


Y nos movemos hasta ella:

cd /etc/apache2/users

Vamos a crear el fichero que albergará las contraseñas encriptadas con el comando htpasswd.

htpasswd -c pepito.pwd pepon

Pedirá que escribamos la contraseña dos veces.

Reinicia apache para que los cambos tengan efecto:

/etc/init.d/apache2 restart

A partir de ahora la primera vez por sesión que queramos entrar a la página nos pedira usuario y contraseña.

Si queremos añadir nuevos usuarios tan solo hay que añadir separados por espacio los nombres de usuario que queramos añadir en la fila require user tal y como he hecho antes para el usuario admin y a continuación ejecutar el comando htpasswd pepito.pwd admin (importante no poner el -c ya que el fichero existe) en el directorio /etc/apache2/users.

Por último, si queremos tener un control de que le pueda pasar a nuestra página podemos poner uno o varios log como estos justo debajo de :

ErrorLog /var/log/apache2/pepito.org.log
TransferLog /var/log/apache2/pepito.org.log
ServerAdmin unacuenta@tudominio.com

Y de nuevo reiniciamos Apache para surtir efecto:

/etc/init.d/apache2 restart

No hay comentarios: