Arquitectura Web: Instalar un Servidor Web
Este curso buscará enseñar la instalación y configuración básica de un servidor Web. Se concreta para el servidor Web Apache, pero podrá utilizarse cualquier software servidor Web. Se recomienda Aolserver o Ngnix
Objetivos
- Entender el funcionamiento del protocolo HTTP
- Aprender a instalar y configurar un servidor web
- Realizar Tareas de Mantenimiento del Servidor
Clases
- Servidor Web
- ¿Qué es? Servidor HTTP
- Para qué sirve: servir peticiones HTTP (por ejemplo páginas HTML, pero no exclusivamente)
- Protocolo HTTP
- NO orientado a conexión (no tiene memoria)
- Códigos de estado del protocolo: series 2,3,4 y 5
- Plan de Trabajo: qué necesito, software necesario (versión), módulos y documentación
- Software Servidor Web: Apache, MS IIS, Zeus, Sun Java Web Server, Aolserver y muchos más
- Programación y Publicación Web
- Páginas Estáticas y Dinámicas (con módulos añadidos)
- Aplicaciones lado cliente (client-side) o lado servidor (server-side)
- Arquitectura de un Servicio WebMail como ejemplo completo
- Instalación y Configuración Básica:
- Servidor Web Apache: versiones: 2.2.9, 2.0.63 y 1.3.4
- Instalación
- Descargarlo
- Cómo trabajar con los códigos fuente (tar, gz, bzip). Leer: README, INSTALL, etc
- Instalación: configuración (./configure), compilación (make), instalación (make install). Hay que añadirle las opciones necesarias en configure (ejecutar ./configure --help)
- Estructura de Directorios (algunos)
- Archivos de Configuración: conf
- Ejecutables: bin
- Documentación/Manual: manual
- Archivos de Incidencias (log): logs
- Raíz del Servidor web: htdocs
- Revisar Permisos y Acceso al ejecutable (variables PATH)
- Configuración Básica
- Configuración: httpd.conf:
- Puerto de Escucha: Modificar la Directiva Listen
- Directorio Raíz: Modificar la Directiva DocumentRoot
- Arrancar y Parar y Reiniciar :
- Script: apachectl
- Utilizando el comando httpd, y para parar utilizar kill. PID en cat apache.pid
- Ejecución Automática (inittab, init.d/rc#, daemontools, etc)
- Probar que está funcionando: acceso con navegador, ver procesos (padre e hijos) y parar/reiniciar
- Configuración: httpd.conf:
- Probar la Instalación
- Acceso con navegador: poner la URL
- Acceso Telnet: telnet direccion_servidor puerto_Web. Ejecutar HTTP, por ejemplo HEAD / HTTP/1.0 y dos saltos de carro.
- Cómo se configura Apache: las directivas
- Sintaxis de las Directivas:
- Description: Descripción de qué hace la directiva
- Sintaxis: Directiva y Valor ( URL, URL-path, file-path, directory-path,filename,regex,MIME-type)
- Default. Valor si no se especifica ninguno
- Context. Contexto en el que es válida la directiva. Generalmente server config o directory
- Override
- Status. Core, MPM, Base, Extension, Experimental
- Module
- Compatibility
- Ejemplo
Directiva Directory Descripción: Engloba a un grupo de directivas que se aplicarán solamente al directorio del sistema de ficheros especificado y a sus subdirectorios Sintaxis: <Directory directory-path> ... </Directory> Contexto: server config, virtual host Estado: Core Módulo: core
DocumentRoot Directive Description: Directory that forms the main document tree visible from the web Syntax: DocumentRoot directory-path Default: DocumentRoot /usr/local/apache/htdocs Context: server config, virtual host Status: Core Module: core
Alias Directive Description: Maps URLs to filesystem locations Syntax: Alias URL-path file-path|directory-path Context: server config, virtual host Status: Base Module: mod_alias
- Proceso de Configuración:
- Encontrar la Directiva que necesito
- Modifico configuración y Reviso (apachectl configtest)
- Reinicio Servidor con nueva configuración
- Ejemplos de Directivas:
- Crear Alias de Directorios (Directiva Alias)
- Personalizar Errores (Directiva ErrorDocument)
- Configurar Directorios (Directiva Directory)
- Sintaxis de las Directivas:
- Revisión de Logs
- Control de accesos y errores
- Archivos de Log en $APACHE_HOME/log:
- Log de accesos: access_log
- Log de errores: error_log
- Sintaxis de access_log: Formato CLF ( Common Log Format)
- Agente de Usuario (User Agent): lista
- Revisión de logs:
- Utilizar comandos: (unix) more, tail, head, cat, grep, etc
- Scripts a medida (errores, problemas, accesos una IP, etc)
- Usar Software (Web Analysis Software)
- Autenticación y Autorización:
- Autenticación basada en usuario/clave (mod_auth_basic):
- Arquitectura del Sistema:
- Ejemplo (Manual Apache):
- Tipo Autenticación (Basica ): AuthType, AuthName
- Proveedor de Autenticación (Archivo): AuthBasicProvider, AuthUserFile Crear archivo de usuarios
- Configuración Autorización (directorio): Require
- Extensión de la funcionalidad del servidor: Módulos
- Qué son y para qué sirven.
- Hay módulos según la versión de apache: 1.x, 2.0.x, 2.2.x
- Ver módulos instalados: opción -l (o -M desde 2.2) de httpd
- Cómo se añaden y cómo se configuran
- Instalación de una nueva funcionalidad
- Buscar el módulo que me interesa
- Revisar las necesidades de ese módulo (el intérprete externo del lenguaje, la base de datos, etc )
- Instalar el módulo (desde el código fuente). Revisar Instalación (depende mucho del módulo)
- Modificar Archivo de configuración de Apache:
- Revisar que carga el módulo. Directiva LoadModule)
- Revisar la extensión/acción. Directiva AddType
- Reiniciar el Servidor
- Instalación de una nueva funcionalidad
- Buscar Módulos: Modules Search
- Páginas Dinámicas (Instalar Módulos):
Actividades
- Instalación y Configuración Básica:
- Buscar Información sobre el servidor web (valdría cualquiera, ante la duda Apache) y realizar la instalación desde el código fuente
- Instalar Apache en zona de usuario (sin ser root) en $HOME/programas/apache (Revisar parámetro PREFIX)
- Configuración Básica:
- Instalar Apache, en modo usuario, sirviendo mi página personal, con los datos del servidor personalizados (Revisar directivas Listen y DocumentRoot)
- Consultar documentación de alguna directiva: Listen, DocumentRoot, ServerAdmin, ServerName
- Configurar directorio con Directiva Directory
- Usar Directivas
- Páginas Personalizadas. Para errores 404 y 403
- /manual con documentacion Apache y /imagenes con las imágenes en /usr/share/images
- Buscar nuevas directivas. Pistas: Options, AddIcon, AddAlt, CustomLog, Redirect
- Revisar Archivos Log (Entender la Configuración básica)
- Uso de Software de Revisión de Estadísticas
- Revisión de Logs:
- Monitorear Logs (vía consola)
- Explicar tres líneas diferentes de logs (dos códigos HTTP diferentes)
- Configuración Avanzada
- Configurar Autenticación y Autorización (Basic) para dos directorios (dir1 y dir2) y tres usuarios (user1, user2, user3)
- Configurar Permisos en los Directorios (dir1 solo visualizar *.html)
- Uso de Módulos Externos: Programa Hola Mundo en PHP sobre el servidor
Duración del Curso
El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.
Recursos a Utilizar
- Servidor Web Apache: v2.2 y v1.3
- Preguntas Más frecuentes (ojo versión 1.3)
- Revisar Apuntes Alumnos
- Especificaciones Protocolo HTTP
- Descargar e Instalar Sofware desde el Código Fuente (install from source code)