Está en la página 1de 623
La biblia del Servidor Apache Mohammed J. Kabir Indice Agradecimientos . 6 7 29 Este libro, es para usted 29 Organizacién del libro.. 30 Parte I: Inicio 30 Parte II: Administrar su 30 Parte Ill: La seguridad ... 31 Parte IV: Implementar propiedades avanzada: 31 Parte V: Uso de Apache hoy y majiana .... 31 Parte VI: Apéndices .. 32 Convenios utilizados en este libro 32 Parte L. Inicio «0.0, 33 1, Apache, el néimero uno de los servidores Web ... 35 Propicdades de Apache 36 Arquitectura 101 de Apache .. 38 E| futuro de Apache La interfaz GUI perdida Prepararse para el proximo milenio. Licencia de Apache .. {Quign utiliza Apache? {Esta listo? 2. Cémo obtener e instalar Apache .... Fuente oficial de Apache Requisitos del sistem: Bajarse el software Configuracién del cédigo fuente para su sistema Opciones de configuracion Opciones de configuracién relacionadas con Ia constru de archivos Configuracién de reglas.. Configuracién de médulos . Ejecutar Configure .. Compilacién de Apache Probar Apache Uso de los archivos binarios . Creacién de los directorivs de Apache Instalacién de Apache Esté al dia con el desarrollo de Apache 3. Configurar y ejecutar Apache Configurar el servidor httpd.conf .. Servidor Apache standalone Servidor Apache inetd Directrices comunes stm.conf. Configuracién del directorio Web Configuracién del directorio cgi-bin acces.cont.. Iniciar y detener el servidor.. Servidor standalone Ejecutar Apache como un servidor standalone Detener un servidor Apache standalone. Reiniciar un servidor standalone .. Servidor Apache inetd . Ejecutar el servidor Apache inetd . 87 Detener el servidor Apache inetd 87 Reiniciar el servidor Apache inetd 88 Comprobar el servidor Apache 88 4, Las directrices del naclee .. vee a Contexto de las directrices de Apache .... 92 Contexto de configuracién del servidor 92 Contexto del contenedor .. 92 Contexto por directorio 95 Directrices de configuracién general 95 AccessConfig 95 AccessFileName . 96 BindAddress. 97 CoreDumpDirectory . 98 DocumentRoot - . 98 ErrorDocument . 99 Include Listen Port .. User Group. Options . ResourceConfig .. ServerAdmin .. ServerName ServerRoot DefaultType Directrices para la configuracién de recursos y eficacia Control de los pracesus de Apache... ServerType StartServers ThreadsPerChild.. SendBufferSize ListenBacklog.. TimeOut . MaxClicnts. MaxRequestPerChild MaxSpareServers ... MinSpareServers. 113 Establecer conexiones persistentes 113 KeepAlive KeepAliveTimeout .. MaxKeepAliveRequests Control de los recursos del sistema .. RLimitCPU RLimitMEM . RLimitPROC Uso de médulos dindmicos ClearModuleList . AddModule Directrices de contenedores estandar .. .. ctory Match> .. .. .... Directrices especificas del servidor virtual 121 . 121 NameVirtualHost 122 ServerAlias 123 ServerPath 124 Directrices de registro 124 ErrorLog 124 125 125 126 Directrices de autenti 126 AllowOverride 126 AuthName .. 127 AuthType 128 i 128 129 IdentityCheck.... 130 HostNameLookups 130 131 mod_access . 133 mod_actions 133 5. Médulos de Apache ...... Action Script . mod_alias AliasMatch Redirect RedirectMatch RedirectTemy RedirectPermanent ScriptAlias ScriptAliasMatch mod_auth_db mod_auth_dbm auth_external mod_autoindex AddAlt.. AddAltByEncoding AddAlByType AddDescri Addicon AddlconByEncoding AddIconByType. Defaultlcon .. Fancylndexing HeaderName Indexlgnore .. IndexOptions ReadmeNam mod_cern_meta MetaFiles MetaDir MetaSuffix mod_cg’ mod_digest mod_dir .. DirectoryIndex.... mod_env PassEnv SetEnv .. UnsctEnv .. mod_expire ExpiresActive ExpiresByTyp« ExpiresDefault mod_headers ImapDefault ImapBase.. mod_include. mod_info ... mod_log_agent mod_log_config mod_log referer . mod_mime. AddEncoding AddHandler.. AddLanguag: AddType ForceType SetHandler TypesConfig mod_negotiation CacheNegotiatedDoes LanguagePriority mod_rewrite mod_setenvi BrowserMatch BrowserMatchNoCasc .. SetEnvif SetEnvIfNoCase . mod_spelling. CheckSpelling .. mod_status .. mod_unique_id mod_usertrack, Parte Lf. Administrar su sitio Web....... 6, Albergar sitios virtuales.. jNecesita un sitio virtual? Registro del nombre de dominio Configuracién DNS para su sitio Web virtual .. Creacién de los registros para el dominio en la base de datos Crear nuevas bases de datos para ¢l dominio ificacién de las bases de datos ya existentes ... ir entre basarse en una direccién IP o un nombre IP. Servidores virtuales basados en una direccién IP Servidores virtuales basados en un nombre IP Configurar Apache para que trabaje con servidores virtuales Configurar varios demonios Apache Configurar un Gnico demonio Apache Ejemplos de servidores virtuales .. Albergar un servidor Web con varias direcciones IP Albergar un servidor host basado en una direccién IP sin un servidor principal . Host virtuales basados en una direccién IP y con diferentes puertos.... Servidores basados en un nombre IP .. Servidores virtuales mixtos basados cn un nombre IP y en una direccién IP Uso de _default Paso de un servidor basado en un nombre a uno basado en una direcciGn TP Factor limite para servidores virtuale: Configuracién de sendmail para un sitio virtual . Configuracién DNS para el servidor SMTP virtual Configurar /etc/sendmail.cw .... Crear una base de datos para la tabla de usuai Configurar /ete/sendmail.cf... Probar un servicio de correo electré: Des 7. SSI para Apache Qué son los SSI. Configurar Apache para SSL 195 197 198 199 200 201 202 202 203 204 205 205 209 209 211 Agregar un nuevo controlador para las paginas HTML SSI Agregar una nueva extensién para las paginas HTML SSI Activar el andlisis SSI para un directorio Los comandos SSI config. echo exec cgi. emd fsize ... flastmod 222 include printenv set... Variables SSI.. Comandos de control de flujo .. 8. Configuracién CGI1....... {Qué es CGI? Entrada y salida CGT. Peticién GET... Peticiones POS’ Comparacién de los métodos GET y POST. Descodificacién de los datos de entrada 239 Soporte CGI en Apache . Variables del servidor SERVER_SFOTWARE. SERVER_ADMIN... DOCUMENT_ROOT . Variables que solicita el cliente SERVER_NAME . HTTP_HOST. HTTP_ACCEPT... HTTP_ACCEPT_CHARSET HTTP_ACCEPT LANGUAGE HTTP_USER_AGENT HTTP_REFERER.. HTTP_CONNECTION SERVER_PORT REMOTE_HOST . REMOTE_PORT 244 REMOTE_ADDR 244 REMOTE_USER 244 SERVER_PROTOCOL... 245 REQUEST_METHOD REQUEST_URI .. REMOTE_IDENT AUTH_TYPE .. CONTENT_TYPE . CONTENT_LENGTH SCRIPT_NAME... SCRIPT_FILENAME QUERY_STRING PATH_INFO ..... PATH_TRANSLATED . 247 Configurar el servidor Apache para CGI 247 Dar un alias al directorio de los programas CGI 248 Seleccionar extensiones especificas de archivos CGI 249 Permitir que sus usuarios tengan acceso cgi-bin 251 Uso de los contenedores Directory o DirectoryMatch 252 Uso de la directriz ScriptMatch .. 253 Crear nuevas extensiones CGI con la directriz AddType 254 Ejecutar programas CGT .. 255 Un sencillo programa en CGI 258 Un script muy ttil 257 Una aplicacién ejemplo . 267 Comprobar la herramienta Newsletter sign-up .. 275 Modificar la herramicnta newsletter sign-up . 276 Los médulos CGI para Perl més utilizados ... 278 Depurar programas CGI en Apache. 279 ScriptLog ScriptLogLength ScriptLogBuffer..... 9. FastCGI... FastCGI como una nueva alternativa Ventajas de FastCGI. Gran eficacia gracias a la memoria caché Escalabilidad a través de aplicaciones distribuidas Explicacién de FastCGI... Arquitectura basica de una aplicacién FastCGI 292 Tipos de aplicaciones FastCG: Paso de CGI a FastCGI... FastCGI para Apache AppClass ... 301 ExternalAppClass FastCgilpeDir 303 Compilar mod_fastegi en Apache .. 303 Ejemplo de un archivo de configura 305 Parte IIT, La seguridad ......sssessevee saseernssessnseesseresee — 309 10. Autenticacién bisica .... 31 Proceso de autenticacién basada en el host 312 312 314 314 315 deny from env=variable 316 Proceso de autenticacién de HTTP bisico . 317 mod_auth.. 319 AuthUserFile 319 AuthGroupFile.. 320 AuthAuthor 320 Ejemplo 1: solicitar el nombre y la contrasefia del usuario 321 Ejemplo 2: permitir que un grupo de usuarios acceda aun directorio .. 324 Ejemplo 3: mezclar el control de acceso basado en el host con la autenticacién HTTP basica.... 326 mod_auth_dbm . 327 AuthDBMUserFlle 330 AuthDBMGroupFil 331 AuthDBM Authoritative 331 Ejemplo: solicitar el nombre y la contrasefia de un usuario DBM 332 mod_auth_db . 332 AuthDBUscrFil 333 AuthDBGroupFile 334 AuthDBAuthoritative. 334 mod_auth_mse] .. 335 Auth_MSOLhost Auth_MSOLdatabase mSQL. Auth_MSOLpwd_table mSQL. Auth_MSQLgrp_table mSQL Auth_MSQLuid_ficld mSQL Auth_MSQLpwd_field mSQL . Auth_MSQLgrp_field mSQL Auth_MSOL_nopasswd.. Auth_MSQL_Authorita Auth_MSOL_EnerytedPasswords mod_auth_anon ... Anonymous Anonymous_Authoritative Anonymous_LogEmail .. Anonymous_MustGiveEmail Anonymous_NoUserlD Anonymous_VerifyEmail Bjemplo: restriccién de acceso anénimo mod_auth_external 342 AddExternalAuth .. 345 AddExternalGroupAut 346 SetExternalAuthMethod . 346 SetExternalGroupMethod 347 AuthExternal .. GroupExternal Ejemplo: uso de un script en Perl como autenticador externo 348 Autenticacion digest 352 11. Registro y estado del servidor .....0.... 355 Visualizar Apache .... Acceso a la informacién de configuracién.. Activar las paginas de estado ..... i6n de las paginas de estado ificar la pagina de estado Guardar la informacién sobre el estado del servidor n de los archivos de registro TransferLog . LogFormat CustomLog CookieLog.. 364 Personalizar sus archivos de registro 365 Crear varios archivos de registro 367 Guardar informacién especifica .. 368 Guardar la informacion del agente del usuaris 368 Guardar la informacian sobre los remitentes . 369 RefererLog ... 369 Refererlgnore. 369 Almacenaje de cookies 370 CookieExpires CookieTracking Uso de Los registros de errores Anilisis de los archivos de registro .. Mantenimiento de los registros .. rolatelog . logrotate .. 12. Seguridad en la Red. Necesidad de una seguridad Web Puntos de control relacionados con la seguridad . Red de trabajo EI sistema operativ Software del servidor Web .. Directrices User y Group de Apache... Proteger ServerRoot y los directorios de registro Desactivar el acceso predeterminado Desactivar los overrides 390 Sus contenidos .. 390 Riesgos y Soluciones CGI 393 Protegerse de los usuarios internos 394 La cntrada del usuario bloquea la aplicacién CGI. 304 La entrada del usuario hace que las lamadas del sistema no sean seguras . 395 El usuario ve datos ocultos 401 La entrada del usuario puede causar una neg: de servicio ... Se envian las entradas del usuario a través de POST Reducir los riesgos de las aplicaciones CGI suEXEC.. CGIWrap .. Peligros y soluciones de SSI Peligros de la autenticacién HTTP basica Consideraciones sobre la politica de seguridad Registrarlo todo Conservar una copia de su sitio Web Administrar el sitio Web desde una consola de un host Web Tenga cuidado con las aplicaciones CGI de dominio piiblico Compare contenidos {Hay alguna esperanz: Parte IV. Implementar propiedades avanzada .....sssscvssecensscenneeen 13. Perl en Apache... mod_perl Instalacién de mod_perl... Requisitos de instalacién 421 Compilar ¢ instalar mod_perl. 422 Ejecutar script CGI en Perl a través del médulo mod_perl .. 423 Enviar a un puerto los script CGI en Perl .... Escribir un modulo en Perl para mod_perl . Uso de los médulos CGI.pm y CGI:*. Uso de los médulos de autenticaci6n DB/DBM de Apache Integracién de SSI y mod_per . Uso de Perl para configurar Apache... Puntos especiales relacionados con mod_perl Uso de memoria Seguridad . Otro Perl para Apache... 430 14. Servidor proxy en Apache .... Scrvidores proxy. Proxy directo . Proxy inverso.... {Conviene utilizar un servidor proxy? 448. Apache como servidor proxy. 448 ProxyRequest.. 449 ProxyRemote .. ProxyPass . ProxyBlock .. NoProxy ... ProxyDomain CacheRoot CacheSize. CacheGclnterval . CacheMaxExpi CacheLastModificdFactor CacheDirLength .. CacheDirLevels CacheDefaultExp NoCache Configuracién del servidor proxy Conectar una red IP privada a Internet Guardar en caché los sitios Web Hacer un mirror de un sitio Web Configurar los servidores Web . Configuracién automatica de los exploradores para que trabajen con servidores proxy Uso del servidor proxy Gnicamente con remotas Uso de varios servidores proxy as peticiones URL 15. SSL. para Apache.. SSL ... Apache-SSL Configuraciéna de SSLea: Configuracién de Apache-SSL Crear un certificado temporal ..... Directrices para configurar Apache-SSL SSLDisable .. . SSLCertificateFile .... SSLCertificateKeyFile SSLCACertificate Path .. SSLCACertificateFile SSLVerifyDepth.. SSLVerifyClient SSLFakeBasicAuth SSLLogFile. SSLRequiredCiphers 486 SSLRequireCipher 486 SSLBanCipher 486 Configurar Apache para que trabaje con Apache-SSL 487 Comprobar la seguridad de un servidor 490 Obtencién de un certificado CA. 495 Stronghold 496 Instalacién de Stronghol 497 Uso de Configuration Manager 499 Hacersc con un certificado CA 502 Configurar un CA privado 504 Configurar un CA privado 504 Configurar SSLeay 508 Firmar certificados 509 16. Volver a escribir los URL.. 513 Motor de Apache para volver a escri 514 RewriteEngine 516 RewriteOptions 517 RewriteRule Sis RewriteCond . 520 RewriteMap 522 RewriteBase 524 RewriteLog 524 RewriteLogLevel. 525 RewriteLock .. 525 URL... 525 Redirigir el directorio principal de un usuario a un nuevo servidor Web. 525 Busqueda de una p4gina en varios directorios 526 Configurar una variable de entorno basada en un URL 528 Crear sitios www.nombreusuario.host.com . Redireccionar un URL fallido a otro servidor Web Crear un acceso mtltiple .... Crear URL sensibles al paso del tiempo Control de contenidos Agregar compatibilidad con versiones anteriores en los URL Creat URL cnyo contenido coincida con el explorador Crear un HTML para una puerta de enlace CGI. Restricciones de acceso .... Robots de bloqueo Crear un desvio HTTP basado en un URL. Parte V. Uso de Apache hoy y maitana sessment 17. Trucos de eficacia El ordenador Apacte.... El software .. Utilice menos DNS .. Reducir las interrupciones de disco Limitar los thread de los procesos . La red... Servidor Web ubicado en una casa Servidor Web perteneciente a un ISP Servidor Web de una intranet Red Web repartida. Desvio de tareas hacia servidores especializados . Duplicar servidores Web para equilibrar la carga . Problemas relacionados con el reparto de carga El contenido EI personal .. 18. Ejecucién de sitios Web perfects .rscssensnes Crear un ciclo Web Poner en accién el ciclo Web .. Configuracion para el ciclo Web ... Crear un host virtual para cada fase Uso de varios procesos de servidores Apache....... Uso de varios ordenadores como servidores Apache en el ciclo Web... Implementar el ciclo Web Mantenimiento de su Web Backup online .. Backup offline Estandares Politica de desarrollo de documentos HTML Utilice siempre etiquetas HTML estandar Guarde las imagenes con sus documentos Muestre claramente los avisos del Copyright en todos los documentos. 536 545 545 Politica de desarrollo para aplicaciones dindmica Utilice siempre el control de versién No utilice nombres de rutas absolutas en aplicaciones nien script CGI Suministre documentacién tanto a nivel de usuario como de cédigo Evite utilizar ctiquetas HTML cn los script 0 en las aplicaciones. 578 No se fie de los datos que introduce el usuario . 578 Evite variables globales en los script CGI basados en Perl . 579 Utilice una interfaz agradable Facilite la navegacidn por su sitio Web .. Crear un disefo aparente Colores apropiados Tamafo de texto apropiado Reduzca el uso de imagenes Elimine los mensajes de errores criptograficos Prucbe Ia interfaz GUI de su Web Punteros para promocionar su sitio Web 19. Apache para las redes Web ..... wives 587 {Qué es una red Web? Los requisitos.... Disefio de la red Web Eleccién de hardware y software . 596 Configuracién del servidor 596 598 Seleccionar un sistema operativo Ele n de un servidor Web... Configuracién de los sistemas Particiones de disco Instalacién de Linux Configurar las redes Configuracién del servidor DNS Distribucién de ficheros con rdist . Uso de NFS en una red interna Configurar un servidor NFS Seguridad del servidor.. Configuracién de un cliente NES Configuracién de Apache Cuentas de usuario FTP para clientes. 618 619 620 621 622 623 625 626 628 Probar los nuevos sistemas Puesta en march: Posibilidades futur: 20. Apache para Microsoft Windows 95/NT. Puntos importantes relacionados con Ia implementacién de Apache en Windows Conseguir Apache para Windows Instalacién de Apache para Windows. Ejecutar Apache en Windows 95 Ejecutar Apache como un servicio en Windows NT. Configuracién de Apache para Windows... Directrices de Apache especificas de Window: LoadModule. LoadFile .... ThreadsPerChild .. Parte VE. Apéndices A. Cédigos de estado de HTTP/1.1 «0... Cédigos de estado informativos (100-199) Recibida satisfactoriamente la peticién del cliente (200-299) 646 Redirigir la peticién (300-399) ..... 647 Peticiones incompletas (400-499) 648 Exrores del servidor (500-599). 649 653 B, Expresiones regulares .. C. Fuentes de Internet para Apache .....ssssscerssnseescsssssnneersecranemereeces 657 Fuentes gratuitas.. 657 Sitios Web .. 657 Grupos de news de Usenet 658 Grupos de news relacionados con los servidores Web 658 Grupos de news relacionados con los autores ... 659 Grupos de news relacionados con los exploradores Web 659 Grupos de news de anuncios ... Otros grupos de news... Grupos de news sobre Per! Fuentes WWW para los grupos de news de Usenet Listas de mail Fuentes comerciales ... Otras fuentes relacionadas. D. Contenido del CD-ROM. Software de Apache Software de Per Programas de anilisis de los registros generados por los exploradores We Utilidades .. Protocolos y documentos estndar. Indice alfabético ... 661 661 665 666 666 668 669 669 671 Prefacio a Bienvenido a la Biblia del Servidor Apache. Es muy probable que ya haya oido hablar de los Servidores Apache. De hecho, mas del 50% de los adminis- tradores Web de Internet utilizan sistemas Apache. Sin embargo, a pesar de la gran cantidad de sistemas existentes, son muy pocos los libros dedicados a ellos. Si, he estado cn varias libresias y sé de lo que estoy hablando. Creo que no se ha escrito ninguno pensando en los administradores Web, De hecho tu- ve uno en mis manos que hablaba de las propiedades internas de Apache (del cédigo C) en vez de explicar cémo utilizar este sistema; otro dedicaba gran parte de su extension a HTML. Este libro esta pensado para todos aquellos que quicren aprender a administrar un sistema Apache. Asi que si éste es su caso, ya puede decir que ha encontrado su varita magica. {Utilicela! Este libro, es para usted? Esta obra ayudard a todos aquellos que tengan interés en administrar un servidor Web Apache. Como este libro no da por hecho que el lector tiene experiencia en administracién, es igualmente valido para cualquiera. A dife- rencia de otras obras especializadas en los servidores Web, ésta tan solo se centra en un tema: el Servidor Web Apache. El texto trata de los aspectos de la administracién del servidor Web Apa- che. Toca temas como la compilacién del cddigo fuente, los archivos binarios de la instalacién y la configuracién en los primeros capitulos, para que se pueda trabajar con el servidor desde el principio para que resulte mds sencillo comprender lo que se va haciendo en cada paso. También se ven aspectos mas avanzados como Ia configuracién de SSI, CGI y FastCGI, asi como su impacto en el servidor y el modelo de seguridad. Conoceré distintos peligros y las técnicas que se utilizan para minimizarlos. Entre los temas mas avanzados se incluyen la mejora de Ja eficacia del servi- dor Web, autenticacién del usuario, visualizacion, técnicas para volver a es- cribir URL, incorporacién del intérprete de Perl con Apache y uso de SSL (Secured Socket Layer). Organizacion del libro He divido ef libro en seis partes: Parte I: Inicio Después de una breve introduccién al admero uno de los servidores Web, le mostraré el proceso de obtencién y compilacién de Apache. Aprendera a iniciar el servidor Apache y a aplicar unos cambios minimos sobre la confi- guraci6n basica (la idea es que lo pueda ejecutar en su sistema lo antes posi- ble). La parte termina con una serie de referencias a las directrices del niicleo de Apache y los médulos estandar, De esta forma estard preparado desde ef principio para hacerse cargo de las tareas més serias de la administracion de Apache. Parte Il: Administrar su sitio Web Esta seccidn le Megara a convertir en un administrador profesional. Vera temas relacionados con la administracién Web, como los sitios Web virtuales, SSI (Server Side Include) y CGI (Common Gateway Interface). Aprenderd todo Io que hay que saber sobre la administracién de sitios Web, creacién de mensajes de correo electrénico virtuales y hacer que sus sitios tengan una apariencia profesional. Gracias a una serie de ejemplos conocer4 SSI; tenga presente que éstos no se limitan a mostrarle la parte practica de lo leido en estas paginas, sino que también le ensefardn a divertirse (por ejemplo) visuali- zando el contenido HTML resultante de las decisiones que se van tomando sobre la marcha, o a utilizar variables personalizadas para que los programas CGI/SSI sepan qué es lo que tienen que hacer, En los capitulos dedicados a CGI vera cémo preparar el servidor Apache para crear una plataforma CGI, cémo prepararlo para que trabaje con los programas escritos en dicho idioma y cémo incrementar su eficacia utilizando la tecnologia FastCGI. Parte II: La seguridad Cualquier ordenador conectado a Internet puede ser victima de un abuso 0 de un uso poco ético. Siempre es conveniente tener presente una serie de medidas de scguridad. En esta parte del libro aprenderd a utilizar los estandares de autenticacién basados en el protocolo HTTP. Le ensefiaré a crear dreas de acceso restringido basadas en el uso de nombres/contrasefas, direcciones del servidor o IP. La verdad es que no me quedo en las bases, sino que voy més alla, Veremos programas cxternos especializados en la autenticacién y cémo utilizar grandes bases de datos para controlar el acceso de los usuarios. El si- guiente paso sera descubrir quién accede a su sitio Web. Por cso aprenderd a alizar su servidor Web a través de la Red, analizar los ficheros de registro y crear los suyos propios para hacer frente a las necesidades de seguridad y marketing. También le mostraré los peligros que tiene la ejecucién de progra- mas SSI y CGI asi como unas cuantas medidas de seguridad que puede tomar para evitarlos. Parte IV: Implementar propiedades avanzadas En esta parte del libro veremos las propiedades avanzadas propias de Apache. Aqui, aprendera cémo aprovechar el lenguaje de programacién CGI mas utilizado de todos, Perl; cémo interactia con el servidor proxy; como asegurar las transacciones en las que interviene Apache; y cémo volver a es- cribir las URL. Una vez que se haga con estas técnicas, podré considerarse un administrador profesional. Parte V: Uso de Apache hoy y mafiana Aqui les comentaré cémo se puede utilizar Apache para cubrir las necesi- dades de hoy y las de mafiana, Primero veremos los aspectos generales que deberia conocer. Con ellos y utilizando las soluciones recomendadas se asegu- rard de que su servidor Apache esti listo pura hacerse cargo del trabajo de hoy y del de mafiana, A continuacién les presentaré conceptos como el ciclo Web, que le permitird desarrollar sitios Web que scan capaces de hacerse cargo del trabajo de mafiana. Verd la importancia de los estindares en lo que al desarrollo de sitios Web se refiere. Conviene desarrollar politicas para contornar Ia calidad de sus trabajos. Como en algiin momento habra que expandir el sitio Web, le mostraré cémo Apache y otras tecnologias relacio- nadas con Internet pueden crear redes con varios servidores. Para terminar le echaremos un vistazo a la ultima version de Apache para Windows. Con esta versién beta podré convertir su plataforma Windows en un servidor Apache. Y después de todo esto s6lo tendrd una idea en la cabeza, ;Apache ha venido a quedarse! Parte VI: Apéndices Por tltimo hay cuatro apéndices para concluir el libro en los que se trata- rin de los cédigos de estado de HTTP/1.1, expresiones regulares, fuentes de Internet para Apache y el contenido del CD-ROM. Convenios utilizados en este libro Para leer esta obra no hay que aprenderse ningdn convenio nuevo. Recuer- de que cuando tenga que escribir algo en la linea de comandos, tendra que ter- minar pulsando Intro, También convienc que se fije en los siguientes iconos: Parte | Inicio EE Apache, el numero uno de los servidores Web Bienvenido a Apache. el némero uno de los servidores Web de todo el mundo, Mas del 50% de los servidores de la Red utilizan Apache, de acuerdo con una encuesta desarrollada por Netcraft (www.neteraft.co.uk/Survey/). Si estd barajando la idea de montar un servidor Apache, scpa que esta en el lugar indicado. Este capitulo le mostraré cémo hacerlo. En los primeros dias de la Red, NCSA (National Center for Super Computing Applications) cred un servidor Web que se convirtié en el mimero uno de los servidores Web a principios de 1995. De todas formas, por esa misma época el proyecto de NCSA cayé en el olvido. Los usuarios de dicho servidor comenzaron a intercambiar los parches que tenfan y en breve se die- ron cuenta de que habia que crear un foro que se encargase de La administra- cién de dichos parches. Hab{a nacido Apache Group. Utilizaron el cédigo del servidor Web de NCSA y crearon un nuevo servidor al que Hamaron Apache. Procedente del cédigo fuente de NCSA y de una gran coleccién de parches, el servidor Apache se ha convertido en la comidilla de la comunidad de Internet. Apenas le ha Hevado tres afios convertirse en el servidor por excelencia del mercado, La primera versién (0.6.2) aparecié en Abril de 1995. La versién 1.0 el 1 de Diciembre de ese mismo aii. Desde el principio, Apache Group ha creci- do como una empresa sin nimo de lucro. Trabaja a través de Internet. De todas formas el desarrollo del servidor Apache no esta limitado, ni mucho menos, al trabajo de este grupo. Cualquiera que sepa cémo participar en el desarrollo del servidor o de sus médulos, puede hacerlo, aunque es verdad que el grupo tiene la Gltima palabra a la hora de decidir qué se incluye en la distribucién estandar conocida como Servidor Web Apache. De esta forma se ha conseguido que sean miles las personas que trabajan en el desarrollo de nuevas propiedades, correccién de errores, puertos para las nuevas platafor- mas, etc. Cuando se envia el nuevo cédigo a Apache Group, sus miembros investigan todos los detalles, lo someten a todo tipo de test y comprueban su calidad. Si estan satisfechos con los resultados, incluyen el cédigo cn la ver- sién que se distribuye. Ahora que ya sabemos algo mds sobre la historia de Apache, vamos a co- nocer sus propiedades. Propiedades de Apache Una de las caracteristicas mas importantes de Apache es que se utiliza en casi todas las plataformas. Al principio dnicamente funcionaba con los servi- dores Web Unix, pero la situacién cambié. En 1a actualidad Apache no sélo funciona con todas las versiones de Unix sino que también lo hace con Win- dows 95/NT, Amiga y OS/2. Apache tiene otras muchas caracteristicas, como ta indexacién de directo- rios, uso de sobrenombres con las carpetas, negociacién de contenidos, infor- mes configurables sobre los errores HTTP, Ejecuciones SetUID 0 Programas CGI, administracién de recursos para los procesos emparentados, mapas de imagen para los servidores, reescritura de URL, correccién de URL y manua- les online. Entre sus principales propiedades tenemos las siguientes: « Admite la Gltima versién del protocolo HTTP/1.1 (Apache es uno de los primeros servidores Web que trabajé con este protocolo). Es completa- mente compatible con el nuevo estindar HTTP/I.1 y con su versin an- terior HTTP/1.0. Estd preparado para hacerse cargo de todas las nuevas propiedades que tenga que ofrecer este protocolo. Por ejemplo, antes de HTTP/L.1 un explorador Web tenia que esperar la respuesta del servi- dor Web antes de poder enviar otra peticién. Con esta nueva versin esto ya no hace fulta. Un explorador Web puede enviar peticiones en paralelo, con Io que se ahorra ancho de banda al no tener que incluir una cabecera en todas y cada una de las solicitudes. Con este sistema las respuestas a las peticiones del usuario aparecerdn antes en la pantalla de su explorador. Simplicidad, atin con las potentes configuraciones basadas en ficheros EI servidor Apache no dispone de una interfaz grafica. Tiene tres archi vos de configuracién (en texto plano) que se pueden utilizar para ajustar los pardmetros del servidor. Todo lo que necesitard serd un editor de textos. Silo desea, puede simplificar ain més la configuracién uniendo los tres archivos en uno sélo. Puede trabajar con CGI. El servidor Apache utiliza el médulo mod_cgi. Est compilado con la versi6n 1.1 de CGI y entre las caracteristicas que ofrece se encuentra la personalizacién de las variables de entorno o la busqueda de errores, propiedad que tanto cucsta a otros servidores, Admite servidores virtuales. Apache es también uno de los primeros servidores Web que puede trabajar con direcciones IP y con nombres virtuales. Admite la autenticacién HTTP. Apache también puede trabajar con la autenticacién bésica de la Red. Ademés esta preparado para asimilar los mensajes basados en la autenticacidn, algo que cada vez es mas popular y que los servidores van a tener que implementar. Para sus autentica- ciones, Apache utiliza archivos de contrasefias, DBM, SQL 0 Ilamadas a programas externos especializados en la materia. Integra Perl. Perl se ha convertido en el lenguaje de programacion por excclencia de la programacién de scripts en CGI. Y posiblemente uno de los factores que ha influido para que ocurriese esto ha sido Apache. Por medio del médulo mod_Perl podré cargar scripts CGI programados en Perl en la memoria del ordenador y utilizarlos tantas veces como de- see. Este proceso elimina los problemas de inicio tan asociados con los nterpretacién (entre los que se encuentra Perl). lenguajes de Cuenta con un servidor Proxy. Puede convertir su servidor Apache en uno Proxy. Pero ha de tener en cuenta que el médulo que utiliza para ello no admite la funcién inversa ni el protocolo HTTP/1.1. Ya se cst trabajando en Ja actualizacién de este médulo, Registros personalizables ¢ informacién sobre el estado del servidor. Apache es muy fiexible a la hora de registrar y visualizar el estado del servidor. De hecho se puede acceder a esta informacién a través de un explorador Web. También se pueden personalizar los archivos de regis- tro relacionados con los enlaces. Puede trabajar con SST. Apache dispone de una serie de ancxos para el servidor que mejoran la flexibilidad del desarrollado de sitios Web. Utilizando los comandos eXtended Server Side Include en su servidor Apache, podra hacer 10 mismo que con SSI y mas. . Admite SSL. Debido a las leyes y restricciones del Copyright sobre la exportaciGn ¢ importacién de productos de los EE.UU.. Apache no es compatible con SSL. Pero hay una gran cantidad de parches para Apa- che (Apache-SSL), ademas de versiones comerciales del produeto, que permite que pueda trabajar con este sistema de seguridad. Capacidad para registrar las acciones de los usuarios. Por medio de las cookies HTTP un médulo de Apache, llamado mod_usertrack puede registrar los movimientos de los usuarios segiin se mueven por el sitio Web Apache. ‘Trabaja con FastCGI. Es verdad que no todo cl mundo escribe CGI en Perl. Entonces, gcémo pueden hacer que sus aplicaciones sean mas ripidas? Con una solucién de Apache: el médulo mod_tegi, gracias al cual se puede implementar un entorno FastCGI dentro de Apache y ha- cer que sus aplicaciones vayan mucho més rapido. Admite Java Serviets. Java Servlets es un médulo experimental en esta- do alpha (mod_jserv) para Apache. Cuando salga oficialmente, lograra que Apache ejecute las aplicaciones cn Java propias del servidor. De esta forma podrd trabajar con multitarea. Arquitectura 101 de Apache El servidor oficial de Apache se compone de un nécleo en el que se en- cuentra el cddigo de Apache y una serie de médulos estindar que se compilan en el mismo servidor incluso con la configuracién predeterminada. Si decide eliminar uno de estos médulos, todo lo que debe hacer es editar el archivo de configuracién y modificar su contenido. Este proceso es tan sencillo que lo finico que tendré que hacer serd borrar una linea de texto. Cuando vuelva a recompilar cl servidor Apache, el médulo habré dejado de ser ejecutable. Por ejemplo, si no desea que su servidor trabaje con los script CGI, puede climinar la siguiente linea de su archivo de configuracién que encontrard en la carpeta Apache: Addnodule Tadules/standard/mod_csl.e Apache también puede trabajar con las Interfaces de Programacion de Aplicaciones (API) que permiten que los desarrolladores construyan sus pro- pios médulos para afiadir mas propiedades a los servidores Apache. En la figura 1.1 puede ver un ejemplo de un supuesto en el que tres servidores Apa- che tienen tres niveles de funcionalidad diferentes. Apache propio Apache Oficial Apache minimo de un sitio Web NUCLEO NUCLEO NUCLEO Madulo Médulo estandar #1 estandar #1 Méduto esténdar minimos Médulo lestandar #n| Médulos de terceras partes ‘Méduto jestandar # n] Figura 1.1. Arquitectura modular de Apache De esta forma podra construirse un servidor Apache que se cifta perfecta- mente a sus necesidades. La configuracién minima, que es la que aparece en Ia figura 1.1, es un ejemplo. Si necesita la presencia de un médulo que no se incluya en la distribucién estindar, podrd tomar uno desarrollado por terceras empresas 0 simplemente programérselo usted mismo, En la figura 1.1 a este caso le hemos Hamado Apache propio de un sitio Web. La ventaja de poder afiadir y quitar médulos es fantastica. Se puede Hegar a compilar un servidor Apache especialmente disefiado para las exigencias de nuestro sitio Web. Los desarrolladores Web disfrutan de una flexibilidad a la hora de programar. Pueden utilizar la interfaz API de Apache sin preocuparse del c6digo del nticleo del servidor. Adcmés, aiiadir nuevos médulos no quiere decir que se esté parcheando el nucleo de Apache, con lo que se facilita con- siderablemente la vida del desarrollador. EI futuro de Apache El futuro de Apache aparece de lo mas brillante por varias razones. La libertad de movimientos del software a través de Internet es una de las mas fuertes, Incluso empresas como Netscape Communications se ha dado cuenta de ello, Hasta poco antes de la aparicién del comercio a través de Internet, en la Red Gnicamente de utilizaba software gratuito. Es un buen momento para afianzar mi fe en este tipo de software. Pregintese lo siguiente: owdntas ve- ces ha ofdo hablar de Linux, Perl, FreeBSD 0 Apache? Cada vez se oye hablar mas de este tipo de software porque es bueno y la verdad es que funciona bastante bien. De todas formas, éste no es el fin del mundo del software comercial. En la Red hay sitio para todos. De hecho, el software gratuito impulsa la comercia- lizaci6n de la tecnologia en la que se basan. Si esté convencido (por lo menos en espiritu) de que Apache ha venido para quedarse, es posible que le intere~ sen los derroteros hacia los que se encamina el futuro de esta tecnologia. En las proximas sccciones veremos dos técnicas relacionadas con Apache. La interfaz GUI perdida Siempre que se compara Apache con cualquier servidor Web "bien" se re- salta su ausencia de una interfaz GUI, o una interfaz grafica para el usuario. Bien, me complace anunciarles que jlos dias de ausencia de GUI estan ya contados! Los desarrolladores de Apache cstan trabajando en un proyecto que se Hama Apache GUI Configuration Project cuyo objetivo es cl desarrollo de una configuracién para el servidor final que pueda interactuar con los clien- tes cuya configuraci6n se base en Java- y tel/tk. Estén muy cerca de lograrlo y en breve tendremos una versién piblica. Puede visitar la pagina principal del proyecto en: www.esi us .e6/-rddruejo/gui shone. heril Un cliente con una configuracién basada en Java que est4 practicamente listo para bajarse de Internet lo encontrar en: nec (butler disa.milMpacheCoafigtl tent / En [a figura 1.2 que se muestra a continuacién ticne la pantalla principal de un servidor Apache. apes eS Serra a Rram es | Figura 1.2. Ventana de configuracién principal del servidor local La figura 1.3 muestra la ventana de configuracién del servidor para el or- denador local. Conviene que se pase por este sitio Web y revise las actualizaciones del proyecto. Pero sile es completamente necesario disponer de una interfaz GUI para su servidor Apache, sepa que puede comprar una, Encontrard un proyec- to Hamado Warpaint en: onew. rovis com/warpaiat : Otra de Jas propiedades que est a punto de salir (si no lo ha hecho ya) es la correccidn del problema del afio 2.000. Prepararse para el préximo milenio Segiin se va acercande la Iegada del aie 2.000 cada vez son mas los ad- ministradores IT que se empiezan a preguntar qué ocurrira con el problema asociado al cambio de fecha. Como un servidor Web suele ser la cara que muestra una empresa a los clientes que viajan por Internet, conviene que un- tes de desarrollar un nuevo servidor Web se pregunte si Apache tiene solucio- nado el problema del aio 2.000. La respuesta no ¢s nada sencilla porque hay demasiados factores involu- crados. El cédigo de Apache no guarda los afios en dos digitos, por lo que en principio si que tiene resuelto el problema del cambio de milenio. Pero los problemas pueden aparecer a través de fuentes externas, como cl sistema ope- tativo o incluso los propios protocolos. Para suplir estos problemas externos Apache hace todo lo que puede para protegerse del famoso problema. Por ejemplo, si Apache se encuentra con un afio anterior a 1970 (el afio magico que se utiliza como inicio de fechas en la mayoria de los ordenadores) asume que el siglo sera el 2.000 cn vez del 1.900. Desde el punto de vista téenico, Apache es perfectamente compatible con el cambio de milenio, pero el software externo no. Si le preocupa el problema del cambio de milenio, investigue todo el software y los componentes de hardware de su entorno informatico. Licencia de Apache Recientemente, el software gratuito (como Apache, Perl y Linux) esta apareciendo con cierta frecuencia en la prensa. Todo se debe a que Netscape ha decidido regalar su famoso explorador Web, Netscape Communicator. Desafortunadamente, el software gratuito como Apache, Perl o Linux no comparten los mismos acuerdos de licencia. Y la prensa, al meter todo el soft- ware gratuito dentro del mismo grupo, ha liado un poco las cosas. Todo el software gratuito tiene que ser completamente gratuito. Sin em- bargo, hay una serie de restricciones legales, Por ejemplo, la licencia de Perl no obliga a que una empresa que modifique dicho lenguaje haga piblicas sus modificaciones, mientras que Linux si que lo hace, Apache no obliga que se publiquen los cambios. Por eso conviene que piense en Apache como un software gratuito, prote- gido por las leyes del Copyright y creado por Apache Group. No es shareware ni esta bajo los acuerdos de GLP (GNU Public License). Ahora gue ya tiene algo més claros los términos de la licencia de Apache se puede decir que esté listo para utilizarlo, De todas formas es posible que prefiera saber quién utiliza Apache como servidor Web. éQuién utiliza Apache? Como ya hemos comentado, cl $0% de los servidores de la Red son Apa- che. Sin embargo, si le gustan los ntimeros, puede vi www apache org/info/apache_ugers.ktmd Encontraré una lista con el nombre de los usuarios de Apache. ,Cémo es posible que todos esos administradores vivan sin servicios directos de consul- ta con Apache Group? Aunque no haya ningiin ntimero de teléfono al que se pueda Hamar para preguntar dudas. la verdad es que Internet esta Ileno de sitios Web donde sc tratan los problemas de estos scrvidores, ademas de gru- pos de news en los que se publican dudas todos los dias. De todas formas si le gustaria tener un servicio de atencién al cliente relacionado con un producto gratuito, conviene que Ilegue a un acuerdo con alguna de las muchas empre- sas que se dedican a prestar este tipo de servicios con los servidores Apache. éEsta listo? Espero que esté listo para empezar. Este libro le ayudard a convertirse en un eficiente administrador de servidores Apache. En breve se dard cuenta de la potencia de Apache y comprenderd por qué en tan sélo tres afios se ha con- vertido en todo un némero uno. FA Como obtener e instalar Apache Sl Ademis de todas las razoncs que he expuesto con ant confesar que por lo que mis me gusta Apache es porque su cédigo fuente es gratuito. Asi puedo explorarlo, ver cémo esta hecho y si lo deseo, modificarlo 2 mi gusto. Es posible que para aquellos que no programen con C pero que ne- cesiten un servidor Web potente y gratuito, la idea de enfrentarse a un cédigo C en ANSI no sea cl pasatiempo ideal. Afortunadamente, no se tiene que preocupar de nada. Apache se distribuye cn cédigo fuente y en paquetes bina- rios. En este capitulo veremos cémo instalar Apache a partir del cédigo fuen- te y de los archivos binarios. Fuente oficial de Apache Siempre que desee hacerse con software gratuito de Apache (cédigo fuen- te 0 archivos binarios), asegirese que no se lo baja de un sitio desconocido. {Qué es un sitio desconocido? Lo vemos con un ejemplo. Supongamos que desea hacerse con el sofiware de un explorador Web basado en Java, gratuito y que lo ha desarroltado Sun Microsystems. Obviamente no sera muy fiable bajrsclo de un sitio FTP llamado vaya.usted.a.saber.que_hay.aqui.com.sg. Lo mejor es pasarse por cl sitio FTP Java.sun.com. No olvide que tendra que tomar algunas precauciones. A fin de cuentas, no es el tinico que accede a los sitios que visita. Por ejemplo, si se obtiene una utilidad para Windows de fip.cdrom.com (un sitio FTP fiable), no puede estar completamente seguro de que no ha entrado nadie y ha introducido algo dafino cn cualquiera de los programas. La otra opcién es que si se conoce algiin problema con el softwa- re, lo mas probable es que no lo encuentre en este sitio FTP. De todas formas, si tiene alguna duda sobre la integridad de algén programa, pregunte en USENET. Publique la pregunta en el grupo de news adecuado y especifique luego la ubicacién en la que se encuentra el programa sobre el que desea la informacién. Por suerte para todos nosotros, los desarrolladores y los distribuidores de Apache construyeron un sitio oficial bastante seguro. El sitio Web de Apache es el siguiente: Detp: J fw apache ore Aqui encontrara las iiltimas versiones de Apache (estable y oficial), par- ches, médulos, ctc. Siempre que necesite algo relacionado con Apache, visite esta direccién. Ademés, desde aqui se le redirigira automaticamente al sitio mirror (sitio que contiene lo mismo que el servidor principal) mas cercano a su ubicacién geografica, para que se encuentre con menos congestién en la red y tarde menos en bajarse el software deseado. Requisitos del sistema Antes de que le aparezca en su pantalla el logotipo de Apache (véase fi- gura 2.1), es posible que desee saber si su servidor es lo suficientemente po- tente como para cjecutarlo. Figura 2.1. Logotipo de Apache Apache no necesita demasiados recursos. Funciona con un sistema Linux con 6-10 MB de espacio en disco duro y unas 8MB de memoria RAM. De todas formas, lo que tenemos en mente no es precisamente "ser capaces de ejecutar" Apache, sino servir piginas Web, abrir procesos CGI y aprovechar todo lo que nos puede Hegar a ofrecer la Red. Es posible que necesite algo mas de memoria RAM y de espacio de disco. Para averiguar la configuracién de su ordenador puede hacer dos cosas. Hable con alguien que trabaje con un servidor Apache similar al que va a instalar o instélelo y trate de hacerse una idea de lo que realmente necesita En este tiltimo caso, puede usar utilidades del sistema tales como ps, top, ete. para ver la cantidad de memoria que utilizan los procesos de Apache. Puede determinar la cantidad total de memoria multiplicando uno de ellos por fa cantidad total de procesos que se utilizaran en una hora punta. De esta for- ma se puede hacer con una idea bastante aproximada de la cantidad de memo- ria RAM que pucde llegar a necesitar. Tenga en cuenta que si ticne previsto que su servidor ejecute varios programas CGI, tendré que afiadir a la cantidad de memoria que acaba de caleular. la que Ileguen a consumir. Los requisitos de disco de Apache no suelen scr ningiin problema, ya que los archivos binarios no Ilegan a ocupar mas de IMB y el cédigo fuente, unos 5MB. De todas formas si que conviene que preste atencién a los archivos de registro que genera Apache, dado que cada una de sus entradas llega a ocupar 80 bytes, Y si, en un dia puede Hegar a generar 10.000 entradas, sepa que el archivo ocupard unos SMB. Bajarse el software Antes de que se baje el software de Apache por primera vez conviene que tome nota de unos cuantos detalles. Es bueno que busque dos versiones de Apache: una de cllas es Ja version oficial y la otra es una beta en la que se in- cluyen los tltimos cambios efectuados en el cédigo fuente y nuevas propie- dades. Por ejemplo, si encuentra una versi6n 1.2.4 y otra Hamada 1.3b3, querré decir que la primera es la oficial y la segunda la versidn beta. Esta il- tima es la tercera beta que sale al mercado y sus anteriores son 1.3b1 y 1.362. Es posible que sea mas estable que las anteriores, pero yo no le recomendaria que la utitizase para crear su servidor Web. Para hacerse con la versi6n que desee, o bien con algiin enlace que le lleve a otra direccién, vi ww apacae. En este sitio Web encontraré unas cuantas versiones beta y varios paque- tes comprimidos con el software de Apache. como por ejemplo: apacke_1.2.4.car apache_1.2.4-tar.sz apache_1.2b3.Lar.gz apache 1, 3b0_win32.exe En esta lista de archivos aparecen varios tipos de formatos de compresién que se usan para distribuir el cdigo fuente. Todo lo que necesitard es un sis- tema de compresién que pueda trabajar con cllos (en otras palabras, un pro- grama que tenga el cédigo de descompresién adecuado). Generalmente dichos programas son tar, gnunzip o gzip. Por ejemplo, para descomprimir el archi- vo Apache 1.2.4.tar.gz en Linux (RedHat 4.2) usarfa el siguiente comando: tar xvat apache 1.2.4.rar.g7 O incluso: gzip -d apach tar apach Todos ellos descomprimirian el archivo, respetando los subdirectorios originales y dejando el path de los ficheros intacto. Los archivos binarios se suclen guardar en un directorio diferente y se crea una carpeta para cada sistema operativo. Recuerde que si no se crea la carpeta correspondiente con su sistema operative no quiere decir que Apache no lo admita. Simplemente que nadic ha compilado el cédigo fuente de Apache para que trabaje con él. Encontraré ejecutables para los siguientes sistemas: » AIX, « FreeBSD. « HPUX. « IRIX. Linux NetBSD. © O82, Solaris. « SunOS. © Ulirix. Si decide bajarse una versién de Apache que ya haya pasado por cl com- pilador, se puede saltar la siguiente seccién. Configuracién del codigo fuente para su sistema En esta seccién veremos cémo compilar Apache para que trabaje con un sistema Linux. Los pasos deberian ser los mismos para todos los sistemas Unix. Una vez que extrae el cédigo encontrarf un directorio Hamado sre. Abi se encuentra el codigo fuente. Siga estos pasos: 1. Lea el contenido del archivo README que se encuentra en el directo- rio principal (es decir, el directorio en el cual se encuentra la carpeta sic). 2. Cambie al directorio en el que se encuentra en cédigo fuente de Apache. 3. Lea el archivo de texto amado INSTALL. Observe las especificacio- nes relacionadas con su sistema operativo. 4. Copie cl archivo modelo de configuracién (Configuration.tmpl) en un archivo cuyo nombre sea Configuration y se encuentre en el mismo di- rectorio. Ahora puede utilizar un editor de textos (como vi) para observar las distin tas opciones de configuracién de dicho archivo. Opciones de configuracién En el archivo Configuration encontrar cinco tipos de informacién: Comentarios: son las lineas que comienzan con el simbolo # Opciones de construccién de archivos: lineas del tipo como CC=gcc, EXTRA_CFLAGS, ete. Opciones de reglas: lineas que comienzan por Rules. Opciones para afadir médulos: lincas que comienzan por AddModule. Opciones de médulos aiternativos: comienzan por %Module, Si desea efectuar la instalacidn tipica, no tendré que modificar ninguna de estas lincas. Pero si las cambia, mejor seré que sepa lo que est haciendo. Opciones de configuraci6n relacionadas con la construccion de archivos Estas opciones le permitiran especificar varios elementos de Makefile (Construccién de archivos) que se crear4n por medio del script Configure. Para la mayoria de los sistemas no serd necesario que modifique estos elemen- tos. Este script tratara de ver qué compilador se utiliza en su sistema. En caso de que piense que no va a funcionar o que por alguna raz6n va a ser incapaz de localizarlo, se lo puede indicar usted mismo con: “e Por ejemplo: ce ace Ahora, si tiene que especificar algiin parametro externo (extra flags) al compilador de C para que los utilice al hacerse cargo de eddigo, podra utili- zar las siguientes lineas: PTAC BXTRA_ER-OM Si el sistema va.a necesitar alguna librerfa especial o incluir un archivo de- terminado, también se pucde especificar: exTRA_LT EXTRA, UDES— Observe que el script Configure autométicamente optimiza el cddigo a -O2. Si desea utilizar una configuracién diferente, quite el simbolo de comentario que se encuentra al principio de la linea: opine 02 Cambie et valor al deseado, siempre y cuando su compiludor de C pueda trabajar con él. Para la mayoria de lus instalaciones la configuracién prede- terminada funciona perfectamente bien. Yo lo comprobé con un sistema RedHat Linux. Configuracién de reglas A continuacién tiene que decidir la funcionalidad de Configure. Las ope’ nes son las siguientes: * Rule STATUS=yes * Rule SOCKS4=no « Rule WANTHSREGEX-default * Rule IRIXNTS=no La primera regla indica que desea que la funcionalidad del servidor sera STATUS. Es decir, que quiere utilizar Apache en status_module, con lo que el servidor le mostrard cierta informacién relacionada con su efectividad. Pa- ra que esta regla sca efectiva, tendra que afiadir status_module en el area de configuracin de médulos. Por defecto, la funcionalidad STOCKS4 esta desactivada. Para aquellos que no sepan qué es STOCKS4, les aclararé que es un sistema de control donde todos los datos de las aplicaciones de la red TCP/IP pasan a través del demonio STOCKS4. De esta forma STOCKS recopilard, registraré, mostraré en pantalla, filtrard y controlara todos los datos transmitidos por la red. La mayorfa de la gente utiliza este software como un firewall. Si quiere que Apache sea compatible con este demonio, tendra que activar dicha propiedad cambiando "no" y escribiendo "yes". Ademas ha de modificar el pardmetro EXTRA_LIBS que se encuentra en el area de configuracién Makefile para que se dirija a la libreria STOCKS4. Si no Lo hace, el script Configuration uti- lizard -L/ust/local/lib-lsocks. El valor por omisién de WANTHSREGEX es Default (Predeterminada). Indica que se ha de utilizar el paquete de expresién normal que se incluye con Apache. Si desea utilizar su propio paquete, tendra que modificar su valor y escribir "no" detras del signo igual. La opcién TRIXNIS esta pensada para aquellos que quieren utilizar Apa che con sistemas Silicon Graphics en los que se utilice un procesador [RIX 0 bien NIS. Configuracién de modulos Un médulo es un componente de software que afiade alguna funcionalidad més a Apache. Con la configuraci6n de médulos puede definir la funcionalidad de su servidor, La linea de configuracién es similar a la siguiente: AddModule nedvlesfstandarc/mad_eay.o) Con esta linea afiadiré el médulo mod_eny que sc encuentra en el directo rio src/modules/estandar. Los médulos predeterminados de Apache son los que aparecen en el lista- do 2.1. Son ms que suficientes para una instalacién tipica de Apache. No se ha de olvidar de que cada médulo aude mas espacio de disco y memoria a los roquisitos del sistema al ejecutable de Apache (httpd), por lo que deberia repasarla atentamente para ver si puede prescindir de alguno de ellos. De esta forma su servidor sera menos pesado y podra ir mas rapido. Por otro lado, si se encuentra con que uno de los médulos que le puede Hegar a resultar de utilidad tiene el caricter #, quitelo para activarlo. Del mismo modo, si quicre desactivar uno de los médulos que no le va a servir de nada, afiada el simbolo de comentario al principio de la linea. AdeMedule noaules/s /nod_env.e AddModnie odnTee/s xd /riad_log_contig.o AgiMedule modules /esancard/ned mina.o Acddoduie madul eqeLiation.o AGGModnis medmles/standard/med_inc leds. AGINGGUTE meduloy/sLandired/ned_aatoinéex 2 AgdMocale modu adaMocale nodal. sstandara/ idaré/od itap.o Nudule nodu.es/standard/mot_actiows.o AddModule modu es/standard/mod_uwerels .¢ MaMOdUTG sadules!slautard/mod_alias 0 AddKodile nosules/standard/ms_access.o AdcKedu, Les/standard/ned_auth.e AediModuie nofules/slandacd/mod seteavif .o Listado 2.1. Modulos que se cargan por defacto en el archivo Configuration Si desea a la regla STATUS le asigna el valor "yes", tendra entonces que climinar cl simbolo de comentario que se encuentra al principio de la linea de status_module: AdéMedtig wogules/seandard/ mod_aratua.o Si no lo quita, dicha regla se ignorard. Ya esta listo para ejecutar el script nfigure. Ejecutar Configure Para ejecutar el script Configure, tendré que irse al directorio src (si ha se- guido las instrucciones que le he ido facilitando, ya deberia encontrarse alli). Escriba: -/Centiquse en su linea de comandos. Configure crea Makefile, Ahora puede compilar el archivo de cédigo fuente. Compilacién de Apache Tiene que ejecutar la utilidad make para que compile el archivo fuente. En Ta linea de comandos eseriba: Dicha utilidad usard el archivo Makefile que creé el seript Configure y arrancara el compilador de C para crear el ejecutable de Apache (httpd). La cantidad de tiempo que se empleara en Ia compilacién dependera de la rapidez y recursos libres del sistema que tenga su ordenador. Obviamente, cuanta mas CPU y memoria RAM tengu, tanto mejor. Si por alguna razén fallase la compilacién del archivo, aparecerd un mensaje de etror en Ja panta- Ila. Anétclo y trate de descifrarlo. La mayoria de los errores se deben 2 que no se encuentra alguna de las librerias del sistema que el compilador necesita més pardmetros, En cualquier caso, tendrd que ajustar las opciones de Makefile que se encuentran dentro del archive Configuration (a menos que se atreva a modificar directamente el archivo Makefile) y repetir el proceso de compila- cién, Si atin asi persiste el problema, bsquese a alguien que conozca el si ma operativo y el compilador de C y pidale ayuda, 0 conoce a nadie que cumpla estos requisitos, publique un mensaje de ayuda en un grupo de news dedicado a tal tema en el que explique el proble- ma. Incluya ef mensaje de error. Si todo va bien, se encontrard con el archivo httpd en el directorio ste. Probar Apache Bueno, ha legado la hora de comprobar si el archivo que acaba de compi- lar es realmente ejecutable. Lo primero que va a hacer es listar cl contenido del directorio para ver la configuracidn de permisos. Por ejemplo: 1 aeene Al escribir esta sentencia en el directorio src, accederd a los permisos de archivos. Asegirese de que es el ainico que puede leer y ejecutar cl fichero httpd, Para comprobar la versién de Apache escriba: vfheend -¥ Se le mostrard el ndimero de la versién de su servider Apache. Si coincide con la versién del cédigo que se ha bajado por Internet, jenhorabuena! Ahora querré compilar las utilidades. Apache tiene unas cuantas utilida- des que le ayudardn en la administracién del sistema, Puede compilarlos des- de el directorio de apoyo escribiendo: make all Se compilardn todas las utilidades y se creardn archivos como htpasswd, htdigest, httpd_monitor, rotatelogs, logresalve, etc. Obsérvcse que el coman- do anterior no compila el programa suexec. Sabré por qué en capitulos poste- riores, Se puede saltar la siguiente seccién y empezar a trabajar en la creacién de los directorios de Apache. Uso de los archivos binarios La verdad es que compilar el cédigo fuente en vez de utilizar directamente los archivos binarios es una buena idea. Cuando utiliza uno de estos fichcros est dejando que una tercera persona (posiblemente alguien que no conozca) decida los médulos y propiedades que va a usar su scrvidor Web. Se encon- trard con archivos binarios que no funcionaran en su sistema. Y es que habra una serie de incompatibilidades entre las librerfas necesarias y las que ticne su sistema. Si estos inconvenientes son aceptables, o si preficre no meterse con la compilacién del ejecutable, asegdrese de que el sitio del cual se va a bajar los archivos ejecutables es de contianza. En el sitio Web www.apache.org encontrara ficheros binarios para casi todos los sistemas. Guarde cl archivo ejecutable cn un directorio, Localice el fichero httpd y verifique que sus permisos de administrador le permiten ejecutarlo. Utilice ol siguiente comando para acceder al ntimero de Ja versién: wfnecpd Sila versién coincide con la del software que ha bajado de Internet, querra decir que esta listo para trabajar en la creacién de los directorios de Apache. Creaci6n de los directorios de Apache Puede guardar los cjecutables de Apache donde desee, pero siempre es conveniente ser una persona organizada desde el principio; aqui tiene unas cuantas sugerencias. Cree un directorio Hamado Apache que se encuentre en una buena ubica- cién (por ejemplo, dentro de las carpetas /usr/local 9 fist/home). A partir de ahora me teferiré a este directorio como %ApacheRoot%. A continuacién cree los siguientes directorios: sapacherRoot /bin SapacheRoot $/cont tApachakoot# /Loas Copie cl archivo httpd y todos los ficheros compilados en cl directorio %ApacheRout%/bin. Los archivos de configuracién los debera copiar a %ApacheRoot%icont. Es conveniente crear un usuario y un grupo de usuarios nuevo. Asi tendra un mayor control sobre las zonas de su disco a las que podré acceder Apache. Yo lo hice. Ahora puede configurar los permisos de los directorios y ejecu- tables, No permita que nadie que no sea el usuario principal (root user) acceda a los ejecutables ni a los archivos de configuracién. Utilice el comando chown. Gracias a él limitara el acceso a los ejecutables al usuario principal y a los pertenccientes al grupo que acaba de crear. Los comandos son: on -K rook sree, tpackezoots/bin zeet. reo: ¥ApacheRuat t/conf Los comandos chown configuran los permisos del propietario, pero para que dichos permisos tengan vigor, hay que definirlos. Como quiere que el usuario principal tenga acceso completo (lectura, escritura y ejecucién) a los directorios bin y conf y que el usuario de httpd tenga un acceso completo al directorio de registros, tendré que utilizar cl siguiente comando chmod: chmod -F #00 tApachekoors Con esta orden determina los permisos de acceso de tal forma que sélo los propictarios de los directorios pucdan acceder a su contenido. Instalaci6n de Apache Antes de instalar archivo binario httpd en la direccién deseada, conviene ajustar algunos simbolos extra. Para ello se utiliza el comando: Este comando elimina la informacion extra del archivo binario y reduce su tamano. Ahora puede instalar Apache, Siga estos pasos: 1. Copie el archivo binario httpd en cl directorio %ApacheRoot%/bin. 2. Si ha compilado las utilidades de ayuda, %ApacheRoot%/bin. 3. Copie los archivos de configuracién de la versiGn de distribucién de Apache (como por ejemplo, acces.cont-dist, httpd.conf-dist, mime.types y srm.conf-dist) en el directorio %ApacheRoot%/conf. ‘Gpiclas ahora en el directorio Ya ha terminado la instalaci6n de Apache. Esté al dia con el desarrollo de Apache Para cuando complete la instalacién de Apache es posible que se pregunte si no habra salido otra version al mercado, o incluso si no habré aparecide: algiin nucvo parche de seguridad. Yo me lo pregunto con la mayoria del soft- ware que utilizo. Los programas cambian con demasiada rapidez. algo que es bueno (aunque pueda parecer Io contrario si tiene bastante trabajo entre manos), De todas formas no hace falta que se atormente con este tipo de pro- blemas, por lo menos en lo referente a Apache. Suscribase, gratuitamente, a uno de los mejores recursos especializados en este servidor, cuyo nombre es Apache Week. Le mandarin a través de! correo electrénico todas las noveda- des que yayan apareciendo relacionadas con Apache. Su sitio Web es: futes apachenees. conf La informacién aqui facilitada le sera de gran ayuda a todos aquellos ad- ministradores de Apache que quicren conocer las tltimas novedades, Tam- bién tendrd acceso a numerosos articulos a través de los cuales aprenderd a obtener lo mejor de su servidor. Le recomiendo que le eche un vi Ky Configurar y ejecutar Apache En el dltimo capitulo ha aprendido a compilar el servidor Web Apache pa- ra que funcione en un sistema Unix. Ahora esté todo listo para proceder a su configuracién y ejecucién. Sin embargo, antes de nada tendré que editar unos cuantos archivos de configuracién. En este capitulo nos vamos a centrar en este trabajo. Apache lee cuatro ficheros de configuraecién: httpd.conf, access.conf, srm.conf y mime.type. Los sitios Web usuales no tienen que modificar el iltimo archivo, por lo que podran saltarse la seccién correspondiente. Sin embargo, los otros tres son los que definen cl comportamiento del servidor Apache porque se Icen durante el inicio del sistema. En este capitulo les mostrar cémo configurar cada uno de estos archivos, También veremos diferentes métodos de cjecucién del servidor y sus proce- sos de inicio y detencién. Al final del capitulo le ensefiaré como cfectuar una scrie de comprobaciones. Configurar el servidor Todas las fuentes de distribucién de Apache incluyen unos cuantos archi- vos de configuracién como ejemplos. En una fuente estdndar encontraré un directorio Hamado conf en el gue se encuentran los archivos con configura- cién con la extensi6n -dist. Lo primero que tendra que hacer antes de modificarlos sera copiarlos co- mo sigue: httpd.conf-dist a httpconf access.conf-dist a access.conf srm.conf-dist a srm.conf Aunque hay tres archivos todos comparten Ia misma estructura. Son de texto y tienen dos tipos de informacién: comentarios y érdenes. Las primeras comicnzan con el simbolo # y se supone que ol software las ignora; se inclu- yen para informar al administrador del sistema. Se pueden afiadir tantos co- mentarios como se quiera. A excepcién de los comentarios y las lineas en blanco, ¢l servidor conside- rara que el] resto de] documento seran érdenes que ha de cumplir. Por medio de estas érdenes se le indica al servidor que haga algo de una forma concreta, A la hora de modificar estos archivos tendra que tomar una serie de decisio- nes relacionadas con el comportamiento del sistema. En la siguiente seccién aprenderé qué significa cada una de estas directrices y como se pueden utili- zar para personalizar el comportamiento del servidor. httpd.conf httpd.conf es el archivo principal de configuraci6n. Se utiliza para indi- carle al servidor qué programas ha de ejecutar, En cl listado 3.1 se muestra el fichero httpd.conf que sc ha creado a partir de http.conf-dist. Neste, # informacién cor el fichero principa’ de configuraciéa, $i desea mis lie el URL utp: B Na se limite a ‘eer # tuviese alquna dud # advertido. archive sir cemproader qué hace. 62 puede consultar Los Eicaeras de ayuda. dn sido 4 Creuee por Rob Mecoo! h gervertyse ae puede ejecurar tance en wage “inetd” 6 "stamealone" . Type svurdaloce cula ¢* servider cn modo inetd, sulte a *ServerAdm: A Port: indica e1 puerto cue se escuchs. Para todos aquellos pueztos 4 < 1023, tended que ciecular hlipd comp soot desde €l principio. bert BO fo WestnameLookups: Registra cl nombre © los mimeros IP de los E clientes por ejemplo www.apache.cre fon] o 204.62.229.132 (off) # Quizds sea convenicnle que desactive csla opcién hasta que vava 4 f atilizut esta infermaciéu ca ous archives de reqistra o con un ‘ * 0 CCT, Si lo deja activade es postple que veduzca el readimiento de ga sitio losrnameLeexups on Si desea ejecutar KLipd cen un usuario © grupo diferente vem qne ejecularlo como rool desde e? principio User /Crou! ne ejecuta Sttpe 4 el nombre (9 Frimexo} del usuari. 4 # En SCO (ODT J) aviliee User nouser y Group nogroup # # 4 grupo para el que En HPUX es posible que nadie pueda ulilizar Te memoria estdndar, per -o que tendrd gue ceaar un usuario wor y uti linarto para solventar este impediment Use= nobody Group # # ta siguience direchriz desactiva los "remerdoe* y la limpiena de # lus cabeceras HOTP de # Netscape 2.x y de todos aqve-los # # exploradores web que utilices. $e sabe de la existeacia de problemas. RrowserMavch Mozilia/2 qokvepalive # Secveradrin: lu direecida a La que ee divigirda toces lov mensajes # relacionadns con los problemas que gueda Lener #1 Servidor. serverAdmin you8your address + ServerRoot: directorio en el que se guardan Tos archivos de configuragién, error y zegist-o del servidor sua /Local/ete/hikpd gracias 2 esta opeide puede trabajar coa servi dores ace: para indicar.e al sorvider a qué direceion |p tiene gue prestarle aleaciéa. Licha dizeceiéa puede contener comedines "#", una TP 9 el nompre complete de ua dominio de Internet. Consulte la directiva eBindaddress * 4 RrrorLog: ubleactén del archive de regisyro de erzures. Si no # comienza con J, Svrvertoat escd ExrorLog logs/error_lo: ¥ VeansfesLog: woleaciéu del archivo de regisice de transteres 4S! no comienza con /, ServerRoul esta listo. ‘arsferLog logs/acces: doe Bes # PieFile: arekivo donde el tard sus propios 4 problemas PidPile “ogssrttpa.pid as A relacionada # No aay que utilis 4 que estd ctrabajance la necesita ile susrd porque se creardé este J archivo en @° proceso de ereacidn de Apache), tendr4 que # asegurarse dc quo no hay dos Llaradas que comparvar: el misto A accniv Scorosoard™i le loge /apache_statns, oreboardPile: archivo en el que se guardard la informa mn lo# procesos internos del servidor, elo con indas Las azquite 4 Servernare “e permise especiticar el nombre que ¢1 servider i crviard a los clisanes si varia Ge un programa a otra (por # elemplo, ulisice "www" en ver Je. nombre real del sorvidor} + # Nota: ne puede inventarse nombres para el servicer y esperar a Euncionen. #1 nombre DNS vélid #82 np cempreade e6mo funciona, comsulte 2 s4 eduinistsador de red. AServerName new host name * atedbacs: 20: a Sa documento @: # pide a los servidores proxy que ne ubilicer la memoria ca # a Apache envia > Andose ene comtenido. Se agma: no cacae elimiuar el siubole de comentario de la eigniente sencencia permitizd que se utilice 1 neroria caché a#Cacheneges atedioce 4 vimeouk: néimere de si 4 caducidad gundes que pasaran antes de que se envie la Timeout 3 0 # KespAlive: indepondiertewerte de la exiscencia de cone # persierentes (mis de una peticién por conexiéa). Para # urilice el valor “ofz-. keepalive Or eRequests: niimere maxiwe do peliciones pe: persistente. Para cue no aaya Limite uti a optimizar el vendiniento witidas ee atKOupa! € una # valor }. Le recomendanos que, pa P atilice ur valor elevade. MaxseepAlivaRequeste 109 4 KeepAlivetimeout: numero Se gequndos que ge 4 de la siguiente peticidn. KeepAliveTinecut 3 4 Regutacion del tamaio ée la pila del servidor. Eu ver de P adivinar la cantidac de procesus ue necesiterd el servidor, Apache 4 ce adagya rebre la marcha y los carga; es decic, trata de mantener de. suficiente miners de procesos de carga ademis de unos cvante: 4 para controiar las vransmisiones (per ejeno}o, varias pet 4 similcincas pata un expleraéer de Nenenape! # para ells cemprueba la canvidad de veces que an servidor J seperaido wma pelicida, S. eon menos que el valor ¢= ‘ cena aaa Ge reserva. Si sapera al valor + Maxgpar iniraré -ag sobrantes. Los valores aqui 4 mite vdlidos para la mayoria de + himers de servideres que se iricians tenérd que ser uu va‘er # eignitical ive némere total ce servidores que se jc # eb Linic 6 cme se pueden concetar a Wf alcansa el valor Timite, s# Slogicard el avce 4 elfen ' cxkan, paz ejenphe, si cel route de den es por le que ne couviene utiliser un mise respire aL Maxtlierts 180 4 Mewkeguesteberchi las # pornitides antes de su elimina 4 Después de un uso prolengade del subyroceso se clerta para cyitar # que aparezcan problesas relacionados cou n° servider apache iy 4 pasiblomente con las llarerfas gue ubitize). bn ia mayorta de los sistumas ae e6 Tecesario, Pero en nes poLas [como es e1 cas } de Selazis) va reduecién del cendimiento de las libverias ex Ho notacle jones poe subproceso, MaxFoquestsPeccniid aed Para acz servicer erowy, eeatencia: = Directs gery! der # quite el sivbolo de comentario de a#Peoxyecuests On var la memoria jo de las sigaient HeacheRoot WeacneSixi eselnterval 4 EcaghaVaxxpice 24 iCacheLus.Mesiziedractor 9.4 -{localsebesarepe proxy #cachepetacitmxpize 1 WMoCachs un_dominio.con otre, dominic.edu joes.gazage_venta.cow # Listen: permite Ligar el servider Apache a unay direeciones Ly # decerminadas y/o puertos, ademds de_ configurade por omisién € Consulse también el comarée virtuattiost. ¥idsmen agen bListon 12.34.56.78: 80 Virtualllost: pexwite que aa denenio responda a las gericiones # 4 procedentes de varias direcciones [correspondientes con un * servidor!. Pura ello tay que configucar la miguina para que acepre 4 : ‘ paquetes iP procedentes Ge varias dlreceiones. Para ello se puede ulitivae la ebiqueta de alias o a través de parches den keeael como VIF. + Las Gireatriaea de ton archivos hitnd.conf o srm.conf pueden } inclulsse cu e= comande Virtuallost . Consulze la entrada Bindaddress. ievirtnaltos: servider.algin_doninio.com> dServerAdmin webmaslorgservider.alodn_dynia #aocunentkec= /waw/ docs /sezvidor.alqin_domiaio.com iServerNane servidor.algir_dominio. com #BrrorLog _ogs/servider.alalin dominio, com-errer_log HrarsferLog Logs/servidor -algun_dominio.com ace; ae /VirtualNost> log Listado 3.1. Archivo httpd.conf predeterminada creado a partir de http.con‘-dist ServerType Slandalone | tavtd Especifica como se ejecutard el servidor. Se pueden utilizar dos métodos: standalone e inetd. A primera vista puede parecer que funcionalmente ambos gon idénticos, pero es cierto que existe una gran diferencia relacionada con la eficacia del sistema. El proceso de un servidor inetd se cierra en el mismo momento en el que termina de atender la peticisn recibida. Mientras que en cl modo standalone, el subproceso se queda esperando cierta cantidad de tiem- po antes de cerrarse. De esta forma se pueden volver a utilizar en el futuro. Como no hay que dedicar recursos de sistema para volver a abrir el proceso, se mejora la eficacia del scrvidor. De todas formas también el modo inetd tiene sus ventajas. Por ejemplo, se le considera mas seguro que standalone. Son muchos los administradores de sistemas que utilizan programas TCP para validar las peticiones antes de en- tregarselas al proceso correspondiente. Si tiene algiin interés en la seguridad de su sitio y no tiene demasiado tratico es posible que le conviniese mas utili- zar cl modo inetd que standalone. Vamos a ver cada modelo con més detalle. Servidor Apache standalone En este modelo (predeterminado), el valor de Ja directriz. ServerTyper es standalone, que quiere decir que el servidor estaré atento de un pucrto para ver si recibe alguna peticién, Cuando la maquina del cliente usa dicho puerto para ponerse en contacto con el scrvidor y enviarle una consulta, el servidor inicia un subproceso para que lo atienda, En la figura 3.1 se muestra el esque- ma de este modelo. Servidor Apache standalone Peticién HTTP #4 Peticion HTTP #2 Respuesta HTTP #2 Respuesta HTTP #1 Figura 3.1, Servidor standalone Puerto del servidor Apache standalone La directriz le indica al servidor Apache principal el proceso al que tiene que prestar atencién a través de un puerto en particular: Puerte [ntinero El pucrto HTTP predeterminado es 80 y es que se utiliza en la mayoria de los sitios Web. Si no es el usuario root del sistema y desea cjecutar el servi- dor, tendré que utilizar un puerto comprendido entre 1024 y 327697, ambos incluidos. Todos los puestos menores de 1024 se consideran estandares y pa- ra acceder a ellos se ha de tener el nivel inctd (nivel root). Si simplemente es- 14 practicando con un servidor Web y no tiene los permisos de la cuenta root tendra que utilizar valores superiores al rango especificado. De esta forma se asegurari de que los valores especificados no los esta utilizando ningun otro servidor. Si especificase un puerto que ya esté cn uso, sc encontraria con un mensaje de error al iniciar el servidor. Tenga en cuenta que si utiliza un puer- to HTTP que no sea 80 (el predeterminado), tendra que incluir este ntimero en todas las URL dirigidas al servidor. Por ejemplo, si ha utilizado la siguien- te directriz: 5080 y va a pedir los recursos que se encuentran en mipagina.html, tendra que es- cribir la siguiente peticién: http://w. suempresa con: 8080/misagina cml Si decide ejecutar los servidores Apache con el modelo standalone, tendra que especificar los nombres del usuario y de los grupos. Nombres de usuario y de grupos para el servidor Apache standalone Para especificar estos nombres se utilizan dos directrices: y Inembre usuario] #00. wwe (nombre grape] 4cLb] * Estas dos sentencias son muy importantes desde el punto de vista de la se- guridad. Cuando un proceso del servidor principal abre un proceso en el ser- vidor secundario para que se haga cargo de la peticidn del cliente, cambia el UID y el GID del subproceso de acuerdo con los vatores de dichas directrices. Consulte la figura 3.1 para ver como se desarrolla el proceso, Si el subproceso se esta ejecutando con los permisos root, sera un peligro potencial ya que estara a disposici6n de los hackers, Permitir que se pueda interactuar con los procesos del usuario root representa una brecha en Ja seguridad del sistema. De hecho no se recomienda que se trabaje en estas circunstancias. Mi consejo es que deje que los subprocesos tengan le minimos permisos posibles. Para conseguirlos los podra incluir en un grupo de usuarios que apenas tenga per- miso para nada. En la mayoria de los sistemas Unix ¢l usuario llamado no- body (generalmente UID=-1) y el grupo nogroup (GID=-1) son los que menos privilegios tienen. Para ajustar estos valores conviene que consulte los archi- vos que se encuentran en /ete/group y /ete/passwd. Tenga en cuenta que si su estrategia se basa en utilizar cl formato numéri. co para los ID de los usuarios y/o grupos, tendré entonces que colocar cl sim- bolo # antes del valor numérico que se encuentra en los ficheros /etc/passwd y /etc/group. Servidor Apache inetd Otra forma de ejecutar el servidor Apache es con el método inetd. En este caso, el valor de la directriz ServerType sera inetd, con lo que se modifica to- do el proceso. En la figura 3.2 se puede ver cémo funciona. inctd es un de- monio de Internet (un proceso del servidor) que escucha las peticiones que Hegan a través de las conexiones que se establecen a través de los puertos menores a 1024, A diferencia del método anteri etd controla qué peticio- nes se atienden. Cuando es uno de los clientes del sistema quien realiza la peticién, inetd abre el proceso del servidor, le atiende y, cuando termina, lo cierra. Si va a cjecutar su servidor Apache a través del modelo inetd, tendré que editar el archivo /etc/inctd.congpara agregar un nuevo registro para Apache. Este archivo de texto tienc un formato especial. Para hacerse con él bastaré con que Ie eche un vistazo a sus entradas, A menos que tenga un sistema Unix un tanto rarito, encontraré la siguiente sentencia en el archivo inetd.comf: enembre_de: easuario: Servidor Apache inetd para el puerto 80 Respuesta HTTP #2 ott Respuesta HTTP #1 Figura 3.2. Servidor Apache inetd Como se puede ver el servicio se cjccuta para un usuario determinado. Tendré que decidir bajo qué usuario se ejecutard el servidor Apache. Lo mas sencillo es utilizar el usuario nobody o crear uno especial Hamado httpd que se encargue de la ejecucién del servidor. Si utiliza el usuario nobody con otras servicios no convendré que lo vuelva a utilizar con el servidor Apache. En caso contrario sc encontrara que el servicio Web afcctard a aquello a lo que se pucde acceder cuando se utiliza la cuenta nobody para modificar los parimetros de archivo/directorio del resto de servicios. Mi consejo es que cree una cuenta httpd especial por medio del siguiente comando: Ettpd elream hep nowait Atted /ess/sbin/attod -F fabesactpdscoai sit tp. co: Una vez que se modifique cl archivo inetd.congtendra que hacer lo mismo con /ete/services: o> crane ry_del_suertas /enomare_grorocolo™ i 6o_en_ineta.com> uv cnombeu_éel_sery eservicio_intcoduc Asi que la linea que ahora tiene que aftadir al archivo /ete/services es la siguiente: biied hetpa aor La entrada anterior describe el servicio httpd que utilizaré 1 servidor inetd. Especifica el servicio que estard a disposicin de] puerto 80. Si desea utilizar otro servicio Web (HTTP), sustituya 80 por el nimero del puerto que vaya a usar. Como todos los puertos que se encuentran por debajo de 1024 estan reservados para los servicios esténdar, tendrd que utilizar un nimero comprendido entre 1024 y 32768, ambos inclusive. Ahora tendré que reiniciar cl proceso inetd. Primero necesitard el ndmero ID del proceso (PID) que se puede obtener a través del comand ne auxw | grep inecd Dependiendo del sistema Unix que se utilice es posible que tenga que utilizar otros argumentos con ps. Dirigiendo la salida generada por ps a grep permitira que este tiltimo busque cualquier linea en la que aparezca inetd y la imprime en la pantalla (salida esténdar). Aunque los formatos de la salida de ps varian de un sistema a otro, generalmente la primera columna numérica se corresponde al 1D del proceso que se esti ejecutando. Utilice la utilidad kill como sigue: kil] -HU2 con el ntimero ID del pro- ceso, La utilidad kill enviard una sefial HUP llamada PID. De esta forma se reiniciard cl setvidor con lo que se vuelve a leer el contenido de los archivos de configuracién que acaba de modificar. Ahora Ja configuracién del archive inetd esta completa. Una vez que le asigna un valor a la directriz ServerType en inetd y confi- gura los ficheros /ete/inetd.conf y /ete/services, las sentencias User y Group que se encuentran en httpd.conf dejarin de ser vélidas. De todas formas. ase- grese de que el nombre de usuario que ha utilizado en /ete/inetd.conf tiene los permisos necesarios para poder acceder a los directorios Web y a aquellos en los que se encuentran los archivos de registro del servidor. Ya aprender a definirlo. Mi consejo es que dnicamente utilice la opcidn inetd con aquellos servido- res Apache que tienen may poca memoria RAM 0 con los que, en principio, no van a tener demasiado trafico. Directrices comunes Los métodos standalone e inetd comparten una serie de directrices. La pri- mera de la que hablaremos es la que le indica al servidor que muestre una pa- gina de error en la que aparezca una direccién de correo electrénico cada vez que aparezca un problema. De esta forma los visitantes de su sitio Web po- dran informar de cualquier problema a través de un mensaje de correo electré- nico. Para ello tendré que usar la direccién electrénica de la persona encargada del mantenimiento del servidor, Observe la siguiente sintaxis ery in {direecién e-mail) Otra de las directrices comunes es ServerRoot que especifiea dénde se encuentran los archivos de configuracién, error y registro. Sera el directorio padre de todos los archivos relacionados con el servidor. La localizacién pre- determinada es /usr/local/etc/httpd. Si instalé el servidor en otro sitio, cambie- lo por la ubicacién que utilice su sistema. La sintaxis es: Sezverkoot [nombre completo cel putt) Dos son las directrices que se refieren a los ficheros de informacién y re- gistro de acceso del servidor. La primera le indica al servidor el path y el nombre del archivo de registro: completo del pach gel arcaivo de registo) La segunda le indica ef path y el nombre del nombre del fichero en el que se guarda la informacién de acceso: vrarsferLog [nombre complete de’ pakh del arckivo de intormacién de acceso! El nombre y la direccién predeterminados del archivo de registro de erro- res es logs/error_log, que quiere decir que el nombre del fichero es error_log y que se encuentra en un subdircctorio Namado logs. Si quiere guardarlo en una ubicacién diferente, tendra que especificar la direccién completa (cs decir, que empezard con el simbolo "/"). Lo mismo ocurre con el archivo en el que se guarda la informacién de acceso, que se llama access_log y se encuen- tra dentro del subdirectorio logs. Asegirese de que el tinico proceso que tiene permiso para escribir en el directorio en-el que se encuentran los archivos de registro es el proceso prin- cipal del servidor. Esta es otra medida de seguridad porque permitir que otros usuarios 0 procesos puedan escribir en este directorio dejaré que cualquier acceso no autorizado consiga el UTD del proceso del servidor Web, que es el de la cuenta root. Otra directriz comin a ambos métodos es 1a que usa Apache para escribir el ID del proceso principal del servidor en un archivo. Por medio de PidFile podré especificar el nombre y la ubicacién del fichero en el que se guardara dicha informacién: PidFile jnerbre compl 9 sel path del archive PLDT Recuerde que todo lo relacionado con la seguridad de los ficheros ErrorLog y TransferLog es aplicable a PidFile. La iltima directriz. en comtin del archivo httpd.conf que tendra que configu- rar es la correspondiente al nombre del servidor de Internet. ServerName (nom de. secvidor] Generalmente se utilizard un nombre del estilo www.suempresa.com. De todas formas asegiirese de que el nombre de] dominio que escriba aqui coin- cide con el de su empresa. A continuacién veremos el archivo de configura cin stm.conf. srm.conf Este es el archivo de configuracién de los recursos del sistema, Se utiliza para indicarle al servidor qué recursos pucdc ofrecer a través del sitio Web y cémo lo ha de hacer. En el listado 3.2 se muestra cl archivo srm.cont predeter- minado. con este d el nombre de’ espacio que verdi los ssuarios de su servid - Este archive inc.uye Lox pardnezros Go) servidor que Geterminan cémc se atiencen las peteiones y se requla e. formate de lus resultados Si desea mie informacién puede consulcar us Luteria es que se fo onckentran sn hbto://www.apache.org/. # Ureado per Ros McCool, Adaptace para Apache # Documenttcot: disectorie en el que se guaréardén sus docunentos # Por omsion, todas _as peticiones se tomaran de sate directorio, # pero los enlaces simbélices y -o8 allas pueden apuncar a onras # divecciones DocumentRoot /usr/losal/ete/artpe side ciade 3. del usuario (se }ouserpir: e1 nombre del dizectosie a # uliliza cuando ge rocibe via peticida -user se public hla’ # uirectoryIndex: nombre del archive o arch) F cero indice HIML ya eserito. Lay entrada: # oor medio Ge esvacios. s g1e se ut mil ples: Directoryindex index. hhn! # vancyindexing se atiliza p: olorminar s‘ se trabula eon a1 Si rectorie alcernative « cen el ess. Insexies on # RddIcon Te indica al or qué icone se atilicurd vara # iceutlficar a los distin Add censyEncociug (CHP, /icons/conpressed.ail zi conprann exlgi ty texty+ £1 Linages* 2) aucic. aif) videos* AdeleonByTyne (1x1, / icons? AA LeonbyType (ING, /icons/image2 AgéTeorbylype (SNP, /ieons/sound2 AdeIeorByTyps (VID, /icons/movle binacy.gif shin exe hoax A@itcon icon es /binkex icons, icon, b /ioons/layoat Nicore/next gif .tz ficors/e.g fc adéTcon deons/p.gil ipl ony Aacleon ficons/E.gif .tos agdleor, /ivonaédvi.gif .evi AddLeon /icous/uccnceded gif au wwelige sve re seip eps. Aad shin itm .paé addIcon Jicons/seript gif .cort rb .esh .ksh .cel Aedlcon sirons/rex.git tex gd Loon: bomb.gif core Adéleon fi cif AgdIcon / xight gif REAPS Badioor 4i dey.gif **D=RECTORY* Addicon /icous/blank.en£ **LaNxICON** Defaulricon es icone que se utilizard con todos agueilos le no hengan ainguas asigiado. Fanlticon /icors/unkrown.cif peién ea el 2 fichers. & AddDeserier ior indice de low adabescr ipt © penis) ripeién" nombre_arch. ra el servider ame es ©] noriore cul azchive KEADME cue buse: 6. Formato: Readmenane cenbre # Read # por lo encventra en # En priner Luge el sexvidoz buscar4 sombre html, # lo ineiuird y, a copt/suaciéa, vepelira ‘a busqueda de nombs Lo encuentra, tanoié: Lo ineleira Noel cexte plano. § Ho keaderare a8 @. nombre del archive en a’ que se encueetran los ector neWauie FI Meadertiame KEADFE é@ nonprey de avehives que inuoraré ta Formate: IndexIgaore sombre nonose2 ames RCS # Indextaacre es un cen us 6u Ge directories et) .27 to SH A GIERDERY 17% 4 inéexa IndexLare: e det ar cur cuando de cada ive que Fay que be je contre, essFilotane: em xo:nb. ese8 concer Ta Int f # se # dicve! Access#ilenare # pelaultype rombre del tipo MIME pvederrminucs paca los documentos po no pueda de-erninar el Servidor (para elo se pase en 1a # ceye + oxtensisn de Loa nismos: efacleType text /plair ng permite deacoupeimr sobre -a marcha cier Web (tewaic/% 2 inajaz con alla. + Adarincod 4 infosmac.éa re_aciorade con exoloraéox explnvadores pueden ty wage le permite axe aspectfique el : Esta directriz, se utiliza para indicarle a Apache el directorio que ha de considerar como DocumentRoot para Jos usuarios del sistema. Solamente se utilizard si su sistema tiene varios usuarios y quiere permitir que cada uno tenga su propio sitio Web. La configuracién predeterminada es: Use=dir public_htel que significa que si ha configurado el nombre de su servidor como www.suem- presa.com y tiene dos usuarios (Joe y Jenny) sus URL personales serian los que aparecen en la tabla 3.1. Tabla 3.1. Directorios Web personales de usuarios Directorio Web htlp://www. suerpresa.com/-~joe ~joe/public_html http://www. suempresa.com/~jenry ~jenny/public_htm Obsérvese que en los sistemas Unix, el simbolo ~ llama al directorio prin- cipal del usuario. El directorio especificado por la directriz UserDir se en- cuentra dentro del principal de cada usuario. Apache tiene que leer y ejecutar los permisos para leer los archivos que se encuentran dentro del directorio public_html. Para ello hay que utilizar el siguiente comando: el servider Apache: chown r>.enombre del grups weusers/ chr Por ejemplo, si el nombre del usuario es joe, el grupo de Apache es httpd y la directriz UserDir ha asignado ct directorio public_html, los comandos anteriores tendran este aspecto: chow: -l joe.hetpd ~joc/publ ie_ptmL cared -R 7779 ~toe/public tm) El primer comando, chown, cambia el propietario del directorio ~joe/ public_html (y de todos los archivos y subdirectorios que contenga) a joe.httpd. En otras palabras, otorga al usuario joe y al grupo httpd plenos derechos so- bre los archivos y directorios de public_html. El siguiente comando, chmod, ajusta los derechos de acceso 22770, es decir, que tan solo el usuario joe y el grupo httpd,tienen derecho para leer. escribir y ejecutar archives en el direc- torio public_html y en todos sus contenidos, También se asegura que cuando se crea un directorio (0 un archivo) nuevo en public_html, tiene el ID del gru- po. De esta forma se permite que el servidor Web pueda acceder a todo lo que se acaba de crear sin la intervencién del usuario. La diltima directriz que necesita para configurar el directorio es Directory- Index, cuya sintaxis es la siguiente: Directory.ndex [nombr¢_archive_l, nombre_archivo_2, nombye_archive 3 Esta directriz especifica el archivo que tomaré cl scrvidor Apache como indice del directorio solicitado, Por ejemplo, cuando se accede a un URL co- mo www.suempresa.com/, el scrvidor Apache determina si es un acceso a / (la raiz del documento), el directorio del sitio Web. Si la directriz Directory- Root es: DirecloryRoot /umw/wnw.svenpresa.con/public/htdecs entonces cl servidor Apache buscara un archivo llamado /www/www.suem- presa.com/public/htdocs/index.html; silo encuentra, Apache atiende a la peti- cién y le muestra al explorador Web del cliente el contenido de dicho archivo. Si DirectoryIndex est asignado al archivo de bienvenida welcome.html, el servidor Apache buscara /www/www.suempresa.com/public/htdocs/ welcome.html, Si no lo encontrase, Apache mostraria la lista de contenido de directorios que se ha creado sobre la marcha en una pagina HTML. En la fi- gura 3.4 tenemos un caso en el que se ha perdido el archivo index.html y el servidor ha generado un indice sobre la marcha para atender a Ja peticién del servidor. Desde la directriz se pucden especificar varios indices. Por ejemplo: Directoryiadex index-hnml index.nom welcome, Lia le indica al servidor Web que tiene que ver si est4 cualquicra de estos tres archivos y, si encuentra alguno de ellos, tendra que mostrarselo al cliente que lo solicita. Observe que mostrar varios archives como indice implica que puede crear dos problemas. El primero es que el servidor tendr4 que comprobar la exis- tencia de todos ellos en cada uno de los directorios a los que accede, can lo que se terminara por reducir su velocidad. El segundo es que al tener varios archivos como indices complica la organizacién del sitio Web, Pero si sus de- sarrolJadores utilizan varios sistemas para crear los archivos, el uso de varios archivos puede ser la solucién ideal. Por ejemplo, Windows 3.x es incapaz de trabajar con archivos cuya extension tenga mas de tres caractercs, por lo que un usuario que trabaje con dicho sistema tendré que actualizar de forma ma- nual todos los archivos index.htm que se encuentren en el servidor Web. Al utilizar [os nombres recomendados en esta seccién se elimina este problema. Gerieroa eta Bbieans. cor torstse Obn39. Oy carats thiax/ee Ger9e.m > sealed. aps Invas/ee eye piaas ea? TRUCOS NRA IINO MER ames igura 3.4. Directorio creado sobre la marcha acces.conf El altimo archivo que tiene que modificar es access.conf. Se utiliza para acceder a los permisos de los objetos (como archivos, dircctorios y script) que se encuentran cn cl sitio Web. El listado 3.3 nos muestra el contenido del archivo access.cont, s.conf: configuracién g.cbal ce acceso ne en Ren: //www-apache.arg/ ae ¥ Locumentes on I Rete archive detine la configuracién del servider relacienada con ceunstancias en “aa ave 9e # Los permisns de los se: cas. # aplican ¥ Cada diractorio al que tiene acceso Apache se puede con S # con respecto a los servicios y las propisdades permitidas y/o # desactivadas de un directorio (y de todos sus subdizector ius} 9 reade por Ko M valor de la direstriz Decunentkoot 4 Puede cambiar dependiendo Wovambién puede ser *None" (ninguna), "ALL" [Ledo) © cuslacier # comb!aaciéa de ‘Iadexes™, "Includes", ‘TollowSyinbinks*, "Exce #9 MMulniviews" # Obsdevese que ‘Multiviews* se aa de nombrar *explicitamente™; # "Oplios ALL" da momence no se lo permite options Indexes 20! lowSymLinks Fo centrola qué opciones de los arciivos de .itiaccess se pucden # sopresgeribie. También se oueden utlinar les valores "ALLY o mbinacidn de "Opvions", "FileTafo", "Authcorfig™ y # cualquier # rLimits Allowoverside Nene # controla quiés puede acceder a1 material que contiene ¢l servido: order allow, dery allow from all e/Mirectory> 5 /uer/loculfete/nrzpd/egd pin ce prede camiar a lo que haya en 67 § directorio CCT deficide en la directriz Suriptalias, siempre que bose configurase Ge antenaro eDirectory fusr/local seteshtlpayegi bine ALlowlverride None optians Kene /Direstarys # permite que él servider inferma de su estado con el Lal de & tins //servername/berver-st. F Cambie ‘.your_donain.cor" para cue active su dominio. FeLocanisa /6 #SetHand.ex server stalus foréer deny.allow facny from 612 fallow from .your_domain #e/Locabion somenta que ha habide gente aus ha rior ala #o cay informes ex Tos que sc # Lrotade de arse de wr antiguo fallo anc dovessidn 1.1. Hare fallo estuba revacionado con ur seript que ‘ ‘ 52 distribufa come porte de Apache. bolo de comentario de estas Jfaces podrd cedivigir el guitar | escoe atacues al script que se encuentra en phf.apache.crg. , si 4 le desea, puede graoarlos Utilizando el script # sapporteph£_sbuse_log.cui- #eecation fegi-bin/phit> adery from 21% Amrrorbosament 403 meeps $esLocativa> ppl.apache. org /phi_sbuse_. 4 A couimaaciéa puede eolocar otros Frectorios © ubicacisnes a § cuya informacién Gesee ecceder. Listado 3.3. Archivo acces.conf predeterminado creado a partir de acces.cont-dist Este es el dinico archivo de configuracién que tendré que modificar directri- ces de varias lineas de longitud. La primera directriz que tiene que retocar es la que presenta la siguiente sintaxis: erie dizech y ... se utiliza para aplicar una o mas directrices al servidor especificado en la etiqueta de apertura del conte- nedor, © ... se utiliza para aplicur mas directrices a un directorio determinado. Obsérvese que si especifica una serie de di- rectrices para que se apliquen a un directorio, a través de este contenc- dor, también se aplicardn a todos sus subdirectorios. De todas formas, si no desea que se produzca este efecto puede crear un contenedor por se- parado para cada subdirectorio, con lo que conseguira que el servidor tenga un comportamiento distinto segiin el directorio en el que se en- cuentre, * ... es igual que cl contenedor , sin embargo tiene una expresién regular (regex) que utiliza como argumento sustituyendo al nombre del directorio. © ... se utiliza para aplicar una o més directrices aun grupo de archivos. © ... fFilesMatch regex> es exactamente igual que el contenedor ; de todas formas utiliza una expresién regular como argumento en vez de tomar el nombre de uno 9 mis archivos, © ... se utiliza para aplicar una o mis directrices aun URL determinado, * ... es exactamente igual que el contenedor ; de todas formas utiliza una expre- sidn regular como argumento en vez de un URI. # ... se utiliza para aplicar una o mas directrices es- pecializadas en el control de acceso a cicrtas areas del sitio Web o a un método en particular. Este contenedor es el que menos aleance (iene, Vamos a ver con un ejemplo del alcance de este conteneder. A continua- cién le mostramos un extracto del archivo httpd.conf: eYiysualdest 206,°71.80.50> wine ainec.com ML ewwuyninee/publleretdecs Index we-come hla shocation fsecured/> DirectoryIndex login homl . Las tres directrices, ServerName, DocumentRoot y DirectoryIndex se encuentran dentro del contexto del servi- dor virtual, por lo que se aplicaran a todo lo que éste contenga. La directriz Directory{ndex especifica quc si una peticién solicita acceder a uno de los di- rectorios del servidor para visualizar el archivo welcome.html, se Ie ticne que permilir. De todas formas, el contenedor Location especifica que un archivo dife- rente, login.html, se Ic mostrard a todo el que trate de acceder a www.nitec.com/ secured/. Las directrices que se encuentren cn un contenedor con un alcance mas limitado siempre tendrén preferencia sobre otras directrices mas gene- rales. Ala hora de utilizar contenedorcs convicne que tenga presente unas cuan- tas reglas gracias a las cuales definird el comportamiento de una secci6n del espacio de su sitio Web: * Un contenedor no se puede anidar con otro del mismo tipo. « No puede haber contenedorcs dentro de , cuyo aleance es cl mas limitado de todos. « Los contenedores y no se pueden mezclar ni utilizar uno dentro del otro, Contexto por directorio Puede incluir directrices dentro de los archivos de configuracién por direc- tori, Uno de estos archivos (el nombre predeterminado es .htaccess) no es otra cosa que un fichero de texto que contiene una o varias directrices que tinicamente se aplicardn en el directorio al que hagan referencia. Dichas di- rectrices se pueden encontrar dentro de contenedores como 0 bien , Por medio de este archivo puede controlar el comportamiento de Apache cuando recibe una petici6n dirigida a un directorio o archivo determi- nado. Si la directriz se encuentra en el contexto adecuado, aparecera dentro del archivo de configuracién por directorio. Obsérvese que se puede desactivar todo o parte de lo que se puede sobre- escribir en un archivo de configuracién por directorio. Por lo tanto, es posible que no se procese ninguna de las directrices que se encuentran en este contex- to, dependiendo de si se ha activado la opcién de la sobreescritura, Directrices de configuraci6n general Estas directrices se aplican tanto al servidor principal (contexto de confi- guracién de] scrvidor) como a los servidores virtuales (contexto de scrvidor virtual). AccessConfig Sictaxis onfig rombro_arcké ve Prececerninago: Avvesstont contexto: corfiguraciér servidor, servicor ¥ cent fave Como pucde recordar del capitulo 3, durante el proceso de inicio de un servidor se leen varios archivos de configuracién. Uno de estos archivos es el de configuracién global de acceso y su nombre access.conf. Se encuentra en el directorio conf predeterminado del servidor, especificado en la directriz ServerRoot. Por medio de la directriz AccessConfig se le puede instruir a Apache para que lea un archivo de configuracién distinto a conffaccess.conf. Si quiere cargar la informacién global de acceso a partir de un archivo que se lame conf/globalaccess.conf, tendra que usar la siguiente sentencia en el fichero httpd.conf: AccessCont coa:/g.cbalaccess.cont Hasta hace poco el archivo access.conf solamente contenia secciones : ahora puede tener cualquier directriz destinada a configurar el servidor ante cualquier contexto. También es vilido con los contextos de los servidores virtuales. Sin embargo, el tinico caso en el que se puede utilizar AccessContig sera cuando se encuentre dentro de la seccin para desactivar los privilegios: BindAddress Sintaxis: BindAddress direcciéa IF Predeterminado: Bindaddreas * Contexto: cenfiguracién serviaor Un Apache que se ejecute en un sistema Unix puede escuchar las conexio- nes que tengan lugar a través de més de una direccién IP. De esta forma puede especificar una direccién IP para que Apache trabaje con ella. El valor prede- terminado es * (comodin) que indicara que Apache escucharé todas Jas direc- ciones IP con las que trabaja la maquina. Por ejemplo: Rindaddress 206.171.50.80 hard que Apache Gnicamente escuche Ia direccidn IP definida. Sélo se puede utilizar una directriz BindAddress. Si desea trabajar con mas de una direc- cién tendré entonces que usar la directriz Listen en vez de BindAddress. ‘También se puede utilizar con varios servidores virtuales para que se compor- ten como servidores independientes. De esta forma sustituira las secciones . CoreDumpDirectory Sintaxis: CoreDumpDirectory director‘o Predeterninado: la misma vbicacién que ServerRoot Contexto: configuracién servidor Si puede explorar los archivos que se graban cada vez que se produce un fallo en el sistema y quiere que Apache aproveche esta capacidad, tendra que utilizar esta directriz para definir la ubicacién de dicho fichero. Por defecto se encuentra en el directorio ServerRoot; sin embargo, como el usuario que lo ejecuta no tiene permiso para escribir en él, este valor predeterminado dejara de tener validez, DocumentRoot Sintaxig: TocunentRoot directories Predetecmiaade: DocumentRoot /usr/locai /apacae/hidoey Contexto: contiguracién servider, servidor virtual El directorio especificado en esta directriz se convierte en el directorio del nivel més alto de todos los documentos de Apache. Por ejemplo, si DocumentRost fwew/nienpresa/public/ttdoes se apunta al servidor www.miempresa.com, entonces cualquier solicitud de acceso recibida para www.miempresa.com/corporate.html hace que el servi- dor busque: howe /niempres (pub) ie/htdees / iate/corpor: Obsérvese que se puede hacer que un servidor busque archivos que se encuentran fuera del directorio DocumentRoot. En otras palabras, si quiere acceder a ficheros que se encuentren fuera del directorio DocumentRoot, ten- dra que utilizar la directriz Alias para crear un nombre virtual que apunte a cualquier directorio fisico del servidor. ErrorDocument Sintaxis: ExrorQocumen. ercor-code nor Coplexto: configuracién servider, servi por-directorio Override: Fileraio Compatibilidad: A partic de La vecsidn 1.1 de Apache se éispone de los contexvos dirsctorie y por divectorie (.iaccess) avehive | mensaje exror | URL jor virtual, direerorio, Cuando un servidor se encuentra un problema, genera un mensaje estindar de error incluyendo el cédigo correspondiente. De todas formas este sistema no le gusta a demasiada gente por eso se pueden personalizar este tipo de mensajes. Para eso mismo se utiliza la directriz ErrorDocument. ErrorDocument tiene dos argumentos, El primero es el cédigo estandar de error HTTP (que encontraré al final del libro) y el segundo es la accién que se desencadenaré con dicho error. Dependiendo de sus necesidades puede hacer que el servidor actiée de una forma o de otra. Por ejemplo, si desea mostrar un mensajc de error que diga “fichero no en- contrado” a todos aquellos que le soliciten un archivo en particular, tendra que averiguar el cédigo de dicho error y utilizarlo con la directriz ErrorDocu- ment. Como este cédigo es cl 404, utilizard la siguiente sentencia para hacer que Apache le mucstre este mensaje de error: ErrorDocamert 404 "Lo siento, pet‘cién ac vélida por @s Observe que el mensaje aparece entre comillas y que el servidor sustituye %s por cualquier informaci6n relacionada con el error que tenga en su poder. De todas formas, si encuentra esta directriz algo limitada para sus pretensio- nes, puede utilizar un fichero como mensaje de error. Por ejemplo: Errorfecunent 494 /esrory/404.himl Cada vez que no se encuentre un archivo se dari este error y se le mostraré al cliente el contenido del archivo 404.html (a través del explorador Web). Si quiere hacer algo mas que limitarse a mostrar una pagina estatica, puede utilizar un script CGT para aplicar una accién en particular. En este caso uti- lice el nombre del archivo cn cl que se encuentre en script: EsrorDecumea 404 /cg:-bir/fatlourl.cai De esta forma, cada vez que tenga lugar un fallo 404 se Hamard al script fallourl.cgi. También se puede redirigir cl cliente a otro URL utilizando éste en vez del nombre del archivo: EsrerDocunenl 464 arte:/ wm newsive.comotza.direce2én.hinl Se puede utilizar en los casos en que se haya cambiado la direccién de un sitio Web. Include Sintaxis: include nombre_archivo Contexto: configuracién servidor Comparibilidad: A partir de la versién 1.3 de Apache Si desea incluir otros archives de configuracién a parte de los propios del servidor, utilice esta directriz. Listen Sintaxis: Lister [direccidn 1p] alimero de puerte Conrexto: configuracién servidor Por defecto, Apache responde a las solicitudes procedentes de las diree- ciones IP asociadas al servidor, pero slo a las especificadas en la directriz Port. Para que la situacién sea algo mas configurable hay que utilizar la di- rectriz Listen, Con ella se Ie indica al servidor que responda a ciertas diree- ciones IP, a una combinaci6n de direcciones y puertos o simplemente a un puerto. Aunque Listen se puede utilizar para sustituir BindAddress y Port, conven- dra utilizar esta dltima con aquellos servidores que generen URL que apunten a si mismos. Se pueden utilizar varias directrices Listen para cspecificar un némero de direcciones y puertos a los que se quiere prestar atencién. Por ejemplo, para que acepte las conexiones de los puertos 80 y 8080 utilice: Listes #0 Listen 8080 Con los ejemplos siguientes Apache aceptard las conexiones procedentes de dos direcciones IP y dos puertos: Disten 11,22.3317.22.33.1:80 Lister 11.22.3312.22.33.2:8080 Port Sintaxis: Port ninero Predeveminaée: Port 80 cenras orLiguracién servider Esta directriz asigna un nimero de puerto comprendido entre 0 y 65535 al servidor, Si no se utiliza ni Listen ni BindAddress para especificar ningan numero de puerto, Port indica el puerto de la red al que hay que prestar aten- cién, Pero si Listen o BindAddress si que se utilizan para especificar un nd- mero de puerto, la directriz Port dejard de tener efecto. Port utiliza la variable de entorno SERVER_PRTO (para CGI y SSI) y la utiliza siempre que el ser- vidor tiene que generar un URL que se refiera a si mismo, Aunque se pueda especificar cualquier namero de puerto comprendido en- tre 0 y 65535, conviene que recuerde que hay una limitacién. Todos los mi- meros que se encuentren por debajo de 1024 estin reservados para los servicios estindar como TELNET, SMTP, POP3 HTTP y FTP. Encontrard la asigna- cién de estos nimeros dentro del archivo /ete/services. O, si quiere curarse en salud, utilice cualquier ntimero de puerto que no sca 80 (por ejemplo direccio- nes superiores a 8000). User Sintaxis: User vaix-uaeria Predeserninado: User #1 Esta directriz, se utiliza para configurar el ID del servidor que se utilizara con los subprocesos que crear cl servidor Apache para responder a las pe- ticiones recibidas. Se ha de configurar Apache para que se ejecute como un servidor independiente (véase la directriz ServerType) y para que se encar- gue de abrir dichos subprocesos. Una vez que se inicia el servidor, no se ejecutaré como root. El proceso Apache asociado (al que se le Hama demo- nio) cambia el ID de los subprocesos del usuario independientemente de lo que se haya definido en la directriz User (y siempre que cl ID del usuario siga teniendo validez). Puede emplear los nimeros ID de los usuarios. Los encontrard en el archi- vo /etc/password. Si va a trabajar con valores numéricos en vez de utilizar los nombres de los usuarios recuerde que tendré que colocar cl cardcter # antes del numero. Muchos administradores Apache utilizan la opcidn del usuario predetermi- nado. Esta opcién no se puede utilizar cn todos los sistemas Unix y no siem- pre es aconsejable. Mi consejo es que se utilice una nica identificacion para usuarios y grupos (consulte la direetriz Group) del servidor. El mimero ID que decida utilizar para los subprocesos deberfa tener muy pocos permisos. No es conveniente que se pueda acceder a los archivos que se quiere mante- ner apartadas de los ojos del resto del mundo. Del mismo modo, tampuco se debe permitir que se ejecuten aplicaciones que no tengan nada que ver con las peticiones HTTP. Para utilizar esta directriz dentro del contenedor habra que configurar correctamente el wrapper suEXEC. Cuando se utilice el wrapper en vez del contenedor sélo afectara al CGI del usuario que se esté ejecutando. Las peticiones que no sean CGI se procesardn con el usuario especificado cn la directriz User. Como se puede ver, la directriz User no es completamente suprimible Por tiltimo, nunca configure la directriz User (0 bien Group) como root a menos que sepa perfectamente lo que esta haciendo y los peligros que ello entrafia. sintaxie: Grcup uaix-greup Predeterminado: Group #-1 Contexte: configuraciéa sevvider, servidor virtual La directriz Group se puede utilizar junto con User. Determina el grupo bajo el que se atenderdn las peticiones que reciba el servidor independiente. Para utilizarla, dicho servidor se tendra que ejecutar como root. A la directriz Group también se le puede asignar un niimero. Si desea conocer la relacién existente entre los nombres de los grupos y sus niimeros, consulte el archivo fete/group. Sintaxis: # asignele a las siguientes @ # las directrices aparecerian aqui son netstable (método que se puede usar para implementar varias pruebas varios médulos). Options Sintaxis: . © Include: se pueden utilizar los comandos SSI (Server Side Include). * IncludesNOEXEC: sc puede asignar una restriccién de comandos SST a Jas paginas de este tipo. Dichos comandos son #include y #exec. # Indexes: si se solicita la URL de un directorio y éste carece de Directory- Index, es decir, de un directorio, entonces el servidor mucstra una lista con el contenido de dicha carpeta. © SymLinkslfOwnerMatch: el servidor s6lo seguir los enlaces que perte- nezean al usuario que emite la solicitud. ‘+ MultiViews: permite negociar el contenido basfindose en el lenguaje de un documento, Utilice los signos + y - para activar o desactivar las distintas opciones. Va- mos a ver un ejemplo para tratar de aclarar el concepto. La configuracién que aparece a continuacién muestra dos contenedores de directorio que se encuen- tran en un mismo archivo, como por ejemplo access.cont: eDirectory swww/miclionLe/publicshidecs > options Indexes Hulriv: s/Direckory> ions Inc vades MDirectorys Al directorio (www/micliente/public/htdocs/ tan solo se le han asignado la opcisn Include. De todas formas, si la segunda seccién utilizase los signos + y - como sigue: ServerName www.miclieace.com OpLions -RxectG1 -includes eDirectory /umw/miclienta/publieskedoes/asi > options Includes a/Virtualest> Por ejemplo, el servidor principal permite que la ejecuci6n de los script CGI y de los comandos SSI al activar las opciones ExecCGlI e Includes. Sin embargo, el servidor virtual las desactiva al utilizar los argumentos anterio- res con el signo -. Por dltimo, el servidor virtual tiene una opcién especifica para el directorio /www/miclicntc/public/htdoes/ssi que permite la ejecucién de comandos SSI. Observe que Includes es la Gnica opcién que se utiliza en el directorio /www/micliente/public/htdoes/ssi. Como puede ver, la directriz Options utiliza los signos + y - seguidos de los valores que se tienen que agregar 0 el ar de La lista de opciones. Por otro lado, si dicha directriz no usa los signos + y -, entonces los valores especifi- cados sobreescribirin a los que aparezcan en las directrices Options anteriores. ResourceConfig Sintaxis: ResourceConfig nembre_archive Predetermisado: ResourevContig conf /srm.cont Penkexto: configuracién' servidor, servides victual Esta dircctriz es igual que AccessConfig. Si desea desactivar la carga pre- determinada del archivo conf/srm.conf, aiiada entonces esta linea en el fiche- ro httpd.conf: ResoureaContic /dev/nalL ServerAdmin Sintaxis: Serversdmin email Contexio: conf guracian servider, sarvider Esta directriz muestra la dircccién de correo electrénico con los mensajes de error que genera el servidor. Si tiene que trabajar con cierta cantidad de sitios Web virtuales, es posible que desee utilizar distintas direcciones de co- rreo electrénico para cada servidor virtual, de tal forma que sepa en todo mo- mento con qué servidor estd relacionado el problema. ae aul args ServerName ServerNane nombre de dominio valice confignracién seryidor, servider virzcal sintaxi Context La directriz ServerName es la encargada de definir el nombre del servidor. Cuando no se utiliza esta directriz, Apache trata de averiguar el nombre por medio de una peticién DNS que lanza durante el proceso de inicio. De todas formas, dependiendo de la configuracién DNS que se tenga, puede Megara desaconsejarse esta practica puesto que el servidor puede escoger un nombre poco apropiado, Por lo tanto, lo mejor es definir el nombre que se quiera uti- lizar. Asegirese de entrar un nombre completo de dominio en vez de un simple atajo. Por ejemplo, si desea que el nombre de su servidor sea wormhole.miem- presa.com, no deberfa configurar la directriz SeverName para que utilice wormhole. Lo correcto seria: Seevertame wormhole mienpresa.com ServerRoot Sintaxis: Serversoot director io-nowsre_archive La directriz ServerRoot se utiliza para definir el directorio en el que se en- cuentran los archivos del servidor. No la confunda con la directriz Docu- mentRoot que se utiliza para indicarle al servidor donde se encuentran los documentos Web. ServerRoot se utiliza para localizar los archivos de confi- guracién y registro. En la distribucidn estandar, en el directorio ServerRoot, encontrar los archivos conf, sm y los subdircctorios de registro. De todas formas se puede utilizar el parametro -d en la linet comandos para indicarle a Apache cui es el directorio ServerRoot. Obsérvese que AccessConfig y ResoureeConfig utilizan la directriz Server- Root para conocer la ubicacién de los archivos de configuracién. Por ejem- plo, si la configuracién de las directrices es: Root fuss flaca” shits scontig cont /access.cent nf form, cont entonces AccessContig y ResourceContig le indicaran al servidor que cargue los archivos /usr/local/httpd/cont/access.conf y /ust/local/hitpd/eont/srm.conf respectivamente. DefaultType Birtaxis: betauletype inue-Lype Predevurninaco: befauleType tex. ‘html contexte: carliguracién ser , servicer vircual, dizeckes Overtide: siternto Esta directriz se utiliza para establecer cl tipo de contenido predetermina- do. De esta forma, cuando Apache recibe una solicitud de un documento cuyo tipo se desconozca (en otras palabras, que el mapa MIME del servidor no puede precisar de qué se trata), utiliza el tipo predefinido. Por ejemplo, si se tiene un directorio en el que se guarden todos los archi- vos de texto que no tengan oxtensién, se puede utilizar la directriz Default Type dentro de un contenedor que scitale a dicha carpeta. En este ca- so, la configuraci6n de DefaultType a text/plain permitirfa que el servidor le indicase a la otra parte (cl explorador Web) que se tratan de archivos en texto plano. Aqui tiene un ejemplo: cbisweory fewwemisnpresa/pebsic/htde ataallivpe o aindhexs e/Di rect plaindaza> En este ejemplo, todos los archivos que se encuentran dentro del directo- tio www/miempresa/public/htdocs/plaindata/ se tratan como si fuescn de tex- to plano. Directrices para la configuraci6n de recursos y eficacia Estas directrices le permiten afinar el servidor Apache para obtener un rendimiento mayor y optimizar el control. Puede hacerlo de varias formas. Observe que con la mayoria de estas directrices hay que tener muy claro cual es el funcionamiento del sistema, en términos de sistema operativo, hardware, etc. Ademés, siempre es conveniente que le cche un vistazo a los manuales de su sistema operativo 0 a cualquier ayuda que le indique cuales son los limites de los recursos del sistema, cémo controlar las conexiones TCP/IP, etc. Las directrices de esta seccién se agrupan en subfunciones. Control de los procesos de Apache Las directrices que aparecen a continuacién se utilizan para controlar la forma en que sc cjecuta Apache dentro del sistema operativo. Ademas, utili- zéndolas podra controlar también la forma en que se utilizan los recursos del sistema. Por ejemplo, puede decidir cudntos subprocesos se ejecutardn en el sistema, o la cantidad de threads que utilizara Apache cuando trabaje con Windows. Ala hora de configurar estas directrices hay que tener presente los siguien- tes puntos: © Cuantos mas procesos ejecute, mayor carga tendré la CPU. © Cuantos més procesos ejecute, mayor cantidad de memoria RAM nece- sitard, * Cuantos mas procesos ejecute, més cantidad de recursos del sistema consumira (como por ejemplo descriptores de archivos, biiferes compar- tides, ctc.). Obviamente, cuantos mas procesos se ejecuten, tantas mis peticiones po- dra atender y mayor éxito tendré su sitio Web. De todas formas, la configu- raci6n de estas directrices se basa en una combinacién de experimentacisn, requisitos y recursos disponibles. ServerType Sintaxis: Server Predeterminac contexte: con ype inetd | standalone Servervype standalone quraciéa servidor La directriz ServerType le indica al sistema Unix cémo se ha de ejecutar el servidor Apache. Se pueden utilizar dos valores: inetd y standalone. Utitice el primero para ejecutar el servidor como un proceso del sistema Hamado -inetd. En este sistema, se inicia una nueva copia del servidor Apa- che para cada solicitud HTTP recil ida. Asi se aumenta la cantidad de trabajo del que se tiene que hacer cargo el sistema para atender una solicitud y el ren- dimiento obtenido no es que sca muy grande. De todas formas, inetd se leva utilizando bastante tiempo y dispone de varias opciones de seguridad (como Jos wrappers TCP). Son muchos los administradores de servidores de Internet que prefieren trabajar con este tipo de servicios, Para los sitios Web que no tengan demasiada densidad de trafico, la diferencia es minima. Utilice el valor standalone cuando quiera ejecutar un servidor independien- te en el que Apache se ejecute como un demonio. En otras palabras, un servi- dor Apache principal escucha las solicitudes de conexién que Megan a través de una serie de puertos y abre los subprocesos Apache para atender a tales peticiones; nunca atiende él mismo a una peticién HTTP. Los subprocess se ejecutan bajo los permisos correspondientes al ID especificado en las direc- trices User y Group. Para aprender mas sobre estas configuraciones conviene que consulte estos parémetros. Se recomienda su uso con los sitios Web cuya densidad de trafico sea elevada. StartServers Sintaxis: Servorryye mimero Preceterninado: SesyverTYpe § Contexta: corfiguracién servider La directriz ServerType sdlo se utiliza cuando el servidor Apache se cje- cuta en modo independiente, es decir, standalone. En otras palabras, para que esta directriz sea valida tendra que configurar la directriz ServerType como standalone. Esta directriz determina cl ntimero de subprocesos que podré crear el ser vidor Apache en el inicio. Obsérvese que el mimero de subprocesos que se va a utilizar durante cierta cantidad de tiempo se controla dinamicamente. El servidor Apache principal (cl demonio) abre nuevos subprocesos segin va haciendo falta. El nmero actual de procesos se controla a través de las direc- tricos MinSpareServers, MaxSpareServers y MaxClients. Como se puede ver tampoco se gana mucho modificando cl valor de este pardimetro. Cuando se ejecuta el servidor con Microsoft Windows, esta directriz deter- minara cl nimero total de subprocesas en ejecucién, Camo la versién de Apa- che para Windows es mullitarea, un proceso controla todas las solicitudes, El resto de procesos se reservan para cuando se apaguc el proceso principal. ThreadsPerChild Sinlexis: Theea: preéeterminuso: Thre erch! id rimere sdsberchild 52 Cortexto: configuracién servidor (Winéows} Conpatibs 1idad: sé°o com las versions apache 1.4 y wes con Bindows La versién de Apache para Windows 95/NT es un servidor multitarea, La directriz ThreadsPerChild le indica la cantidad de threads que puede utilizar. También se utiliza para determinar cl nimero maxima de concxiones que ad= mitira. Por lo tanto, conviene que este valor sea razonablemente alto para que se pueda atender la mayor cantidad de solicitudes posibles. SendBufferSize faut Fe ort iqueas Sintaxis: cont Esta directriz ajusta el tamano del bifer de envio TCP al nuimero de bytes determinado. En una red de alto rendimiento, al utilizar un ndmero de bytes elevado, se puede mejorar cl rendimiento del servidor. ListenBacklog 4axia: Mistenacklag trabajos_perdienres a versionss de ar Esta directriz le permite defenderse ante acciones que atenten contra la seguridad del sistema, como pueden ser los ataques de negacidn de servicio (DOS). Para ello se puede determinar la cantidad de trabajos pendicntes que esperardn a ser realizados. Si se encuentra que cstan bajo los efectos de un ataque DOS, tendra que incrementar el valor del argumento de esta directriz. En cualquier otro caso, déjelo como esta. TimeOut Sivtaxis: Limedut aivero Prosecerminado: Yimedut J0e Contexto: configuraciér servider Como ya sabe, la Red es un sistema cliente-servidor en el que Apache sc encarga de responder a las peticiones. Las peticiones (0 solicitudes) y sus res- puestas se transmitcn en forma de paquctes de datos. Apache tiene que saber qué cantidad de tiempo ha de esperar Ia recepcién de un paquete. ¥ esta di rectiva se encarga de determinar el tiempo de espera, midiéndolo en segundos. Con el valor del parametro de esta directriz se define la cantidad de segundos que esperara Apache antes de cortar la conexién. La configuracién predeter- minada permite un tiempo de espera de 300 segundos. Si trabaja en una red lenta, es posible que desee aumentar dicho tiempo de espera. El tiempo de espera se aplica a: Tiempo transcurrido hasta que se recibe la peticién GET. + Tiempo transcurrido entre la recepcién de los paquetes TCP correspon- dientes con una solicitud POST o PUT. * Tiempo transcurrido entre la confirmacién de 1a transmi quetes TCP de respuesta. jon de los pa- MaxClients Siataxis: MaxClients cimero peodererminads Conexte: conticuracion servidor Esta directriz limita cl némero de peticiones simultaneas de las que Apa- che se puede hacer cargo. Como Apache utiliza un subservidor para cada pe- tici6n, el némero de éstos que puede Hegar a utilizar a la vez influird en el rendimiento final del sistema. El valor predeterminado es el quc aparece en cl archivo httpd.h de la distribucién estandar de Apache. Deberia bastar para la mayoria de los sitios. pero la verdad es que lo considera limitado por las dos razones siguientes: los diseniadores de Apache no querian que el servidor col- gase el sistema rellenando alguna tabla del nucleo y, con este mimero, se ob- tiene una tabla de resultados lo suficientemente pequefia como para que se pueda leer. Si su sistema cuenta con un servidor de gran efectividad y dispone del ancho de banda suficiente, puede modificar este limite, que se encucntra en el archivo httpd.h y compilar el servidor de nuevo. Observe los siguientes estamentos. Cambie cl niimero 256 por otro més grande: fitadet HARD fdefine HARD; Fendt Entonces, {qué pasa cuando el niimero de solicitudes alcanza este limite? Bueno, pues que todas las que lleguen pasaran a un estado de espera hasta que el scrvidor pueda atenderlas. MaxRequestPerChild Sintaxis: NaxtequestPerchild ndere Predetermnado: MaxRequestPercaild 0 Conlexte: contiguracién servidor Apache abre un subproceso servidor para atender una peticién. De todas formas, un subservidor se puede hacer cargo de muchas peticiones. Dicho nGmero de peticiones lo define la directriz MaxRequestPerChild. Después de atender el nimero de solicitudes determinado por esta directriz, el subproceso se termina, Si cl valor de MaxRequestPerChild es 0, entonces cl proceso no expirard nunca, Si cree que hay librerfas en su sistema operative (como Solaris) que tienen cédigo de memoria, es posible que desee trabajar con el valor 0. Tam- bién puede definir un ciclo vital para los subprocesos y reducir de esta forma el consumo de memoria, Asi reducira la carga de su sistema y el servidor Apache dejard de estar tan ocupado. MaxSpareServers fs: MaxSparesez vee sninado: MaxSpare Conrexto: contignraciér ngmexo Esta directiva le permite ajustar el ntimero de subprocesos Apache para- dos que desea que haya en su servidor. Si el mimero de procesos detenidos supera al valor de la directriz MaxSpareServers, cntonces un proceso princi- pal se encargara de eliminar los cxcedentes. Unicamente habré que retocar este valor cuando se trabaje con sitios Web con mucho trafico, A menos que sepa lo que esta haciendo, mi consejo es que no modifique este valor. MinSpareServers Minspazeservers nimero ngpareservere 3 Centexto: configuracida servidor La directriz MinSpareServers determina ¢] nimero minimo de procesos en espera que habra en el servidor. Un proceso en espera es aquel que no se esté haciendo cargo de ninguna solicitud. Si el nimero de procesos en espera fue- se inferior que el determinado on esta directriz, un proceso principal se encar- garia de crear nuevos procesos a una velocidad de 1 por segundo. Unicamente habré que retocar este valor cuando se trabaje con sitios Web con mucho trafico. A menos que sepa lo que esta haciendo, mi conscjo es que no modifi- que este valor. Establecer conexiones persistentes Por medio de las directrices KeepAlive que se verdn en esta seccién puede hacer que su scrvidor Apache utilice conexiones persistentes de tal modo que una misma conexién TCP se pucda usar para efcctuar varias transacciones. Normalmente, cada peticién HTTP y su respuesta utiliza una conexidn distin- ta. Es decir, que cada vez, que el servidor recibe una solicitud, abre una co- nexién para recibirla y luego la cierra. Cuando genera la respuesta, abre una conexién TCP, la envia y luego la cierra, Al utilizar una misma conexién para efectuar varias transacciones se reduce el trabajo de abrir y cerrar conexiones TCP constantemente, con lo que s¢ mejora el rendimiento del sistema. De todas formas, para establecer una conexién persistente, tanto el servi- dor como el cliente tendran que ser capaces de trabajar con ellas. Los explo- radores Web mas populares, como Netscape Navigator y Microsoft Internet Explorer disponen de propiedades KeepAlive. Tenga en cuenta que no todas las transacciones pucdan aprovecharse de las ventajas que ofrecen las conexiones persistentes. Uno de los requisitos de este tipo de conexiones es que s¢ ha de conocer de antemano el tamafio de los recursos transmitidos. Por esta misma raz6n habra muchos seript CGI, co- mandos SSI y transmisiones que no podrin beneficiarse de este tipo de co- nexiones. KeepAlive Sinvaxis: (Apache 1.2) Keepslive on | Predeterminade: (Apache 1.2} seepalive On Contexto: configuracién servidor Compal iilidad: e610 disponible parz Apache 1.1 y posteriores Esta directriz le permite activar y desactivar el uso de las conexiones TCP persistentes. KeepAliveTimeout Sintaxis: teepaliveTinonu. segun erminaio: KeepAliveTimeo: Coutexco: cortiguracion » Si tiene activada la directriz KeepAlive (on) puede utilizar esta otra para limitar la cantidad de tiempo (medido en segundos) que Apache esperaré una peticién antes de cerrar la conexién. Una vez que se ha recibido, el valor de esta orden especifica el tiempo de caducidad. MaxKeepAliveRequests versiéa 1.2 La direetriz MaxKeepAliveRequests limita el ntimero de peticiones que se pueden efectuar por conexién mientras KeepAlive esta activada. Si el valor es 0 (cero), entonces no hay ningiin limite. Le recomiendo que para optimizar el rendimiento del servidor, utilice un ndmero elewado. Control de los recursos del sistema Apache es muy flexible ya que le permite controlar la cantidad de recursos de sistema (como reloj de la CPU y memoria) que va a consumir. Estas pro- piedades de control son realmente tiles ya que permiten mejorar el rendimien- to y efectividad del servidor Web. Algunos de los ataques que efectitan los piratas informaticos contra los servidores Web se hasan en el consumo de recursos del sistema. Consumen todos los recursos ¢ inutilizan el servidor. Apache dispone de una serie de directrices especialmente disefiadas para combatir este comportamiento. Las vemos a continuacién. RLimitCPU Sirkaxie: RLIWSCCPU BH ‘muxt [a | ‘max Pr ninace: Un stema operanive Contexco: conf guracién servidar, servider virtual mparitilidad: Gnicarerte digponiole 4 part’r aniliza as opciones predezerminacas de7 Esta directriz le permite controlar el uso que hace Apache de la CPU. Tie- tae dos parimetros. El primero limita la cantidad de recursos que se utilizarin con todos Jos procesos, mientras que el segundo limita el nimero maximo de recursos disponibles. Elevar este nimero indicarfa que cl servidor se esta eje- cutando como root o que esta en su fase de inicio. El segundo parémetro es opcional. Cada pardmetro tiene dos valores: « nes el mimcro de segundos por proceso. # maxes el nimero maximo de recursos que permite el sistema operativo. RLimitMEM iehaxis: twax' [oe | tmae] Precenerninase utiliza las one‘ones predeters ae sistoms operative Contexio: cenfiguracién veeviser, servidor viclu Corpatipisidas: “inieanente disscnibve a parsir de Aguche Esta directriz se utiliza para limitar la cantidad de memoria RAM que ul lizan los procesos de Apache. Tiene dos parimetros. El primero define un I mite para todos las procesos y el segundo uno para los recursos. Elevar este nidmero indicaria que el servidor sc esté ejecutando come root o que esta en su fase de inicio. El segundo parametro es opcional. Cada pardmetro tiene dos valores: * nes el ndmero de segundos por proceso. # max es el ndmero maximo de recursos que permite el sistema operativo. RLimitPROC Sirbawies kutmiveROC x tna’ [on | ‘max erminade: Ungec; aliliza las wes peodetorninadas Sel operat iver cont -gueaeién servider, servicer virtual coupatibiy dad: Gnicanenle disvonib-e 2 ou ede Avache 1.7 Esta directriz se utiliza para limitar cl ntimero de procesos simultaneos que puede haber por usuario. Tiene dos pardmetros. El primero define un lit mite para todos los procesos y el segundo uno para los recursos, Cada pa- rametro tiene dos valores: * nes el numero de segundos por proceso. max ¢s el némero maximo de recursos que permite el sistema operativo. Elevar este nimero indicaria que el servidor se esta ejecutando como root © que esta en su fase de inicio. ee cee Uso de médulos dinamicos Apache carga todos los médulos precompilados durante cl inicio. De to- das formas, dispone de un modulo dinémico de carga y descarga que en cier- tas ocasiones puede resultar de utilidad. Cuando usa las siguientes directrices del médulo dinamico, puede moditicar la lista de médulos activos sin tener que volver a compilar el servidor. ClearModuleList Sintaxig: CLearMogulet) Contexte: coatigurucisn servidor Conpat ipiligad: tinieamence disponible a partir ae Apache 1.2 Puede utilizar esta directriz para limpiar la lista de médulos actives con lo que podra utilizar el médulo dinamico. Para cargar los médulos se usa la di- reetriz AddModule. AddModule Sintaxis: AdgMedu-e médulo module . contexte: configuracién servidor Compas ibilidad: Unteamente 4isponible a partiz de Apache 1.2 Esta directriz se puede utilizar para activar cualquier médulo precompilado que esté desactivado. Es posible que el servidor tenga médulos lists para usarse pero que estén desactivados. Con esta directriz los activar, El servi- dor tiene una lista de médulos cargados de antemano, Para limpiarla se usa la directriz vista en la seccién anterior, ClearModuleList. A continuaciGn aiiadi- r4 los médulos que desee utilizar por medio de AddModule. Directrices de contenedores estandar En esta seccién veremos algunos contenedores estandar que forman parte de la base del servidor Apache. Estos contenedores se utilizan para aplicar un grupo de directrices a un directorio, archivo o direccién determinada. No puede mezclar aleatoriamente dichos contenedores. Las guias genera- les de uso son las siguientes: * Los contenedores y se utilizan para especificar di- rectrices relacionadas con abjetos del sistema como archivos y directo- rios. No se puede utilizar en el archivo .htaccess porque el contenido de dicho fichero se aplica tinicamente al directorio en el que se encuentra. * Utilice el contenedor para marcar objetos URL. No se pue- de usar dentro del archivo -htaccess. © Alutilizar una versién regular de una directriz. (por ejemplo, ), siga las mismas reglas que para la versién regular. Sdlo se usarén las versiones regulares cuando esté completamente seguro de que la expres Sintaxis: vonrexte: sonfigur. y se utilizan para encerrar un grupo de directri- ces que tnicamente se aplicarin al directorio especificado y a todos sus sub- ectorios. Cualquier directriz que se pueda utilizar con un directorio podra incluirse en este conjunto. El argumento podra ser et nombre completo de un path. Por ejemplo: Options #irdexes Directory> Aqui, el directorio Awww/miempresa/public/htdocs/download se utiliza como un path completo. Con este ejemplo se activa la indexacién de dicho directorio. También se pueden utilizar comodines para especificar el path. Por ejempl aQlewetory Awawsn emp) fardocs {down loa?» Uptions +indexcs Aqui, ? sustituye a cualquier cardcter; es mas, se mareardn los directorios tales como Avww/miempresa/public/htdocs/download y www/miempresa/pu- blic/htdocs/downloaD. También se puede utilizar * (asterisco) para sustituir a cualquier secuencia de caracteres que no sean Ja barra inclinada /. También es posible utilizar expresiones regulares ampliadas, en las que aparezca el simbolo ~. Por ejemplo: con ella marcaria cualquier subdirectario de /www/. Observe que la expresién regular basada en los contenedores no se aplicard hasta que se hayan utilizado todas las expresiones normales (es decir, las que no tienen expresiones regulares) de los contenedores y del archivo -htaccess En este caso se probarn las expresiones regulares para ver cl orden en el que aparccen en el archivo de configuracién Tenga en cuenta que si especifica mas de un contenedor para el mismo directorio, anicamente se aplicurd el mas restrictive. Por ejemplo: eDizeslory fume Al lewoverride None ebirectory ~ “/wexs/tiempresa/peb!ie/hidoess**> Allowoverrié e/Dinestery> lestnco, De acuerdo con esto, cuando se recibe una peticin para el archivo /www/ miempresa/public/htdocs/algdnarchivo.cvs, Apache desactiva el control de acceso para ¢] directorio jwww configurado en el archivo .htaceess y lo acti va para /www/miempresa/public/htdocs. También acepta cualquier directriz FilcInfo como Default Type, procedente del archivo /www/miempresa/public/ htdocs/.htacces. Sintaxia: ... , con la salvedad de que como argumento toma una expresién regular y no necesita el cardcter ~. y se utilizan para englobar un grupo de directrices que inicamente se aplicaran al directorio nombrado y a todos sus subdireetorios. Por ejemplo: ym empresa /puplic marcaria todos los subdirectorios de /www/miempresa/public/htdacs cuyos nombres tuviesen exactamente ocho letras maytisculas; por Jo tanto, /www/ miempresa/publie/htdocs/AAAABBBB/ cumpliria con lo expresado en la di- rectriz. de Apache 1.2 Comparibilidus: ¢récamente disponible a vac Para controlar el acceso que se tiene a partir de los nombres de ficheros se utiliza esta directriz. Las secciones se procesan en el mismo orden en que aparecen en el archivo de configuracién, después de que se lean las sec- ciones y los archivos -htaccess, pero antes de . El

También podría gustarte