2. Servidor HTTP – Apache2
INDICE :
Instalación del servicio HTTP en Debian Squeeze ............................................................. 3
Ejercicio 1 .............................................................................................................................. 4
Escenario 1: Configura dos VirtualHosts con distinto interfaz, mismo puerto ............. 4
Descripción del escenario ...................................................................................... 4
Configuración del escenario .................................................................................. 4
Configuración del servicio .................................................................................... 7
Escenario 2: Configura dos VirtualHosts con mismo interfaz, diferente puerto. ....... 10
Descripción del escenario .................................................................................... 10
Configuración del escenario ................................................................................ 10
Configuración del servicio .................................................................................. 10
Escenario 3: Configura dos VH con mismo interfaz y puerto y distinto nombre. ...... 12
Descripción del escenario .................................................................................... 13
Configuración del escenario ................................................................................ 13
Configuración del servicio .................................................................................. 13
Ejercicio 2 ............................................................................................................................ 16
Descripción del escenario .................................................................................... 16
Configuración del escenario ................................................................................ 16
Configuración del servicio .................................................................................. 16
Ejercicio 3 ............................................................................................................................ 26
Módulo para comprimir: mod_deflate ................................................................ 26
Módulo para cachear: mod_disk_cache ............................................................. 27
mod_userdir .......................................................................................................... 29
Ejercicio 4 ............................................................................................................................ 30
Mod_auth_basic ................................................................................................... 34
Mod_auth_digest .................................................................................................. 35
Ejercicio 4 ............................................................................................................................ 36
Awstats ................................................................................................................. 36
Webalizer .............................................................................................................. 38
Francisco José Cruz Jiménez
2
3. Servidor HTTP – Apache2
Instalación del servicio HTTP en Debian Squeeze
Un servidor web sirve contenido a un navegador, este pide el recurso que sea, el
servidor carga el archivo (para contenido estático, por ejemplo HTML) o procesa la
aplicación y sirve el resultado (para contenidos dinámicos, por ejemplo PHP) y lo sirve
a través de la red al navegador del cliente. Este intercambio es mediado por el
navegador y el servidor que hablan el uno con el otro mediante HTTP, de ahí el nombre
servidor HTTP.
A continuación vamos a instalar un servidor web en nuestra máquina Debian
Squeeze, en concreto instalaremos Apache2, existen muchos servidores web
actualmente (Nginx, IIS, Cherokee, lighttpd,…), pero el más usado es Apache, las
estadísticas hablan de casi un 60% de los servidores web existentes son Apache. Para
instalarlo usaremos:
# apt-get install apac he2
Ahora comprobamos que la instalación ha sido satisfactoria observando que
existen procesos apache2, hay que resaltar que apache no solo tiene un proceso como
los servicios anteriormente vistos, sino que posee varios pares de ellos, dependiendo si
su MPM es Worker o Prefork (El modo Worker trabaja con hilos, esto hace que tenga
menos procesos que si fuese modo Prefork, que por cada petición crea un proceso).
# ps aux | egrep apache2
Además también comprobaremos que el puerto 80 está a la escucha.
# netstat –natup | egrep apac he2
Otra comprobación que podemos hacer es poner la dirección IP del servidor en
un navegador, si apache2 está correcto nos mostrara lo siguiente.
Francisco José Cruz Jiménez
3
4. Servidor HTTP – Apache2
Ejercicio 1
Escenario 1: Configura dos VirtualHosts con distinto interfaz, mismo
puerto
Descripción del escenario
En esta escenario de la práctica necesitaremos una máquina con Debian Squeeze
para montar el servicio web, se utilizará una máquina virtual con dos interfaces
distintos, como dice el enunciado, y como cliente usaremos nuestra máquina real.
Configuración del escenario
Como he explicado antes, en esta práctica usaremos una máquina Debian
Squeeze como servidor, se utilizará una máquina virtual con dos interfaces. La
configuración de red que hay que establecer en la MV será de las dos interfaces
configuradas como Adaptador Solo-Anfitrión, ya que tenemos que comunicarnos con la
máquina real por medio de las dos interfaces y seria poco serio establecer ambas
interfaces como Adaptador Puente. Para usar este modo de red hay que crear dos
adaptadores vbox, para esto vamos a Archivo Preferencias Red Agregar
Francisco José Cruz Jiménez
4
5. Servidor HTTP – Apache2
adaptador solo-anfitrión. Estas son capturas de cómo configuramos ambos
adaptadores.
vboxnet 0
vboxnet 1
Ahora en la configuración de red de la MV elegimos un adaptador de los creados
anteriormente para cada interfaz (vboxnet0 para el adaptador 1 y vboxnet2 para el
adaptador 2) . Nos quedará así.
Francisco José Cruz Jiménez
5
6. Servidor HTTP – Apache2
También tenemos que tener en cuenta que necesitamos conexión a internet para
instalar desde los repositorios Apache2, para ello utilizaremos otro tercer interfaz que
configuraremos en Adaptador Puente o NAT. Esta configuración no la explicaré ya que
no es parte del escenario y también resulta un tanto trivial.
Para terminar con la configuración del escenario necesitamos configurar las IP
de las interfaces en la máquina Debian, para ello editamos el fichero de configuración
de interfaces y le daremos esta configuración.
# nano /etc/network/interf ac es
Para que tenga efecto estas modificaciones tenemos que reiniciar el servicio de
networking, además antes levantaremos la eth1, ya que está desactivada.
# ifup eth1
# s ervic e networking res tart
Francisco José Cruz Jiménez
6
7. Servidor HTTP – Apache2
Configuración del servicio
Configuraremos dos VirtualHosts diferentes, cada uno escuchará en cada
interfaz, ambos por el mismo puerto, el 80.
Antes explicaré un poco Apache2. Tras la instalación, éste se sitúa por defecto
en /etc/apache2, en dicha carpeta se encuentran otras carpetas y archivos referentes a la
configuración de este servidor web. Existen cuatro carpetas realmente importantes,
sites-available, sites-enabled, mods-available y mods-enabled, en ellas encontramos los
módulos y sitios disponibles (available) y los habilitados (enabled), decir que nosotros
solo creamos los sitios en sites-available, lo que se encuentra en sites-enabled son
enlaces simbólicos que apuntan a los sitios de la anterior carpeta que estén habilitados,
lo mismo ocurre con los módulos. En cuanto a archivos de configuración, nosotros
tocaremos sobretodo ports.conf, donde configuraremos los puertos que están a la
escucha. En apache2.conf se encuentra la configuración general de Apache2.
Una vez introducido un poco la estructura del directorio de Apache2 vamos con
la configuración de los VirtualHost. Una vez que tenemos instalado Apache2,
crearemos ambos sitios en sites-available, la configuración que le vamos a dar es la
siguiente.
# nano /etc/apache2/sites -available/sitio1
# nano /etc/apache2/sites -available/sitio2
Francisco José Cruz Jiménez
7
8. Servidor HTTP – Apache2
Como podemos ver, he modificado donde añadir entradas al LOG y al ACCESS.
Lo haré para todos los sitios que cree en esta práctica. En ports.conf no tenemos que
realizar ningún cambio, ya q ambos puertos son el 80 y en este fichero de configuración
de puertos aparece por defecto que escuche por el puerto 80.
Para que nuestro sitio nos muestre algo cuando lo probemos crearemos un
index.html en los DocumentRoot de ambos sitios.
# mkdir /var/www/sitio1
# nano /var/www/sitio1/index.html
Y realizamos lo mismo pero en /var/www/sitio2.
# mkdir /var/www/sitio2
# nano /var/www/sitio2/index.html
Como dije antes, los sitios activados aparecen como enlaces simbólicos en sitesenabled, para habilitar sitios podemos hacerlo de dos modos, o bien hacemos nosotros
manualmente los enlaces con ln –s, o podemos usar a2ensite.
# a2ens ite sitio1
Francisco José Cruz Jiménez
8
9. Servidor HTTP – Apache2
# a2ens ite sitio2
Una vez realizadas las configuraciones tenemos que teiniciar el servidor para
que los cambios se realicen, para ello utilizamos lo siguiente.
# s ervic e apac he2 restart
Para cuando al teiniciar el servidor nos devuelva un error de sintaxis podemos
saber dónde está el error de sintaxis, para ello usamos:
# apache2c tl c onfigtes t
Para probar nuestros sitios nos vamos a un navegador en la máquina real,
ponemos la IP correspondiente a cada sitio en la barra de dirección y comprobamos que
lo que nos muestra es lo correspondiente a esos sitios.
http://192.168.51.2
http://192.168.52.2
Como vemos está todo correcto y funciona correctamente. Con esto acabamos
con este escenario.
Francisco José Cruz Jiménez
9
10. Servidor HTTP – Apache2
Escenario 2: Configura dos VirtualHosts con mismo interfaz, diferente
puerto.
Descripción del escenario
En este segundo escenario de la práctica necesitaremos una máquina con Debian
Squeeze para montar el servicio web, se utilizará la máquina virtual anterior, pero con
una sola interfaz y como cliente usaremos nuestra máquina real.
Configuración del escenario
En este escenario usaremos una máquina Debian Squeeze como servidor, como
el anterior escenario, la misma máquina, pero en cambio solo necesitamos una interfaz.
La configuración de red que vamos a establecer esta vez en la MV va a ser de
Adaptador Puente, aunque también podemos usar Adaptador Solo-Anfitrión, ya que
tenemos que comunicarnos con la máquina real por medio de esta interfaz y puede valer
las dos.
Configuración del servicio
En este escenario configuraremos dos VirtualHosts diferentes, tal como lo
hicimos en el anterior escenario (los sitios serán los mismos, solo modificaré lo que sea
necesario), debemos configurarlos para que cada sitio escuche por un puerto distinto, ya
que la interfaz será la misma, es decir, para acceder al sitio tenemos que usar http:// IP :
puerto.
Para comenzar, modificaremos los sitios que tenemos del anterior escenario y
cambiaremos los puertos de escucha, para sitio1 usaremos el puerto 80 y para sitio2 el
puerto 8080.
# nano /etc/apache2/sites -available/sitio1
Francisco José Cruz Jiménez
10
11. Servidor HTTP – Apache2
# nano /etc/apache2/sites -available/sitio2
En este escenario si tenemos que modificar el archivo ports.conf, ya que
necesitamos añadir a la configuración de puertos que escuche por el 8080.
# nano /etc/apache2/ports.c onf
Francisco José Cruz Jiménez
11
12. Servidor HTTP – Apache2
Posteriormente reiniciamos el servidor y probamos en el navegador los dos
sitios, indicando cada puerto al que va.
# s ervic e apac he2 restart
http://192.168. 128.2
http://192.168.128.2:8080
Con esto ya tenemos configurado y funcionando el escenario número 2. Pasamos
al siguiente.
Escenario 3: Configura dos VirtualHosts con mismo interfaz, mismo
puerto y distinto nombre.
Francisco José Cruz Jiménez
12
13. Servidor HTTP – Apache2
Descripción del escenario
En este tercer escenario de la práctica, como en los dos anteriores, necesitaremos
una máquina con Debian Squeeze para montar el servicio web, se utilizará una máquina
virtual con una interfaz y como cliente usaremos nuestra máquina real.
Configuración del escenario
En este escenario usaremos la máquina Debian Squeeze anterior, de nuevo como
servidor, y con la misma la configuración de red.
Configuración del servicio
En este escenario configuraremos dos VirtualHosts diferentes, tal como lo
hicimos en el anterior escenario (los sitios serán los mismos, solo modificaré lo que sea
necesario), debemos configurarlos para que cada sitio escuche el mismo puerto,
diferenciaremos ambos sitos por su nombre, es decir, para acceder al sitio tenemos que
usar http://sitio1.com.
Para comenzar, modificaremos los sitios que tenemos del anterior escenario y
añadiremos la directiva ServerName.
# nano /etc/apache2/sites -available/sitio1
# nano /etc/apache2/sites -available/sitio2
Francisco José Cruz Jiménez
13
14. Servidor HTTP – Apache2
En este escenario ya podemos quitar de la configuración de ports.conf el puerto
8080, ya no se usará. Posteriormente reiniciamos el servidor y probamos en el
navegador los dos sitio.
# s ervic e apac he2 restart
Para indicarle a que dirección queremos ir cuando introducimos el nombre de un
sitio tenemos que configurar un archivo de nuestra máquina real. En Ubuntu es el
siguiente.
# nano /etc/hosts
En Windows es este.
C:W indowsSystem32driversetchosts
Francisco José Cruz Jiménez
14
15. Servidor HTTP – Apache2
Ahora probamos los sitios.
http://sitio1
http://sitio2
Con esto ya tenemos configurado y funcionando el escenario número 3.
Francisco José Cruz Jiménez
15
16. Servidor HTTP – Apache2
Ejercicio 2
Descripción del escenario
Manteniendo la última configuración del escenario anterior, montar una
plataforma Moodle en unos de los sitios anteriores y llamarlo moodle.misitio.com y en
el otro sitio montar el gestor de contenido Joomla y su nombre será www.misitio.com.
Posteriormente hacer funcionar Moodle por el puerto 443 y funcionando sobre https.
Configuración del escenario
En este escenario usaremos la máquina Debian Squeeze anterior, de nuevo como
servidor, y con la misma la configuración de red.
Configuración del servicio
Para empezar este escenario hay que instalar todos los paquetes necesarios para
montar Moodle y Joomla, ambas funcionan bajo PHP y necesitan una base de datos
entre otras cosas. Vamos a instalar lo siguiente:
# apt-get install php5 libapache2 -mod-php5
Con lo anterior instalaremos el módulo PHP5. Con el comando siguiente
instalaremos la base de datos MySQL, que es la que hemos elegido (existen otras
opciones como PostgreSQL por ejemplo).
# apt-get install mys ql-s erver mys ql-c lient
Lo siguiente que instalaremos es el conector necesario para PHP con MySQL.
Posteriormente también instalaremos la herramienta PHPMyAdmin, que sirve para
gestionar las bases de datos a través del navegador. Tambien necesitaremos php5-curl,
es una dependencia de Moodle, el cual también tiene una serie de dependencias, pero se
instalan automáticamente, lo podemos ver en la siguiente imagen.
# apt-get install php5-mysql
# apt-get install phpmyadmin
# apt-get install php5-c url
Francisco José Cruz Jiménez
16
17. Servidor HTTP – Apache2
Una vez instalado todas estos módulos y dependencias vamos a comenzar a
montar los sitios. Lo primero que haremos será decirle a nuestra máquina real los
nombres que vamos a usar junto con la IP que va dirigida, como hicimos anteriormente.
# nano /etc/hosts
A continuación vamos a configurar los sitios anteriores para asignarle lo que
vamos a montar en él. Le daremos a cada uno un ServerName, indicaremos donde se
ubicará Moodle y Joomla y además separaremos los archivos logs. Moodle lo
montaremos en sitio1 y Joomla en sitio2, así que sitio1 pasará a llamarse
moodle.misito.com y sitio2 www.misitio.com.
# nano /etc/apache2/sites -available/sitio1
Como se puede ver en la imagen anterior he añadido un Alias, este sirve para
poder acceder desde el navegador a PHPMyAdmin. Luego lo probaremos.
Francisco José Cruz Jiménez
17
18. Servidor HTTP – Apache2
# nano /etc/apache2/sites -available/sitio2
Ahora vamos a crear el directorio donde se ubicarán ambos recursos. Para ello
ponemos:
# mkdir /var/www/misitio
A continuación necesitamos los paquetes de Moodle y Joomla, como los
tenemos en la máquina real vamos a transferirlos a la máquina virtual.
$ scp J oomla. zip root@192.168.128.210:/var/www/misitio
$ scp Moodle.tgz root@ 192.168.128.210:/var/www/mis itio
Una vez que ya tenemos los paquetes, lo siguiente es desplegarlos. Para ello
hacemos cosas distintas para cada uno, ya que uno es un zip y el otro un tgz. Para el
paquete de Moodle (el paquete contiene ya la carpeta moodle):
# tar –xvf /var/www/misitio/Moodle.tgz /var/www/misitio
Para descomprimir el zip necesitamos dicho programa, para instarlo:
# apt-get install zip
# mkdir /var/www/misitio/joomla
# unzip J oomla.zip /var/www/misitio/joomla
Tras esto ya tenemos todo listo para empezar a instalar ambas aplicaciones. Para
que todos los cambios que se han realizado surtan efecto, reiniciamos apache.
# s ervic e apac he2 restart
Francisco José Cruz Jiménez
18
19. Servidor HTTP – Apache2
Comenzaremos con Joomla, para acceder introducimos www.misitio.com.
Tras un par de pasos lo tendremos configurado y activo.
Francisco José Cruz Jiménez
19
20. Servidor HTTP – Apache2
Para configurar la plataforma Moodle nos dirigimos a moodle.misitio.com
En la siguiente imagen vemos que tenemos que crear una carpeta y darle los
correspondientes permiso de escritura.
# mkdir /var/www/misitio/moodle/moodledata
# chmod 777 /var/www/mis itio/moodle/moodledata
A continuación seleccionamos el controlador de base de datos que instalamos y
que vamos a usar.
Francisco José Cruz Jiménez
20
21. Servidor HTTP – Apache2
Tras estos pasos ya tendremos Moodle configurado y activo:
Francisco José Cruz Jiménez
21
22. Servidor HTTP – Apache2
Para probar PHPMyAdmin
192.168.128.210/phpmuadmin.
ponemos
en
el
navegador
la
dirección
Para completar este ejercicio solo nos quedar hacer seguro el sitio moodle,
funcionando por https y por el puerto 443. Para empezar habilitaremos el módulo ssl.
# a2enmod ssl
Luego generaremos un certificado que usaremos posteriormente, aunque
también podemos usar en el que trae por defecto.
# openssl req –new –x509 –days 365 –nodes –out httpd.pem –keyout
httpd.key
Francisco José Cruz Jiménez
22
23. Servidor HTTP – Apache2
Luego en la configuración del módulo ssl ponemos las rutas al certificado
generado anteriormente.
# nano /etc/apache2/mods -available/ssl.c onf
A continuación modificamos (o generamos un sitio nuevo para no perder el
anterior, y posteriormente lo habilitamos, deshabilitando el anterior) el sitio de Moodle,
para que escuche por el puerto 443, además añadiremos unas nuevas directivas.
# nano /etc/apache2/sites -available/moodle__ssl
Activamos el sitio nuevo y deshabilitamos el sitio antiguo.
Francisco José Cruz Jiménez
23
24. Servidor HTTP – Apache2
# a2ens ite moodle__ssl
# a2dissite sitio1
Para configurar Moodle para que nos redirija a https ponemos la siguiente
directiva:
# nano /var/www/misitio/moodle/c onfig.php
Tras esto reiniciamos apache y comprobamos que todo está correcto accediendo
a https://moodle.misitio.com. A continuación aceptamos el certificado.
# s ervic e apac he2 restart
Francisco José Cruz Jiménez
24
25. Servidor HTTP – Apache2
Para que cuando introduzcamos moodle.misitio,com y que nos redirija a
https://moodle.misitio.com necesitamos un módulo, en concreto rewrite. Lo
habilitamos. Luego añadimos en el sitio de moodle unas directivas.
# a2enmod rewrite
# nano /etc/apache2/sites -available/moodle__ssl
# s ervic e apac he2 restart
Luego comprobamos que nos redirije correctamente.
Francisco José Cruz Jiménez
25
26. Servidor HTTP – Apache2
Ejercicio 3
Módulo para comprimir: mod_deflate
Este módulo para el servidor Apache2 permite comprimir el contenido de las
páginas web y todos los resultados que se devuelve a los clientes, esto reduce el uso de
ancho de banda por el servidor web y, también aumentar la velocidad de la entrega de
contenido. Para habilitarlo:
# a2enmod def late
Luego en /etc/mod-enable/deflate.conf comprobamos que tenemos lo siguiente,
si no lo añadimos.
AddOutputFilterByT ype DEFLATE text/plain
AddOutputFilterByT ype DEFLATE text/html
AddOutputFilterByT ype DEFLATE text/xml
AddOutputFilterByT ype DEFLATE text/css
AddOutputFilterByT ype DEFLATE text/javascript
AddOutputFilterByT ype DEFLATE image/s vg+xml
AddOutputFilterByT ype DEFLATE image/x-ic on
AddOutputFilterByT ype DEFLATE applic ation/xml
AddOutputFilterByT ype DEFLATE applic ation/xhtml+xml
AddOutputFilterByT ype DEFLATE applic ation/rss+xml
AddOutputFilterByT ype DEFLATE applic ation/javascript
AddOutputFilterByT ype DEFLATE applic ation/x -javascript
Una vez hecho, reiniciamos Apache.
# s ervic e apac he2 restart
Para comprobar si funciona correctamente podemos comprobarlo con cualquier
sniffer, con este en funcionamiento hacemos una petición de cualquier recurso que
nuestro servidor sirva, y tras esto, buscamos el paquete en cuestión en el sniffer y
veremos lo siguiente:
Francisco José Cruz Jiménez
26
27. Servidor HTTP – Apache2
Módulo para cachear: mod_disk_cache
Sin embargo, parece una tarea un poco tonta que el servidor web tenga que estar
comprimiendo una y otra vez los mismos contenidos. Supone estar forzando al
procesador a usar ciclos que pueden sernos necesarios para otra tarea en algo que
debería de poder evitarse. Para eso existe unos módulos con los podemos conseguir
evitar esta sobrecarga inútil para el servidor. Existen tres:
El mod_file_cache es el menos flexible de los tres. Sirve para cachear ficheros
concretos en disco o memoria, pero si modificamos alguno de dichos ficheros sólo
podremos conseguir que Apache sirva la versión actualizada con un reinicio del gestor.
El mod_mem_cache nos permite cachear los ficheros en memoria. Sin
embargo, lo que teóricamente podría suponer una gran mejora de rendimiento del
servidor, nuestro servidor puede quedarse incluso con más trabajo que sin cachear.
El mod_disk_cache va almacenando en un directorio los documentos que se van
solicitando, así como sus cabeceras. Si el mod_deflate está activo y hay unos clientes
que aceptan compresión y otros que no, se cacheará el documento comprimido y sin
comprimir.
De estos tres módulos vamos a elegir el mod_disk_cache, ya es más eficiente.
Para habilitarlo, usaremos:
# a2enmod dis k_c ache.
Francisco José Cruz Jiménez
27
28. Servidor HTTP – Apache2
Luego en /etc/apache2/mod-enable/disk_cache.conf habilitamos CacheEnable
disk / .La carpeta donde se almacenará todo la cacheado es por defecto
/var/cache/apache2/mod_disk_cache, de todas formas se puede cambiar en este
archivo.
# nano /etc/apache2/mod-enable/dis k_c ac he.c onf
Además también en la configuración de nuestros sitios podemos añadir esta
misma directiva. Una vez hecho, reiniciamos Apache.
# s ervic e apac he2 restart
Para comprobar si funciona correctamente podemos comprobarlo haciendo una
petición de un recurso, luego hacemos una búsqueda y vemos si hay cosas en el
directorio de la cache.
# find /var/c ache/apac he2/mod_disk_c ac he
Francisco José Cruz Jiménez
28
29. Servidor HTTP – Apache2
mod_userdir
El módulo userdir de Apache permite a los visitantes acceder a sitios web en su
servidor al escribir un hostname o dominio, seguido de (~) y el nombre de usuario del
dueño del sitio web. Ejemplo:
http://mis itio.c om/~nombredeusuario
Se usa mayormente como un sistema temporero de URL, que le permite a los
usuarios ver sus sitios web aún cuando no se ha configurado el DNS o no apunta hacia
el servidor. Para habilitar:
# a2enmod us erdir
En la configuración del módulo:
# nano /etc/apache2/mods -enabled/us erdir.c onf
Posteriormente crear el public_html que se mostrará cuando accedamos, en el
home del usuario en cuestión y dar permisos correspondiente.
# nano /home/usuario/public _html
Una vez reiniciado el servidor ya podemos acceder al sitio del usuario con:
http://mis itio.c om/~usuario
Como podemos imaginar no es para nada recomendable hacerlo como root,
siempre hacerlo con un usuario corriente.
Francisco José Cruz Jiménez
29
30. Servidor HTTP – Apache2
Ejercicio 4
Vamos a configurar un nuevo sitio para que contenga un directorio "privado" al
que sólo puedan acceder usuarios autorizados. Vamos a usar el tipo de autenticación
básica, y realizarlo usando el archivo htaccess para configurar las directivas de
seguridad y crear un archivo de usuarios/contraseñas. Luego indicaré cómo se realizaría
utilizando el tipo de autenticación "digest".
Primero vamos a “jugar” con algunas directivas nuevas. Primero creamos un
nuevo sitio llamado privamo.
# nano /etc/apache2/sites -available/privad o
Creamos su carpeta correspondiente y su html de bienvenida.
Habilitamos el sitio, reiniciamos y probamos. Tambien tenemos que añadir en
hosts privado.misitio.com
# a2ens ite privado
# s ervic e apac he2 restart
Francisco José Cruz Jiménez
30
31. Servidor HTTP – Apache2
Una vez que ya tenemos el sitio activo, vamos a probar unas nuevas directivas,
la primera va a ser indexes, esto hace q nos muestre un índice de todo los que contiene
la dirección, para probarlo renombramos el archivo html ( index.html ).
#mv /var/www/privado/index.html / var/www/privado/privado.index.html
Y probamos el resultado.
Como vemos, nos muestra un índice de lo que contiene la carpeta privado, para eso
la opción indexes debe estar activa en el directorio. Para evitar esto, le indicamos un -.
Francisco José Cruz Jiménez
31
32. Servidor HTTP – Apache2
A continuación creamos una carpeta apuntes en privado. Dentro de esta creamos
uno.doc y dos.doc.
# mkdir /var/www/privado/apuntes
# nano /var/www/privado/apuntes/uno.doc
# nano /var/www/privad o/apuntes /dos.doc
En la configuración del sitio hacemos unos cambios. Añadimos el directorio
apuntes y le decimos que indexes y que el documento que debe mostrar cuando
accedemos tiene que ser inicio.html, esto lo hacemos con la directiva Directoryindex.
# nano /etc/apache2/sites -available/privad o
Luego creamos inicio.html, que quedaría asi:
Francisco José Cruz Jiménez
32
33. Servidor HTTP – Apache2
Reiniciamos el servidor y comprobamos que nos muestra en el navegador.
Ahora estos últimos cambios vamos a ubicarlos en un archivo llamado .htaccess,
este nos va a permitir realizar los cambios sin tener que reiniciar el servicio, algo muy
útil. Para ello copiamos las dos directivas de la carpeta apuntes a este archivo nombrado
anteriormente (lo crearemos).
# nano /var/www/privad o/apuntes /.htacc ess
En sustitución de estas directivas, en la configuración del sitio pondremos:
# nano /etc/apache2/sites -available/privad o
Y probamos sin reiniciar.
Francisco José Cruz Jiménez
33
34. Servidor HTTP – Apache2
Mod_auth_basic
Ahora pondremos el acceso al directorio anterior bajo una autentificación, como
pide le ejercicio 4 en sí. Para ello habilitamos el módulo.
# a2enmod auth_basic
A continuación tenemos que crear un archivo donde almacenar usuario y
contraseña.
# mkdir /etc /apac he2/c laves
# htpass wd –c pass .txt fran
Esto lo usamos para crear una clave encriptada. Luego añadimos al archivo
htaccess unas directivas. Posteriormente probamos.
# nano /var/www/privad o/apuntes /.htacc ess
Francisco José Cruz Jiménez
34
35. Servidor HTTP – Apache2
Mod_auth_digest
Usando mod_digest de Apache podemos implementar una forma mucho más
segura de restringir el acceso a determinados lugares de un sitio web que la anterior,
Basic Authentication. Para habilitar el módulo usamos:
# a2enmod auth_digest
Luego, como en la configuración anterior, en .htaccess del sitio en cuestión
ponemos lo siguiente.
# nano /var/www/privad o/ apuntes /.htacc ess
AuthType Digest
AuthName "apuntes"
AuthDigestDomain /apuntesr/ privado.misitio.com/apuntes/
AuthDigestFile /etc/ apache2/passwd
Require valid-user
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
Para crear el archivo con las contraseñas passwd usamos:
htdigest -c pass wd apuntes fran
Francisco José Cruz Jiménez
35
36. Servidor HTTP – Apache2
Ejercicio 4
Awstats
AWStats es un programa que genera estadísticas para servidores web. Lo que
hace es mostrar el contenido del archivo de log del servidor web de forma gráfica. Entre
las cosas que muestra están el número de visitas, navegadores usados, sistemas
operativos... Para poder usarlo es necesario tener acceso de lectura al fichero de log del
servidor y poder ejecutar scripts hechos en Perl. Para instalar:
# apt-get install aws tats
Una vez instalado vamos a configurarlo. El fichero de configuración que
tocaremos será awstats.conf. Lo primero que vamos a modificar es el idioma, para ello:
# nano /etc/awstats/awstats.c onf
Francisco José Cruz Jiménez
36
37. Servidor HTTP – Apache2
Para que las imágenes que contiene la página que se va a generar se vean
correctamente, hay que indicarle a Awstats donde las ubicamos. Para ello disponemos
de la directiva DirIcons en el archivo de configuración Esta directiva se caracteriza
porque la ruta que indiquemos va a resulta relativa a la ubicación de la página web. Por
ello no debemos poner “DirIcons="/etc/awstats/icon/", porque estaría intentando
acceder a ”http://misitio.com/etc/awstats/icon/icon_name.png”. La solución a este
inconveniente es utilizar alias de nuestro servidor Apache. Simplemente tenemos que
añadir la siguiente línea al archivo de configuración de apache o sitio Alias /awstatsicon/ /usr/share/awstats/icon/.
Con la siguiente directiva seleccionaremos los dominios de los cuales queremos
analizar las estadísticas.
Mediante la siguiente directiva daremos la ubicación de los log de acceso de los
dominios, podemos usar el principal de apache, o en nuestro caso, como tenemos
separado los archivos log de cada dominio, indicaremos ambos.
En el navegador, ponemos nuestra dirección seguido de /cgi-bin/awstats/ y
veremos las estadísticas.
Francisco José Cruz Jiménez
37
38. Servidor HTTP – Apache2
Para actualizar las estadísticas:
# /usr/lib/cgi-bin/awstats.pl -c onfig=misitio.c om –update
Como podemos pensar, no vamos a estar continuamente ejecutando lo anteror
para que se actualicen los datos. Para automatizar esta tarea la agregaremos al cron.
# crontab –e
Webalizer
Este es otra herramienta para generar estadisticas de nuestros sitios, para
instalar:
# apt-get install webalizer
Francisco José Cruz Jiménez
38
39. Servidor HTTP – Apache2
El archivo de configuración es webalizer.conf, es bastante parecido al anterior,
tenemos que modificar lo mismo que antes.
# nano /etc/webalizer/webalizer.c onf
Webalizer genera los reportes en formato HTML, que al igual que Awstats,
podemos observar en un navegador, pero sólo genera estos reportes las veces que
ejecutemos el programa. Por lo tanto añadiremos al cron la ejecución del programa,
como hicimos con el anterior. Para ver estadísticas:
Francisco José Cruz Jiménez
39