servidor http apache
DESCRIPTION
Como configurar un Servidor HTTP Apache. Tutorial de instalación de Joomla y MoodleTRANSCRIPT
Francisco José Cruz Jiménez 2º ASIR
SRI SERVIDOR HTTP – APACHE2
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
2
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
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
3
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 apache2
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 apache2
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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
4
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
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
5
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í.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
6
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/interfaces
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
# service networking restart
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
7
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/sit io1
# nano /etc/apache2/sites-available/sit io2
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
8
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/sit io1/index.html
Y realizamos lo mismo pero en /var/www/sitio2.
# mkdir /var/www/sitio2
# nano /var/www/sit io2/index.html
Como dije antes, los sitios activados aparecen como enlaces simbólicos en sites-
enabled, para habilitar sitios podemos hacerlo de dos modos, o bien hacemos nosotros
manualmente los enlaces con ln –s, o podemos usar a2ensite.
# a2ensite sitio1
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
9
# a2ensite sitio2
Una vez realizadas las configuraciones tenemos que teiniciar el servidor para
que los cambios se realicen, para ello utilizamos lo siguiente.
# service apache2 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:
# apache2ctl configtest
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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
10
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/sit io1
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
11
# nano /etc/apache2/sites-available/sit io2
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.conf
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
12
Posteriormente reiniciamos el servidor y probamos en el navegador los dos
sitios, indicando cada puerto al que va.
# service apache2 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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
13
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/sit io1
# nano /etc/apache2/sites-available/sit io2
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
14
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.
# service apache2 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 indows\System32\drivers\etc\hosts
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
15
Ahora probamos los sitios.
http://sitio1
http://sitio2
Con esto ya tenemos configurado y funcionando el escenario número 3.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
16
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 mysql-server mysql-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-curl
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
17
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/sit io1
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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
18
# nano /etc/apache2/sites-available/sit io2
Ahora vamos a crear el directorio donde se ubicarán ambos recursos. Para ello
ponemos:
# mkdir /var/www/misit io
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 Joomla.zip [email protected]:/var/www/misit io
$ scp Moodle.tgz [email protected]:/var/www/mis it io
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/misit io/Moodle.tgz /var/www/misitio
Para descomprimir el zip necesitamos dicho programa, para instarlo:
# apt-get install zip
# mkdir /var/www/misit io/joomla
# unzip Joomla.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.
# service apache2 restart
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
19
Comenzaremos con Joomla, para acceder introducimos www.misitio.com.
Tras un par de pasos lo tendremos configurado y activo.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
20
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/misit io/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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
21
Tras estos pasos ya tendremos Moodle configurado y activo:
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
22
Para probar PHPMyAdmin ponemos en el navegador la dirección
192.168.128.210/phpmuadmin.
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
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
23
Luego en la configuración del módulo ssl ponemos las rutas al certificado
generado anteriormente.
# nano /etc/apache2/mods-available/ssl.conf
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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
24
# a2ensite moodle__ssl
# a2dissite sit io1
Para configurar Moodle para que nos redirija a https ponemos la siguiente
directiva:
# nano /var/www/misitio/moodle/config.php
Tras esto reiniciamos apache y comprobamos que todo está correcto accediendo
a https://moodle.misitio.com. A continuación aceptamos el certificado.
# service apache2 restart
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
25
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
# service apache2 restart
Luego comprobamos que nos redirije correctamente.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
26
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.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/ javascript
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Una vez hecho, reiniciamos Apache.
# service apache2 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:
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
27
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 disk_cache.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
28
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/disk_cache.conf
Además también en la configuración de nuestros sitios podemos añadir esta
misma directiva. Una vez hecho, reiniciamos Apache.
# service apache2 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/cache/apache2/mod_disk_cache
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
29
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.com/~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 userdir
En la configuración del módulo:
# nano /etc/apache2/mods-enabled/userdir.conf
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.com/~usuario
Como podemos imaginar no es para nada recomendable hacerlo como root,
siempre hacerlo con un usuario corriente.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
30
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/privado
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
# a2ensite privado
# service apache2 restart
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
31
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 -.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
32
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/privado/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/privado
Luego creamos inicio.html, que quedaría asi:
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
33
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/privado/apuntes/.htaccess
En sustitución de estas directivas, en la configuración del sitio pondremos:
# nano /etc/apache2/sites-available/privado
Y probamos sin reiniciar.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
34
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/apache2/c laves
# htpasswd –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/privado/apuntes/.htaccess
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
35
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/privado/apuntes/.htaccess
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 passwd apuntes fran
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
36
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 awstats
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.conf
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
37
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 /awstats-
icon/ /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.
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
38
Para actualizar las estadísticas:
# /usr/ lib/cgi-bin/awstats.pl -config=misitio.com –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
Servidor HTTP – Apache2
Francisco José Cruz Jiménez
39
El archivo de configuración es webalizer.conf, es bastante parecido al anterior,
tenemos que modificar lo mismo que antes.
# nano /etc/webalizer/webalizer.conf
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: