la biblia de servidor apache 2

Upload: pisistrato

Post on 04-Feb-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 La Biblia de Servidor Apache 2

    1/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    2/843

    La biblia de

    Servidor Apache 2

  • 7/21/2019 La Biblia de Servidor Apache 2

    3/843

    LA BIBLIA DE

    TTULO DE LA OBRA ORIGINAL:

    Apache Server 2 Bible

    RESPONSABLE EDITORIAL:

    Vctor Manuel Ruz CaldernSusana Krahe Prez-Rubn

    TRADUCTOR :

    Seven Servicios Integrales

    AUTOEDICIN:

    Seven Servicios Integrales

  • 7/21/2019 La Biblia de Servidor Apache 2

    4/843

    La biblia de

    Servidor Apache 2

    Mohammed J. Kabir

    ANAYAI MULTIMEDIA I

  • 7/21/2019 La Biblia de Servidor Apache 2

    5/843

    Todos los nombres propios de programas, sistemas operativos, equipos hardware,etc. que aparecen en este libro son marcas registradas de sus respectivascompaas u organizaciones.

    Reservados todos los derechos. El contenidode esta obra est protegido por la ley, queestablece penas de prisin y/o multas, ademsde las correspondientes indemnizaciones pordaos y perjuicios, para quienes reprodujeren,plagiaren, distribuyeren o comunicasen pblicamente, en todo o en parte, una obra literaria,artstica o cientfica, o su transformacin,interpretacin o ejecucin artstica fijada encualquier tipo de soporte o comunicada atravs de cualquier medio, sin la preceptivaautorizacin.

    Copyright 2002 by Anaya Multimedia.Original English language edition copyright 2002 by HungryMinds, Inc.

    All rights reserved including the right of reproduction in whole or inpart in any form. This edition published by arrangement with theoriginal publisher, Hungry Minds, Inc.

    Edicin espaola:

    EDICIONES ANAYA MULTIMEDIA (GRUPO ANAYA, S.A.), 2003Juan Ignacio Luca de Tena, 15. 28027 MadridDepsito legal: M. 51.355-2002ISBN: 84-415-1468-2Printed in SpainImprime: Lavel, S. A.

  • 7/21/2019 La Biblia de Servidor Apache 2

    6/843

    A la memoria de mi madre,

    Nazma Bathen.

  • 7/21/2019 La Biblia de Servidor Apache 2

    7/843

    Agradecimientos

    Me gustara dar las gracias al grupo Apache por haber creado el servidor Webms poderoso, ampliable y modular del mundo. Quiero darle especialmente lasgracias a Ralf S. Engelschall. Ralf, es el autor del mdulo mod r e w r i t e , y

    proporcion un gran soporte al desarrollo del captulo 9 sobre las reglas parareescribir las URL. Los ejemplos prcticos de ese captulo pertenecen a su coleccin personal, que mantiene en aumento su sitio Web www. e n g e l s c h a l l .c o m / p w / a p a c h e / r e w r i t e g u i d e .

    Quiero dar las gracias tambin al equipo de Hungry Minds, el cual hizo de estelibro una realidad. Es imposible realizar una lista con todos los implicados perodebo mencionar a las siguientes personas:

    James Russell, el Director de desarrollo del proyecto, el cual empuj este

    proyecto. No s cmo hubiese podido hacer este libro sin su generosa ayuda y sussugerencias a cada paso del camino. Gracias James.Terri Varveris, el Director de adquisiciones, que me ofreci esta oportunidad y

    que asegur su final. Gracias Terri.Sheila Kabir, mi esposa, que tuvo que cargar con muchas horas de trabajo

    duro durante los meses que tard en escribir este libro. Gracias cielo.

    Acerca del autorMohammed Kabir es el fundador y el director general de Evoknow, Inc. Esta

    compaa est especializada en el desarrollo de software CRM. Kabir disfrutaviajando, siempre y cuando no est ocupado gestionando proyectos o escribiendolibros. Estudia ingeniera de sistemas computacionales en la Universidad estatalde California, en Sacramento. Se puede contactar con l en [email protected].

    ^^E^ l

    mailto:[email protected]:[email protected]
  • 7/21/2019 La Biblia de Servidor Apache 2

    8/843

    ndice

    Agradecimientos 6

    Acerca del autor 6Introduccin 3 3

    Cmo est organizado este libro 34Parte I. Comenzar 34Parte II. Administrar sitios Web 34Parte III. Ejecutar aplicaciones Web 34Parte IV. Asegurar su sitio Web 34

    Parte V. Ejecutar Apache en Win32 34Parte VI. Mejorar la escalabilidad 35Parte VIL Apndices 35

    Convenios utilizados en este libro 35

    Parte I. Comenzar 3 7

    1. Apache: el servidor nmero uno 3 9

    En este captulo 39

    Popularidad de Apache 40Apache: el comienzo 41La lista de caractersticas de Apache 41Entender la arquitectura de Apache 2.0 44

    Mdulos multiproceso 44El MPM prefork 44

  • 7/21/2019 La Biblia de Servidor Apache 2

    9/843

    El MPM threaded 44El MPM perchild 45El MPM winnt 45

    Filtrado I/O 45El nuevo demonio CGI 46Apache es portable en tiempo de ejecucin 46

    Entender la licencia de Apache 47

    2. Obtener e instalar Apache 5 1

    En este captulo 51La fuente oficial de Apache 52Requisitos del sistema 52

    Requisitos para construir Apache desde la distribucin de la fuente 53Requisitos para ejecutar un servidor Web Apache 54

    Bajar el software 56Instalar Apache desde el cdigo fuente 57

    Configurar la fuente de Apache 58Opciones avanzadas de configuracin para sitios con mucho trfico 63Compilar e instalar Apache 65

    Instalar Apache desde los paquetes binarios RPM 69Mantenerse al da en el desarrollo de Apache 69

    3. Preparar y ejecutar Apache 73En este captulo 73Configurar Apache 73

    Configurar el entorno global para Apache 78PidFile 79ScoreBoardFile 80Timeout, KeepAlive, MaxKeepA liveRequests y KeepAliveTimeout 80Contenedores IfModule 80Directivas para el comportamiento MPM threaded (comportamiento

    MPM por defecto) 81StartServers 81MaxClients 81MinSpareThreads 82MaxSpareThreads 82ThreadsPerChild 82MaxRequestPerChild 82

    Configurar el servidor principal 83Puerto 83Directivas de usuarios y grupos 83ServerAdmin 84DocumentRoot 84

  • 7/21/2019 La Biblia de Servidor Apache 2

    10/843

    Directivas en contenedores de directorios 86UserDir 88Directorylndex 89AccessFileName 91Contenedor de archivos 91UseCanonicalName 91TypesConfig 91DefaultType 91Contenedor IfModule 91HostnameLookups 92ErrorLog 92LogLevel 92CustomLog 92

    ServerSignature 93Alias 93ScriptAlias 93El resto de directivas 94LanguagePriority 94AddDefaultCharset 94

    Iniciar y parar Apache 94Iniciar Apache 95

    Reiniciar Apache 97Parar Apache 97

    Parar Apache automticamente 97Parar el servidor Apache manualmente 97

    Comprobar Apache 98

    4. Configurar Apache con directivas MPM Winnt 101

    En este captulo 101

    Contextos de las directivas Apache 102Contexto de configuracin del servidor 103Contexto de contenedor 103Contexto en el mbito de directorio 105

    Directivas de configuracin general 106AccessFileName 106AddDefaultCharset 107ContentDigest 107

    DefaultType 108DocumentRoot 108ErrorDocument 109 111 111Include 112

  • 7/21/2019 La Biblia de Servidor Apache 2

    11/843

    Options 113Port 115ServerAdmin 115ServerName 116ServerRoot 117ServerSignature 117

    ServerTokens 117SetlnputFilter 118SetOutputFilter 118

    Directivas de rendimiento y de configuracin de recursos 118Controlar los procesos de Apache 119

    ListenBacklog 119MaxClients 119MaxRequestsPerChild 119

    MaxSpareServers 119MinSpareServers 120SendBufferSize 120StartServers 120TimeOut 120

    Realizar conexiones persistentes 120KeepAlive 121KeepAliveTimeout 121

    MaxKeepAliveRequests 122Controlar los recursos del sistema 122

    RLimitCPU 122RLimitMEM 123RLimitNPROC 123UseCanonicalName 124

    Utilizar mdulos dinmicos 124AddModule 124

    ClearModuleList 125Directivas de contenedores estndar 125

    125 127 127 128 128 129

    Directivas especficas de host virtuales 129NameVirtualHost 129ServerAlias 130ServerPath 131 131

    ro

  • 7/21/2019 La Biblia de Servidor Apache 2

    12/843

    Directivas de registro 132LogLevel 133PidFile 134ScoreBoardFile 134

    Directivas de autentificacin y de seguridad 135AllowOverride 135AuthName 136AuthType 137HostNameLookups 137IdentityCheck 138 138 139LimitRequestBody 139

    LimitRequestFields 140LimitRequestFieldsize 140LimitRequestLine 140Require 140Satisfy 141ScriptlnterpreterSource 142

    Directivas especficas de MPM threaded 142CoreDumpDirectory 143

    Group 143Listen 143ListenBacklog 144LockFile 144MaxClients 145MaxRequestsPerChild 145MaxSpareThreads 146MinSpareThreads 146

    SendBufferSize 147StartServers 147ThreadsPerChild 148User '. 148

    Directiva especficas de MPM perchild 149AssignUserID 149ChildPerUserID 150

    ConnectionStatus 150

    CoreDumpDirectory 151Group 151Listen 151ListenBacklog 151LockFile 151MaxRequestsPerChild 151

  • 7/21/2019 La Biblia de Servidor Apache 2

    13/843

    MaxSpareThreads 151MaxThreadsPerChild 151MinSpareThreads 152NumServers 152PidFile 152ScoreBoardFile 152

    SendBufferSize 152StartThreads 153User 153

    Directivas especficas de MPM 153CoreDumpDirectory 153Listen 153ListenBacklog 153MaxRequestsPerChild 153

    PidFile 154SendBufferSize 154ThreadsPerChild 154

    Directivas especficas de MPM prefork 154CoreDumpDirectory 154Group 154Listen 154ListenBacklog 154

    LockFile 155MaxClients 155MaxRequestsPerChild 155MaxSpareServers 155MinSpareServers 155PidFile 156ScoreBoardFile 156SendBufferSize 156

    StartServers 156User 156

    5. Mdulos Apache 159

    En este captulo 159Un vistazo a los mdulos 160Mdulos relacionados con el entorno 160

    modenv 161

    PassEnv 161SetEnv 161UnsetEnv 162

    modsetenvif 162BrowserMatch 162

    a

  • 7/21/2019 La Biblia de Servidor Apache 2

    14/843

    BrowserMatchNoCase 163SetEnvIf 163SetEnvIfNoCase 163

    moduniqueid 164Mdulos de control de acceso y autentifcacin 164

    modauthanon 165Anonymous 165AnonymousAuthoritative 165AnonymousLogEmail 166AnonymousMustGiveEmail 166AnonymousNoUserID 166Anonymous VerifyEmail 167

    modauthdbm 167

    AuthDBMUserFile 170AuthDbmGroupFile 170AuthDBMAuthoritative 171

    modauthdb 172AuthDBUserFe 173AuthDBGroupFile 173AuthDBAuthoritative 174

    Mdulos de generacin de contenido dinmico 174

    modactions 175Action 175Script 178

    modextfilter 179ExtFilterDefine 179ExtFilterOptions 180

    Mdulos de configuracin de tipo de contenido 181modmime 181

    AddCharset 181AddEncoding 182AddHandler 182AddLanguage 182AddType 183DefaultLanguage 183ForceType 184SetHandler 184

    RemoveHandler 184TypesConfig 185modmimemagic 185modnegotiation 186

    CacheNegotiatedDocs 186LanguagePriority 187

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    15/843

    Mdulos de listas de directorios 187moddir 188modautoindex 188

    AddAlt 189AddAltByEncoding 189AddAltByType 190

    AddDescrip.tion 190Addlcon 190AddlconByEncoding 191AddlconByType 191Defaultlcon 192Fancylndexing 192HeaderName 192Indexlgnore 193

    IndexOptions 193IndexOrderDefault 195ReadmeName 195

    Response Header Modules 195modasis 196modheaders 197mod_expires 197

    ExpiresActive 198

    ExpiresByType 198ExpiresDefault 199

    modcernmeta 200MetaFiles 200MetaDir 200MetaSuffx 201

    Mdulos de informacin de servidores y de registro 201modlogconfig 202

    modstatus 202modinfo 202modusertrack 202

    Mdulos de integracin UR L 202moduserdir 203modalias 204

    Alias 204AliasMatch 205

    Redirect 205RedirectMatch 206RedirectTemp 207RedirectPermanent 207ScriptAlias 207

  • 7/21/2019 La Biblia de Servidor Apache 2

    16/843

    ScriptAliasMatch 207modspeling 208

    modvhostalias 208VirtualDocumentRoot 208VirtualDocumentRootlP 209

    VirtualScriptAlias 210VirtualScriptAliasIP 210

    Otros mdulos 210modso 211

    LoadFile 211LoadModule 211

    modimap 212ImapMenu 213

    ImapDefault 214ImapBase 215

    modfilecache 215MMapFile 215

    CacheFile 216moddav 216

    Dav 216DavLockDB 216

    DavMinTimeout 216DavDepthlnfinity 217

    Parte II. Administrar sitios Web 219

    6. Alojar sitios Web virtuales 221

    En este captulo 221

    Entender las capacidades del hospedaje virtual en Apache 222Establecer un host virtual 223Host virtuales basados en nombre 224Host virtuales basados en IP 225Varios servidores principales como host virtuales 226

    Configurar DN S para un host virtual 229Entender los archivos de zona 229Establecer las DNS para host virtuales nuevos 231Ofrecer servicios de correo virtual 231

    Asignar usuario y grupo a cada host virtual 232Gestionar un gran nmero de host virtuales 234Configuracin automtica de host virtuales utilizando mod_perl 235Generar la configuracin de host virtuales utilizando el script makesite 238Gestionar host virtuales utilizando MySQL con el mdulo mod_v2h 242

    a

  • 7/21/2019 La Biblia de Servidor Apache 2

    17/843

    7. Autentificacin y autorizacin de visitantes al sitio Web 245

    En este captulo 245Autentificacin vs. autorizacin 246Entender cmo funciona la autentificacin 246Autentificar usuarios mediante el mdulo m odauth 248

    Entender las directivas m oda u th 249Directiva AuthUserFile 249Directiva AuthGroupFile 249Directiva AuthAuthoritative 250

    Crear una seccin slo de miembros en su sitio Web 251Crear una seccin slo de miembros utilizando un archivo .htaccess 252Agrupar usuarios para accesos restringidos a distintas secciones Web 254

    Autorizar el acceso mediante el nombre del host o las direcciones IP 256Directiva allow 256Directiva deny 257Directiva order 258

    Directiva allow from env=variable 258deny from env=variable 259

    Combinar autentificacin y autorizacin 260Autentificacin con bases de datos relacinales 261

    Utilizar un servidor con una base de datos MySQL para laautentificacin 262

    Crear la base de datos de autentificacin de usuarios en el servidorMySQL 262

    Conceder acceso al servidor Apache a la base de datosde autentificacin de usuarios en MySQL 265

    Compilar e instalar el mdulo m o d a u t h m y s q l 266Autentificar usuarios utilizando el mdulo m o d a u th m y s q l 267

    Utilizar otras bases de datos para autentificacin de usuarios 269Gestionar usuarios y grupos en una RD BM 271Utilizar cookies para autentificar sesiones 276

    8. Monitorizacin del acceso a Apache 283

    En este captulo 283Monitorizar Apache 284

    Acceder a la informacin de configuracin con modinfo 284Permitir pginas de estado con with modsta tus 287

    Ver pginas de estado 288Simplificar el despliegue de estado 290Almacenar informacin del estado del servidor 291

    Crear archivos de registro 292Directiva TransferLog 293Directiva LogFormat 294

  • 7/21/2019 La Biblia de Servidor Apache 2

    18/843

    Directiva CustomL og 295Directiva CookieLog 296

    Personali7ar sus archivos de registro 2%Crear varios archivos de registro 299Registrar cookies 300

    Directiva CookieExpires 301Directiva CookicTracking 302

    Utilizar registros de error 302Analizar sus archivos de registro 304Mantenimiento de registros 306

    Utilizar rotatelog 306Utilizar Iogrotate 307Utilizar logresolve 308

    9. Reescrbir las URL 313

    En este captulo 313El motor de reescritura de URL de Apache 314

    RewriteFngine 3 16RewriteOptions 317RewriteRule 318

    RewriteCond 321RewriteMap 323RcwriteBase 325RcwriteLog 325RewriteLogLcvel 325RewriteLoek 326

    Distribucin de las URL 326Ampliar una URL a la forma cannica de las URL 326

    Redirigir un directorio home de usuario a un nuevo servidor Web 328Buscar una pgina en varios directorios 329Asignar una variable de entorno basndose en una URI 332Crear sitios www.username.domain.com 333Redirceeionar una URL fallida a otro servidor Web 335Crear un acceso rnultiplexor 335Crear URL dependientes del tiempo 337

    Manejar contenido 338

    Aadir compatibilidad retroactiva en las URL 338Crear las URL con contenido especifico para el navegador 338Crear HTML para un puente CGI 339

    Restriccin de acceso 339Robots de bloqueo 340Crear deflector URL basado en una referencia HTTP 340

    http://www.username.domain.com/http://www.username.domain.com/
  • 7/21/2019 La Biblia de Servidor Apache 2

    19/843

    10. Establecer un servidor Proxy 343

    En este captulo 343Quin debera utilizar un servidor proxy? 344Anlisis de los tipos de servidores proxy 344

    Proxy forward 345Proxy reverse 346

    Directivas mod pr ox y 347ProxyRequests 347ProxyRemote 347ProxyPass 348ProxyBlock 349NoProxy 349ProxyDomain 350CacheRoot 350CacheSize 351CacheGclnterval 351CacheMaxExpire 351CacheLastModifiedFactor 352CacheDirLength 352CacheDirLevels 353CacheDefaultExpire 353NoCache 353

    Configurar un servidor proxy Apache 354Escenario 1: conectar una IP privada a Internet 355Escenario 2: caching sitios web remotos 355Escenario 3: crear una copia local de un sitio Web 357

    Preparar un navegador Web para utilizar un proxy 357Configuracin manual del proxy 358

    Configurar Netscape manualmente 358Configurar Internet Explorer manualmente 359

    Configuracin automtica del proxy 360Asignar valores de retorno para FindProxyForU RL 362Utilizar funciones predefinidas en FindProxyForURL 363

    Escenario 1: utilizar un proxy nicamente para solicitudesURL remotas 365

    Escenario 2: utilizar varios servidores proxy 367Escenario 3: generar FindProxyForURL dinmicamente utilizando

    un script CGI 36911. Ejecutar sitios Web perfectos 373

    En este captulo 373Ciclo de desarrollo Web 374Poner en marcha el ciclo Web 376

  • 7/21/2019 La Biblia de Servidor Apache 2

    20/843

    Establecer el ciclo Web 377Crear un host virtual para cada fase 378Utilizar varios procesos (principales) del servidor Apache 379Utilizar varios ordenadores servidores Apache para el ciclo

    Web 381Implementar el ciclo Web 381

    Probar el ciclo Web 382Mover el sitio nuevo al servidor de produccin 382

    Construir un sitio Web utilizando plantillas y el makepage 384Utilizar HTT P PUT para publicaciones Web en una Intranet 387

    Las directivas del mdulo m o dp ut 387EnablePut 387EnableDelete 387

    umask 387Compilar e instalar m o d p u t 388Establecer un directorio Web que permita el mtodo PUT 388Establecer un host virtual para utilizar el mdulo m o d p u t 390

    Mantenimiento de su sitio Web 392Backup online 392Backup offline 393

    Estandarizar estndar 393

    Poltica de desarrollo de documentos HTML 394Utilice siempre etiquetas HTML estndar 394Guarde imgenes in-line junto con los documentos 394Desplegar mensajes copyright en cada documento 396

    Poltica de desarrollo de aplicaciones dinmicas 396Utilice siempre un control de la versin 396No utilice nombres de rutas absolutos en los scripts

    ni en las aplicaciones CGI 397

    Proporcionar documentacin de usuario y de cdigo 397Evitar las etiquetas HTML embebidas en scripts

    o en aplicaciones 397No confiar en los datos introducidos por el cliente 397Evitar las variables globales en los scripts CGI basados en Perl 397

    Proporcionar a su sitio Web una interfaz intuitiva 398Facilite la navegacin en su sitio 398

    Crear un diseo atractivo 399

    Colores apropiados 399Tamao apropiado de texto 399Mnima utilizacin de imgenes y animaciones 399

    Elimine los mensajes de error en clave 400Pruebe su GUI Web 400Promocionar su sitio Web 401

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    21/843

    Parte III. Ejecutar aplicaciones Web 403

    12. Ejecutar scripts CGI 405

    En este captulo 405Qu es CGI? 406Input y Output CGI 407

    Solicitudes GET 407Solicitudes POST 410Comparar GET y POST 411Decodifcacin de los datos introducidos 412

    Variables CGI Apache 413Variables del servidor 413

    SERVERSOFTWARE 414SERVER AD MIN 414DO CUMEN T ROOT 414

    Variables para las solicitudes del cliente 414SERVER AME 415HTTP HOST 415HTTP ACCEPT 415H T T P A C C E P T C H A R S E T 4 1 5H T T P A C C E P T E N C O D I N G 4 1 5H T T P A C C E P T L A N G U A G E 4 1 6HT T PU SE R AGENT 416HTTPREFERER 416HTTP CON NE CTIO N 417SERVER PORT 417REMOTEHOST 417REMOTEPORT 417REMO TE AD DR 417REMOTEUSER 418SERVERPROTOCOL 418REQUESTMETHOD 418REQUESTURI 418REMOTEIDENT 418AUTHTYPE 419CONTENTTYPE 419CONTENTLENGTH 419

    SCRIPTNAME 419SCRIPTFILENAME 419QUERYSTRING 419PATHJNFO 420PATHTRANSLATED 420

    Configurar Apache para CGI 420

    WrbW

  • 7/21/2019 La Biblia de Servidor Apache 2

    22/843

    Anlisis del directorio de programas CGI 421Elegir extensiones especficas de archivos CGI 422Permitir el acceso cgi-bin a sus usuarios 424

    Contenedores Directory o DirectoryMatch 424ScriptAliasMatch 425

    Crear nuevas extensiones CGI utilizando AddType 427Ejecutar programas CGI 427

    Escribir scripts CGI en Perl 428Anlisis de un script CGI sencillo 430Crear un procesador bsico de formularios Web 435

    Permitir soporte de depuracin de errores CGI en Apache 457ScriptLog 457ScriptLogLength 458ScriptLogBuffer 458

    Depurar errores en sus scripts basados en Perl 458Depuracin de errores desde la lnea de comandos 458Depuracin utilizando la impresin de registros y de depuracin 460Depurar con CGI::D ebug 462

    13. Server Side Includes (SSI) 467

    En este captulo 467Server Side Include 468Configurar Apache para SSI 469

    Activar SSI para un directorio completo 469Activar SSI para un tipo especfico de archivo 470Utilizar XBitHack para archivos .htm o .html 471Utilizar comandos SSI 472

    confg 473echo 476exec 476fsize 481flastmod 481include 482printenv 483set 483

    Variables SSI 483Control de flujo de los comandos 484

    14. Configurar Apache para FastCGI 489

    En este captulo 489FastCGI 489

    Alcanzar alto rendimiento utilizando caching 491Escalabilidad a travs de aplicaciones distribuidas 492

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    23/843

    Entender cmo funciona FastCGI 494Arquitectura bsica de una aplicacin FastCGI 497Distintos tipos de aplicaciones FastCGI 498

    Migracin desde CGI a FastCGI 499Puntos que hay que recordar sobre la migracin 500Un ejemplo de un script de migracin 501

    Establecer FastCGI en Apache 504Directivas FastCGI para Apache 504

    Directiva AppClass 505Directiva ExternalA ppClass 506Directiva FastCgilpcD ir 507

    Configurar httpd.conf para FastCGI 507

    15. PHP y Apache 513

    En este captulo 513Entender cmo funciona PHP 514PHP en su compaa 515Requisitos previos para PHP 517Compilar e instalar PHP 517

    Construir PHP como una solucin CGI 518Construir PHP como un mdulo Apache 518

    Construir PHP como un mdulo esttico de Apache 518

    Construir PHP como un mdulo Dynamic Shared Object(DSO) 519

    Configurar Apache para PHP 520ConfigurarPHPutilizandophp.ini 521

    Directivas PHP en httpd.conf 521phpadminflag 521php_admin_value 521phpflag 522phpvalue 522

    Directivas PHP en php.ini 522autoappendfile 522autoprependfile 522default_charset 523disablefunctions 523displayerrors 523enabledl 523error_append_string 524error_log 524errorprependstring 524errorreporting 524extensin 525

  • 7/21/2019 La Biblia de Servidor Apache 2

    24/843

    extensiondir 526implicitflush 526includepath 526logerrors 527

    magicquotesgpc 527magic_quotes_runtime 527maxexecutiontime 527memorylimit 527outputbuffering 528safemode 528s a f e m o d e a l l o w e d e n v v a r s 5 2 8s a f e m o d e p r o t e c t e d e n v v a r s 5 2 9trackerrors 529upload rnaxfi lesize 529uploadtmpdir 529

    Trabajar con PHP 530Crear un script PHP sencillo desde la lnea de comandos 530Crear pginas Web PHP 530Utilizar un script PHP como un Server-Side Include 531Utilizar una pgina PHP para un directorio index 532

    Utilizar archivos include 533Mejorar el manejo de errores con PHP 535Procesar formularios Web con PHP 535Crear sesiones con PHP 538

    Utilizar cookies HTTP para crear sesiones de usuario 538Utilizar codificacin de UR L para crear sesiones de usuario 540Finalizar una sesin de usuario 541

    Utilizar MySQL con PHP 542Crear una pgina PHP sencilla para acceder a la base de datos

    MySQL 542Asegurar archivos include PHP 545Autentifcacin de usuarios con PHP y MySQL 546

    16. Utilizar Perl con Apache 551

    En este captulo 551Compilare instalar m odperl 552Ejecutar scripts CGI utilizando m odperl 553

    No realice ms trabajo del necesario 554Crear un mdulo m odperl utilizando el API de Perl para Apache 555Utilizar CGI.pm para escribir mdulos mod_perl 560Precargar mdulos Perl para ahorrar memoria 561Seguir la pista de los mdulos m odpe rl en la memoria : 562Implementar ASP utilizando el mdulo Apache::ASP 563

  • 7/21/2019 La Biblia de Servidor Apache 2

    25/843

    17. Ejecutar servlets de Java y pginas JSP con Tomcat 567

    En este captulo 567Utilizar servlets 568Instalar Tomcat 569

    Instalar el ltimo JDK para Tomcat 569Instalar Tomcat y el mdulo m o d jk 571

    Configurar Tomcat 572Configurar Tomcat para Apache 572Configurar Tomcat para utilizar el Java Security Manager 577

    Configurar Apache para Servlets y JSP 579Trabajar con Tomcat 583

    Desactivar el servicio HTTP por defecto de Tomcat 583Iniciar y parar Tomcat 584Iniciar Tomcat con un empaquetador de scripts de shell 584Ejecutar servlets de Java 585

    Ejecutar un ejemplo de servlets de Java mediante Tomcat 585Ejecutar sus propios servlets o JSP 590

    Parte IV. Asegurar su sitio Web 593

    18. Seguridad Web 595

    En este captulo 595

    Entender el concepto de seguridad Web 595Los puntos de control 596

    Punto de control 1: su red 598Punto de control 2: el sistema operativo 599Punto de control 3: software del servidor Web 600

    Elegir una configuracin segura 601Consideraciones de poltica de seguridad 601Una configuracin de seguridad prctica para Apache 603

    Utilizar un usuario y un grupo especializado para Apache 603Utilice una estructura de directorios segura 604Permisos de archivos y directorios apropiados 605Archivo index del directorio 607Desactivar el acceso por defecto 609Desactivar invalidacin de usuarios 610

    La configuracin "El cordero del sacrificio" 610La configuracin paranoica 611

    Proteger su contenido Web 613Guas de publicacin de contenido 613Proteger su contenido de robots 614

    Excluir todos los robots 615Permitir acceso completo a todos los robots 616

  • 7/21/2019 La Biblia de Servidor Apache 2

    26/843

    Excluir un solo robot 616Activar un solo robot 616Desactivar un solo archivo 616

    Registro y seguridad 616CustomL og y ErrorLog 617Qu hacer si observa un acceso inusual en sus archivos de registro 618

    Asegurar su implementacin CGI 619Evadir los riesgos CGI con un programa inteligente 619

    Filtracin de informacin 620Consumo de los recursos del sistema 620Burlarse de los comandos del sistema mediante scripts CGI 620Las entradas del usuario realizan determinadas llamadas inseguras

    al sistema 621El usuario puede modificar datos ocultos en pginas HTML 623

    Entradas del usuario seguras 630Empaquetar scripts CGI 634

    suEXEC 634CGIWrap 638

    Ocultar pistas sobre sus scripts CGI 639Utilice un alias de script que no sea estndar 640Utilice nombres sin extensin para sus scripts CGI 640

    Utilizar escneres CGI 640cgichk.pl 641Whisker 643

    Reducir riesgos SSI 644

    19. Asegurar Apache con SSL 647

    En este captulo 647Introduccin a SSL 648

    Cmo funciona SSL 649Entender la encriptacin 649Entender los certificados 651

    Transacciones basadas en certificados 652Definir una Autoridad certificadora 654

    Establecer SSL para Apache 655Opciones SSL 656Establecer OpenSSL 656

    Requisitos previos de OpenSSL 656Obtener OpenSSL 656Com pilare instalar OpenSSL 657

    Elegir el mdulo m o d s s l para soporte SSL 660Compilare instalar m o ds s l 660Configurar Apache para SSI basado en m o d s s l 661

    http://cgichk.pl/http://cgichk.pl/
  • 7/21/2019 La Biblia de Servidor Apache 2

    27/843

    Elegir Apache-SSL en lugar de m o d ss l para soporte SSL 664Compilar e instalar parches Apache-SSL para Apache 664Crear un certificado para el servidor Apache-SSL 665Configurar Apache con Apache-SSL 666Probar su conexin SSL 667

    Obtener un certificado 668

    Obtener un certificado para el servidor desde una CA comercial 668Generar una clave privada 668Generar un CSR 669Crear una autoridad de certificacin privada 670

    Acceder a pginas SSL 671

    Parte V. Ejecutar Apache en Win32 673

    20. Instalar y ejecutar Apache para Windows 675

    En este captulo 675Requisitos del sistema 676Cargar Apache para Windows 676Instalar binarios de Apache 677Ejecutar Apache 681

    Ejecutar Apache automticamente como un servicio Windows 681

    Ejecutar Apache desde el men Start 684Gestionar Apache desde la lnea de comandos 685Ejecutar varios servicios Apache 685

    21. Configurar Apache para Windows 689

    En este captulo 689Sintaxis httpd.conf en Windows 690Ajustar Apache para su funcionamiento 690Probar la configuracin de Apache 691Gestionar Apache con Comanche 691Configurar Apache para contenido dinmico 694

    Ejecutar scripts CGI basados en Perl 695Ejecutar scripts mod_perl 695Ejecutar scripts PHP 697Ejecutar extensiones ISAPI con m odisapi 698

    ISAPIReadAheadBuffer 698ISAPI LogNotSupported 699ISAPIAppendLogToErrors 699ISAPIAppendLogToQuery 699

    UserDir en Windows 699

    M AM

  • 7/21/2019 La Biblia de Servidor Apache 2

    28/843

    Parte VI. Mejorar la escalabilidad 701

    22. Apurando Apache 703

    En este captulo 703Utilizar hardware de alto rendimiento 704

    CPU 704RAM 704Disco duro 705

    Entender losacrnimos 707Trucos en la eleccin de un disco duro 709Poner a punto sus discos duros EIDE/IDE (Electrnica de dispositivos

    integrados o Electrnica de unidades inteligentes) en Linux 709Comprobar las opciones de su disco duro con hdparam 711Poner a punto el modo multisector para su disco duro 712Activar acceso directo a memoria (Direct Memory Access, DMA)

    en su disco duro 713Tarjeta ethernet 714

    Poner a punto el sistema de archivos ext2 de Linux 714Cambiar el tamao del bloque del sistema de archivos ext2 715Poner a punto el sistema de archivos ext2 con e2fsprogs 716

    Instalar e2fsprogs 716Poner a punto su sistema de archivos con tune2fs 717Comprobar y reparar un sistema de archivos ext2 con e2fsck 719

    Poner a punto su sistema operativo 719Compilar e instalar un kernel personalizado 719Ajustar su sistema para aplicaciones Web en demanda 720

    Controlar el nmero mximo de manejadores de archivos abiertos 720Convertir el software de su servidor Apache de competitividad global 721

    Poner a punto su red 723

    Utilizar fast Ethernet 724Entender y controlar el flujo de trfico de red 724Equilibrio de carga utilizando el servidor DNS 727Utilizar hardware de equilibrio de carga 727

    Poner a punto la configuracin de Apache 729Minimizar las bsquedas DN S 729Apurar el servicio de archivos estticos 729

    Reducir el manejo de I/O para entregar pginas estticas

    rpidamente 729Reducir las llamadas al sistema y los manejos I/O para los archivos

    simblicos 730Poner a punto su configuracin utilizando ApacheBench 732

    Utilizar el caching para aumentar la velocidad 734Meter los archivos muy utilizados en la memoria cach con modfcache . 734

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    29/843

    Adquirir habilidad con el servidor proxy-cach Squid 736Compilar e instalar el servidor proxy-cach Squid 736Configurar Squid 737Iniciar su Squid 738Personalizar Squid para satisfacer sus necesidades 739

    Utilizar mod ba ck ha nd para una estancia de servidores Web 742

    Poner a punto aplicaciones Web 743Apurar los scripts mod_perl 743Precargar sus mdulos m odper l 744Caching conexiones de bases de datos 744Ejecutar aplicaciones modperl en un conjunto parcial de hijos

    Apache 747Utilizar FastCGI en lugar de m odperl 749

    23. Crear una red de alta disponibilidad 753

    En este captulo 753Caractersticas de una red de alto nivel 754Aumentar la seguridad DN S 754Equilibrio de carga en su red 755

    Distribuir solicitudes HTTP con Round-R obin DNS 755Distribuir solicitudes HTTP con equilibradores de carga basados

    en hardware 756

    Gestionar almacenamiento Web 758RA ID, SAN o dispositivos de almacenamiento 759RA ID de hardware 759Las redes de almacenamiento (SAN ) 759Dispositivos de almacenamiento 760

    Poner a punto sus discos duros 760Obtener hdparam 761Estimar el rendimiento de su unidad de disco 761

    Mejorar el rendimiento de su unidad de disco 763Ajustar el sistema de archivos ext2 765Cambiar el tamao del bloque del sistema de archivos ext2 765Instalar e2fsprogs para ajustar el sistema de archivos ext2 766Comprobar y reparar un sistema de archivos ext2 con e2fsck 769

    Aumentar la seguridad con un sistema de archivos journalingpara Linux 769

    Compilare instalar ReiserFS 771

    Montar el sistema de archivos ReiserFS 772Utilizar un benchmark para ReiserFS 772Compartir espacio de disco con el servidor NFS 775

    Establecer un servidor NFS 775Aspectos de seguridad del servidor 777

    E9

  • 7/21/2019 La Biblia de Servidor Apache 2

    30/843

    Establecer un cliente NFS 778Optimizar el tamao del bloque de caracteres de lectura / escritura 779Establecer la unidad de transmisin mxima apropiada 782Ejecuta el nmero ptimo de demonios NFS 783Monitorizar los fragmentos de paquetes 783

    Replicar contenido entre servidores Web 784Utilizar rdist para distribuir archivos 784Crear un sistema de archivos basado en RAM 788

    Activar un sistema de archivos basado en RAM 788Utilizar el sistema de archivos basado en RAM 790

    Crear una red back-end segura 792Fortificar su red Web 793

    Utilizar Tripwire para proteger el contenido Web 794Obtener Tripwire 795Compilar Tripwire 795Configurar la poltica Tripwire 799Crear la base de datos Tripwire 803Proteger el propio Tripwire 803Ejecutar Tripwire para detectar integridad en el modo interactivo 804Ejecutar Tripwire para detectar integridad de forma automtica 806

    Actualizar la base de datos Tripwire 807Obtener un informe tripwire por correo electrnico 807

    Asegurar Apache utilizando el Intrusin Detection System (LIDS)de Linux 809

    Parchear, compilar e instalar el kernel con LIDS 810Compilar, instalar y configurar LIDS 813Administrar LID S 815Proteger archivos y directorios 816

    Proteger su sistema utilizando las capacidades de Linux gestionadaspor LID S 823

    Responder a un intruso 826

    Parte VII. Apndices 827

    Apndice A. Cdigos de estado HTTP 1.1 829

    Cdigos de estado de informacin (100-199) 829

    xito en la solicitud del cliente (200-299) 830Redireccin de solicitudes (300-399) 831Solicitud del cliente incompleta (400-499) 831Errores del servidor (500-599) 833

    Apndice B. Entender las expresiones regulares 835

    MrlM

  • 7/21/2019 La Biblia de Servidor Apache 2

    31/843

    Apndice C. Recursos Apache online 839

    Recursos gratuitos 839Sitios Web 839Grupos de noticias Usenet 840

    Grupos de noticias relacionados con servidores Web 840

    Grupos de noticias relacionados con lenguajes de autor 841Grupos de noticias relacionados con navegadores Web 842Grupos de noticias de anuncios 842Otros grupos de noticias WWW 842Grupos de noticias Perl 843

    Listas de correo 843Recursos comerciales 843Otros recursos relacionados 844

    Apndice D. Contenido del CD-ROM 847

    Distribucin del servidor Apache 847Scripts de ejemplo en formato de texto 848MySQL 848OpenSSL 848PHP 848Perl y mdulos relacionados 849

    Tomcat 849Solucionar errores 849

    MhM

  • 7/21/2019 La Biblia de Servidor Apache 2

    32/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    33/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    34/843

    Introduccin

    Bienvenido a Apache Server 2.0. Seguramente habr odo hablar de ApacheServer. De hecho, ms del 60 por 100 de los administradores de toda la Webutilizan Apache. Apache es la plataforma de servidores Web de cdigo fuenteabierto ms poderosa del mundo.

    Como desarrollador Web profesional, investigador y administrador, considero

    que Apache es la solucin perfecta para la mayor parte de los sitios Web. Apache2.0 es una profunda revisin del servidor Apache. El grupo Apache cre originalmente una primera versin de un servidor Web altamente configurable, el cual sehizo popular rpidamente; en la versin 2, el grupo Apache se ha concentrado enla escalabilidad, en la seguridad y en el rendimiento. Las principales revisiones decdigo se han llevado a cabo para crear una arquitectura Apache realmenteescalable.

    Hoy en da, Apache es considerada la plataforma Web ms utilizada. Aumentan da a da el nmero de corporaciones que aceptan este maravilloso cdigofuente abierto en su infraestructura IT. Son muchas las grandes compaas, comoIBM, que ofrecen Apache entre sus productos. El futuro de Apache parece muyprometedor. Tanto si usted es nuevo en la utilizacin de Apache como si se tratade un administrador profesional del mismo, ahora es el momento de comenzar conApache 2.0. Este libro le ayudar a hacerlo.

  • 7/21/2019 La Biblia de Servidor Apache 2

    35/843

    Cmo est organizado este libro

    El libro se compone de siete partes. A continuacin le presentamos una brevedescripcin de las mismas.

    Parte I. Comenzando

    En esta primera parte introducir el servidor Web nmero uno en el mundo y leguiar a travs del proceso de obtencin y compilacin de Apache. Le mostrarcmo preparar y ejecutar Apache con el menor nmero de cambios posibles conrespecto a la configuracin de los archivos por defecto para que pueda preparar yejecutar Apache lo ms rpido posible. Esta parte finaliza con referencias completas a las directivas principales de Apache y a los mdulos estndar para que,de este modo, pueda estar preparado para las tareas de administracin de Apache.

    Parte II. Administrar sitios WebEsta parte se centra en la administracin de las tareas habituales de adminis

    tracin en la Web como son la creacin de sitios web virtuales, la autentificaciny autorizacin de usuarios para las distintas tareas, la monitorizacin, el registro,el redireccionamiento y la reescritura y este tipo de tareas en general. Aprendera crear y a administrar sitios Web virtuales. Dominar varios mtodos de autenti-ficacin, de autorizacin y de control de acceso de usuarios. Aprender a

    monitorizar servidores Web y a adaptar archivos de registro para anlisis.Parte III. Ejecutar aplicaciones Web

    Esta parte se centra en las distintas posibilidades que existen para servir contenidos dinmicos utilizando Apache. Esta parte cubre los conceptos de CommonGateway Interface (CGI), Server-Side Includes (SSI), FastCGI, PHP, mod perl,y servlets de Java. Aprender a utilizar estas tecnologas rpidamente.

    Parte IV. Asegurar su sitio WebCualquier ordenador en Internet puede ser objeto de abuso o de intentos de

    manejo indebido. Siempre es una buena idea ser prudente y tomar las medidas deprecaucin adecuadas. En esta parte, aprender a hacer sus sitios Web ms seguros y resistentes al ataque de hackers. Adems, se le introducir en los riesgospotenciales de la ejecucin de programas SSI y CGI y en cmo tomar medidaspreventivas para evitar estos riesgos. Tambin aprender a activar el servicioSecure Socket Layer (SSL) utilizando mdulos Apache para posibilitar el comer

    cio electrnico

    Parte V. Ejecutar Apache en Win32

    El servidor Apache est comenzando a ser muy popular en la plataformaWindows (Win32); cada vez ms personas estn probando Apache en platafor-

    E3

  • 7/21/2019 La Biblia de Servidor Apache 2

    36/843

    mas Windows. Con Apache 2.0, el rendimiento del servidor Web en esta plataforma se est haciendo cada vez ms prometedor. En esta parte, aprender a instalary a configurar Apache en la plataforma Win32.

    Parte VI. Mejorar la escalabilidad

    En esta parte, discutir cmo podemos aumentar la velocidad de Apache ajus-tando el sistema del servidor Web y optimizando varias configuraciones de servidores Apache. El captulo ofrece gran cantidad de informacin sobre cmo sacarpartido de un hardware de alto rendimiento y cmo ajustar discos duros y sistemas de archivos en Linux, para aumentar el rendimiento del sistema. Adems,cubre los aspectos de caching y de ajuste relacionados con aplicaciones Webbasadas en Perl.

    Parte Vil. ApndicesEn esta parte, podemos encontrar cuatro apndices que continenen los cdigos

    de estado HTTP 1.1, informacin sobre las expresiones regulares, recursos on-line y sobre el contenido del CD-ROM que acompaa al libro.

    Convenios utilizados en este libro

    No tiene que aprender ningn nuevo convenio para leer este libro, sino simplemente recordar que, cuando le piden que introduzca un comando, tiene que presionar la tecla Enter o Intro tras escribir la instruccin en el prompt de comandos. Seutiliza una fuente C o u r i e r para indicar un segmento de cdigo.

    Adems podr encontrar los siguientes elementos:

    NOTA:El icono Nota indica que es necesaria una mayor explicacin.

    TRUCO:El icono Truco le ofrece algn modo de ahorrar algo de tiempo yesfuerzo.

    ADVERTENCIA:El icono Aviso le previene de un peligro potencial.

    CD-ROM: El icono CD-ROM le informa sobre archivos, programas yotras facilidades que puede encontrar en el CD-ROM.

    BcU

  • 7/21/2019 La Biblia de Servidor Apache 2

    37/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    38/843

    Parte I

    Comenzar

    wm

  • 7/21/2019 La Biblia de Servidor Apache 2

    39/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    40/843

    Q Apache:el servidor

    nmero uno

    En este captulo1. Entendemos por qu Apache es tan popular.

    2. Estudiamos la historia de Apache.

    3. Echamos un vistazo al conjunto de caractersticas.4. Examinamos la arquitectura Apache.

    5. Revisamos las opciones de licencia.

    Bienvenido a Apache, el servidor nmero uno del mundo. Si est acariciandola idea de ejecutar Apache, se encuentra en el lugar adecuado. Este captulointroduce el modo en que Apache ejecuta un servidor Web.

    Ms del 60 por 100 de los servidores Web del mundo utilizan Apache, deacuerdo con un eminente servidor Web de una compaa dedicada a encuestasllamada Netcraft (www . n e t c r a f t. co . u k / S u r v e y / ) . Esta compaa publica peridicamente las estadsticas de los servidores ms utilizados. La tabla1.1 muestra las estadsticas publicadas en el momento en el que se escribi estecaptulo. Si quiere conocer a los miembros de Apache, puede visitarw w w . a p a c h e . o r g / i n f o / a p a c h e u s e r s . h t m l .

    http://www.apache.org/info/apachehttp://www.apache.org/info/apache
  • 7/21/2019 La Biblia de Servidor Apache 2

    41/843

    Tabla 1.1. Estadstica de Netcraft que muestra los servidores ms utilizados

    Servidor

    Apache

    Microsoft US

    IPIanet

    Zeus

    Nov 2001

    7750275

    3307207

    431935

    174052

    Porcentaje

    61.88

    26.40

    3.45

    3.45

    Dic2001

    8588323

    3609428

    383078

    172352

    Porcentaje

    63.34

    26.62

    2.83

    1.27

    Popularidad de Apache

    Lo conseguido por Apache es simplemente asombroso. Quin hubiese dicho

    que ese servidor de cdigo fuente abierto podra vencer a sus dos mayores competidores comerciales, Microsoft y Netscape, como plataforma de servidores Web.Cada persona tiene sus razones para justificar la popularidad de Apache. Aquestn las mas:

    Apache es un servidor altamente configurable de diseo modular. Esmuy sencillo ampliar las capacidades del servidor Web Apache. Cualquiera que posea una experiencia decente en la programacin de C o Perl puedeescribir un mdulo para realizar una funcin determinada. Esto significaque hay una gran cantidad de mdulos Apache disponibles para su utilizacin.

    Apache es una tecnologa gratuita de cdigo fuente abierto.El hecho deser gratuita es importante pero no tanto como que se trate de cdigo fuenteabierto.

    Apache trabaja con gran cantidad de Perl, PHP y otros lenguajes descript. Perl destaca en el mundo del script y Apache utiliza su parte delpastel de Perl tanto con soporte CGI como con soporte mod_perl.

    Apache funciona en Linux y en otros sistemas de Unix.Linux, acostumbrado a ser un sistema de operacin desvalido, se encuentra ahora en losruedos de las empresas de ordenadores. Linux y Apache van de la mano enel mundo empresarial de hoy en da. Considero que la aceptacin de Linuxen el mundo de los negocios ha hecho sencilla la entrada de Apache en eseterritorio. Sin embargo, hay personas que argumentaran que fue la fama

    de Apache la que hizo que Linux encontrase su camino en ese mundo de unmodo ms sencillo. De cualquier modo, Apache y Linux constituyen unapoderosa combinacin. Otros sistemas de Unix como FreeBSD y Solaris, yel nuevo Mac OS X juegan tambin un papel importante en la ampliacinde las perspectivas de los usuarios de Apache.

    mm

  • 7/21/2019 La Biblia de Servidor Apache 2

    42/843

    Apache tambin funciona en Windows. Aunque Apache va a funcionarmucho mejor en Windows con la versin 2.0, ya se encontraba en el mercado de Windows con la versin 1.3.x. Veremos multitud de sistemas Windowsconectados a Apache en vez de a Microsoft Internet Information Server

    (US) porque la arquitectura de Apache 2.0 le da el poder que necesita paracompetir.

    Apache: el comienzo

    A continuacin tenemos un poco de historia de Apache. Al principio, el NCSA(National Center for Super Computing Applications) cre un servidor Web que se

    convirti en el nmero uno en 1995. Sin embargo, el principal desarrollador deservidores Web del NCSA abandon el NCSA casi en ese mismo momento y elproyecto del servidor empez a bloquearse. Entretanto, la gente que estaba utilizando el servidor Web de NCSA, empez a intercambiar sus propios paquetespara el servidor y pronto pensaron que era necesario un foro para gestionarlos.Naci el grupo Apache.

    El grupo utilizaba el cdigo del servidor Web de NCSA y dio nacimiento a unnuevo servidor Web llamado Apache. Originariamente derivado del cdigo cen

    tral del servidor Web de NCSA y de un manojo de paquetes, hoy en da el servidorWeb Apache es el lenguaje de la comunidad de los servidores Web. En los siguientes tres aos, adquiri el papel de servidor lder del mercado. La primeraversin (0.6.2) de Apache que fue distribuida al pblico se estren en abril de1995. La versin 1.0 se estren el 1 de diciembre de 1995. El grupo Apache seampli y se convirti en un grupo sin nimo de lucro. El grupo trabaja exclusivamente va Internet. Sin embargo, el desarrollo del servidor Apache no est limitado en ningn sentido por el grupo.

    Cualquiera que tenga el conocimiento para participar en el desarrollo del servidor o de sus mdulos componentes, es bienvenido para hacerlo, aunque el grupoes la autoridad que finalmente decide qu se incluye en la distribucin estndar delo que se conoce como el servidor Apache. Esto permite que, literalmente, milesde desarrolladores de todo el mundo aporten nuevas caractersticas, localicenfallos, puertos para nuevas plataformas, etc. Cuando se enva cdigo nuevo algrupo Apache, los miembros del grupo investigan los detalles, realizan las pruebas y las revisiones del control de calidad. Si estn satisfechos, el cdigo seintegra en la distribucin de Apache.

    La lista de caractersticas de Apache

    Una de las principales caractersticas que presenta Apache es que funciona enplataformas virtuales muy utilizadas. Al principio, Apache se utilizaba para ser

  • 7/21/2019 La Biblia de Servidor Apache 2

    43/843

    el primer servidor Web basado en Unix, pero esto ya no es verdad. Apache noslo funciona en la mayora (prcticamente en todas) las versiones de Unix sinoque, adems, funciona en Windows 2000/NT/9x y en muchos otros sistemasoperativos de escritorio y de tipo servidor como son Amiga OS 3.x y OS/2.

    Apache presenta muchas otras caractersticas, entre ellas un elaborado ndicede directorios; un directorio de alias; negociacin de contenidos; informe de erro

    res HTTP configurable; ejecucin SetUID de programas CGl; gestin de recursospara procesos hijos; integracin de imgenes del lado del servidor; reescritura delas URL; comprobacin de la ortografa de las URL; y manuales online.

    El resto de caractersticas importantes de Apache son:

    Soporte del ltimo protocolo HTTP 1.1:Apache es uno de los primerosservidores Web en integrar el protocolo HTTP 1.1. Es totalmente compatible con el nuevo estndar HTTP 1.1 y al mismo tiempo sigue siendo com

    patible con HTTP 1.0. Apache est preparado para todas las novedadesdel nuevo protocolo. Por ejemplo, antes de HTTP 1.1, un navegador Webtena que esperar una respuesta del servidor Web antes de poder emitir otrapeticin. Con el surgimiento de HTTP 1.1, esto ha dejado de ser as. Unnavegador Web puede enviar solicitudes en paralelo, las cuales ahorranancho de banda dejando de trasmitir las cabeceras HTTP en cada solicitud.De algn modo estamos ofreciendo un estmulo del lado del usuario finalporque los archivos solicitados en paralelo aparecern antes en el nave

    gador. Sencillo, con la configuracin basada en un poderoso archivo:el servi

    dor Apache no posee una interfaz de usuario grfica para su administracin. Se trata de un sencillo archivo de configuracin llamado h t t p d . c onfque se puede utilizar para configurar Apache. nicamente necesita su editor de texto favorito. Sin embargo, es lo suficientemente flexible para permitirle repartir la configuracin de su host virtual en mltiples archivospara no sobrecargar un nico archivo h t t p d . c o n f con toda la gestinde las mltiples configuraciones de servidores virtuales.

    Soporte para CGl (Common Gateway Interface): Apache soporta CGlutilizando los mdulos m o d _ c g i y m o d _ c g i d . E s compatible con CGl yaporta caractersticas extendidas como personalizacin de las variables deentorno y soporte de reparacin de errores o debugging, que son difcilesde encontrar en otros servidores Web. Ver captulo 12 para obtener msdetalles.

    Soporte de FastCGI: no todo el mundo escribe sus CGl en Perl, cmopueden hacer sus aplicaciones CGl ms rpidas? Apache tambin tieneuna solucin para esto. Utilice el mdulo mod_f cgi para implementar unentorno FastCGI dentro de Apache y haga que sus aplicaciones FastCGIarranquen rpidamente. Ver el captulo 14 para obtener los detalles.

  • 7/21/2019 La Biblia de Servidor Apache 2

    44/843

    Soporte de host virtuales:Apache es adems uno de los primeros servidores Web en soportar tanto host basados en IP como host virtuales. Ver elcaptulo 6 para obtener los detalles.

    Soporte de autentificacin HTTP: Apache soporta autentificacin bsi

    ca basada en la Web. Est tambin preparado para autentificacin basadaen la digestin de mensajes, que es algo que los navegadores Web populares ya han implementado. Apache puede implementar autentificacin bsica utilizando tanto archivos estndar de contrasea como los DBM, llamadasa SQL o llamadas a programas externos de autentificacin. Ver el captulo7 para obtener los detalles.

    Perl integrado:Perl se ha convertido en el estndar para la programacinde scripts CG1. Apache es seguramente uno de los factores que hacen de

    Perl un lenguaje de programacin CGI tan popular. Apache se encuentrams cerca de Perl que nunca. Puede bajar un script CGI basado en Perl a lamemoria utilizando su m dulo m od_perl, y reutilizarlo tantas veces comonecesite. Este proceso elimina las desventajas del arranque que se encuentran asociadas a menudo con los lenguajes de interpretacin como Perl.Ver el captulo 16 para obtener los detalles.

    Soporte de scripts PHP: este lenguaje de script ha comenzado a ser muy

    utilizado y Apache ofrece un amplio soporte de PHP utilizando el mdulomodphp. Ver el captulo 15 para obtener los detalles.

    Soporte de servlets de Java: los servlets de Java y las Java Server Pages(JSP) se estn convirtiendo en algo muy comn en los sitios Web dinmicos. Puede ejecutar servlets de Java utilizando el premiado entorno Tomcatcon Apache. Ver el captulo 17 para obtener los detalles.

    Servidor proxy integrado:puede convertir Apache en un servidor proxycach. Sin embargo, la implementacin actual del mdulo opcional de proxy

    no soporta HTTP proxy o el ltimo protocolo HTTP 1.1. Se est planeando actualizar este mdulo muy pronto. Ver el captulo 10.

    Estado del servidor y adaptacin de registros: Apache le da una grancantidad de flexibilidad en el registro y la monitorizacin del estado delservidor. El estado del servidor puede monitorizarse mediante un navegadorWeb. Adems, puede adaptar sus archivos de registro a su gusto. Ver elcaptulo 8 para obtener los detalles.

    Soporte de Server Side Includes (SSI): Apache ofrece un conjunto deServer Side Includes que aaden una gran cantidad de flexibilidad para eldesarrollador del sitio Web. Ver el captulo 13 para obtener los detalles.

    Soporte de Secured Sockect Layer (SSL): puede crear fcilmente unsitio Web SSL utilizando OpenSSL y el mdulo m o d _ s s l de Apache.Ver el captulo 19 para obtener los detalles.

    wm

  • 7/21/2019 La Biblia de Servidor Apache 2

    45/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    46/843

    todas las solicitudes que han servido los hilos dentro del proceso hijo. Sin embargo, como las solicitudes estn distribuidas en procesos hijo separados, la muertede un proceso hijo afecta como mximo a 1/n del total de las conexiones, donde nrepresenta el nmero de conexiones simultneas.

    Los procesos se aaden o se eliminan monitorizando su conteo de hilos derepuesto. Por ejemplo, si un proceso tiene menos de un nmero mnimo de hilos derepuesto, se aade un nuevo proceso. Del mismo modo, cuando un proceso tieneun mximo de nmero de hilos parados, se elimina.

    Todos los procesos funcionan con el mismo usuario e ID de grupo asignadospor el servidor Apache.

    Dado que los hilos son ms eficaces en cuanto a recursos que los procesos,este MPM es muy escalable.

    El MPM perchildEsto tambin es nuevo en Apache 2.0. En este modelo MPM, un nmero de

    procesos hijo se inicia con un nmero determinado de hilos. Segn aumenta lacarga de solicitudes, el proceso va aadiendo nuevos hilos a medida que los necesita. Cuando el conteo de solicitudes se reduce, los procesos disminuyen sus conteosde hilos utilizando un conteo mnimo y mximo fijos.

    La diferencia clave entre este mdulo y el MPM threaded es que el proceso de

    conteo es esttico y adems cada proceso puede ejecutarse utilizando un usuario yun ID de grupo distintos. Esto facilita le ejecucin de distintos sitios Web virtualesbajo distintos usuarios e ID de grupos. Ver el captulo 6 para obtener los detalles.

    El MPM winnt

    Este es el MPM para la plataforma Windows, incluido Windows 2000, WindowsNT y Windows 9x. Se trata de un mdulo multihilo. Utilizando este mdulo,Apache crear un proceso padre y un proceso hijo. El proceso hijo crea todos los

    hilos que sirve la solicitud. Adems, este mdulo saca partido de algunas llamadas a funciones de Windows, que le permiten funcionar mejor en la plataformaWindows que las versiones anteriores del servidor Apache.

    Filtrado l/O

    Ahora Apache 2.0 proporciona arquitectura para I/O jerarquizada. Esto significa que un output de un mdulo puede convertirse en un input de otro mdulo. El

    efecto de este filtrado es muy interesante. Por ejemplo, el output producido porscripts de CGI, que es procesado por el mdulo m o d c g , puede ahora pasarse almdulo mod_include responsable de las SSI. En otras palabras, los scripts deCGI pueden producir un output en forma de etiquetas SSI, que se pueden procesarantes de que el output final se enve al navegador Web. Estarn disponibles en elfuturo muchas otras aplicaciones de filtrado O/I.

    Ka

  • 7/21/2019 La Biblia de Servidor Apache 2

    47/843

    El nuevo demonio CGI

    Dado que muchos de los mdulos MPM utilizan hilos, ejecutar scripts CGI seconvierte en algo engorroso cuando un hilo transfiere una solicitud. El mdulomod c g i sigue funcionando, pero no de forma ptima para las MPM threaded.Por ese motivo se aadi mod c g i d . El mdulo mod c g i d crea un procesodemonio, que produce procesos CGI e interacciona con hilos de forma ms eficaz.La figura 1.1 muestra cmo se sirve un CGI solicitado por un script llamadom y s c r i p t . p l .

    Navegador Web ^_Proceso hijode Apache

    Proceso hijode Apache

    Proceso hijode Apache

    Procesodemonio CGI

    J 1) usuarios simultneos se conecten consu sitio Web. Por ejemplo, si tiene una conexin RDSI y quiere servir 12

    usuarios al mismo tiempo por segundo cuando el tamao medio es 16 K,necesita 12 x RDSI (128K.) conexiones, que es en realidad una conexin T-1 (1.53 Mbps).

    Bajar el software

    Antes de bajar el software de Apache por primera vez, debe tener en cuenta

    una serie de cosas. Se pueden encontrar dos versiones disponibles de Apache: unaes una versin oficial y la otra es la versin beta que tiene el ultimo cdigo fuentey las ltimas caractersticas. Si encuentra la versin 2.0.2 de Apache y una versin llamada 2.3b3, entonces la primera versin es la oficial y la segunda es laversin beta. La tercera versin beta 2.3b3 (las versiones 2.3b 1 y 2.3b2 salieronantes) probablemente ser una versin estable, pero no es recomendable utilizaruna versin beta para produccin en un servidor Web. Para bajar la versin quequiera, dirjase a h t t p : //w ww . a p a c h e . o r g / d i s t / h t t p d / .

    TRUCO: W9 econtJurf servidor mirror de Apadm&^'eiesogeogrficamente, ejecute el buscador de scripts de Apache en www.apache.Tg/df&fX&&tThi1'.' -1"-*' -

    WZM

  • 7/21/2019 La Biblia de Servidor Apache 2

    58/843

    Este es el directorio de distribucin del software de Apache. Aqu, puede encontrar tanto la versin oficial como la beta del software en varios paquetescomprimidos. Por ejemplo:

    httpd_2.0.4.tar.Z

    httpd_2.0.4.tar.gzhttpd_2.0.4.ziphttpd_2.3b3.tar.gzhttpd_2.3b3_win32.exe

    Estos son ejemplos de distintos tipos de formatos de compresin que se utilizan para distribuir cdigo fuente. Tiene que elegir el formato de compresin quesu sistema puede manejar (en otras palabras, asegrese de que tiene la utilidad dedescompresin de cdigo). Normalmente con Linux, necesita tener las utilidades

    t a r , g n u z i p o g z i p para descomprimir los archivos. Por ejemplo, paradescomprimir el archivo h t t p d _ v e r s i o n . t a r . gz (en el que versin es cualquier versin que haya bajado como por ejemplo la 2.0.4) en un sistema Linux,utiliza el comando t a r xv zf h t t p d _ v e r s i o n . t a r . gz . Podra utilizartambin e l comando g z i p -d h t t p d _ v e r s i o n . t a r . gz ; t a r xvfhttpd_version . tar, que descomprimir y extraer todos los archivos en unsubdirectorio mientras que mantiene intacta la ruta relativa para cada archivo.

    Windows crea la auto extraccin de archivos comprimidos para la versin de

    Apache. Cualquier archivo se puede extraer simplemente ejecutando el archivoque hemos bajado. Para la instalacin especfica en Windows y para saber losdetalles de configuracin, debe saltarse el resto del captulo y dirigirse al captulo20.

    Los binarios se guardan normalmente en un directorio distinto en el que cadasistema operativo tiene su propio subdirectorio. Tenga en cuenta que si su sistemaoperativo no aparece en el directorio de binarios, eso no significa necesariamenteque no soporte ese sistema operativo. Lo nico que significa es que no hay nadie

    del grupo de desarrollo de Apache o de los grupos colaboradores que tenga compilado un archivo binario para su sistema hasta ahora. Probablemente encontrarbinarios para los sistemas Linux, FreeBSD, Solaris, NetBSD, OS2, AIX, Ultrix,HPUX y IRIX.

    Instalar Apache desde el cdigo fuente

    Instalar Apache compilando el cdigo desde la distribucin de la fuente es elmejor mtodo de instalacin porque permite configurar el servidor para satisfacersus necesidades. Cualquier instalacin binaria que baje tendr alguna otra configuracin que no podr alterar para cubrir sus necesidades.

    Por ejemplo, si baja e instala un binario que tenga soporte CGI, puede quetenga que mantener el soporte CGI aunque nunca vaya a ejecutar programas CGI.

  • 7/21/2019 La Biblia de Servidor Apache 2

    59/843

    Si el mdulo CGI est configurado como un mdulo dinmico compartido, entonces puede inutilizarlo fcilmente; sin embargo, si el soporte est construido deforma esttica en el binario, entonces tendr que dejarlo como est. Si compila unservidor Apache desde la fuente de distribucin obtendr los componentes quenecesite sin gasto de procesos o de espacio en el disco.

    NOTA: Bajela distribucin de la fuente del sitio Apache oficial o del sitiomirror adecuado.

    Configurar la fuente de Apache

    La distribucin de fuente de Apache incluye un script llamado c o n f i g u r eque le permite configurar el rbol fuente antes de compilar e instalar los binarios.

    Desde el directorio de distribucin de fuente de Apache, puede ejecutar este scriptdel siguiente modo:

    . / c o n f i g u r e - - p r e f i x = a p a c h e _ i n s t a l l a t i o n _ d i r

    La opcin - - p r e f ix le dice a Apache que instale los binarios, otras configuraciones necesarias y los archivos de soporte en a p a c h e _ i n s t a l l a t i o n _dir. Por ejemplo:

    ./configure --prefix=/usr/local/apache

    Aqu la fuente Apache se configurar de modo que todos los binarios y archivos de soporte se instalarn en el directorio /usr/local/apache.

    Hay muchas opciones que puede utilizar con el script c o n f i g u r e . La tabla2.2 muestra todas las opciones de configuracin disponibles.

    Tabla 2.2.Las opciones del script de configuracin

    Opcin

    - - c a c h e - f i l e = f i l e

    --help

    --no-creace

    --quiet or -silent

    versin

    --prefix=prefix

    Significado

    Los resultados de la prueba del cach se encuentran en file.

    Imprime este mensaje.

    No crear archivos de salida.

    No imprimir mensajes 'checking...'.

    Imprimir la versin de autoconf que cre eldirectorio y los nombres de archivo de configuracin.

    Instala los archivos independientes de arquitectura en [ / u s r / l oc a l / ap a c he 2 ] .

    M ^M

  • 7/21/2019 La Biblia de Servidor Apache 2

    60/843

    Opcin

    - - e x e c - p r e f i x = e p r e f i x

    - - b i n d i r = d i r

    - - s b i n d i r = d i r

    --libexecdir=dir

    --datadir=dir

    --sysconfdir=dir

    --sharedstatedir=dir

    --localstatedir=dir

    --1ibdir = di r

    --includedir=dir

    --oldincludedir=dir

    --infodir=dir

    --mandir=dir--srcdir=dir

    --program-prefix=prefix

    - -p r o g r a m-s u f f i x = s u f f i x

    --program-transform-name=program

    --build=build

    --host=host

    --target=target

    Significado

    Instala los archivos dependientes de arquitectura en eprefix [same as p r e f i x ] .

    Ejecutables de usuario en d i r [ E P R E F I X /bin] .

    Ejecutables del administrador del sistema endir [EPREFIX/sbin] .

    Ejecutables de programas en d i r [ e p r e f i x/ 1 i b e x e c ] .

    Datos independientes de arquitectura de slolectura en d i r [ p r e f i x / s h a r e ] .

    Datos de una mquina nica de slo lecturae n d i r [ p r e f i x / e t c ] .

    Datos independientes de arquitectura modi-ficables en d i r [ p r e f i x / c o m ] .

    Datos de una mquina nica modificable endir[prefix/var].

    Bibliotecas de cdigo de objetos en d i r [

    e p r e f i x / 1 i b ] .Archivos de cabecera C en d i r [p re f i x /i n c l u d e ] .

    Archivos de cabecera para GCC en d i r [ /u s r / i n c l u d e ] .

    Documentacin de informacin en d i r [p r e f i x / i n f o ] .

    Documentacin man en d i r [pref ix/ma n] .Encuentra fuentes en d i r [ co n f i g u re d i ro r . . . ] .

    Utiliza prefix para instalar nombres de programas.

    Aadesuffixpara instalar los nombres de programas.

    Ejecuta el programa editor de flujo en la instalacin de nombres de programas.

    Configuracin para construir con build.

    Configuracin para host.

    Configuracin para TARGET [TARGET=HOST].

    M& W

  • 7/21/2019 La Biblia de Servidor Apache 2

    61/843

    Opcin Significado

    --disable-feature

    --enable- feature[=arg

    --with-package[=arg]

    --without-package

    x-includes=dir

    --x-libraries=dir

    --with-optim=flag

    --with-port=port

    --enable-debug

    --enable-maintainer-mode

    --enable-layout=layout

    --enable-modules=module-list

    --enable-mods-shared=module-list

    --disable-access

    --disable-auth

    --enable-auth-anon

    enable-auth-dbm

    --enable-auth-db

    --enable-auth-digest

    - - e n a b l e - f i l e - c a c h e

    - - e n a b l e - d a v - f s

    - - e n a b l e - d a v

    - - e n a b l e - e c h o

    No incluir FEATURE (igual que -enable-FEATURE=no).

    Incluir feature [arg=yes].

    Utilizar package [arg=yes].

    No utilizar (igual que -with- package=no).

    Hay X archivos include en dir.

    Hay X archivos library en dir.

    Obsoleto (utiliza la variable de entornoOPTIM ).

    Puerto al que escuchar (el puerto por defecto es el 80).

    Enciende las advertencias de debugging y decompilacin en tiempo de ejecucin.

    Enciende las advertencias de debugging y decompilacin en tiempo de ejecucin.

    Permite una distribucin de directorio.

    Permite uno o ms mdulos.

    Permite uno o ms mdulos como mduloscompartidos.

    Inutiliza el control de acceso basado en host.

    Inutiliza el control de acceso basado en usuario.

    Permite acceso a usuarios annimos.Permite acceso a bases de datos basado enDMB.

    Permite acceso a bases de datos basado enDB.

    Permite la autentificacin por digestinRFC2617.

    Permite cach de archivos.

    Permite manejo de protocolo DAV.

    Permite manejo de protocolo WebDAV.

    Permite servidor ECHO.

  • 7/21/2019 La Biblia de Servidor Apache 2

    62/843

    Opcin Significado

    --enable-charset-lite

    --enable-cache

    --enable-disk-cache

    --enable-ext-filter

    --enable-case-filter

    --enable-generic-hook-export

    --enable-generic-hook

    -import--enable-optional-fn-import

    --enable-optional-fn-export

    --disable-include

    --disable-http

    --disable-mime

    --disable-log-config

    --enable-vhost-alias

    --disable-negotiation

    --disable-dir

    --disable-imap--disable-actions

    --enable-speling

    --disable-userdir

    --disable-alias

    --enable-rewrite

    - - d i s a b l e - s o

    - - e n a b l e - s o

    - - d i s a b l e - e n v

    - - e n a b l e - m i m e - m a g i c

    Permite la traduccin de conjuntos de caracteres.

    Permite caching dinmico de archivos.

    Permite el mdulo de caching de disco.

    Permite mdulos de filtro extemo.

    Permite filtro de conversin de maysculas.

    Ejemplo permitido de exportacin de entradas.

    Ejemplo permitido de importacin de entra

    das.Ejemplo permitido de importacin opcionalde una funcin.

    Ejemplo permitido de exportacin opcionalde una funcin.

    Inutiliza Server-Side Includes.

    Inutiliza el manejo de protocolo HTTP.

    Inutiliza la integracin de la extensin de archivos MIME.

    Inutiliza la configuracin de registro.

    Permite el mdulo de alojamiento.

    Inutiliza la negociacin de contenido.

    Inutiliza el manejo de solicitudes.

    Inutiliza la integracin interna de imgenes.Inutiliza el lanzamiento de solicitudes.

    Permite la correccin ortogrfica de las URLhabituales.

    Inutiliza la integracin de las solicitudes deusuarios.

    Inutiliza la traduccin de solicitudes.

    Permite la reescritura de las URL.Inutiliza la capacidad DSO.

    Permite la capacidad DSO.

    Borra/asigna variables ENV.

    Determina automticamente el tipo MIME.

    WM

  • 7/21/2019 La Biblia de Servidor Apache 2

    63/843

    Opcin Significado

    --enable-cern-meta

    --enable-expires

    --enable-headers

    --enable-usertrackenable-unique-id

    disable-setenvif

    enable-tls

    --with-ssl

    --with-mpm^MPM

    - -el i s a b 1 e-s t a t u s

    disable-autoindex

    --disable-asis

    --enable-info

    enable-suexec

    --disable-cgid

    --enable-cgid

    --disable-cgi

    --enable-cgid

    --enable-shared[=pkgs]

    --enable-static[=pkgs]

    --enable-fast-install[=pkgs]

    --with-gnu-ld

    --disable-libtool-lock

    --with-program-name

    --with-suexec-caller

    Permite meta archivos de tipo CERN.

    Permite el control de cabeceras Expires.

    Permite el control de cabeceras HTTP.

    Permite seguimiento de la sesin de usuario.Permite solicitudes de un solo ID.

    Inutiliza las variables ENV en las cabeceras.

    Permite soporte TLS/SSL.

    Utiliza una instalacin especial de la biblioteca SSL.

    Elige el modelo de proceso para Apache parautilizar: MPM={beos threaded prefork spmt_os2 perchild}.

    Monitoriza procesos / hilos.

    Inutiliza la lista de directorios.

    Inutiliza los tipos de archivo As-is.

    Permite informacin del servidor.

    Asigna UID y GID a los procesos engendrados.

    Inutiliza el soporte del demonio CGI.

    Permite el soporte del demonio CGI.

    Inutiliza el soporte de scrips CGI.

    Permite el soporte de scripts CGI.

    Construye bibliotecas compartidas [default=no].

    Construye bibliotecas estticas [default=yes].

    Optimiza la instalacin rpida [default=yes].

    Adopta la utilizacin de compilador C GNUID [default=no].

    Evita el bloqueo (posiblemente rompe laconstruccin paralela).

    Alterna nombres ejecutables.

    Usuario que puede realizar llamadasS u E x e c .

  • 7/21/2019 La Biblia de Servidor Apache 2

    64/843

    Opcin Significado

    with-suexec-userdir Subdirectoriodelusuario.

    --with-suexec-docroot Directorio raz SuExec.

    --with-suexec-uidmin MnimoUID permitido.--with-suexec-gidmin MnimoGID permitido.

    --with-suexec-logfile Asignaelficheroderegistro.

    --with-suexec-safepath Asignaelsafepath.

    --with-suexec-umask Unamscara paraelprocesosuex ec.

    La mayora de estas opciones no son necesarias para la gran parte de los sitios.Normalmente, lo nico que necesita es especificar la opcin - - p r e f ix y cualquier otra opcin necesaria para permitir o no uno u otro mdulo. Por ejemplo,imagine que no quiere instalar el mdulo CGI en su sistema. Puede ejecutar elscript c o n f i g u r e utilizando las opciones - - d i s a b l e - c g i - - d i s a b l e -c g i d para inutilizar el soporte CGI. Del mismo modo, para inutilizar el soporteServer-Side Include (SSI) puede utilizar la o p c i n - - d i s a b l e - i n c l u d e .

    Una vez que ha configurado el Apache con el script configure, puede

    utilizar el script c o n f i g . s t a t u s en lugar del script c o n f i g u r e para lasconfiguraciones siguientes. Utilizando el script conf i g . s t a t u s , puede reutilizarsu configuracin previa y aadir o quitar opciones. Por ejemplo, imagine queconfigur Apache con la siguiente lnea de comando:

    . /configure

    cgid

    -prefix=/usr/local/apache --disable-cgi --disable-

    y unos das ms tarde decide inutilizar las SSI. Puede utilizar ahora:

    ./config.status --disable-include

    Cuando vuelva a compilar Apache, los mdulos CGI no estarn incluidos,porque . / c o n f ig . s t a t u s almacena las opciones que especific al utilizar elscript configure antes.

    Si quiere empezar bien, utilice siempre configure.

    Opciones avanzadas de configuracinpara sitios con mucho trfico

    Si ejecuta Apache en un servidor con mucho trfico en el que se solicitancientos de solicitudes por segundo, debera cambiar el lmite de hardware pordefecto asignado en el mdulo MPM que ha elegido. Ver el captulo 1 para obtener los detalles sobre los mdulos MPM. Los lmites de hardware por defecto que

    MAM

  • 7/21/2019 La Biblia de Servidor Apache 2

    65/843

    puede cambiar son HARD_SERVER_LIMIT y HARD_THREAD_LIMIT. ElHARD_SERVER_LIMIT asigna el nmero mximo de hijos que el servidor Apache puede producir. HARD_THREAD_LIMIT asigna el nmero total de hilos queApache puede crear dentro de sus hijos. La tabla 2.3 muestra los lmites pordefecto y dnde puede encontrarlos.

    NOTA: La estiqu^"%Af'C^ii&RE% mencionada en la tabla se refiere al direefcto

  • 7/21/2019 La Biblia de Servidor Apache 2

    66/843

    Opciones limite Valor por Anotacionesdefecto

    Winnt HARD SERVER LIMIT 1

    Winnt HARD THREAD LIMIT 4096

    Archivo de cabecera C (include):%APACHE_SOURCE%/server/mpm/winnt/mpmdefault.h

    #define HARD_SERVER_LIMIT 1Esta asignacin no se puede cambiar. Podemos,sin embargo, cambiar el conteo de hilos dehardware

    Archivo de cabecera C (include):A P A C H E _ S O U R C E / s e r v e r / m p m / w i n n t /mpm_default.h#ifndef HARD_THREADJ_IMIT#define HARD_THREAD_LIMIT4096#endif

    ADVERTENCIA: Cuando cambie HARD_SERVER_LIMIT o HARD_THREAD_LIMIT a uno superior que el que tenemos por defecto, asegrese de que tiene los recursos del sistema apropiados. Por ejemplo, el cambiarHARD_SERVER_LIMIT a 1024 en el MPM prefork le permitir crear1024 procesos hijo Apache instruyendo a Apache para que cree todos esoshijos utilizando las directivas StartServers, MinSpareServers y

    MaxSpareServers.

    Sin embargo, si su sistema no tiene suficiente memoria, entonces cambiar ellmite de hardware a un valor ms alto no beneficiar demasiado. Recuerde quecuanto ms altos sean los lmites, ms recursos necesitar. Adems, tendr queaumentar el nmero de descriptores de archivos que su sistema permite para unsolo usuario. En los sistemas Linux y Unix debera determinar cul es (y posiblemente asignar) el lmite de descriptores de archivos utilizando el comando u l i m i t .

    Adems, no olvide que la directivaMaxClients asigna el lmite en el nmero de procesos hijo que se crearn para servir solicitudes. Cuando el servidor seconstruye sin threaded, no se puede servir a un nmero de clientes mayor que stede forma simultnea. Para configurar ms de 256 clientes, debe editar la entradaHARD_SERVER_LIMIT en mp m^de f a u l t . h y volver a compilar.

    Compilar e instalar Apache

    Una vez que tiene configurada la fuente de Apache utilizando el script conf i g u r e ha de seguir los siguientes pasos para compilar e instalar Apache:

    1. Ejecute el comando make para compilar la fuente.

    2. Ejecute el comando make i n s t a l l para instalar h t t p d y soportararchivos en el directorio que determine utilizando la opcin - - p r e f i x .

    E9

  • 7/21/2019 La Biblia de Servidor Apache 2

    67/843

    Dirjase al directorio de instalacin y navegue por el directorio. Versubdirectorios del tipo b i n c g i - b i n , c o n f , h t d o c s , i c o n s ,i n c l u d e , l i b y l o g s . P o r e j e m p l o , s i u t i l i z a p r e f i x = / u s r / l o -cal/apache con el script configure durante la configuracin delrbol fuente, make i n s t a 11 crear la siguiente estructura de directorio:

    /usr /local/apache

    t inc lude

    + lib

    * bin

    + con f

    t h r. d o c s

    t - - m a n u a 1

    +-

    1 +-+

    1 +-t-

    1 +-

    1 +-

    1 +-

    i +-

    -developer

    -howto

    -images

    -mise

    -mod-platform

    -programs

    -search

    -vhoses

    t s rri a i 1

    I

    + logs

    t cgi-bin

    La siguiente lista le ofrece una breve descripcin de cada uno de los directorios de la estructura de directorios:

    I n c l u d e : contiene todos los archivos cabecera (include) que slo sonnecesarios si desarrolla aplicaciones Web que integran con Apache o siquiere utilizar software de terceras partes con Apache. En un servidor deproduccin puede eliminar este directorio.

    Lib: aloja los archivos de la biblioteca Apache Portable Run-Time (APR),

    los archivos que son necesarios para ejecutar Apache y otras utilidades desoporte como ab.

    B in : contiene los programas que se muestran en la tabla 2.4.

    Conf: aloja los archivos de configuracin de Apache. Contiene los archivos de la tabla 2.5.

    l i l i

  • 7/21/2019 La Biblia de Servidor Apache 2

    68/843

    Htdocs: este es el directorio raz de documentos para el servidor principal d e A p ac he . E l a rc hi vo h t t p d . c o n f a sig na l a d ir ec ti vaDocumentRoot a este directorio. Aprender cmo asignar su propiodirectorio raz de documentos en el captulo 3. Por defecto, el directoriohtdocs tambin tiene el manual de instalacin de Apache en un subdirectorio.

    Icons: se utiliza para almacenar varios iconos de Apache necesariospara desplegar de forma dinmica la lista construida de directorios.

    Logs: se utiliza para almacenar los registros del servidor de Apache, eldemonio CGI basado en sockect ( c g i s o c k ) y el archivo P1D(httpd, pid). Aprender a cambiar la ruta de registro en el captulo 3.

    Cgi-bin: el directorio de script CGI por defecto, que se asigna utilizan

    do la directiva S c r i p t A l i a s en h t t p d . c o n f . Por defecto. Apachetiene dos scripts CGI sencillos p r i n t e n v y t e s t - c g i . Cada uno deestos scripts imprime variables de entorno CGI cuando realiza solicitudesmediante h t t p : / / s e r v e r n a m e / c g i - b i n / s c r i p t _ n a m e URL.Estos scripts son necesarios para determinar si est funcionando la configuracin CGI.

    ADVERTENCIA: Se recomienda eliminar los scriptsp r i n t e n v y t e s t -

    c g i una vez que se encuentre funcionando la configuracin CGI. No esuna buena idea tener un script que muestra informacin sobre su sistema acualquiera. Cuanto menos sepa el resto del mundo sobre el modo de funcionar de su sistema, ms seguro ser ste.

    La tabla 2.4 proporciona una lista de programas que puede encontrar en eldirectorio bin.

    Tabla 2.4. Programas Apache en el directorio bin

    Programas Apache Definicin

    Ab

    Apachectl

    apxs

    Este es el programa apachebench. Le sirve comopunto de referencia al servidor Apache. Ver el captulo 22 para obtener ms informacin sobre esteprograma.

    Es un script de gran utilidad que le permite iniciar,reiniciar y parar el servidor Apache. Ver el captulo3 para obtener ms informacin sobre este script.

    Esta es una herramienta para construir e instalarmdulos de extensin de Apache. Permite construir mdulos DSO que se pueden utilizar en Apa-

    W S M

  • 7/21/2019 La Biblia de Servidor Apache 2

    69/843

    Programas Apache Definicin

    htdigest

    htpasswd

    httpd

    logresolve

    Rotatelogs

    che utilizando el mdulo mod_so. Para ms informacin sobre este programa, ver http://your_server

    _name/manual/programs/apxs.htm.

    Este programa crea y actualiza la informacin de

    autentificacin de usuarios cuando se utiliza la au-tentificacin por digestin de mensajes (MD5). Paraobtener ms informacin sobre este programa verhttp://your_server_name/manual/programs/htdigest.html.

    Este programa se utiliza para crear y actualizar lainformacin de autentificacin de usuarios en autentificacin HTTP bsica. Ver el captulo 7 para

    obtener ms detalles.Este es el programa del servidor Web de Apache.

    Este programa convierte (resuelve) las direccionesIP de un archivo de registro a nombres de host. Verel captulo 8 para obtener los detalles.

    Este programa alterna los archivos de registro deApache cuando alcanzan un tamao determinado.Ver el captulo 8 para obtener los detalles.

    La tabla 2.5 muestra la lista de contenidos en el directorio c o n f i g .

    Tabla 2.5.Contenido del directorio config de Apache

    Archivo de configuracin Definicin

    httpd.confhttpd-std.conf

    highperformance.conf

    highperformance-std.conf

    Magic

    Este es el archivo de configuracin de Apache.Esta es la copia de prueba del archivo httpd.conf, que Apache no necesita. Para los usuarios nuevos de Apache, este archivo puedeactuar recuperando el conf por defecto.

    Este es un archivo de prueba de configuracin que muestra algunos consejos para configurar Apache para alto rendimiento.

    Esta es una copia de prueba del archivohighperformance.conf, que Apache no necesita.

    Este archivo almacena los datos mgicos delmdulo mod_mime_magc de Apache.

    http://your_server/http://your_server_name/manual/programs/htdigesthttp://your_server_name/manual/programs/htdigesthttp://your_server/
  • 7/21/2019 La Biblia de Servidor Apache 2

    70/843

    Archivo de configuracin Definicin

    mime.types Este archivo se utiliza para decidir qu tipo decabecera MIME se enva al cliente para unarchivo determinado. Para obtener ms infor

    macin sobre los tipos MIME, por favor leaRFC 2045, 2046, 2047, 2048 y 2077. El registro los Internet media-types se encuentra enel sitio f tp: / / f tp. iana.org/ in-notes/ iana/assignments/media-types.

    Instalar Apache desde los paquetes binariosRPM

    Puede bajar los binarios de Apache apropiados para su sistema dew w w . a p a c h e . o r g / d i s t / h t t p d / b i n a r i e s d i rec t o ry . B a j e l a l t i ma versin y extraiga el archivo comprimido en un directorio temporal. Parasaber cmo instalar los binarios en su plataforma, debe leer el archivoi n s t a l l . b i n d i s t , incluido en cada distribucin del binario.

    Si desea instalar el paquete RPM (Red Hat Package Management) de Apacheen su sistema Linux, haga lo siguiente:

    1. Dirjase al sitio h t t p : / / rpraf i n d . n e t y busque la cadena de caracteres Apache para localizar los paquetes RPM. Localice la ltima versinde la distribucin del RPM y bjeselo.

    2. Ejecute el comando rpm - i v h a p a c h e rpm p a c k a g e . rpm parainstalar el paquete. Por ejemplo, para instalar el a p a c h e - 2 . 0 . 4 -

    i38 6 . rpm para el sistema Red Hat Linux (Intel), ejecute el comandor p m - i v h a p a c h e - 2 . 0 . 4 - 1 3 8 6 . r p m .

    Mantenerse al da en el desarrollo de Apache

    Se puede preguntar si mientras est instalando la fuente o los binarios deApache que ha bajado est saliendo una nueva versin de Apache o quiz hay

    disponible un parche de seguridad. El software cambia rpidamente en los tiempos que corren y siempre aparece una actualizacin detrs de otra. Lo cual esbueno, pero no siempre es fcil mantenerse al dia si tenemos un trabajo que hacer.Existen dos recursos de Apache que debera tener en cuenta:

    ApacheToday:este es el mejor sitio Web en el mundo de noticias de Apache. Puede obtener todas las noticias de Apache que quiera en

    ftp://ftp.iana.org/in-notes/iana/http://www.apache.org/dist/httpd/binarieshttp://www.apache.org/dist/httpd/binariesftp://ftp.iana.org/in-notes/iana/
  • 7/21/2019 La Biblia de Servidor Apache 2

    71/843

    www. apachetoday. com. Utilizando su artculo Your Apache Today,puede filtrar contenido de noticias y obtener exactamente lo que ms leinteresa. Puede asistir tambin a los eventos que desee de los que se anuncian en estas noticias.

    ApacheWeek: se puede suscribir (gratis) al recurso de Apache llamado

    Apache Week, y le mandarn por correo electrnico todas las noticias deApache. Puede encontrar el sitio Web The Apache Week en www .a p a c h e w e e k . c o m . Se trata de un gran recurso informativo para losadministradores de Apache que quieran estar realmente informados. Puedeleer adems muchos artculos de gran utilidad sobre cmo sacar el mximopartido de su servidor. Le recomiendo visitar este sitio Web.

    http://apacheweek.com/http://apacheweek.com/
  • 7/21/2019 La Biblia de Servidor Apache 2

    72/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    73/843

  • 7/21/2019 La Biblia de Servidor Apache 2

    74/843

    jcl Preparary ejecutar

    Apache

    En este captulo

    1. Comprobamos los aspectos bsicos del servidor Apache.

    2. Iniciamos, paramos y reiniciamos el servidor Apache.3. Probamos un servidor Apache en funcionamiento.

    En el ltimo captulo, aprendi a compilar y a instalar el servidor Web Apacheen su sistema Unix. Ahora esta listo para prepararlo y ejecutarlo. Este captulocubre los detalles bsicos de configuracin.

    Configurar ApachePor defecto, Apache lee un solo archivo de configuracin llamado

    h t t p d . c onf . Cada distribucin de cdigo fuente de Apache viene con un conjunto de archivos de configuracin de ejemplo. En la distribucin estndar decdigo fuente de Apache, puede encontrar un directorio llamado conf, que contiene archivos de configuracin de ejemplo con la extensin d i s t .

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    75/843

    Antes de modificar este archivo es necesario que cree una copia backup deloriginal.

    El archivo h t t p d . c o n f contiene dos tipos de informacin: comentarios ydirectivas de servidores. Las lneas que comienzan con un carcter # son tratadascomo lneas de comentario; estos comentarios no tienen significado para el software del servidor, sino que son documentacin para el administrador del servidor.

    Puede aadir tantos comentarios como desee; el servidor simplemente ignora todos los comentarios cuando analiza el archivo. E xceptuando los comentarios y laslneas en blanco, el servidor trata el resto de las lneas bien como directivascompletas o bien como directivas parciales. Una es como un comando para elservidor. Le dice al servidor que realice una tarea determinada de un modo enconcreto. Mientras editamos el archivo h t t p d . co nf, ha de tomar ciertas decisiones relacionadas con cmo quiere que se comporte el servidor. En las siguientes secciones, aprender qu significan estas decisiones y cmo puede utilizarlas

    para personalizar su servidor.Puede encontrar una explicacin en profundidad sobre todas las directivas

    principales ms adelante en este libro.El listado 3.1 muestra el h t t p d . c o n f creado por defecto en el directorio

    conf de su instalacin de Apache. La mayor parte de los comentarios se haneliminado y el cdigo se ha editado resumido por cuestiones de brevedad.

    Listado 3.1. httpd.conf creado por defecto desde h t t p d . c o n f - d i s t

    # # # S e c c i n 1 : E n t o r n o g l o b a lS e r v e r R o o t " / u s r / l o c a l / a p a c h e "

    P i d F i l e l o g s / h t t p d . p i d

    < I f M o d u l e ! p e r c h i l d . c >S c o r e B o a r d F i l e l o g s / a p a c h e _ r u n t i m e _ s t a t u s

    < / I f M o d u l e >

    Timeout 300K e e p A l i v e O nM a x K e e p A l i v e R e q u e s t s 1 0 0K e e p A l i v e T i m e o u t 1 5

    < I f M o d u l e p r e f o r k . c >S t a r t S e r v e r sM i n S p a r e S e r v e r sM a x S p a r e S e r v e r s

    M a x C l i e n t sM a x R e q u e s t s P e r C h i l< / I f M o d u l e >

    < I f M o d u l e t h r e a d e d . c >S t a r t S e r v e r s 3M a x C l i e n t s 8

    55

    10

    20d 0

    El

  • 7/21/2019 La Biblia de Servidor Apache 2

    76/843

    MinSpareThreads 5

    MaxSpareThreads 10

    ThreadsPerChild 25

    MaxRequestsPerChild O

  • 7/21/2019 La Biblia de Servidor Apache 2

    77/843

    MIMEMagicFile conf/magic

    HostnameLookups OffErrorLog logs/error_logLogLevel warnLogFormat "7,h 7,1 7u t \"i,r\" %>s%b \" % {Ref erer} i \" \"%{User-Agent}i\"" combinedLogFormat "%h 7,1 7->u %t \"%r\" %>s %b" commonLogFormat "7 (Ref erer} i -> --U" refererLogFormat " 7. { User-agent ( i " agentCustomLog logs/access_log commonServerSignature OnAlias /icons/ "/usr/local/apache/icons/"

    Options Indexes MultiViews

    AllowOverride NoneOrder allow,denyAllow from all

    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

    AllowOverride NoneOptions None

    Order allow,denyAllow from all

    IndexOptions Fancylndexing VersionSortAddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

    AddlconByType (TXT,/icons/text.gif) text/*# Hay muchas ms directivas AddlconByType en el# httpd.conf por defecto pero se han borrado

    # para simplificar.

    Addlcon /icons/binary.gif .bin .exe# Hay muchas ms directivas Addlcon en# httpd.conf por defecto pero se han borrado para# simplificar.

    Defaultlcon /icons/unknown.gifReadmeName READMEHeaderName HEADERIndexlgnore .11* *~ *# HEADER* README* RCS CVS *,v *,tAddEncoding x-compress ZAddEncoding x-gzi