UT01. Implantación, configuración y administración de servidores web

2021-22

DESPLIEGUE DE APLICACIONES WEB

Implantación, configuración y administración de servidores web

Fundamentos de la web

La arquitectura World Wide Web (WWW) de Internet provee un modelo de programación sumamente poderoso y flexible, donde la presentación de los contenidos se hace con formatos estándar.

Estándares

  • Uniform Resource Locator: URL
  • Contenido, interpretable por los navegadores
  • Formatos de contenidos (html, css, javascript, ...)
  • Protocolos de comunicación: HTTP --> TCP/IP

El servicio web e Internet

  • Internet no es un nuevo tipo de red física, sino un conjunto de tecnologías que permiten interconectar redes muy distintas entre sí. Internet no es dependiente de la máquina ni del sistema operativo utilizado.

  • Es  un método de interconexión general que sea válido para cualquier plataforma, sistema operativo y tipo de red.

  • La familia de protocolos que se eligieron para permitir que Internet sea una Red de redes es TCP/IP.

MODELO DE REFERENCIA TCP/IP

El protocolo HTTP

  • Permite realizar la transferencia de información entre un cliente web y un servidor web en Internet

  • Versión más extendida actualmente es la versión HTTP/1.1

Características HTTP/1.1

  • Es un protocolo del nivel de aplicación
  • Es un protocolo sin estado - Petición --> Respuesta
  • Peticiones y respuestas en formato texto
  • No hay sesiones. Necesarias otras herramientas (Cookies)

Uso del Servicio HTTP

  • GET: parámetros visibles en URL
  • HEAD
  • POST: parámetros ocultos
  • PUT
  • DELETE

Principales métodos (verbos) para peticiones a servidores web

HTTP vs HTTPS

  • Se traduce el dominio DNS por una IP.
  • Se busca en el servidor web que aloja la página solicitada el puerto 443 (80 para http)
  • Se inicia una negociación SSL (emisión de certificados - establecimiento de un canal seguro de comunicaciones)
  • Una vez verificado el certificado servidor, se realiza el proceso de petición HTTP y respuesta HTTP pero de forma cifrada.

HTTPS permite que la información viaje de forma segura entre el cliente y el servidor

Implantación de Arquitecturas web

Genéricamente, la arquitectura web es un modelo compuesto de 3 capas:

  • Base de datos (MySQL, SQL Server, etc).
  • Servidor de Aplicaciones (Apache, Tomcat, etc)
  • Clientes del Servicio web (Navegadores)

Evolución de los servicios web

Está muy ligado al desarrollo de Internet, algunos de estos factores son:

  • Contenido más dinámico (de fuentes diferentes, instantáneo).
  • Ancho de banda menos costoso (servicios más pesados)
  • Almacenamiento más barato
  • Computación extendida (acceso desde diversos dispositivos).

Evolución de los servicios web

Está muy ligado al desarrollo de Internet, algunos de estos factores son:

  • Web 1.0 (páginas estáticas).
  • Web 1.5 (Primeras apps web, acceso a BBDD)
  • Web 2.0 (enfocadas al usuario final)
  • Web 2.5 (Redes sociales).
  • Web 3.0 (IA, Big Data)

Tecnologías asociadas

A grandes rasgos se dividen en 2 tipos:

  • Tecnologías del lado del Sevidor.
  • Tecnologías del lado del Cliente.

Tecnologías asociadas (Servidor)

  • CGI (Common Gateway Interface)
  • ASP (Active Server Pages)
  • PHP (Hypertext Preprocessor)
  • Java
  • JavaScript

Tecnologías asociadas (Cliente)

  • HTML (HiperText Markup Language)
  • CSS (Cascading Style Sheets)
  • Java (applets)
  • JavaScript
  • VBScript (Visual Basic Scripting)

Tipos de Apps Web

  • Página Web Estática (html, css, gif animados)
  • Página Web Animada (Flash)
  • Página Web Dinámica (PHP, ASP)
  • Portal (email, foros, chat, buscadores)
  • E-commerce (formas de pago, transportistas, etc)
  • Gestor de Contenidos (Panel de gestión usado por el cliente)

Aunque es dificil establecer una clasificación, dentro de la Web 2.0 y en función del contenido que muestra podemos clasificarlas en:

Arquitecturas Web. Modelos

Una aplicación web, o web en general necesita de una estructura que permita su acceso desde diferentes lugares (máquinas). Esta estructura es lo que
se denomina Arquitectura Web (realmente este nombre se da también al diseño de toda la estructura).

La estructura de una Arquitectura Web actual sigue el
siguiente modelo

  1. Capa de presentación, es la encargada de la navegabilidad, validación de los datos de entrada, formateo de los datos de salida, presentación de la web, etc.; se trata de la capa que se presenta al usuario.
  2. Capa de negocio, es la que recibe las peticiones del usuario y desde donde se le envían las respuestas; en esta capa se verifican que las reglas establecidas se cumplen.
  3. Capa de acceso a datos, es la formada por determinados gestores de datos que se encargan de almacenar, estructurar y recuperar los datos solicitados por la capa de negocio.

Plataformas web libres y propietarias

En términos generales, una plataforma web consta de cuatro componentes básicos:

  1. Sistema Operativo
  2. Servidor Web
  3. Gestor de BD
  4. Lenguaje de Programación Interpretado

Más extendidas:

  1. LAMP (Linux, Apache, MySQL, PHP) --> WAMP, XAMPP
  2. WISA (Windows, IIS, SQL Server, ASP.net) --> WIMP

Escalabilidad

Uno de los requisitos fundamentales de una aplicación web es que sea completamente escalable sin que un aumento de los recursos dedicados a la misma suponga modificación alguna en su comportamiento o capacidades.

Esta puede ser:

  1. Vertical (separación física de las capas lógicas)
  2. Horizontal (clonado del sistema) --> Balanceadores de carga (Sw, Hw y Hw HTTP)
  3. Cluster (Agrupaciones de Servidores)

Servidor web Apache

¿Por qué ?

Es una de las opciones más extendidas y
la posibilidad de obtener este software de manera gratuita disminuye mucho los costes pero no es la única razón.

Además soporta

  • páginas web estáticas;
  • páginas web dinámicas;
  • hosts virtuales;
  • seguridad mediante cifrado;
  • autenticación y control de acceso;
  • modularización;
  • monitorización de archivos de registro.

Servidor web Apache

¡¡¡Manos a la obra!!!

Instalación Manual de apache en ubuntu

Servidor web Apache

Introducción a la configuración

Se especifican directivas en archivos de configuración de texto plano (ubicación depende de la distro de Linux).

  • Ubuntu/Debian --> apache2.conf --> /etc/apache2
  • CentOS/Red Hat --> httpd.conf --> /etc/httpd/conf
  • Suse Linux --> httpd.cof --> /etc/apache2

Servidor web Apache

Introducción a la configuración

  • Ubuntu/Debian --> apache2.conf --> /etc/apache2
  • CentOS/Red Hat --> httpd.conf --> /etc/httpd/conf
  • Suse Linux --> httpd.cof --> /etc/apache2

en ellos se cargan otros archivos de configuración mediante la directiva

Include (error si no existe el archivo indicado)

IncludeOptional (no produce error si no existe el archivo)

Include ports.conf

IncludeOptional mods-enable/*.conf  (* permite carga de múltiples archivos)

Servidor web Apache

Introducción a la configuración - A tener en cuenta

  • Todas las directivas deben colocarse en alguno de esos archivos de configuración
  • Los cambios se aplican cuando se inicie o reinicie el servicio
  • Sólo una directiva por línea ("\" para ocupar varias líneas de una misma directiva)
  • Directivas (Mayúsculas y minúsculas) --> Parámetros (Minúsculas)

Directiva para que funcione tiene que tener su módulo asociado activo

Servidor web Apache

Introducción a la configuración - Secciones (Directory)

Además de directivas la configuración de Apache puede contener Secciones

Incluyen directivas que se aplican en un contexto concreto

<Directory /var/www/html/configuracion>
    Require all denied
</Directory>

Contexto

Petición web acceso directorio

Codigo 403, no sirve contenido de ese directorio

Servidor web Apache

Introducción a la configuración - Secciones (Directory)

Una sección a su vez puede contener más secciones

<Directory /var/www/>
    <Files "*.conf">
        Require all denied
    </Files>   
</Directory>

Sección Files dentro de Directory

Petición web acceso directorio

Deniega el acceso a los archivos con extensión .conf dentro de /var/www

Forbidden

Servidor web Apache

Introducción a la configuración - ¡¡¡Importante!!!

Consultar siempre la documentación antes de incluir/modificar directivas/secciones

Comprobando el contexto en el que se puede usar cada directiva/sección

Servidor web Apache

Introducción a la configuración - ¡¡¡Importante!!!

Contextos

  • server config:  configuración global,  directiva puede ir fuera de cualquier sección. Se aplicará a todo el servidor web en su conjunto.
  • virtual host:  <VirtualHost> que se verán más adelante.
  • directory:  <Directory>, <Location> y <Files> entre otras. Es decir, secciones relativas a archivos y directorios en el servidor, o relativas al recurso pedido en la petición HTTP (como es el caso de <Location>).
  • .htaccess: las directivas válidas en este contexto podrán ser usadas dentro de los archivos .htaccess. Los archivos .htaccess son archivos de texto plano que, si están habilitados, se pueden crear en un directorio para establecer directivas específicas a ese directorio (y subdirectorios).

Servidor web Apache

Inicio y Parada de Apache

Depende del sistema (al igual que en la instalación)

Compilado manualmente (/opt/apache)

Iniciar apache:
/opt/apache/bin/apachectl -f /opt/apache/conf/httpd.conf -k start
Detener apache:
/opt/apache/bin/apachectl -f /opt/apache/conf/httpd.conf -k stop
Reiniciar apache:
/opt/apache/bin/apachectl -f /opt/apache/conf/httpd.conf -k restart

Servidor web Apache

Inicio y Parada de Apache

Depende del sistema (al igual que en la instalación)

Instalado desde repo

Iniciar Detener Reiniciar
service apache2 start service apache2 stop service apache2 restart
apache2ctl start apache2ctl stop apache2ctl restart
/etc/init.d/apache2 start /etc/init.d/apache2 stop /etc/init.d/apache2 restart

Requieren ejecución como administrador 

# sudo su

Configuración básica Apache

Escenario de partida

Sistema Operativo: Debian GNU/Linux 6.0

Servidor Web: Apache (apache2)
Configuración de Red:
Servidor Web: 192.168.200.250
Cliente de pruebas (desde donde se lanza el navegador): 192.168.200.100

Ip's privadas requieren

  • Servidor DNS
  • modificar /etc/hosts
  • Páginas Estáticas - DocumentRoot (indica la raíz de los ficheros que el servidor va a servir) -- /var/www/html/

Solo necesitamos copiar nuestros ficheros en la ruta donde queremos el proyecto (Ejemplo: miweb)

/var/www/html/miweb

/var/www/html/miweb/prueba.html

Navegador: http://localhost/miweb/prueba.html

Configuración básica Apache

  • DocumentRoot se puede encontrar en distintas ubicaciones.
    • ​Global
    • VirtualHost (práctica habitual) 1 Servidor puede servir muchas webs.
  • DirectoryIndex para cuando no se especifica el recurso
    • ​Normalmente index.html
    • Orden secuencial.
    • Ubuntu/Debian: /etc/apache2/mods-available/dir.conf
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Configuración básica Apache

  • Contenido dinámico 
    • ​Requiere más recursos
    • Configuración más compleja
  • Uso de módulos  para soportar páginas dinámicas
    • mod_actions
    • mod_cgi.
    • mod_php5
    • etc...

Hosts virtuales. Creación, configuración y utilización

¿Qué pasa si queremos servir varias web de dominios distintos  y que estén alojadas en un mismo servidor?

Necesitamos crear Hosts Virtuales

  • Ubicación en Ubuntu
    • /etc/apache2/sites-available/000-default.conf
    • Contenido:
<VirtualHost *:80>
   ServerName www.midominio.extension 
   DocumentRoot /var/www/html/miweb
</VirtualHost>

Hosts virtuales. Creación, configuración y utilización

¡¡¡Manos a la obra!!!

Continuará...

DAW-UT01-Implantación, configuración y administración de servidores web

By Manuel Jesús Rodríguez Arabi

DAW-UT01-Implantación, configuración y administración de servidores web

  • 309