Escolar Documentos
Profissional Documentos
Cultura Documentos
ElservidorHTTPApacheesunexcelenteyestableservidordeHTTPyHTTPS.Esmultiplataformaydispone
deunaenormecantidaddemdulosquenospermitenextendersusfuncionalidades.
Enestecursoaprenderemosainstalarloyconfigurarloparamontarnuestrosservidoresconmltiplesdominios,
subdominios,proxysreversos...
EsrecomendableconectaralsistemaantesdeiniciarelcursodeApacheparaquepodamosindicartequecaptulos
hasledo,guardartuspuntuacionesenelcuestionarioymostrartetuprogreso....
CaptulosCursodeApache:
1.
ApacheHTTPServer
ApacheHTTPServeresunservidorHTTP(depginasweb)decdigoabiertoqueenlosltimosaossehaconvertidoen
elmas...
1.1.
Instalacindeapache2enwindows
Enesteartculoosexplicarcmoinstalarlaversin2.0.48delservidorHTTPApacheenunamaquinaenwindowspara
que...
1.2.
InstalaciondeApacheenLinux
EnesteartculoaprenderemosacompilareinstalarApacheenunamquinaLinux,parahacerlo,nuestramquinadeber
tener...
2.
Iniciar,reiniciarypararApache
ElarchivoejecutabledelservidorHTTPdeApacheeshttpdyseencuentraenelsubdirectriobindeldirectriode
instalacin,...
3.
ArchivosdeconfiguraciondeApache
ConfigurarunservidorApachenoesunatareaextremadamentecomplicada,puestoquegeneralmentenossersuficiente
cambiar...
4.
DirectivasdeconfiguracindeApache
UnadirectivadeconfiguraciondeApacheesunapalabraqueindicaqueparamertodeconfiguracinqueremosmodificar,
podemos...
5.
SeccionesdeconfiguracindeApache
LasdirectivasqueescribimosenlosficherosdeconfiguracindeApacheseaplicanatodaslaspginasdelservidor,para...
5.1.
DirectoryyDirectoryMatch
UtilizamoslasdirectivasdeApache<Directory>y</Directory>o<DirectoryMatch>y</DirectoryMatch>paradelimitarun...
5.2.
FilesyFilesMatch
UtilizamoslasdirectivasdeApache<Files>y</Files>o<FilesMatch>y</FilesMatch>paradelimitarunconjuntode
directivas...
5.3.
LocationyLocationMatch
UtilizamoslasdirectivasdeApache<Location>y</location>o<LocationMatch>y</LocationMatch>paradelimitarun
conjunto...
ApacheHTTPServer
ApacheHTTPServeresunservidorHTTP(depginasweb)decdigoabiertoqueenlosltimosaosseha
convertidoenelmaspopularconun70%delacuotademercado.PuedeinstalarseenLinux,Novell,Unixy
Windows.
Inicialmente,elservidorApache,aparececomoparcheparaelpopular
servidorNCSAHTTPd,peroenlaactualidadelcodigohasido
reescritoporcompleto.
Tabladecontenido
Estructura
Instalacin
Configuracin
Estructura
ElservidorApacheestconfiguradopormdulos,algunosdeellos
vieneninstaladospordefectoyotroslosdeberemosinstalarsi
queremosusarlos.
Instalacin
Laformadeinstalarapachedependerdelsistemaoperativosobreelcualqueremosquefuncione,enotrosartculos
podemosvercmoinstalarloenLinux,Windows...
Configuracin
ElservidorApacheesunservidormuycompletoyademstieneungrannmerodeopcionesdiferentesquepueden
interesarnos,enfuturasentregasdeestecursoveremosdondepodemosencontrarlosarchivosdeconfiguracindel
apacheycomodebemosmanipularlos
Instalacindeapache2enwindows
Enesteartculoosexplicarcmoinstalarlaversin2.0.48delservidorHTTPApacheenunamaquinaenwindows
paraquepodaisprobarvuestraspginasdesdehttp://localhost/,enproximosarticulososcomentarecmoinstalar
PHPyinstalarMySQLenesteservidor.
Peseaqueenelartculoseutilizalaversin2.0.48deApache,esrecomendabledescargarlaltimaversin
disponibleenlapginadelaFundacinApache.Unavezhayamosdescargadoelinstaladorparawindows,
ejecutaremoselarchivodescargadoynosaparecerunapantalladebienvenidaenlaquepulsaremoselbotnnext.
Alpulsaresebotnnosaparecerunapantallaenlaquesenospedirqueaceptemoslascondicionesdelicencia,
seleccionaremoslaopcinIacceptthetermsinthelicenseagreementypulsaremoselbotnNext,entoncesnos
aparecerunapantallaconinformacinenlaquepulsaremosNextdenuevoparaaccederalapantallade
informaciondelservidorquerellenaremosdelasiguientemanera:
Unavezrellenadoslosdatos,pulsaremosNextparacontinuarlainstalacindelservidor,ahoraseleccionaremos
TypicalenlapantallatipodeinstalacinydespusdepulsarotravezelbotnNext,dejaremoselvalorpordefecto
(c:\ArchivosdePrograma\ApacheGroup)enlaventanacarpetadedestino,ahorapulsaremosNextporltimavez.
Finalmenteelinstaladoryaestarapreparadoparainstalar,ydespuesdecerraraquellosprogramasquepuedan
provocarerroresenlainstalacin,pulsaremoselbotnInstallparaempezarelprocesodecpiadearchivos.
Cuandoacabelacargadearchivos,veremosunapantallaquenosinformaraquelainstalacinhasidocompletaday
enlaquepulsaremosfinish.
Apartirdeestemomentoyatendremosnuestroservidorhabilitado,ypodremosvereliconode Apache2en
nuestrabarradetareas,desdedondepodremospararyreanudarelservicio.
Paramostrarpginas,tendremosqueguardarlasenlacarpetaC:\Archivosdeprograma\Apache
Group\Apache2\htdocsdenuestroordenador,ypodremosaccederaellasdesdeelnavegadordenuestroordenador
usandohttp://localhost/odesdecualquierordenadordesdehttp://tu_direccion_ip/
InstalaciondeApacheenLinux
EnesteartculoaprenderemosainstalarApacheenunamquinaLinuxdedistintasmaneras:
Tabladecontenido
Usandoungestordepaquetes
Compilandoelcdigofuente
Usandoungestordepaquetes
LaopcinmssencillaparainstalarApacheenLinuxesutilizar,silotenemos,ungestordepaquetes.Enestecaso
desdeconsolaintroduciremoslasiguienteorden:
000 apt-getinstallapache2
Compilandoelcdigofuente
ParacompilarApachenuestramquinadebertenerinstaladoelsiguientesoftware:
gcc(osimilar)CompiladoryconstructorANSI
tarHerramientaparacomprimirydescomprimirarchivos
wgetHerramientaparaladescargadearchivos
ElprimerpasoparalainstalacionesladescargadeelcdigofuentedeApache,losejemplossonparalaversin
2.2.0,perodebemoshacerloconlaltimaversindisponibleenlawebdelaFundacinApache:
000 wgethttp://apache.gva.es/httpd/httpd-2.2.0.tar.gz
Seguidamentedescomprimimoselficheroqueacabamosdedescargar:
000 tarzxvfhttpd-2.2.0.tar.gz
Parapoderempezaracompilarapache,primerodeberemossituarnoseneldirectorioqueacabamosde
descomprimir:
000 cdhttpd-2.2.0
Esahoracuandopodremoscompilarelcdigofuentequehemosdescargado,peroprimerotenemosqueadaptarloa
nuestramquina,paraesto,elcodigodescargadoincluyeunscriptllamado./configurequepodemosejecutarcon
algunparametroquenosinterese,enelejemploutilizarelparametroprefixparaindicarqueinstaleApacheenel
directorioraiz.
Parasabercualessonlosparametrosquepodemosusar,elscript./configuretieneunaayudaalaquepodemos
accederconelparametro./configureh
000 ./configure--prefix=/
Unavezadaptadoelcdigofuente,quesueletardarbastante,podemoscompilarelservidorHTTPusandoel
comandodeGCCmake.
000 make
Yfinalmenteinstalaremoselservidoreneldirectorioquehemosindicadoalconelparametroprefix,parahacerlo
usaremoselcomandomakeinstall,ypuestoquehemosindicadoeldirectorio/paralainstalacion,primero
tendremosqueautenticarnoscmosuperusuario:
000 su
001 #contrasearoot
002 makeinstall
Ytenemosnuestroservidorinstaladoeneldirectrio/,sinohubieramosusadoelparmetroprefix,sehabra
instaladopordefectoen/usr/local/apache2
Iniciar,reiniciarypararApache
ElarchivoejecutabledelservidorHTTPdeApacheeshttpdyseencuentraenelsubdirectriobindeldirectriode
instalacin,mientrasestebinarioseestejecutando,elservidorestarfuncionando,porestoparaasegurarsu
funcionamiento,ApacheseinstalacomoservicioenWindowsycomodemnioenotrossistemasoperativos.
Porestopararealizarlasoperacionesdeinicio,reinicioyparadadeberemosseguirprocedimientosdistintospara
estosdostiposdeinstalacion.
Tabladecontenido
EnWindows
Otroscasos
EnWindows
AltrabajarcmoserviciodeWindows,tantoparahacerlasoperacionesdeinicio,reinicioyparadadelservicio
HTTP,cmoparaqueelservicioinicieautomticamentealiniciarWindowsactuaremosigualquecualquierotro
serviciodeWindows.
Otroscasos
Altrabajarcomodemnio,utilizaremoselscriptapachectldelsubdirectriobindeldirectriodeinstalacin,stees
unscriptquecumpleelestndar'SysVinit'yqueporlotantotienelosparametrosstart,restart,ystopparainiciar,
reiniciarypararelserviciorespectivamente.
Enelejemplo,hemosinstaladoapacheen/,sinoesasi,pondremoslarutaantesde/bin
000 /bin/apachectlrestart
Parallamarestescript,deberemoshabernosidentificadocomosuperusuarioconelcomandosu(exceptosiApache
noescuchaenningnpuertoinferiora1400),ysihemosinstaladoapacheenundirectriocontenidoenlavariable
desistemaPATH,podremosllamaralcomandodirectamente.
Veamosunejemploqueconectacomoroot,miraelcontenidodePATHycomoenelcontenidoaparece/bin/,
ejecutamoselscriptdirectamente:
000 su-
001 #contrasearoot
002 echo$PATH
003 #/bin/:/usr/bin/:/usr/local/bin
004 apachectlrestart
IniciarApacheautomticamente
ParaqueelservidorHTTPiniceautomticamentealencenderelsistemaoperativo,tendremosquehacerunenlacea
apachectlenundirectriorcN.doescribirloenrc.local,porejemplo:
000 echo"/bin/apachectlstart">>/etc/rc.d/rc.local
Enesteejemplo,hemosinstaladoapacheen/,sinoesasi,pondremoslarutaantesde/bin
ArchivosdeconfiguraciondeApache
ConfigurarunservidorApachenoesunatareaextremadamentecomplicada,puestoquegeneralmentenosser
suficientecambiaralgunalneadelficherodeconfiguracion,peroenestemanualintentaremosdarunpasomas,
comprendiendolaestructuradeficherosdeconfiguracionylasdirectivasmsimportantescontaldepoderhacer
unaconfiguracionlimpia.
Tabladecontenido
Elficherodeconfiguracinprincipal
Losficherosdeconfiguraciondescentralizados
Elficherodeconfiguracinprincipal
LaconfiguracindeApacheserealizamedianteunasdirectivasescritasenficherosdetextoqueseleenaliniciarel
servidorweb,elficherodeconfiguracinprincipalsuelellamarsehttpd.conf.
PodemosescogerundirectorioconcretoparaelficherodeconfiguracinprincipalcompilandoApacheconlaopcin
f,pordefecto,encontraremosesteficheroencarpetasdiferentesdependiendodelsistemaoperativo:
Windows:<apache>/conf/httpd.conf
Linux:<basedelainstalacion>/etc/apache/httpd.conf
DesdeesteficheropodemoscargarotrosficherosdeconfiguracinusandoladirectivaInclude.
Losficherosdeconfiguraciondescentralizados
LosficherosdeconfiguraciondescentralizadosnospermitenconfigurarelservidorHTTPaniveldedirectorio
siempreycuandonoslopermitaladirectivaAllowOverride.Pormotivosderendimientousaremosunicamenteestos
ficheroscuandonotenemosaccesoalficherodeconfiguracinprincipal.
ElnombredelosficherosdeconfiguraciondistribuidossepuededefinirconladirectivaAccessFileNameyserpor
defecto.htaccess,situaremoselficheroenelmismodirectrioenelquequeremosquehagaefecto,ysusdirectivas
seextendernatodossussubdirectorios.
Lasdirectivasde.htaccessprevalecenfrentealasdelosficherosdeconfiguracinprincipal,asimismo,lasdirectivas
deundirectriosobreescibirnlasdesudirectriopadre
DirectivasdeconfiguracindeApache
UnadirectivadeconfiguraciondeApacheesunapalabraqueindicaqueparamertodeconfiguracinqueremos
modificar,podemosescribirdirectivasdirectamenteenelficherodeconfiguracinparaquetenganefectoentodoel
servidoroenelinteriordeunaseccindeconfiguracin.
Paraescribirunadirectiva,pondremoselnombredeladirectiva(sinimportarmaysculas)seguidodesus
parmetrosenunalneadelfichero,esimportantequelamismalneaincluyasolamenteunadirectivaocomentario
ynuncaunoovariosdecada,veamosunejemplosencillo:
000 DocumentRoot/usr/web
Paraescibirunadirectivaquequeremosqueocupemsdeunalnea,deberemosindicarqueladirectivacontinaen
lasiguientelneaponiendounacontrabarra(\)cmoltimocarcterdelalnea:
000 DocumentRoot\
001 /usr/web
Podemosdejarlineasenblancosinningnproblemaigualcmotambienpodemosyesrecomendaletabularydejar
espaciosdelantedelasdirectivasparahacerlaconfiguracinmsclara.
Lasdirectivasquepodemosusardependendelosmdulosquetenemosinstaladospordefecto,enestemanual
veremoslasdirectivasmscomunesdelmodulocore(moduloprincipalconlasfuncionesbsicasdelservidor)y
algunasdelasmsimportantesdeotrosmdulos.
SeccionesdeconfiguracindeApach
LasdirectivasqueescribimosenlosficherosdeconfiguracindeApacheseaplicanatodaslaspginasdelservidor,
paraespecificarunadirectivaqueseapliquesobreunosdeterminadosdocumentos,podemosutilizarseccionesde
configuracin.
Tabladecontenido
Definirunaseccin
Elordendelassecciones
Subsecciones
Definirunaseccin
ParadefinirunaseccindeconfiguracinloharemosusandounasintaxisparecidaaladeHTML,empezandola
seccinconladirectivadeseccinentremenorymayorque<directivaargumento1>,yterminandoconelnombre
delamismadirectivatambienentremenorymayorqueperoconunabarradelante</directiva>,todaslasdirectivas
entreesasdosmarcasseaplicarnsoloadocumentosquecumplanladirectivadeapertura,veamosunejemplo:
Enelejemploanteriordefinimosquelosdocumentosdeldirectorioweb/img/estneneldirectrio/var/images/.
Elordendelassecciones
Enelcasoqueundocumentopudieracumplirdosdirectivasdeseccin,debemostenerencuentaqueApachelas
aplicaenelsiguienterden(demenoramayorprioridad):
1.<Directory>
2.<DirectoryMatch>
3.<Files>y<FilesMatch>
4.<Location>y<LocationMatch>
LoquesignificaquecualquierdirectivaaplicablequeseencuentraenunaseccininiciadaporDirectoryser
sobreescritaporlamismadirectivasiestescritaporejemploenFiles(yaquelasegundaserleidadespus),fijaros
enelsiguienteejemplo:
000 #Podemosaccederacualquierficherodentrode/php/
001 <Location /php/>
002 Orderallow,deny
003 Allowfromall
004 </Location>
005
006 #Nopodemosaccederaningnficheroadmin.php
007 #tampocoa/php/admin.php
008 <Files admin.php>
009 Orderallow,deny
010 Denyfromall
011 </Files>
Adems,lasseccionesconunamismaprefernciaseaplicanenelrdenenelqueestnescritas,porloqueenel
siguientecasoseaplicarasolamentelasegundaseccin:
Subsecciones
Podemoscombinarsecciones,escribiendolasunadentrodeotra,parapoderajustarmslosdocumentosalosque
aplicaremosunseguidodedirectivas,veamosunejemplo:
Enesteejemplonopermitimoselaccesoaadmin.phpsiestaen/php/
DirectoryyDirectoryMatch
UtilizamoslasdirectivasdeApache<Directory>y</Directory>o<DirectoryMatch>y</DirectoryMatch>para
delimitarunconjuntodedirectivasqueseaplicarnsolamenteaundirectoriodadoysussubdirectriosformando
unaseccindeconfiguracin,esunadirectivadesumaimportanciaalahoradedefinirunaconfiguracinespecial
paraundirectoriodemaneralimpiaenlugardeusarficheros.htaccess.
Tabladecontenido
Sintaxisdeladirectiva
Comodines
Expresionesregulares
Sintaxisdeladirectiva
Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmoparmetrolarutadeldirectrio:
Comodines
EstarutapodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodaslascarpetas'public'delahomedeunusuario
haremos:
Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadeldirectrio,enestecaso
pasaremosunparametro'~'aladirectivaDirectoryousandoDirectoryMatchseguidodeotroparmetroconla
expresinregular:
002 #Aplicablea/www/231/
003 #Aplicablea/www/999/
004 #Noaplicablea/home/www/231/
005 #Noaplicablea/www/23145/
006 </Directory>
007 <Directorymatch "^/www/.*/[0-9]{3}">
008 AllowOverrideNone
009 #Masdelomismo
010 </DirectoryMatch>
FilesyFilesMatch
UtilizamoslasdirectivasdeApache<Files>y</Files>o<FilesMatch>y</FilesMatch>paradelimitarun
conjuntodedirectivasqueseaplicarnsolamenteaarchivosconunnombredeterminadoformandounaseccinde
configuracin,esunadirectivadesumaimportanciaalahoradedefinirunaconfiguracinespecialparauntipo
determinadodearchivos.
Tabladecontenido
Sintaxisdeladirectiva
Comodines
Expresionesregulares
Sintaxisdeladirectiva
Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmoparmetroelnombredearchivo:
Comodines
EstenombrepodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos:
Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadeldirectrio,enestecaso
pasaremosunparametro'~'aladirectivaFilesousandoFilesMatch(preferiblemente)seguidodeotroparmetrocon
laexpresinregular:
003 #Aplicableaa.jpg
004 #Aplicableaa.jpeg
005 #Aplicableaa.png
006 </Files>
007 <FilesMatch "\.(gif|jpe?g|png)$">
008 AllowOverrideNone
009 #Masdelomismo
010 </FilesMatch>
LocationyLocationMatch
UtilizamoslasdirectivasdeApache<Location>y</location>o<LocationMatch>y</LocationMatch>para
delimitarunconjuntodedirectivasqueseaplicarnsolamenteapeticionesaunaURLdeterminadaformandouna
seccindeconfiguracin,seusaparaaplicarunasdirectivasdeterminadasaunasecciondeunsitioweb(por
ejemploautenticacionHTTP).
Tabladecontenido
Sintaxisdeladirectiva
Comodines
Expresionesregulares
Sintaxisdeladirectiva
Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmolaurl:
Comodines
LaURLpodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos:
Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalaURL,enestecasopasaremosun
parametro'~'aladirectivaLocationousandoLocationMatch(preferiblemente)seguidodeotroparmetroconla
expresinregular:
001 AllowOverrideNone
002 #Aplicableaa.gif
003 #Aplicableaa.jpg
004 #Aplicableaa.jpeg
005 #Aplicableaa.png
006 </LocationMatch>