Você está na página 1de 18

CursodeApache

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:

000 <Location /img/>


001 DocumentRoot/var/images/
002 </Location>

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:

000 <Location /img/>


001 DocumentRoot/images/
002 </Location>
003 <Location /img/>
004 DocumentRoot/var/images/
005 </Location>

Subsecciones
Podemoscombinarsecciones,escribiendolasunadentrodeotra,parapoderajustarmslosdocumentosalosque
aplicaremosunseguidodedirectivas,veamosunejemplo:

000 <Location /php/>


001 <Files admin.php>
002 Orderallow,deny
003 Denyfromall
004 </Files>
005 </Location>

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:

000 <Directory /home/wwwroot/personal/>


001 AllowOverrideNone
002 </Directory>

Comodines
EstarutapodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodaslascarpetas'public'delahomedeunusuario
haremos:

000 <Directory /home/*/public/>


001 AllowOverrideNone
002 #Aplicablea/home/eloi/public/
003 #Aplicablea/home/pepito/public/
004 #Noaplicablea/home/eloi/web/public/
005 </Directory>

Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadeldirectrio,enestecaso
pasaremosunparametro'~'aladirectivaDirectoryousandoDirectoryMatchseguidodeotroparmetroconla
expresinregular:

000 <Directory ~ "^/www/.*/[0-9]{3}">


001 AllowOverrideNone

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:

000 <Files admin.php>


001 AllowOverrideNone
002 </Files>

Comodines
EstenombrepodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos:

000 <Files *.php>


001 AllowOverrideNone
002 #Aplicableaeloi.php
003 #Aplicableapepito.php
004 #Noaplicableaeloi.phps
005 </Directory>

Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadeldirectrio,enestecaso
pasaremosunparametro'~'aladirectivaFilesousandoFilesMatch(preferiblemente)seguidodeotroparmetrocon
laexpresinregular:

000 <Files ~ "\.(gif|jpe?g|png)$">


001 AllowOverrideNone
002 #Aplicableaa.gif

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:

000 <Location /public>


001 OrderAllow,Deny
002 Allowfromall
003 Satisfyany
004 </Location>

Comodines
LaURLpodrcontenercomodinesalestiloUnix:
*Unoomscaracterescualquieraexcepto'/'
?Unocaractercualquieraexcepto'/'
[az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos([09],[a
zAZ]...)
Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos:

000 <Location /a*>


001 AllowOverrideNone
002 #Aplicablea/articulos
003 #Aplicablea/administracion
004 #Noaplicable/foro/asp
005 </Location>

Expresionesregulares
Igualcmoconloscomodines,podremosusarexpresionesregularesparalaURL,enestecasopasaremosun
parametro'~'aladirectivaLocationousandoLocationMatch(preferiblemente)seguidodeotroparmetroconla
expresinregular:

000 <LocationMatch "\.(gif|jpe?g|png)$">

001 AllowOverrideNone
002 #Aplicableaa.gif
003 #Aplicableaa.jpg
004 #Aplicableaa.jpeg
005 #Aplicableaa.png
006 </LocationMatch>

Você também pode gostar