servidor http apache

39
Francisco José Cruz Jiménez 2º ASIR SRI SERVIDOR HTTP APACHE2

Upload: francisco-jose-cruz-jimenez

Post on 13-Jun-2015

3.706 views

Category:

Technology


5 download

DESCRIPTION

Como configurar un Servidor HTTP Apache. Tutorial de instalación de Joomla y Moodle

TRANSCRIPT

Page 1: Servidor HTTP Apache

Francisco José Cruz Jiménez 2º ASIR

SRI SERVIDOR HTTP – APACHE2

Page 2: Servidor HTTP Apache

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

Page 3: Servidor HTTP Apache

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.

Page 4: Servidor HTTP Apache

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

Page 5: Servidor HTTP Apache

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í.

Page 6: Servidor HTTP Apache

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

Page 7: Servidor HTTP Apache

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

Page 8: Servidor HTTP Apache

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

Page 9: Servidor HTTP Apache

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.

Page 10: Servidor HTTP Apache

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

Page 11: Servidor HTTP Apache

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

Page 12: Servidor HTTP Apache

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.

Page 13: Servidor HTTP Apache

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

Page 14: Servidor HTTP Apache

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

Page 15: Servidor HTTP Apache

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.

Page 16: Servidor HTTP Apache

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

Page 17: Servidor HTTP Apache

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.

Page 18: Servidor HTTP Apache

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

Page 19: Servidor HTTP Apache

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.

Page 20: Servidor HTTP Apache

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.

Page 21: Servidor HTTP Apache

Servidor HTTP – Apache2

Francisco José Cruz Jiménez

21

Tras estos pasos ya tendremos Moodle configurado y activo:

Page 22: Servidor HTTP Apache

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

Page 23: Servidor HTTP Apache

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.

Page 24: Servidor HTTP Apache

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

Page 25: Servidor HTTP Apache

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.

Page 26: Servidor HTTP Apache

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:

Page 27: Servidor HTTP Apache

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.

Page 28: Servidor HTTP Apache

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

Page 29: Servidor HTTP Apache

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.

Page 30: Servidor HTTP Apache

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

Page 31: Servidor HTTP Apache

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

Page 32: Servidor HTTP Apache

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:

Page 33: Servidor HTTP Apache

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.

Page 34: Servidor HTTP Apache

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

Page 35: Servidor HTTP Apache

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

Page 36: Servidor HTTP Apache

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

Page 37: Servidor HTTP Apache

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.

Page 38: Servidor HTTP Apache

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

Page 39: Servidor HTTP Apache

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: