Servidor HTTP
En Ubuntus con Apache
Javier García Gómez
2º Asir B
Índice
Ejercicio 1: ..................................................................................................................................... 3
Ejercicio 2: ..................................................................................................................................... 5
[Link]............................................................................................................................. 6
[Link] .................................................................................................................................. 6
Passwd ....................................................................................................................................... 6
envvars ...................................................................................................................................... 6
Magic ......................................................................................................................................... 6
mods-available .......................................................................................................................... 6
mods-enabled ........................................................................................................................... 6
sites-available ............................................................................................................................ 6
sites-enabled ............................................................................................................................. 6
conf-available ............................................................................................................................ 7
conf-enabled ............................................................................................................................. 7
Ejercicio 3 .................................................................................................................................... 10
log de accesos ......................................................................................................................... 18
log de error .............................................................................................................................. 18
Ejercicio 4. Páginas Personales.................................................................................................... 18
Ejercicio 1:
1.1 Instalación de Apache
Para llevar a cabo esta parte necesitamos conectividad por lo que ponemos nuestra máquina
virtual en configuración adaptador puente y con los dns apuntando al servidor externo de
andared. Esta máquina tendrá alojada un servidor http y un servidor dns. Sin embargo, Como
toda las pruebas las hacemos a través de un cliente windows xp y ubuntus, durante toda la
práctica podemos dejar esta configuración ya que el servidor tiene una ip fija: [Link]. El
único problema sería al acceder al servidor http ya que el servidor dns externo de andared no
nos llevaría a nuestros sitio web. Esto no es problemático porque el acceso al servidor http lo
hacemos con los clientes que si tendrán configurado como servidor dns, nuestro servidor y no
el de andared.
Para llevar a cabo la instalación, nos logueamos como root y lanzamos el comando:
sudo apt-get update
sudo apt-get install apache2
El primero actualiza los paquetes disponibles ya que por defecto ubuntus no trae el paquete
apache2. El segundo nos instala nuestro servidor apache2 con lo básico.
1.2 Comprobarlo abriendo un navegador y escribiendo [Link] en la barra de
direcciones del navegador de nuestro servidor.
Ilustración 1 Ventana de inicio del servidor apache
1.3 Comprueba la versión utilizada
Lanzamos el comando apachectl con la opción -v (Ilustración 2)
Ilustración 2 Versión de apache instalada
Índice Página 3
1.4 Comprueba que se han creado el usuario www-data y el grupo-data
Para la comprobación vamos a irnos al fichero passwd y al fichero group. Ambos alojados en
/etc. Podemos observar su existencia en la Ilustración 3.
Ilustración 3 Usuario www-data y grupo www-data
1.5 comprueba que se ha creado el directorio /var/www y quien es su propietario y grupo
Ejecutamos ls -l /var y podemos ver que existe la carpeta y que el propietario y el grupo son
root (Ilustración 4).
Ilustración 4 Existencia de la carpeta www
1.6 Personaliza la página que viene por defecto.
Para ello debemos modificar el fichero [Link] que se encuentra en
/var/www/html/[Link].
En la Ilustración 5 podemos ver la modificación y en la Ilustración 6 su resultado.
Índice Página 4
Ilustración 5 Modificación del fichero [Link]
1.7 Abre el navegador del servidor y accede a [Link]
Ilustración 6 Resultado de la modificación
Ejercicio 2:
2.1 Abre la carpeta apache2 e indica a continuación los ficheros y directorios que se
encuentran en ella y escribe para que sirven.
En la Ilustración 7 podemos ver que los fichero y directorios son:
Ficheros [Link], envvars, passwd, [Link] y magic.
Directorios conf-available, conf-enabled, mod-available, mod-enabled, sites available, sites-
enabled.
Ilustración 7 Contenido de la carpeta apache2
Índice Página 5
[Link]
Archivo principal de configuración.
Contiene un conjunto de directivas que determinan el comportamiento del servidor.
Las directivas que no se especifican en este fichero, utilizan su valor por defecto
En este fichero se incluyen otros ficheros de configuración (usando la directiva include).
[Link]
En él se definen las IPs y puertos en los que escucha el servidor.
Passwd
Creado posteriormente en la realización de la práctica. Contiene usuarios y credenciales de los
mismos para poder acceder a sitios privados. Podría haberse buscado otra ubicación para este
fichero pero decidí ponerlo en esta carpeta.
envvars
Contiene las variables de entorno de apache
Magic
instrucciones para determinar el tipo MIME en base a los primeros bytes de un archivo.
Echo en falta el fichero [Link] que era el antiguo fichero de configuración de apache.
Actualmente remplazado por [Link]
mods-available
Directorio que contiene los archivos de los diferentes módulos que puede utilizar apache.
Contiene ficheros .load y .conf
Los ficheros .load contienen todo lo necesario para cargar un módulo en concreto
Los ficheros .conf asociados contienen la configuración básica para inicializar el módulo.
mods-enabled
Directorio de configuración de los módulos activos de Apache. Contiene enlaces simbólicos a
los ficheros del directorio mods-available
sites-available
Este directorio tiene archivos de configuración para los Servidores Virtuales. Los servidores
virtuales permiten que Apache2 sea configurado para múltiples sitios que tengan
configuraciones separadas.
sites-enabled
Directorio de configuración, que contiene los hosts virtuales activos.
Índice Página 6
Contiene enlaces simbólicos al directorio /etc/apache2/sites-available. Similarmente cuando
un archivo de configuración en sites-available tiene un enlace simbólico, el sitio configurado
por él será activo una vez que se reinicie Apache2
conf-available
este directorio contiene los archivos de configuración disponibles. Todos los archivos que se
ubicaban anteriormente en /etc/apache2/conf.d deben moverse a /etc/apache2/conf-
available.
conf-enabled
contiene enlaces simbólicos a los ficheros alojados en /etc/apache2/conf-available. Cuando un
fichero tiene un enlace simbólico estará disponible la próxima vez que se reinicie apache.
2.2 Consulta el fichero [Link] y describe su contenido. ¿Están habilitados los
servidores virtuales por nombre en todas las direcciones IP y en el puerto 80 (NameVirtualHost
*80)? Si están habilitados, esto anula el servidor principal en todas las direcciones IP
Ilustración 8 Contenido del fichero [Link]
Vemos que por defecto sólo tenemos escucha por el puerto 80.
Viendo este fichero no podemos saber si están los servidores virtuales habilitados. Si lo
estuvieran, el servidor principal quedaría sin efecto.
2.3 Accede al directorio sites-available y describe el contenido ¿ Está el archivo default?
¿Que contiene este archivo?
Viendo la Ilustración 9 podemos afirmar que existe dicho archivo. En el fichero 000-
[Link] se encuentra la configuración del servidor virtual por defecto.
Índice Página 7
Ilustración 9 Contenido de la carpeta sites-available
2.4 Accede al directorio sites-enabled y comprueba que que existe e fichero 000- default
que es un enlace simbólico a un fichero ¿ a que fichero se refiere y donde está?
Podemos ver que existe el fichero [Link] que apuntará al fichero [Link]
del directorio sites-available.
2.5 Consulta el fichero 000-default y verifica que hay creado un servidor virtual. ¿ En
cuantas direcciones IP escucha? ¿ Cual es su directorio raíz?
Ilustración 10 Archivo [Link]
Vemos que existe un servidor virtual que acepta cualquier ip (ya que tiene *) y escucha por el
puerto 80.
Su directorio raíz es /var/www/htlm.
2.6 Consulta el fichero [Link] ¿Cuál es el valor de la directiva ServerRoot? ¿ Las
directivas User y Group a que usuario y grupo definen?
En la Ilustración 11 podemos ver que ServerRoot viene comentado.
Ilustración 11 ServerRoot
Índice Página 8
Ilustración 12 User y Group
2.7 ¿En que directorio se establecen las variables de entorno?
Las variables de entorno se encuentra dentro del fichero envvars que estaba situado en
/etc/apache2/envvars.
2.8 ¿Cuál es el máximo número de peticiones simultáneas que permite el servidor? ¿ Qué
directivas definen este comportamiento?
En la Ilustración 13 podemos ver que el número máximo es 100.
Ilustración 13 Número máximo de peticiones que permite el servidor.¡
2.9 ¿ Se permiten conexiones persistentes ( en todas las conexiones de un usuario se
atienden en la misma conexión TCP)? ¿ Qué directiva define este comportamiento?
En la Ilustración 14 vemos que por defecto la directiva permite las conexiones persistentes.
Ilustración 14 Conexiones persistentes
2.10 En Apache hay una directiva que especifica el tiempo máximo que puede tardar una
petición en ser atendida. ¿Cuál es esa directiva? Explica para qué puede ser útil.
En la Ilustración 15 podemos ver la directiva y el tiempo que tiene asignado por defecto, que
es de 5 segundos. Si no existiera dicho tiempo, las peticiones podrían acabar colapsando el
servidor. Si pasados estos cinco segundos, no se ha respondido a la petición, el cliente lo sabrá
y podrá actuar en consecuencia.
Ilustración 15 Tiempo máximo en responder
Índice Página 9
2.11 Mostrar los archivos que se utilizaran por Apache como archivos por defecto en la
visualización de un directorio (normalmente [Link]). Si no se encuentra [Link],
incluirlo.
En el archivo [Link] dentro de etc/apache2/[Link] buscamos:
DirectoryIndex [Link] [Link]
Aquí están los ficheros de visualización por defecto. He añadido el [Link].
Ejercicio 3
Debes configurar un servidor Apache, con las siguientes características:
• Servirá dos páginas web: winsurf y kitesurf
• winsuf estará alojada en /var/www/winsurf
• kitesurf estará alojada en /var/www/kitesurf
• El servidor mostrará winsurf cuando se acceda a la dirección [Link] a
través del navegador de cualquier cliente, solo al usuario pepe.
• El servidor mostrará kitesurf cuando se acceda a la dirección [Link] a
través del navegador de cualquier cliente
Para probar el funcionamiento necesitarías un servidor DNS
Como hemos realizado la configuración e instalación del servidor DNS cae fuera de los
objetivos de esta práctica. En la Ilustración 16,Ilustración 17 e Ilustración 18 podemos ver
como ha quedado dicha configuración.
Ilustración 16 Zona Directa e Inversa
Índice Página 10
Ilustración 17 Fichero de configuración de la zona directa
Ilustración 18 Fichero de configuración de la zona inversa
Para que apache reconozca bien el servidor dns interno. Debemos añadir al fichero
[Link] la línea
ServerName Localhost
Una vez creado el servidor DNS vamos a realizar la configuración del servidor http.
Lo primero será crear las carpetas:
mkdir /var/www/kitesurf
mkdir /var/www/windsurf
Luego creamos un fichero [Link] dentro de cada carpeta.
Índice Página 11
echo "A tope con winsurf" > /var/www/windsurf/[Link]
echo "A tope con kitesurf" > /var/www/windsurf/[Link]
Como el servidor windsurf será privado para el usuario pepe tendremos que instalar un
paquete apache2-utils que nos permitirá activar el módulo necesario.
Una vez instalado ya podremos directiva .httaccess
Este comando crea el archivo passwd en la carpeta /etc/apache2 e introduce dentro al usuario
pepe y la clave que introduzcamos por teclado.
Ahora vamos a crear nuestros servidor virtuales. Para ello creamos en sites-available dos
ficheros. [Link] y [Link]. A priori, debería funcionar acabado en .com.
Pero al tratar de crear el enlace simbólico a la carpeta sites-enabled daba problemas que se
resolvieron terminando los fichero en .conf.
Ilustración 19 Fichero del host virtual [Link]
En la podemos ver que el sitio [Link] esta escuchando por el puerto 8080. Ya que
en el siguiente apartado nos pedirán que lo modifiquemos para que su puerto de escucha sea
el 8080. Originalmente, después de la ip ponía :80.
Ilustración 20 Fichero de configuración del sitio [Link]
Índice Página 12
Una vez creado los ficheros debemos ejecutar
a2ensite [Link] y a2ensite [Link] para que se cree el enlace simbólico en
sites-enabled.
Las capturas entrando en los servidores desde los clientes se me han quedado en clase y ahora
mismo la configuración es distinta por lo que no puedo añadirlas.
3.1 Modificar el puerto en el que escucha el servidor Apache del sitio virtual winsurf para
que sea el 8080. Indica el fichero y línea que tienes que modificar y Pruébalo.
Además, de poner 8080 tras la ip, como comenté en el apartado anterior. Debemos decirle al
servidor que también escuche por el puerto 8080. Para ello nos vamos al fichero [Link] y
añadimos la línea Listen 8080.
Ilustración 21 Archivo [Link]
Comprobación:
Ilustración 22 Entrada al sitio [Link] a través dle puerto 8080
Índice Página 13
Ilustración 23 Una vez dentro del sitio [Link]
3.2 Modificar el directorio raíz para la visualización de las web kitesurf para que sea
/C/miweb
Para llevar a cabo esta tarea debemos seguir los siguientes pasos.
Crear el directorio /C con: mkdir /C.
Crear el directorio miweb con: mkdir /C/miweb.
Mover kitesurf de /var/www al /C/miweb con: mv /var/www/kitesurf /C/miweb
Modificar el fichero [Link].
Cambiamos la ruta del DocumentRott y le damos permisos.
3.3 Encuentra la directiva que se utiliza para la visualización de páginas de error.
Personaliza una pagina de error para que cuando desde un navegador de un cliente acceda a
[Link]/[Link] me devuelva un error.
Para llevar a cabo esta labor tenemos diferentes caminos.
Yendo al directorio conf-available, editamos el fichero [Link].
Ilustración 24 Contenido del directorio conf-available
Índice Página 14
Ilustración 25 fichero [Link]
Descomentamos la línea ErrorDocument que queramos y ya tendríamos personalizado nuestro
error.
Otra forma sería dentro de nuestro servidor añadir la línea
Diciendo que error queremos y la ruta relativa al fichero.
3.4 Crea un dirertorio virtual llamado datos en el sitio kitesurf cuyo contenido es un
fichero llamado [Link] que contiene "mis datos son..."
3.5 Crea un fichero [Link] cuyo contenido es "cometa"
Estos dos ejercicios los vamos a hacer juntos. Lo primero será crear la carpeta datos.
mkdir /C/miweb/kitesurf/datos
Posteriormente creamos los dos ficheros.
echo "mis datos son" > /C/miweb/kitesurf/datos/[Link]
echo "cometa" > /C/miweb/kitesurf/datos/[Link]
Ilustración 26 Ficheros [Link] y [Link]
Ahora nos vamos al sitio [Link]
Ilustración 27 Parte del fichero [Link]
Índice Página 15
De esta forma hemos creado el acceso a la carpeta datos. Al poner DirectoryIndex [Link].
Cuando escribamos [Link]/datos directamente se irá al contenido del fichero
[Link]
3.6 Abre el navegador desde un cliente y comprueba que se accede al directorio y al
fichero anteriores
Ilustración 28 Accediendo a la carpeta datos
Ilustración 29 Accediendo a la carpeta datos, al fichero kite
3.7 Renombra el fichero [Link] por el de [Link]. Abre el navegador desde un
cliente y accede al sitio kitesurf . ¿Qué ocurre?
La captura con el error esta en clase. Pero la cambiar el nombre del fichero, no dará un error
ya que por defecto tenemos puesto que el DirectoryIndex sea [Link].
DirectoryIndex [Link],[Link],[Link]
Si tenemos algo así. El navegador trata de ir a [Link] sino lo encuentra a [Link]
y así sucesivamente. Si no encuentra ninguna, mandará un error.
3.8 Ahora quiero que el fichero [Link] se utilice como fichero que se va abrir cuando
accedo a la pagina [Link] ¿Qué tengo que hacer?
Índice Página 16
Ilustración 30 Fichero [Link]
Tan solo hemos tenido que añadir DirectoryIndex datos/[Link] al comienzo para que tome
ese archivo como el fichero por defecto.
En la Ilustración 30 podemos ver como ha quedado nuestro fichero [Link] al final
de la práctica.
3.9 Consulta el log de errores
3.10 Consulta el log de accesos
Ambos log se encuentran en el mismo sitio /var/log/apache2
Índice Página 17
log de accesos
log de error
Ejercicio 4. Páginas Personales
4.1 En el servidor principal (servidor por defecto). Crea tu página personal. Para ello crea un
directorio /home/alumno/public_html. Accede con un navegador de un equipo cliente a
http:ip del servidor /~alumno y verifica que se sirve el recurso.
Tenemos dentro de ubuntus el usuario jgarcia.
Creamos el directorio: mkdir /home/jgarcia/public_html.
Creamos el fichero [Link] dentro del directorio: echo "Mi pagina personal" >
/home/jgarcia/public_html/[Link] (Ilustración 31).
Ilustración 31 Creación del directorio para hacer una página personal
Ejecutamos sudo a2enmod userdir para activar el modulo y reiniciamos el servidor apache.
Índice Página 18
En la Ilustración 32 podemos comprobar que ahora esta habilitado dicho módulo
Ilustración 32 Contenido de la carpeta mods-enabled
Dentro del fichero [Link] (Ilustración 33) podemos ver que el directorio donde podrán
alojar la página privadas los usuarios si esta habilitado el módulo userdir será public-html.
También podemos observar que no esta habilitado para el usuario root.
Ilustración 33 Contenido del fichero [Link]
Nos vamos al cliente y observamos que podemos acceder a la página
Índice Página 19