Skip to content

Servidor web

En este apartado configuraremos el servidor web apache y trabajaremos con sus ficheros de configuración.

Objetivos

Vamos a alojar en nuestro servidor 5 web distintas:

  • gestionaplus.iaw.com
  • cristaleswagner.iaw.com
  • navescinco.iaw.com
  • bibliopartyextrem.iaw.com
  • astana.iaw.com

Si queremos que un cliente acceda a estas páginas tenemos que dar de alta el dominio iaw.com en los DNS o tocar el fichero /etc/hosts. En este caso tenemos en nuestro DNS apuntando a la dirección privada de virtualhost por lo que nuestra máquina resolverá *.iaw.com a la dirección correcta.

/etc/hosts

Este fichero existe por motivos históricos en todos los sistemas operativos, es previo al servicio DNS y es consultado antes. Prueba a escribir en el fichero para que la dirección estoesmiprueba.com resuelva a la dirección 10.100.200.50

Haz ping:

ping estoesmiprueba.com

Instalación de apache

La instalaremos en nuestro servidor con los repositorios oficiales:

#siendo root
apt install apache2

También vamos a instalar una aplicación para mostrar el árbol de directorios de forma tabulada.

apt install tree

Con esto ya podremos visitar desde el cliente cualquiera de las páginas (gestionaplus.com, cristaleswagner.es, etc...) y veremos el primer HTML de apache.

Apache por defecto

Ficheros de configuración

Para entender la estructura de configuración de un servicio siempre es bueno ver qué ficheros hay dentro de su configuración, para ello trabajaremos con tree

tree -L 1 /etc/apache

El resultado es:

/etc/apache2/
├── apache2.conf
├── conf-available
├── conf-enabled
├── envvars
├── magic
├── mods-available
├── mods-enabled
├── ports.conf
├── sites-available
└── sites-enabled

A parte de las configuraciones generales podemos ver 3 bloques principales: configuraciones, módulos y sitios. Si mostramos con ls -l dos directorios available y enabled podemos ver la idea que hay detrás.

Apache archivos de configuración

Fichero configuración y web

Es MUY importante que en este punto te detengas a entender qué ficheros y carpetas vamos a usar ya que de no tenerlo claro cometerás muchos errores.

Los archivos más importantes para configurar un servidor apache son: - los archivos de configuración -> /etc/apache2 - y los archivos web. /var/www

Los archivos de configuración están en /etc/apache y hay varios subdirectorios con configuraciones específicas, los archivos web están en /var/www. Esto quiere decir que la página que estas viendo está alojada bajo /var/www.

Tarea

Desde el servidor ve a esa localización y cambia el HTML de esa web para mostrar otra información. Para no machacar el fichero index.html de apache copialo a index2.html y crea un index.html nuevo con tu texto. A continuación visita la página para ver que funciona.

Espacio web vs ficheros

Es importante diferenciar entre los ficheros de disco y lo que el público de nuestra web puede observar. Muchas páginas actuales utilizan técnicas para tener URL significativas y muchas veces la petición no se corresponde ni siquiera con un fichero.

Ejemplo:

Archivos de configuración de apache

Los archivos de configuración de apache tienen formato parecido al XML. Hay directivas que están escritas como etiquetas XML y dentro de estas puede haber parámetro o a su vez más directivas:

Este es un fichero de ejemplo de configuración

<VirtualHost *:80>
    DocumentRoot "/www/example2"
    ServerName www.example.org

    # Other directives here

    <Directory "/www/example2">
      Options +Indexes
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example2.error.log
    CustomLog ${APACHE_LOG_DIR}/example2.access.log combined

</VirtualHost>

Creación de dos espacios web de prueba

Necesitamos tener un archivo de configuración de apache y una carpeta con el contenido web para cada cliente.

Dentro del servidor y por cada espacio web:

  • /etc/apache/sites-available/00X-XXXXX.conf
  • /etc/var/www/ESPCAIOWEBCLIENTE1

¿Cuáles son los permisos que deben tener los ficheros HTML del servidor?

Configuración de permisos

Todos los procesos GNU/Linux se ejecutan bajo un usuario y un grupo, más adelante veremos cómo hacer que apache se ejecute con otros permisos más restrictivos dependiendo del usuario. ahora de momento apache se ejecuta con los permisos del usuario www-data

Vamos a verificar que apache se ejecuta con estos permisos:

ps ax o user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm,group,gid | grep apache2

¿Dónde aparece esta información?

Tarea

Todo esto también es configurable... busca en los ficheros de configuración de apache2 dónde se configura el usuario de ejecución.

Tarea

Configuración de dos espacio web distintos:

  • Deshabilita la configuración 000-default.conf
  • Haz dos copias: 001.prueba1.conf y 002.prueba1.conf
  • Configura cada copia con los siguientes parámetros:
    • DocumentRoot: ruta a documentos HTML: /var/www/prueba1 y /var/www/prueba2
    • ServerName: La url del espacio web: p1.iaw.villablanca.com y p2.iaw.villablanca.com
    • Logs propios /var/log/apache2/pruebaX.access.log y /var/log/apache2/pruebaX.error.log
      • Cambia las X por el valor apropiado
  • Habilita los dos espacios con los comandos de apache
    • Esto creará un link simbólico entre sites-enabled y sites-availibles
  • Recarga la configuración
  • Verifica con el cliente que funciona pero antes configura la resolución de nombres.

Dentro del cliente:

  • Si no tienes el DNS de iaw.com, da de alta en tu cliente (/etc/hosts) las redirecciones p1.iaw.com y p2.iaw.com

Cabecera Host y directiva ServerName

ServeName: Esta directiva mira dentro de la cabecera Host para determinar qué espacio web mostrar. La vimos al comienzo de curso con las prácticas de nc

Configuración Apache: estándar vs .htaccess

Existen dos formas de introducir configuraciones en nuestros servidores virtuales: Configuración en archivos de apache y configuración con archivos del espacio web .htaccess. Es importante que la configuración en los archivos de apache es más rápida de procesar al cargarse en el arranque de los servidores y no tener que leer ficheros en cada petición. También nos ofrece pleno control como administradores.

La otra forma de configurar apache es con ficheros .htaccess, estos ficheros de configuración pueden estar en cada directorio del espacio web /var/www/loquesea. Esto da permisos a los administradores de cada espacio para sobrescribir nuestra configuración de apache, aunque esta solo afectará a su server virtual. ¡Hay que configurar esto con cuidado!

Para permitir o deshabilitar la sobreescritura del .htaccess tenemos varias directivas para hacer funcionar todo esto. Ver tutorial

En este pequeña pŕactica permitiremos en uno de los servidores virtuales archivos .htaccess y en el otro no, lo haremos con la directiva AllowOverride

También entenderemos como funciona la directiva Directory para aplicar solo configuraciones a sectores de la web.

Para mostrar todo esto tocaremos la opción Options +Indexes

Tarea

Revisa el texto anterior aclara los siguientes conceptos:

  • Config apache vs .htaccess
  • AllowOverride
  • Directory y ficheros index.html

Tarea

Vamos a configurar lo siguiente:

Servidor virtual:
p1.iaw.com -> No permite .htaccess

Estructura web:
\ index.html (Hola mundo y enlace a docs)
\ NO SE PERMITE LISTAR FICHEROS EN LA RAÍZ
\ docs1
  \ NO SE PERMITE LISTAR FICHEROS AQUÍ
  \ pdf1.pdf
  \ pdf2.pdf
  \ pdf3.pdf
\ docs2
  \ SE PERMITE LISTAR FICHEROS AQUÍ
  \ pdf1.pdf
  \ pdf2.pdf
  \ pdf3.pdf


Servidor virtual:
p2.iaw.com -> Permite .htaccess

Estructura web:
\ index.html (Hola mundo y enlace a imgs)
\ NO SE PERMITE LISTAR FICHEROS EN LA RAÍZ
\ imgs1
  \ NO SE PERMITE LISTAR FICHEROS AQUÍ
  \ imagen1.png
  \ imagen2.png
  \ imagen3.png
\ imgs2
  \ SE PERMITE LISTAR FICHEROS AQUÍ
  \ imagen1.png
  \ imagen2.png
  \ imagen3.png

Para ampliar en la asignatura

Temas interesantes para investigar: