Vous êtes sur la page 1sur 19

Curso Mentor Apache

Apache

Unidad 1: Introduccin a Apache

Enestecaptuloaprenders:
elconceptodeservidorwebysusfunciones.
elorigenyevolucindelservidorwebApache2ysuscaractersticasmasrelevantes.
elprotocoloHTTPcomoconjuntodenormasqueregulanelmecanismodeintercambiode
mensajesentreelservidorwebyelclienteweb(navegador).
autilizarlostiposMIMEparalainterpretacindelcontenidodelosarchivostransferidos
entreservidorycliente.
Materialcomplementario:

1 de 31

1.

Actividadesdelaunidad.ArchivoU1_Actividades.pdf

2.

Mapaconceptualdelcaptulo.ArchivoU1_mapaconceptual.png

3.

Glosariocompletodelcurso.Archivoglosario.pdf

Curso Mentor Apache

Introduccin
Objetivos
Conocerelconceptodeservidorwebyculessonsusfunciones.
Conocerlosservidoreswebmasimportantesy/omasutilizados.
EstudiarlascaractersticasmasrelevantesdelservidorwebApache.
ConocerelprotocoloHTTP,susfuncionesydiferentesversiones.
ConocerlostiposMIMEysusfunciones.

Conocimientos previos
Eslaprimeraunidady,porlotanto,norequieredelalumnoningnrequisitoprevio.nicamentetenerladisponibilidadnecesaria
paraadquirirlosconocimientostericosqueconstituirnlabasedetodoelcurso.
Aunquelaunidadparezcamuydensayconmuchainformacinvariada,esimportantequeseasimilecorrectamente.

Contenidos
Unidad1:IntroduccinaApache
A. Ubuntu y Windows
1. Quesunservidorweb?
1. ObjetivoyEsquemadefuncionamiento
2. Accesoalservidorweb
3. Comparativaentreservidoresweb
4. IntroduccinaApache2
5. Unpocodehistoria
6. CaractersticasgeneralesdelservidorApache2
7. Apache:servidorweb
8. ElprotocoloHTTP
9. TiposMIME
B. Fin de unidad
1.
2.
3.
4.

2 de 31

Glosario
Fuentesdeinformacin
Resumenfinal
Autoevaluacin

Curso Mentor Apache

Qu es un servidor web?
Definicin

Lawikipediadefineelservidorwebcomo:
UnprogramaqueimplementaelprotocoloHTTP(hypertexttransferprotocol).Esteprotocoloestdiseadoparatransferirloque
llamamos hipertextos, pginas web o pginas HTML (hypertext markup language): textos complejos con enlaces, figuras,
formularios,botonesyobjetosincrustadoscomoanimacionesoreproductoresdesonidos.

Arquitectura del servidor web


Laarquitecturautilizadaescliente/servidor,esdecir,elequipoclientehaceunasolicitudopeticinalequiposervidor,ysteatiende
dichasolicitud.
Enelequipoclienteseejecutaunaaplicacinllamada'navegadoroclienteweb'que:
sirvedeinterfazconelusuario:atiendesuspeticiones,muestralosresultadosdelasconsultasyproporcionaalusuario
unconjuntodeherramientasquefacilitansucomunicacinconelservidor.
secomunicaconelservidorweb:transmitelaspeticionesdelosusuarios.
Enelequiposervidorlanicatareaes:
atenderlaspeticionesrecibidasdesdelosnavegadoresoclienteswebyhacerlodeformaeficienteysegura.Estees
elcasodelosservidoreswebsegurosquesolicitanunnombredeusuarioyunacontraseaparapermitirelaccesosloa
usuariosregistradosyportanto,conpermisoparavisualizarlapgina/s.

Unpasomasenlaseguridadproporcionadaporlosservidoreswebsebasaenelestablecimientodeconexionescifradasconel
navegador.Esteniveldeseguridadesbsico,porejemplo,paralastransaccionescomercialesrealizadasdesdeInternet.

Saber ms ... sobre la arquitectura de un servidor web


Busca en la web informacin general sobre servidores web.

3 de 31

Curso Mentor Apache

Objetivo y Esquema
Objetivo del servidor web
Elobjetivodeunservidorwebesservirosuministrarpginaswebalosclienteswebonavegadoresquelassolicitan.

Ejemplo:
1. UnusuariodesdeelnavegadorFirefox,alhacer'click'sobreunenlaceaunapginawebestenviandounasolicitudal
servidorwebquealojadichapginaparaqueselamuestre(esosellamaservirlapgina).
2. Elservidorwebsilaencuentralaenvaysinolaencuentradevuelvealclienteunmensajedeerror.
3. ElclientecuandorecibelapginawebinterpretaelcdigoHTMLmostrandolasfuentes,colores,imgenesquela
componen,etc,deformacorrecta.

Pero el servidor web, adems de servir pginas web HTML estticas, tambin permite la ejecucin de una serie scripts en
diferenteslenguajesdeprogramacin,queproporcionandinamismoalaspginasweb.Estoslenguajesson:PHP,CGI,appletsde
Java,etc.

Esquema
Lafigurasiguientemuestraelesquemadefuncionamientodeunservidorweb.
Enellaobservamoslostreselementosbsicosquecomponenlaspeticioneswebdinmicas:
elclientequehacelapeticin
elservidorqueatiendelapeticin
ylosdatossolicitadosmediantelapeticin

4 de 31

Curso Mentor Apache

Saber ms ... sobre painas web


1. Para conocer mejor el concepto de pgina web puedes acceder a http://es.wikipedia.org/
2.Hayalgunadiferenciaentrepginawebysitioweb?
Enestareferenciahttp://www.masadelante.com/faqs/sitio-webpuedescomprobarladiferenciaentreambosconceptos.

5 de 31

Curso Mentor Apache

Acceso al servidor web


Acceso desde un navegador web
Paraqueelnavegadorpuedallegaralservidorweb(yaseaenunaredlocaloenInternet)elservidordebetenerasignadauna
direccinIP(InternetProtocol)nicaqueidentificaelequipoenlared.
Cuandoelnavegadorhaceunapeticindepginaalservidorwebutilizaunnombrequeidentificaalservidoryestasolicitudse
transmiteaunservidorDNS.steresuelveelnombreydevuelveladireccinIPquecorrespondealnombre.
Lasolicituddelnavegador,entonces,seencaminaalservidorwebcorrecto.
La informacin que el usuario proporciona al navegador para conectar con un servidor web se llama URL (Uniform Resource
Locators).
UnaURLdesolicituddeunrecursoconstade:
1.
2.
3.
4.
5.

Protocoloautilizar:http,https,ftp,ftps,...
//:hacelasvecesdeseparador
Servidor:esladireccinIPoelnombredelservidor(FQDN)quecontieneelrecurso.
Ruta_al_recurso:directorioysubdirectoriosdelsitiowebdondeestubicadoelrecurso
Recurso:recursoalquesequiereacceder.

PorlotantounaURLindicalaformadeaccederaunrecursoutilizandoundeterminadoprotocolodecomunicacin.
Porejemplo:laURLhttp://recursostic.educacion.es/observatorio/web/es/home

Saber ms ... sobre algunos trminos


FQDN (Fully Qualified Domain Name, Nombrededominiototalmentecualificado) es un nombre que incluye el nombre del equipo y
el nombre del dominio asociado a esa mquina

6 de 31

Curso Mentor Apache

Comparativa entre servidores web


Comparativa
Existenmultituddeservidoresweb,perolosdosmasconocidoseimportantesporsusnivelesdeimplantacinsonApacheeIIS
(InternetInformationService).
Normalmente se asocia Apache a entornos Unix/GNU Linux (existen versiones de Apache para Windows) y IIS para entornos
Windows(noexistenversionesparaGNULinux).
Sinentrarendetallesdelascaractersticastcnicassepuededecirque:

Apache

IIS

Essoftwarelibre

Essoftwarepropietario(Microsoft)

Esmodular

Esmodularapartirdelaversin6

UtilizadoenlosgrandesservidoresrazdeInternet

Utilizadoenentornoscorporativos

Ejecutado desde un usuario diferente del superusuario root Ejecutadodesdeelpropiousuarioadministradordelsistema


delsistema
hastalaversin6
LaimplantacindecadaunodeellossepuedeverenlafiguradelepgrafeEvolucin.
ComprobarcomoelporcentajedeutilizacindeApacheesbastantesuperioraldeIIS.

Evolucin
Lafigurasiguientemuestralaimplantacindediferentesservidoreswebysuevolucineneltiempo.

7 de 31

Developer February 2011

Percent March 2011

Percent Change

Apache

60.10

60.31

171,195,554

179,720,332

0.21

Curso Mentor Apache

Microsoft

57,084,126

20.04

57,644,692

19.34

-0.70

Google

14,454,484

5.07

15,161,530

5.09

0.01

1,953,966

0.69

1,796,471

0.60

-0.08

Lighttpd

Esta informacin actualizada, incluida la imagen, se puede obtener dehttp://news.netcraft.com/archives


/web_server_survey.html

8 de 31

Curso Mentor Apache

Introduccin a Apache2
Qu es Apache?
ElservidorHTTPApache2esunservidorwebdesoftwarelibredesarrolladoporlaApacheSoftwareFoundation
(ASF).Elproductoobtenidodeesteproyectoesunservidordecdigofuentecompleto,descargableygratuito.
Lapginawebdelproyectoeswww.apache.org.
Apache2esrobustoyconunciclodedesarrollomuyrpidograciasalagrancantidaddecolaboradoresvoluntariosde
quedispone.
Estambinunservidorestable,eficiente,extensibleymultiplataforma.
Estable:esunaconsecuenciadesuprobadarobustezqueimpidecadasocambiosenelservidorinesperados.
Flexible y eficiente:escapazde trabajarcon elestndarHTTP/1.1 (RFC2616)ycon la mayorparte de las
extensioneswebqueexistenenlaactualidad,comosonlosmdulosPHP,SSL,CGI,SSI,proxy,...
Extensible:disponedegrancantidaddemdulosqueamplansufuncionalidad.
MultiplataformayaqueestdisponibleparadiferentesplataformascomoGNU/Linux,Windows,MacOS.
Desdeelao1996eselservidormsutilizadoenInternetyeselutilizadoenlossistemasGNU/Linux.Enconcreto,a
fechadeMarzode2011msdel60%delossitioswebdeInternetutilizanApache.

Busca el significado de los trminos...


SSL (Secure Sockets Layer)
SSI (Server Side Includes)

9 de 31

Curso Mentor Apache

Un poco de historia
Origen de Apache
En los comienzos de Internet hablar de 'servicio web' se limitaba a la publicacin de pginas en formato HTML
utilizandoelprotocoloHTTPsobreredesTCTP/IP.
Al poco tiempo de la aparicin de la Web un grupo de personas del Centro Nacional de Actividades de
Supercomputacin(NationalCenterforSupercomputingActivities,NCSA)delaUniversidaddeIllinois,creunservidor
web(HTTPdNCSA)quefueelmsutilizadohasta1994.Suprincipaldesarrollador,RobMcCool,abandonelNCSAy
elproyecto.
Peroapartirdeaquelmomentovarioswebmasterscomenzaronadesarrollardiferentes'parches'paraelcdigofuente
deesteservidorymedianteelcorreoelectrnicosincronizabansusaportaciones.Deestaformaaparecielproyecto
Apache,cuyonombresedebea:
APAtCHyserver

La primeraversin que aparecede Apacheesla 0.6en Abrilde 1995,que tom como puntode partidalaversin
httpd1.3deNCSA.
El proyecto evolucion muy rpidamente y en l tambin colaboraron desarrolladores de NCSA. La versin 1.0
apareciendiciembrede1995.YenunaopasaserelservidorwebmsutilizadoenInternetanivelmundial.
En 1998 se lleg a un acuerdo con IBM que permiti que Apache funcionara tambin en plataformas Windows
convirtindoseasenunaalternativaalservidorIIS(InternetInformationServer).
Enestosmomentosseesttrabajandoconversiones2.2.X,aunquetodavamuchosservidoreswebenproduccin
utilizanlaltimaversinmsextendidaqueesla1.3.33.LaltimaversindeApacheesla2.2.17(Abril2011).
Serecomiendautilizarlaversin2.2yaqueincluyenuevasfuncionalidades(http://httpd.apache.org/docs/2.2/es/). La
pginacorrespondientealadocumentacinencastellanoeslaindicada.

Licencia de Apache
RespectoalalicenciadeApache2estndisponiblessustrminosenlaURLhttp://httpd.apache.org/docs/2.2/en/license.html.
Enresumensepuededecirque,lalicencia:
Permite:
Descargar y usar libremente el software de Apache2, total o parcialmente, de forma personal, desde la empresa con
objetivosinternosocomerciales.
UtilizarelsoftwaredeApache2enpaquetesodistribucionesquecreeelusuario.
Prohibe:
RedistribuirpartesdelsoftwareincluidoenApache2sinelpermisoadecuado.
Requiere:
IncluirunacopiadelalicenciaencualquierredistribucinqueelusuariopuedahacerqueincluyaelsoftwaredeApache2.
DecirclaramentequeApachepertenecealaASF(ApacheSoftwareFoundation)encualquierdistribucinqueincluyael
softwaredeApache.
Norequiere:
Incluir los fuentes del software de Apache propiamente, o de cualquier modificacin que el usuario haga sobre el, en
cualquierdistribucinenelquepuedaserincluido.

10 de 31

Curso Mentor Apache


EnviarloscambiosqueelusuariohacealsoftwarealaApacheSoftwareFoundation.

11 de 31

Curso Mentor Apache

Caractersticas generales del servidor Apache2


Caractersticas
Incluimos un resumen de las caractersticas generales del servidor Apache2. Es posible que de muchas de ellas ahora no se
entiendasusignificado,peroalolargodelcursoseirn'descubriendo'.
1.CumpleelestndarHTTP/1.1
NuevaversindelprotocoloHTTPqueampliasufuncionalidadsegnsedetallaenesta
unidad.
2.Configurableyextensiblemediantemdulos
ExistegrancantidaddemdulosdisponiblesparaApache2ypermitelacreacinde
nuevosmdulosporpartedeusuariosprogramadores.EnlaUnidad4sehabla
extensamenteacercadelosmdulos.
3.Proporcionaelcdigofuenteconlicenciasinrestricciones.
Esgratuito,peroantetodoescdigofuentelibre,locualpermitesaberentodo
momentoquestamosinstalando.
4.Multiplataforma
ExistenversionestantoparaWindowscomoparaGNU/Linux.Elcursocontemplalas
plataformasWindows7yGNU/LinuxUbuntu.
5.Continuaactualizacinydesarrollo.
Ungrupodedesarrolladoresestcontinuamenterevisandoycorrigiendotodoslosfallos
deseguridadygeneralesdelaherramientaquevansurgiendoentreversiones.
6.BasesdedatosDBMparaautenticacindeusuarios.
Permitenlaproteccindedocumentosmediantecontraseasparaunagrancantidadde
usuarios.
7.Permitecrearpginaswebprotegidas
Medianteconstraseasconunnmerograndedeusuariosautorizados,sinsobrecargar
elservidor.
8.Permitepersonalizarlasrespuestasaerroresyproblemasdelservidor.
9.MltiplesdirectivasDirectoryIndex
Ejemplo: DirectoryIndex index.html index.cgi
que indica al servidor que debe enviar index.html o ejecutar index.cgi cuando se
accedaaunaURLqueseaundirectorio.
10.SinlmitefijosobreelnmerodeAliasyredirecciones
Puedenserdeclaradasenlosarchivosdeconfiguracin.
11.Negociacindecontenido
El servidor proporciona a los clientes web de diferentes tipos los documentos con el
mejorniveldecalidadqueestosclienteswebpuedensoportar.
12.Hostsvirtualestambinllamadosservidoresmulti-alojados.
Esto permite al servidor distinguir entre peticiones hechas a diferentes direcciones
IP/:puerto nombres (mapeados a la misma mquina). En la Unidad 5 se habla
extensamenteacercadeloshostsvirtuales.

12 de 31

Curso Mentor Apache


13.Archivoslogsconfigurables
SepuedeconfigurarApache2paragenerarlogsenelformatoquesequiera.

13 de 31

Curso Mentor Apache

Actividades
Actividad 1.1
Quediferenciahayentresoftwarelibreysoftwaregratuito?
Esimportantediferenciarambostrminos.
Software libre (Free Software) es un software que se publica bajo la licencia GPL (General Public Licence) y debe cumplir los
siguientesrequisitos:
Poderejecutarloconcualquierpropsito.
Podercopiarloydistribuirlo.
Podermodificarloparaqueseadapteatusnecesidadesolasdeuntercero.
Podermejorarloypublicarlasmejorasparaayudaralacomunidad.
Ytodoestosiempreycuandonoseviolelalicencia,quedicequesepuedecopiar,distribuirymodificarsiemprequeserespetela
autoradelaversinoriginaldelaobra.
Porelsoftwarelibressepuedecobrar.Muchasempresaslohacen,comoRed-Hat,IBM,...EltminoFreehacereferenciaaesas
libertadesquehemosmencionadonoasugratuidad.
Masinformacinenhttp://www.fsf.org/

Software gratuito (llamado normalmente Freeware) puede ser distribuido comercialmentey puede incluir en ocasiones el cdigo
fuente. Pero este tipo de software no es libre en el mismo sentido que lo es el software libre propiamente, a menos que se
garanticentodaslaslibertades.
Existenmuchasmodalidadesdefreeware.Enhttp://www.desarrolloweb.com/articulos/2460.phphayunadescripcindealgunasde
ellas.
Para completar la actividad puedes buscar en la web definiciones para Software privativo, Open Source y Shareware.

14 de 31

Curso Mentor Apache

Apache: servidor web


Tipos de contenidos
Apacheproporcionacontenidosalclientewebonavegadorcomo:
Pginasestticas:eselmodomsbsicoyantiguo,perotambineselusomsgeneralizadoquesehacedeunservidor
web.DeestaformasetransfierenarchivosHTML,imgenes,etcynoserequiereunservidormuypotenteenloqueal
hardwareserefiere.
Pginasdinmicas:lainformacinquemuestranlaspginasquesirveApachecambiacontinuamenteyaqueseobtienea
partirdeconsultasabasesdedatosuotrasfuentesdedatos.Sonpginasconcontenidodinmico,cambiante.

Apachefacilitalageneracindeestetipodecontenidosyaque:
1. DisponedesoportedelprotocoloHTTP/1.1yademsmantienelacompatibilidadconHTTP/1.0.
2. Permite la ejecucin de scripts CGI (Common Gateway Interface) que son programas externos que se llaman desde el
propioservidorcuandounapginalonecesita.
3. ElCGIrecibeinformacindesdeelservidorygeneracomosalidaunapginawebdinmicaquesevisualizaenelcliente
web. Este script puede escribirse en cualquier lenguaje de programacin siempre que siga las reglas del interfaz CGI.
NormalmenteseutilizaPerl.Estetipodemecanismoyanoseutilizaprcticamenteysedesaconsejasuusoyaquelanza
unprocesoexternoalservidorwebporcadapeticindelclienteyseralentiza.Ensulugarseestnutilizandolosservlets.
4. Permite la creacin de hosts virtuales y de esa forma atender varios sitios web en distintos dominios desde la misma
mquina.
5. Permiterestringirrecursosadeterminadosusuariosogruposdistintosdelosdelsistema.
6. Permitelautilizacindemdulos,comoPHP ymod_perl,parasustituirlafuncionalidaddelosCGIs.Estosmdulosal
estarincluidosenApachenorequierenlaejecucindeunnuevoprocesoporcadapeticin.
7. ConsoporteparaSSL(SecureSocketsLayer)quepermiteencriptacindedatosyasaseguralaprivacidadyfiabilidadde
lacomunicacinweb.Utilizacriptografaasimtricaycertificadosdigitalesparaintercambiarunaclavedesesinsimtrica.
8. Servlets y JSP en Java. Esta opcin se utiliza en servidores de aplicaciones como Tomcat, Jboss, Oracle IAS,
WebSpheredeIBMoBEAWebLogic.Suventajaeslaescalabilidadylaportabilidad,yaquesepuededesarrollarenJavay
luegosepuedeejecutarencualquiermquinavirtualcompatible.

Arquitectura en capas
Unmodelomuyutilizadoenlaactualidadeseldelaarquitecturaencapas.Unaarquitecturaentrescapasutilizaunacapa:
1. depresentacinqueserlainterfazgrficaconlaqueinteractaelusuario.
2. paraelservidordeaplicacionesqueindicarcmoseejecutanlosprocesos(modelo).
3. paraguardarlosdatos(servidordebasesdedatos).

Estemodeloencapascontrastaconelmodeloclsicoenelquesloexisteunservidorwebyunclientewebonavegador.

15 de 31

Curso Mentor Apache

Lafiguraanteriormuestraelmodelodeservidorwebentrescapas.
Masinformacinsobrelaarquitecturaentrescapasenwww.mhproject.org.

Qu es un servlet?
SegnlaWikipedia(http://es.wikipedia.org/wiki/Java_Servlet)losservletssonobjetosquecorrendentrodelcontexto
deunservidorwebyextiendensufuncionalidad.Porejemplo,Tomcatsloesuncontenedordeservlets.
LosservletsseutilizanparamanejarpeticionesdeclienteHTTP.
Por ejemplo, tener un servlet procesando datos enviados mediante un formulario HTML con datos relativos a una
compraelectrnica.Esteservletformarapartedeunsistemadepagoson-linequeaccederaaunabasededatosde
productos.
Unservletesunprogramaqueseejecutaenunservidorwebynotieneinterfazgrfico.
Elusomscomndelosservletsesgenerarpginaswebdeformadinmicaapartirdelosparmetrosdelapeticin
queenveelnavegadorweb.
Otrousodelosservletsesreenviarpeticionesaotrosservidoresyservlets.
Esimportanteconocerladiferenciaentreservletyportlet.

16 de 31

Curso Mentor Apache

Actividades
Actividad 1.2
Diferenciaentreservletyportlet
Unservletesunprogramaqueseejecutaenunservidorweb. Elusomscomndelosservletsesgenerarpginaswebdeforma
dinmicaapartirdelosparmetrosdelapeticinqueenveelnavegadorweb.
LosservletssepuedenconsiderarquesonherederosdelosantiguosCGIs.Atiendenpeticionesdeuncliente.Porejemplo,un
servletpuedeserelresponsabledetomarlosdatosdeunformularioHTMLyenviarlosaunabasededatosparasuactualizacin.
LosportletssoncomponenteswebbasadosenJavaqueprocesanpeticionesygenerancontenidodinmico.Losportalesusan
portletscomocomponentesdeinterfazdeusuarioqueproveendeunacapadepresentacinalossistemasdeinformacin.
Lassimilitudesentrelosportletsylosservletsson:
LosportletsyservletssoncomponenteswebdeJ2EE.
Ambossonmanejadosporcontenedores,quecontrolansuciclodevidayinteraccin.
Cadaunogeneracontenidodinmicosiguiendolaestructurapeticin/respuesta.
Lasdiferenciasentreellossonlassiguientes:
Losportletsgeneranfragmentosdecdigomientrasquelosservletsgenerandocumentoscompletos.
Adiferenciadelosservlets,losportletsnovinculandirectamentealURL.
Losportletstienenunesquemadepeticinmascomplejo,condostiposdepeticin:ActionyRender.
Losportletsseadhierenalaestandarizacindeunconjuntodeestadosymodosquedefinensucontextodefuncionamiento
ylasreglasderenderizacin.
Ademslosportletspuedenhacerotrascosasquenolopuedenhacerlosservlets,como:
Losportletstieneunmecanismomuchomssofisticadoparaaccederyguardarlainformacindelaconfiguracin.
Losportletstienenaccesoalainformacindelosperfilesdelosusuariosmsalldelainformacinbsicayelrol
proporcionadoenlaespecificacindelservlet.
Losportletstienendosformasdiferentesparaguardarobjetosdentrodelasesin.
Algunascaractersticasquenotienelosportletsson:
Losportletsnopuedenalterarelencabezadohttpofijarlacodificacindelarespuesta.
NopuedenaccederalaURLqueelclienteutilizparainiciarlapeticinenelportal.
Mas informacin en:
http://150.185.75.30/atiwiki/index.php/PORTLETS
http://es.wikipedia.org/wiki/Java_Servlet

17 de 31