Está en la página 1de 4

ASI -::- Prácticas -::- Curso 09/10 #5 Servidor Web – Apache 2

ASI Administración de Servicios en Internet


09/10 Prácticas
#5 Servidor Web – Apache 2

Objetivo
En esta práctica se pretende mostrar el proceso de configuración y arranque del servidor Web
Apache 2.

Una vez finalizada la sesión dispondremos de un servidor Web configurado a nuestra medida
y dispondremos de las herramientas necesarias para administrar un servidor Web según las
necesidades que nos impongan contemplando aspectos tales como puertos sobre los que
atender peticiones, autenticación mediante usuarios y contraseñas, configuración de
directorios y alias y protección de directorios.

Conocimientos previos
Servidor Web

Métod UR Versió Cabecer


GET //www.dtic.ua.es/index.html HTTP/1.1

Servidor

Cliente

Internet HTML
TCP/IP

Cliente ligero HTTP Servidor


Navegador Web
web

JPEG
JPEG
Pág.
HTML

El funcionamiento de los servicios web se basa en la arquitectura cliente/servidor donde los


navegadores son los clientes web, Apache es el servidor y el servicio que se presta es el
acceso a recursos web.

1
ASI -::- Prácticas -::- Curso 09/10 #5 Servidor Web – Apache 2

Configuración
En la distribución Knoppix con la que trabajaremos, los archivos de configuración de
Apache2 se encuentra instalados en la carpeta /etc/apache2. Estos archivos son propiedad
de root y por lo tanto solo este usuario podrá modificarlos. Además al tratarse de un LiveCD,
inicialmente estos archivos son enlaces blandos a los mapeados del CD y, al igual que en
otras prácticas, tendremos que escribir en ellos forzando a que los archivos físicos se creen y
dejen de ser meros enlaces.

Para arrancar el servidor Apache2 utilizaremos el script propio para el inicio y parada de
servicios alojado en /etc/init.d/apache2 <start|stop|restart>. Al lanzar este script podremos
ver como se nos indica la necesidad de modificar otro fichero que se encarga de controlar que
el arranque del servicio se pueda realizar o no. El alumno deberá pues modificar
convenientemente el fichero /etc/default/apache2 para que el arranque del servicio sea
posible.

La primera consideración en al configuración del un servidor web es el puerto o puertos que


vamos a disponer para la escucha de las peticiones de páginas web. Esta configuración se
realiza en el fichero port.conf. Las directivas que se pueden utlizar son: BindAddress, Listen y
Port.

 BindAddress: directiva usada para especificar la dirección IP que debe escuchar el


servidor.

BindAddress direccion_ip

 Listen: directiva con la que se le indica al servidor que escuche ciertas direccciones
y/o puertos.

Listen [direccion_ip:]puerto

...........

Listen [direccion_ip:]puerto

 Port: directiva que asigna al servidor un puerto comprendido entre 0 y 65535. Si se


usan Listen, Port dejará de tener efecto. Normalmente se utiliza con BindAddress
puesto que esta indica la dirección ip sin el puerto.

Port numero_puerto

Si queremos limitar nuestro servidor para que sólo responda a una dirección IP de todas las
que tiene asignada nuestro PC, podemos usar las directivas listen y bindaddress (ésta junto a
port).

El siguiente paso es configurar el propio servicio, para especificar como se realizarán las
conexiones y como se ejecutarán. Esto se realiza en /etc/apache2/apache2.conf. En la
configuración de apache, se debe indicar el usuario y grupo con el que se ejecutarán los
procesos hijos del servidor. Para ello se dispone de las directivas user y group. Por ejemplo,
para que un servidor web lance sus procesos con el usuario nobody y el grupo nobody,
deberemos insertar las directivas:

user nobody
group nobody

Como hemos comentado, un servidor web se dedica a servir páginas HTML que se
encuentran bajo un determinado directorio. Para indicar a un servidor cuál es el directorio

2
ASI -::- Prácticas -::- Curso 09/10 #5 Servidor Web – Apache 2

donde se encuentran los documentos que debe mostrar, se utiliza la directiva


DocumentRoot. Si queremos que un servidor sirva páginas del directorio /var/local/www, se
lo indicaremos:

DocumentRoot /var/local/www

Así mismo, al servidor también se le debe indicar a partir de qué directorio se encuentran los
ficheros necesarios para el funcionamiento del servidor como por ejemplo, srm.conf,
httpd.conf, los ficheros de logs, ... Para ello dispone de la directiva ServerRoot, con la que se
le indica esta información.

Para indicar exactamente dónde se encuentran los ficheros de logs, tenemos las directivas
ErrorLog y CustomLog con las que, respectivamente, se indican los ficheros de error y
acceso. Si indicamos un path absoluto, no se tiene en cuenta la directiva ServerRoot para
obtener el nombre completo de los ficheros. Por ejemplo, para que el fichero donde se
guardan los errores que ocurren en el servidor sea el fichero /var/log/httpd/errores.log, la
directiva a usar es:

ErrorLog /var/log/httpd/errores.log

Si queremos que los accesos se guarden en el fichero /var/log/httpd/accesos.log, la directiva


será:

CustomLog /var/log/httpd/accesos.log combined

El segundo argumento de la directiva nos indicará el formato del las líneas de log dentro del
fichero indicado.

Cuando introducimos una URL del estilo http://nombre_servidor:puerto/directorio_local, en el


que no especificamos la página HTML a mostrar, el servidor puede actuar de 2 maneras
diferentes. Por un lado, puede mostrarnos un listado del directorio (no recomendable) o, por
otro, mostrarnos el contenido de una página HTML por defecto. Para conseguir esta úlitma
opción, debemos definir la directiva DirectoryIndex, de tal forma que cuando no se indique una
página en concreto, se muestre una por defecto (normalmente index.html) que debe residir en
el directorio al que se accede. Así, un ejemplo del uso de estadirectiva, será:

DirectoryIndex index.html index.htm index.php index.phtml index.jsp

Necesitamos gestionar usuarios con el servidor y controlar los accesos a determinados


directorios. Para crear usuarios, disponemos del comando htpasswd. Con dicho comando,
podemos crear un fichero que contenga los diferentes usuarios de nuestro sistema. Por
ejemplo, la ejecución del siguiente comando, crea el fichero usuarios con el usuario alu1. Nos
pedirá por el terminal que introduzcamos la contraseña del usuario.

htpasswd -c /etc/apache2/members/usuarios alu1

Para añadir el uuario alu2, deberemos ejecutar la orden:

htpasswd /etc/apache2/members/usuarios alu2

La ayuda de este comando indica los parámetros que podemos utilizar y su función (man
htpasswd).

Para proteger el directorio /var/local/www/privado y que sólo el usuario alu1 pueda acceder a
él, el administrador del web debe introducir las siguientes directivas en el fichero de
configuración /etc/apache2/apache2.conf.

3
ASI -::- Prácticas -::- Curso 09/10 #5 Servidor Web – Apache 2

<Directory /var/local/www/privado>
AuthName “Acceso restrinigido”
AuthType Basic
AuthUserFile /etc/apache2/members/usuarios
Require valid-user
</Directory>

Para denegar a todos los clientes que no se conecten desde la IP 127.0.0.1, insertaríamos:

<Directory /var/local/www/privado>
order deny,allow
deny from all
allow from 127.0.0.1
</directory>

Una de las características que diferencian a Apache2 es precisamente el disponer de archivos


distribuidos para la configuración de Apache. Por ejemplo, en la distribución de Knoppix sobre
la que trabajaremos la configuración del DocumentRoot, en lugar de hacerse directamente
sobre apache2.conf se realiza dentro de un fichero de configuración en la carpeta
/etc/apache2/sites-enabled/000-default, y es el fichero apache2.conf quien se encarga de
cargar estos archivos que activan los distintos sitios.

Enunciado
La práctica consistirá en configurar varios aspectos del servidor Web Apache2 de tal forma
que contemple las siguientes características:

 El puerto de escucha por defecto del servicio será el puerto 80, sin filtrar ninguna IP.

 El alumno creará un directorio llamado “raiz” en el cual residirá un fichero


“myindex.html” que contendrá una página de presentación creada por el alumno y un
enlace al fichero “prot.html” (se explica a continuación). Esta página contendrá los
datos del alumno/s que realizan la práctica. Este directorio será el directorio principal
del servidor, y la página de carga por defecto la creada por el alumno “myindex.html”

 Se creará otra carpeta llamada “protegido” la cual contendrá un fichero llamado


“prot.html” creado por el alumno con la frase “Este fichero reside en una zona
protegida”.

 La carpeta “protegido” será accesible únicamente mediante usuario y contraseña, por


lo que debe configurarse un alias en el servidor apache que apunte a este directorio y
proteger la carpeta debidamente. Se debe definir al menos un usuario llamado
“profesor” y contraseña “asi” para el acceso a esta carpet

 El servicio Apache2 debe poder arrancarse utilizando el script /etc/init.d/apache2.