Escolar Documentos
Profissional Documentos
Cultura Documentos
Estructura ElservidorApacheestconfiguradopor mdulos,algunosdeellosvieneninstalados pordefectoyotroslosdeberemosinstalarsi queremosusarlos. Instalacin La forma de instalar apache depender del sistema operativo sobre el cual queremos que funcione, en otros artculos podemos ver cmo instalarloenLinux,Windows... Configuracin El servidor Apache es un servidor muy completo y adems tiene un gran nmero de opciones diferentes que pueden interesarnos, en futuras entregas de este curso veremos donde podemosencontrarlosarchivosdeconfiguracindelapacheycomodebemosmanipularlos
1.1.Instalacindeapache2enwindows
Fecha:12/11/03 En este artculo os explicar cmo instalar la versin 2.0.48 del servidor HTTP Apache en una maquina en windows para que podais probar vuestras pginas desde http://localhost/, en proximos articulos os comentare cmo instalar PHP y instalar MySQL en este servidor. Pese a que en el artculo se utiliza la versin 2.0.48 de Apache, es recomendable descargar la ltima versin disponible en la pgina de la Fundacin Apache. Una vez hayamos descargado el instalador para windows, ejecutaremos el archivo descargado y nos aparecer una pantalla debienvenidaenlaquepulsaremoselbotnnext.
Al pulsar ese botn nos aparecer una pantalla en la que se nos pedir que aceptemos las condiciones de licencia, seleccionaremos la opcin I accept the terms in the license agreement y pulsaremos el botn Next, entonces nos aparecer una pantalla con informacin en la que pulsaremos Next de nuevo para acceder a la pantalla de informacion del servidor querellenaremosdelasiguientemanera:
Unavezrellenadoslosdatos,pulsaremosNextparacontinuarlainstalacindelservidor,ahora seleccionaremosTypicalenlapantallatipodeinstalacinydespusdepulsarotravezelbotn Next, dejaremos el valor por defecto (c:\Archivos de Programa\Apache Group) en la ventana carpeta de destino, ahora pulsaremos Next por ltima vez. Finalmente el instalador ya estara preparado para instalar, y despues de cerrar aquellos programas que puedan provocar errores en la instalacin, pulsaremos el botn Install para empezar el proceso de cpia de archivos. Cuando acabe la carga de archivos, veremos una pantalla que nos informara que la instalacin ha sido completada y en la que pulsaremos finish. A partir de este momento ya tendremos nuestro servidor habilitado, y podremos ver el icono de Apache2ennuestrabarradetareas,desdedondepodremospararyreanudarelservicio. Para mostrar pginas, tendremos que guardarlas en la carpeta C:\Archivos de programa\Apache Group\Apache2\htdocs de nuestro ordenador, y podremos acceder a ellas desde el navegador de nuestro ordenador usando http://localhost/ o desde cualquier ordenadordesdehttp://tu_direccion_ip/
1.2.InstalacindeApacheenLinux
Fecha:02/03/06 EnesteartculoaprenderemosainstalarApacheenunamquinaLinuxdedistintasmaneras: Tabladecontenido
Usandoungestordepaquetes Compilandoelcdigofuente
Usandoungestordepaquetes LaopcinmssencillaparainstalarApacheenLinuxesutilizar,silotenemos,ungestorde paquetes.Enestecasodesdeconsolaintroduciremoslasiguienteorden: 000 aptgetinstallapache2 Compilandoelcdigofuente ParacompilarApachenuestramquinadebertenerinstaladoelsiguientesoftware: gcc(osimilar)CompiladoryconstructorANSI tarHerramientaparacomprimirydescomprimirarchivos wgetHerramientaparaladescargadearchivos ElprimerpasoparalainstalacionesladescargadelcdigofuentedeApache,losejemplosson paralaversin2.2.0,perodebemoshacerloconlaltimaversindisponibleenlawebdela FundacinApache: 000 wgethttp://apache.gva.es/httpd/httpd2.2.0.tar.gz Seguidamentedescomprimimoselficheroqueacabamosdedescargar: 000 tarzxvfhttpd2.2.0.tar.gz Parapoderempezaracompilarapache,primerodeberemossituarnoseneldirectorioque acabamosdedescomprimir:
000 cdhttpd2.2.0 Esahoracuandopodremoscompilarelcdigofuentequehemosdescargado,peroprimero tenemosqueadaptarloanuestramquina,paraesto,elcodigodescargadoincluyeunscript llamado./configurequepodemosejecutarconalgunparametroquenosinterese,enel ejemploutilizarelparametroprefixparaindicarqueinstaleApacheeneldirectorioraiz. Parasabercualessonlosparametrosquepodemosusar,elscript./configuretieneunaayuda alaquepodemosaccederconelparametro./configureh 000 ./configureprefix=/ Unavezadaptadoelcdigofuente,quesueletardarbastante,podemoscompilarelservidor HTTPusandoelcomandodeGCCmake. 000 make Yfinalmenteinstalaremoselservidoreneldirectorioquehemosindicadoalconelparametro prefix,parahacerlousaremoselcomandomakeinstall,ypuestoquehemosindicadoel directorio/paralainstalacion,primerotendremosqueautenticarnoscmosuperusuario: 000 su 001 #contrasearoot 002 makeinstall Ytenemosnuestroservidorinstaladoeneldirectrio/,sinohubieramosusadoelparmetro prefix,sehabrainstaladopordefectoen/usr/local/apache2
1.3.Iniciar,reiniciarypararApache
Fecha:02/03/06 ElarchivoejecutabledelservidorHTTPdeApacheeshttpdyseencuentraenelsubdirectrio bindeldirectriodeinstalacin,mientrasestebinarioseestejecutando,elservidorestar funcionando,porestoparaasegurarsufuncionamiento,Apacheseinstalacomoservicioen Windowsycomodemnioenotrossistemasoperativos. Porestopararealizarlasoperacionesdeinicio,reinicioyparadadeberemosseguir procedimientosdistintosparaestosdostiposdeinstalacion. Tabladecontenido
EnWindows Otroscasos
EnWindows AltrabajarcmoserviciodeWindows,tantoparahacerlasoperacionesdeinicio,reinicioy paradadelservicioHTTP,cmoparaqueelservicioinicieautomticamentealiniciarWindows actuaremosigualquecualquierotroserviciodeWindows. Otroscasos Altrabajarcomodemnio,utilizaremoselscriptapachectldelsubdirectriobindeldirectrio deinstalacin,steesunscriptquecumpleelestndar'SysVinit'yqueporlotantotienelos parametrosstart,restart,ystopparainiciar,reiniciarypararelserviciorespectivamente. Enelejemplo,hemosinstaladoapacheen/,sinoesasi,pondremoslarutaantesde/bin 000 /bin/apachectlrestart Parallamarestescript,deberemoshabernosidentificadocomosuperusuarioconelcomando su(exceptosiApachenoescuchaenningnpuertoinferiora1400),ysihemosinstalado apacheenundirectriocontenidoenlavariabledesistemaPATH,podremosllamaral comandodirectamente. Veamosunejemploqueconectacomoroot,miraelcontenidodePATHycomoenel contenidoaparece/bin/,ejecutamoselscriptdirectamente: 000 su 001 #contrasearoot
002 echo$PATH 003 #/bin/:/usr/bin/:/usr/local/bin 004 apachectlrestart IniciarApacheautomticamente ParaqueelservidorHTTPiniceautomticamentealencenderelsistemaoperativo, tendremosquehacerunenlaceaapachectlenundirectriorcN.doescribirloenrc.local,por ejemplo: 000 echo"/bin/apachectlstart">>/etc/rc.d/rc.local Enesteejemplo,hemosinstaladoapacheen/,sinoesasi,pondremoslarutaantesde/bin
1.4.ArchivosdeconfiguracindeApache
Fecha:24/03/06 ConfigurarunservidorApachenoesunatareaextremadamentecomplicada,puestoque generalmentenossersuficientecambiaralgunalneadelficherodeconfiguracion,peroeneste manualintentaremosdarunpasomas,comprendiendolaestructuradeficherosde configuracionylasdirectivasmsimportantescontaldepoderhacerunaconfiguracionlimpia. Tabladecontenido
Elficherodeconfiguracinprincipal Losficherosdeconfiguraciondescentralizados
Elficherodeconfiguracinprincipal LaconfiguracindeApacheserealizamedianteunasdirectivasescritasenficherosdetextoque seleenaliniciarelservidorweb,elficherodeconfiguracinprincipalsuelellamarsehttpd.conf. Podemosescogerundirectorioconcretoparaelficherodeconfiguracinprincipalcompilando Apacheconlaopcinf,pordefecto,encontraremosesteficheroencarpetasdiferentes dependiendodelsistemaoperativo: Windows:<apache>/conf/httpd.conf Linux:<basedelainstalacion>/etc/apache/httpd.conf DesdeesteficheropodemoscargarotrosficherosdeconfiguracinusandoladirectivaInclude. Losficherosdeconfiguraciondescentralizados LosficherosdeconfiguraciondescentralizadosnospermitenconfigurarelservidorHTTPanivel dedirectoriosiempreycuandonoslopermitaladirectivaAllowOverride.Pormotivosde rendimientousaremosunicamenteestosficheroscuandonotenemosaccesoalficherode configuracinprincipal. Elnombredelosficherosdeconfiguraciondistribuidossepuededefinirconladirectiva AccessFileNameyserpordefecto.htaccess,situaremoselficheroenelmismodirectrioenel quequeremosquehagaefecto,ysusdirectivasseextendernatodossussubdirectorios. Lasdirectivasde.htaccessprevalecenfrentealasdelosficherosdeconfiguracinprincipal, asimismo,lasdirectivasdeundirectriosobreescibirnlasdesudirectriopadre.
1.5.DirectivasdeconfiguracindeApache
Fecha:26/03/06 UnadirectivadeconfiguraciondeApacheesunapalabraqueindicaqueparamertode configuracinqueremosmodificar,podemosescribirdirectivasdirectamenteenelficherode configuracinparaquetenganefectoentodoelservidoroenelinteriordeunaseccinde configuracin. Paraescribirunadirectiva,pondremoselnombredeladirectiva(sinimportarmaysculas) seguidodesusparmetrosenunalneadelfichero,esimportantequelamismalneaincluya solamenteunadirectivaocomentarioynuncaunoovariosdecada,veamosunejemplo sencillo: 000 DocumentRoot/usr/web Paraescibirunadirectivaquequeremosqueocupemsdeunalnea,deberemosindicarque ladirectivacontinaenlasiguientelneaponiendounacontrabarra(\)cmoltimocarcter delalnea: 000 DocumentRoot\ 001 /usr/web Podemosdejarlineasenblancosinningnproblemaigualcmotambienpodemosyes recomendaletabularydejarespaciosdelantedelasdirectivasparahacerlaconfiguracinms clara. Lasdirectivasquepodemosusardependendelosmdulosquetenemosinstaladospor defecto,enestemanualveremoslasdirectivasmscomunesdelmdulocore(modulo principalconlasfuncionesbsicasdelservidor)yalgunasdelasmsimportantesdeotros mdulos.
1.6.SeccionesdeconfiguracindeApache
Fecha:04/04/06 LasdirectivasqueescribimosenlosficherosdeconfiguracindeApacheseaplicanatodaslas pginasdelservidor,paraespecificarunadirectivaqueseapliquesobreunosdeterminados documentos,podemosutilizarseccionesdeconfiguracin. Tabladecontenido
Definirunaseccin Paradefinirunaseccindeconfiguracinloharemosusandounasintaxisparecidaalade HTML,empezandolaseccinconladirectivadeseccinentremenorymayorque<directiva argumento1>,yterminandoconelnombredelamismadirectivatambienentremenory mayorqueperoconunabarradelante</directiva>,todaslasdirectivasentreesasdosmarcas seaplicarnsoloadocumentosquecumplanladirectivadeapertura,veamosunejemplo: 000 <Location/img/> 001 DocumentRoot/var/images/ 002 </Location> Enelejemploanteriordefinimosquelosdocumentosdeldirectorioweb/img/estnenel directrio/var/images/. Elordendelassecciones Enelcasoqueundocumentopudieracumplirdosdirectivasdeseccin,debemosteneren cuentaqueApachelasaplicaenelsiguienterden(demenoramayorprioridad): 1.<Directory> 2.<DirectoryMatch> 3.<Files>y<FilesMatch> 4.<Location>y<LocationMatch> Loquesignificaquecualquierdirectivaaplicablequeseencuentraenunaseccininiciadapor DirectorysersobreescritaporlamismadirectivasiestescritaporejemploenFiles(yaquela segundaserleidadespus),fijarosenelsiguienteejemplo: 000 #Podemosaccederacualquierficherodentrode/php/ http://www.programacionweb.net/cursos/ Curso Basico Apache2
10
001 002 003 004 005 006 007 008 009 010 011
<Location/php/> Orderallow,deny Allowfromall </Location> #Nopodemosaccederaningnficheroadmin.php #tampocoa/php/admin.php <Filesadmin.php> Orderallow,deny Denyfromall </Files>
Adems,lasseccionesconunamismaprefernciaseaplicanenelrdenenelqueestn escritas,porloqueenelsiguientecasoseaplicarasolamentelasegundaseccin: 000 001 002 003 004 005 Subsecciones Podemoscombinarsecciones,escribiendolasunadentrodeotra,parapoderajustarmslos documentosalosqueaplicaremosunseguidodedirectivas,veamosunejemplo: 000 001 002 003 004 005 <Location/php/> <Filesadmin.php> Orderallow,deny Denyfromall </Files> </Location> <Location/img/> DocumentRoot/images/ </Location> <Location/img/> DocumentRoot/var/images/ </Location>
Enesteejemplonopermitimoselaccesoaadmin.phpsiestaen/php/
11
1.7.DirectoryyDirectoryMatch
Fecha:03/05/06 UtilizamoslasdirectivasdeApache<Directory>y</Directory>o<DirectoryMatch>y </DirectoryMatch>paradelimitarunconjuntodedirectivasqueseaplicarnsolamenteaun directoriodadoysussubdirectriosformandounaseccindeconfiguracin,esunadirectiva desumaimportanciaalahoradedefinirunaconfiguracinespecialparaundirectoriode maneralimpiaenlugardeusarficheros.htaccess. Tabladecontenido
Sintaxisdeladirectiva Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmoparmetrola rutadeldirectrio: 000 <Directory/home/wwwroot/personal/> 001 AllowOverrideNone 002 </Directory> Comodines EstarutapodrcontenercomodinesalestiloUnix: *Unoomscaracterescualquieraexcepto'/' ?Unocaractercualquieraexcepto'/' [az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos ([09],[azAZ]...) Deestamanera,porejemplo,paraaplicarunadirectivaatodaslascarpetas'public'dela homedeunusuarioharemos: 000 001 002 003 004 005 <Directory/home/*/public/> AllowOverrideNone #Aplicablea/home/eloi/public/ #Aplicablea/home/pepito/public/ #Noaplicablea/home/eloi/web/public/ </Directory>
12
Expresionesregulares Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadel directrio,enestecasopasaremosunparametro'~'aladirectivaDirectoryousando DirectoryMatchseguidodeotroparmetroconlaexpresinregular: 000 001 002 003 004 005 006 007 008 009 010 <Directory~"^/www/.*/[09]{3}"> AllowOverrideNone #Aplicablea/www/231/ #Aplicablea/www/999/ #Noaplicablea/home/www/231/ #Noaplicablea/www/23145/ </Directory> <Directorymatch"^/www/.*/[09]{3}"> AllowOverrideNone #Masdelomismo </DirectoryMatch>
13
1.8.FilesyFilesMatch
Fecha:03/05/06 UtilizamoslasdirectivasdeApache<Files>y</Files>o<FilesMatch>y</FilesMatch>para delimitarunconjuntodedirectivasqueseaplicarnsolamenteaarchivosconunnombre determinadoformandounaseccindeconfiguracin,esunadirectivadesumaimportanciaa lahoradedefinirunaconfiguracinespecialparauntipodeterminadodearchivos. Tabladecontenido
Sintaxisdeladirectiva Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmoparmetroel nombredearchivo: 000 <Filesadmin.php> 001 AllowOverrideNone 002 </Files> Comodines EstenombrepodrcontenercomodinesalestiloUnix: *Unoomscaracterescualquieraexcepto'/' ?Unocaractercualquieraexcepto'/' [az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos ([09],[azAZ]...) Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos: 000 001 002 003 004 005 http://www.programacionweb.net/cursos/ Curso Basico Apache2
14
Expresionesregulares Igualcmoconloscomodines,podremosusarexpresionesregularesparalarutadel directrio,enestecasopasaremosunparametro'~'aladirectivaFilesousandoFilesMatch (preferiblemente)seguidodeotroparmetroconlaexpresinregular: 000 001 002 003 004 005 006 007 008 009 010
<Files~"\.(gif|jpe?g|png)$"> AllowOverrideNone #Aplicableaa.gif #Aplicableaa.jpg #Aplicableaa.jpeg #Aplicableaa.png </Files> <FilesMatch"\.(gif|jpe?g|png)$"> AllowOverrideNone #Masdelomismo </FilesMatch>
15
1.9.LocationyLocationMatch
Fecha:16/06/06 UtilizamoslasdirectivasdeApache<Location>y</location>o<LocationMatch>y </LocationMatch>paradelimitarunconjuntodedirectivasqueseaplicarnsolamentea peticionesaunaURLdeterminadaformandounaseccindeconfiguracin,seusaparaaplicar unasdirectivasdeterminadasaunasecciondeunsitioweb(porejemploautenticacionHTTP). Tabladecontenido
Sintaxisdeladirectiva Cuandodefinimosestetipodeseccindeconfiguracin,leindicaremoscmolaurl: 000 001 002 003 004 Comodines LaURLpodrcontenercomodinesalestiloUnix: *Unoomscaracterescualquieraexcepto'/' ?Unocaractercualquieraexcepto'/' [az]Unrangodecaracteresentreayz,dondeayzpuedenserloscaracteresquedeseemos ([09],[azAZ]...) Deestamanera,porejemplo,paraaplicarunadirectivaatodoslosarchivos.phpharemos: 000 001 002 003 004 005 <Location/a*> AllowOverrideNone #Aplicablea/articulos #Aplicablea/administracion #Noaplicable/foro/asp </Location> <Location/public> OrderAllow,Deny Allowfromall Satisfyany </Location>
16
Expresionesregulares Igualcmoconloscomodines,podremosusarexpresionesregularesparalaURL,enestecaso pasaremosunparametro'~'aladirectivaLocationousandoLocationMatch(preferiblemente) seguidodeotroparmetroconlaexpresinregular: 000 001 002 003 004 005 006 <LocationMatch"\.(gif|jpe?g|png)$"> AllowOverrideNone #Aplicableaa.gif #Aplicableaa.jpg #Aplicableaa.jpeg #Aplicableaa.png </LocationMatch>
17