Detalle del libro
Ver Índice
Prólogo
Introducción
Lectores
Organización y contenido
Fuera del alcance del libro
Fuentes
1. Desarrollo de aplicaciones con Apache
1.1. Breve historia sobre el servidor Web Apache
1.1.1. Apache 1
1.1.2. Apache 2
1.2. Apache Software Foundation
1.2.1. Meritocracia
1.2.2. Puestos
Usuario
Desarrollador
Asignado
Miembro del PMC
Miembro del ASF
1.2.3. Filosofía
1.3. El proceso de desarrollo de Apache
1.3.1. El código base de Apache
1.3.1.1. Subversión
1.3.1.2. Bifurcaciones: enlace, desarrollo y estabilidad
1.3.1.3. Revisión y consenso
1.3.1.4. Backport
1.3.1.5. Publicación
1.3.2. Foros de desarrollo
1.3.3. Desarrolladores
1.3.4. Participación
1.4. Apache y la propiedad intelectual
1.4.1. La Licencia Apache
Libertad de expresión, no cerveza gratis
Dominio no público
No shareware, nagware o adware
No GPL
Patentes y cláusula de antipiratería
1.4.2. Propiedad intelectual de terceros
Responsabilidad
Auditoría
1.5. Lecturas complementarias
1.5.1. Foros interactivos online
Listas de correo públicas
Usenet
Chat online
1.5.2. Conferencias
1.5.3. Sitios Web
Sitios Web oficiales y semioficiales
Extensiones de terceros
Documentación sobre desarrollo
Otros tutoriales, noticias y artículos
Resumen
2. Plataforma y arquitectura de Apache
2.1. Visión general
2.2. Operación en dos fases
2.2.1. Fase de puesta en marcha
2.2.1.1. Configuración
2.2.2. Fase operativa
2.2.3. Cierre
2.3. Módulos de Multi-Procesamiento
2.3.1. El porqué de los MPM
2.3.2. MPM de la familia UNIX
2.3.3. Trabajar con MPM y sistemas operativos
2.4. Conceptos y estructuras básicos
2.4.1. request_rec
2.4.2. server_rec
2.4.3. conn_rec
2.4.4. process_rec
2.5. Otros componentes clave de la API
2.6. Bases para la configuración de Apache
2.7. Proceso de petición con Apache
2.7.1. Generación de contenidos
2.7.2. Fases del proceso de peticiones
2.7.2.1. Proceso de petición no estándar
2.7.3. Proceso de hooks
2.7.4. Eje de datos y filtros
2.7.4.1 ¿Manejador o filtros?
2.7.4.2. Ejemplos de generadores de contenido
2.7.4.3. Ejemplos de filtros
2.7.5. Orden de proceso
2.7.6. Proceso de hooks
2.8. Resumen
3. Tiempo de ejecución portátil de Apache
3.1. APR
3.2. APR-UTIL
3.3. Convenciones básicas
3.3.1. Manual de referencia: documentación API y Doxygen
3.3.2. Espacio de nombres
3.3.3. Macros de declaración
3.3.4. apr_status_t y valores devueltos
3.3.5. Compilación condicional
3.4. Gestión de recursos: pools APR
3.4.1. El problema de la gestión de recursos
Modelo constructor/destructor
Modelo recuperación de espacio inutilizado
3.4.2. Pools APR
Gestión básica de memoria
Gestión generalizada de memoria
Limpieza explícita e implícita
3.4.3. Duración de los recursos
Pools Apache
Uso de pools en Apache: proceso de una petición
Uso de pools con Apache: inicialización y configuración
Uso de pools con Apache: otros casos
3.4.4. Limitaciones de los pools
3.5. Temas APR seleccionados
3.5.1. Cadenas de literales y formatos
3.5.2. Internacionalización
3.5.3. Tiempo y fechas
3.5.4 Estructura de datos
3.5.4.1. Matrices
3.5.4.2. Tablas
3.5.4.3. Tablas hash
3.5.4.4. Listas
3.5.4.5. Bucles
3.5.5. Buckets y brigades
3.5.6. Sistema de archivos
3.5.7. Redes
3.5.8. Codificación y criptografía
3.5.9 Tratamiento URI
3.5.10. Procesos y threads
3.5.11. Recurso pooling
3.5.12. Extensiones API
3.6. Bases de datos en APR y Apache
3.6.1. DBM y apr_dmb
Ejemplo
3.6.2. Bases de datos SQL y apr_dbd
Driver de MySQL
Uso
3.7. Resumen
4. Técnicas de programación y advertencias
4.1. Convenciones de codificación con Apache
4.1.1. Líneas
4.1.2. Funciones
4.1.3. Bloques
4.1.4. Control de flujo
4.1.5. Declaraciones
4.1.6. Comentarios
4.2. Gestión de los datos de un módulo
4.2.1. Vectores de configuración
4.2.2. Duración de los ámbitos
4.2.2.1. Datos de configuración
4.2.2.2. Datos de petición
4.2.2.3. Datos de conexión
4.2.2.4. Datos persistentes
4.3. Comunicación entre módulos
4.4. Asuntos relativos a la programación thread-safe
4.5. La gestión de datos persistentes
4.5.1. Seguridad thread
4.5.2. Gestión de recursos/memoria
Recuperación de espacio inutilizado
Uso de subpools
Reutilización de los recursos
Uso de reslist
4.6. Programación de plataformas cruzadas
4.6.1. Ejemplo: creación de un archivo temporal
4.7. Programación de MPM cruzados
4.7.1. Bloqueos globales y procesos
4.7.2. Memoria compartida
4.8. Programación segura
Advertencia
4.8.1. Un principio de prevención: no confíe en nada
Validar entradas proactivamente
Uso seguro de entradas
¡No corte las esquinas!
¡No tenga miedo a los errores!
4.8.2. Denegación de servicio: limite el daño
4.8.3. Ayude al sistema operativo a ayudarle
El servidor Web Apache es, según numerosos estudios, el principal servidor de la Web desde hace diez años. Respaldado por una comunidad de desarrollo brillante, se sustenta en un amplio número de personas y organizaciones, desde gigantes de la talla de IBM hasta consultores particulares.
Transparencia y diversidad son las principales características de Apache. El código fuente es totalmente abierto. Su arquitectura modular, construida sobre un pequeño núcleo, se adapta a las necesidades específicas de cada usuario. El principal propósito de esta obra, organizada en doce capítulos y tres exhaustivos apéndices, es servir de guía a los desarrolladores que trabajen con Apache. Los comentarios y los ejemplos que presentan el manual están relacionados con el desarrollo de C, aunque la arquitectura y la API son compartidas por importantes entornos de script como mod_perl y mod_python.