SlideShare a Scribd company logo
1 of 36
Download to read offline
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Presentació del servidor Apache
Descripció de l'arquitectura en mòduls de l'Apache. Explicació i enumeració de les
funcionalitats associades a cada mòdul:
El servidor Apache és un programari que està estructurat en mòduls. La configuració de cada
mòdul es fa mitjançant la configuració de les directives que estan contingudes dins del mòdul.
Els mòduls de l'Apache es poden classificar en tres categories:
· Mòduls base: Mòdul amb les funcions bàsiques de l'Apache.
· Mòduls multi procés: són els responsables de la unió amb els ports de la màquina, acceptant
les peticions i enviant als fills a atendre a les peticions.
· Mòduls addicionals: Qualsevol altre mòdul que li afegeixi una funcionalitat al servidor.
Les funcionalitats més elementals es troben en el mòdul base, sent necessari un mòdul multi
procés per gestionar les peticions. S'han dissenyat diversos mòduls multi procés per a
cadascun dels sistemes operatius sobre els quals s'executa l'Apache, optimitzant el rendiment i
rapidesa del codi.
La resta de funcionalitats del servidor s'aconsegueixen per mitjà de mòduls addicionals que es
poden carregar. Per afegir un conjunt d'utilitats al servidor, simplement cal afegir-li un mòdul,
de manera que no és necessari tornar a instal·lar el programari.
Mòduls base i mòduls multi procés
core: Funcions bàsiques de l'Apache que estan sempre disponibles.
mpm_common: Col·lecció de directives que s'implementen en més d'un mòdul multi procés.
beos: Mòdul de multi procés optimitzat per BeOS.
leader: Variable experimental de MPM.
mpm_netware: Mòdul de multi procés que implementa un servidor web optimitzat per Novell
NetWare.
mpmt_us2: MPM híbrid, multi procés i multi fil para OS/2 .
perchild: Mòdul multi procés que permet als processos dimoni servir les peticions que
s'assignen a diferents usuaris.
prefork: Implementa un servidor sense fils.
threadpool: Variant experimental del mòdul estàndard de MPM .
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
mpm_winnt: Mòdul multi procés optimitzat per Windows NT.
worker: Mòdul multi procés que implementa un híbrid multi fils i multi processos de servidor
Web.
Mòduls addicionals
mod_access: proporciona control d'accés basant-se en el nom del host del client, la seva
adreça IP o altres característiques de la petició del client.
mod_actions: aquest mòdul s'utilitza per executar scripts CGI, basant-se en el tipus de mitjà o
el mètode de petició.
mod_àlies: proporcionat per mapejar diferents parts del sistema de fitxers del servidor en
l'arbre de documents del servidor, i per a redirecció d'URL's.
mod_asis: enviament de fitxers que tenen les seves pròpies capçaleres http.
mod_auth: autenticació d'usuari utilitzant fitxers de text.
mod_auth_anon: permet a usuaris anònims accedir a àrees autenticades.
mod_auth_dbm: proporciona autenticació utilitzant fitxers DBM.
mod_auth_digest: autenticació d'usuari utilitzant MD5.
mod_auth_ldap: permet la utilització un directori LDAP per emmagatzemar la base de dades
d'autenticació.
mod_autoindex: mostra els continguts d'un directori automàticament, semblant a la instrucció
ls d'Unix.
mod_cache: Cache de continguts indexats per URI's.
mod_cern_meta: Semàntica d'etiquetes del CERN.
mod_cgi: Execució de scritps CGI.
mod_cgid: execució de scripts CGI utilitzant un dimoni CGI extern.
mod_charset_lite: per a l'especificació del joc de caràcters de les traduccions.
mod_deflate: comprimeix el contingut abans de ser enviat al client.
mod_dir: Proporcionat per a redireccionaments i per servir els fitxers del llistat de directoris.
mod_disk_cache: Cache per emmagatzemar continguts identificats per URI.
mod_tiro: Un servidor simple per il·lustrar els mòduls del protocol.
mod_env: modificació de l'entorn que es envia als scripts CGI i les pàgines SSL.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
mod_expire: Generació de les capçaleres http expire, d'acord amb els criteris especificats per
l'usuari.
mod_ext_filter: passa el cos de la resposta a través d'un programa abans d'enviar-la-hi al
client.
mod_file_cache: escorcolla una llista estàtica de fitxers en memòria.
mod_headers: personalització de les peticions HTTP i les capçaleres de les respostes.
mod_imap: procés d'imatges en el costat del servidor (Server Side).
mod_include: Documents HTML generats pel servidor (Server Side Includes).
mod_info: proporciona una visió comprensiva de la configuració del servidor.
mod_isapi: Extensions ISAPI en Apache per Windows.
mod_ldap: pool de connexions LDAP i escorcoll de resultats per a la utilització d'altres mòduls
LDAP.
mod_log_config: registre de les peticions fetes al servidor.
mod_logio: registre del nombre de bytes rebuts i enviats en cada resposta.
mod_mem_cache: Cache de continguts identificats per URI.
mod_mime: associa les extensions de peticions dels fitxers amb el comportament del fitxer
(gestionadores i filtres) i contingut (tipus mime, idioma, joc de caràcters i codificació).
mod_mime_magic: determina el tipus mime d'un fitxer mirant uns pocs bytes del contingut.
mod_negotiation: es fa servir per a la negociació del contingut.
mod_proxy: servidor HTTP/1.1 proxy/gateway.
mod_proxy_connect: extensió de mod_proxy per a la gestió de les peticions connect.
mod_proxy_ftp: suport FTP per mod_proxy.
mod_proxy_http: suporta HTTP per al mòdul mod_proxy.
mod_rewrite: proporciona un motor de reescriptura basat en regles que torna a escriure les
peticions d'URL's al vol.
mod_setenvif: permet la configuració de les variables d'entorn basant-se en les
característiques de la petició.
mod_speling: intenta corregir les URL mal posades pels usuaris, ignorant les majúscules i
permetent fins a una falta.
mod_ssl: criptografia avançada utilitzant els protocols Secure Sockets Layer i Transport Layer
Security.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
mod_status: proporciona informació en l'activitat i rendiment del servidor.
mod_suexec: permet als scripts CGI ser executats amb un nom i grup específic.
mod_unique_id: proporciona variables d'entorn i un identificador únic per a cada petició.
mod_userdir: directoris específics per a usuaris.
mod_usertrack: registre d'activitat d'un usuari en el lloc.
mod_vhost_alias: Proporcionat per configurar molts servidors virtuals dinàmicament.
Explicarem el procés de descàrrega i instal·lació del servidor Apache en sistemes Windows.
El procés per instal·lar Apache en Windows és molt senzill. D'ara endavant, és possible que la
configuració del servidor pugui complicar-se una mica, no obstant això, si desitgem utilitzar-ho
amb les funcions habituals, no hem de tenir majors problemes en cap moment.
Descàrrega d'Apache
El servidor web Apache es pot descarregar a la pàgina de la Fundació Apache, a apache.org.
En la URL http://httpd.apache.org/ teniu una secció en particular per al servidor HTTP
(Protocol de transmissió utilitzat en la web), en la qual haurem de buscar l'enllaç per a la
descàrrega.
Una vegada a la pàgina de descàrrega hem de buscar l'última versió estable o la versió que
recomanen. El servidor està disponible per a sistemes Unix o Windows, per la qual cosa ens
oferiran diverses opcions de descàrrega, fins i tot per obtenir el codi font del programa. Si
desitgem instal·lar-ho en un sistema Windows, necessitem obtenir l'arxiu Win-32 binari, que és
un instal·lador Windows.
Instal·lació
Una vegada descarregat, hem d'instal·lar-ho en el nostre sistema, executant l'arxiu obtingut.
Donarem pas a un assistent que ens guiarà en el procés d'instal·lació del servidor. Durant el
procés ens preguntarà el nom del domini i del servidor, que podem emplenar amb localhost.
Ens demanarà també una adreça de correu, que podem emplenar amb qualsevol que
desitgem. També ens pregunta si desitgem que el servidor respongui en el port 80 per a tots
els usuaris o si desitgem que només s'activi per a l'usuari actual en el port 8080, quan s'iniciï
manualment. El normal és que ho activem per a tots els usuaris.
Amb aquestes dades queda configurat l'Apache inicialment. En qualsevol moment podem
editar-lo al nostre gust o necessitats. Per a això haurem d'editar el fitxer httpd.conf, que es
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
troba en el directori d'instal·lació d'Apache, que hem indicat durant el procés d'instal·lació,
més concretament, en el subdirectori conf. D'ara endavant en aquest manual podrem
aprendre les configuracions més habituals.
Nota: Hem d'anar amb compte de no tenir un altre servidor configurat per treballar en el port
80 (per exemple el servidor IIS que ve en les versions professionals o servidor de Windows). En
cas de tenir en marxa un altre servidor web durant la instal·lació, pot fallar i mostrar-nos un
missatge d'error que indiqui això precisament, és a dir, que no podem tenir dos servidors
alhora escoltant en el port 80.
Per solucionar el problema n'hi ha prou que parem el IIS o l'altre servidor que estigui
funcionant. El IIS el podem parar accedint a Panell de control - Eines administratives - Serveis
d'Internet Information Server. La pantalla que surt és la consola d'administració del sistema.
Aquí hem de desplegar l'arbre de l'esquerra, prement sobre el signe +, fins que trobem el "Lloc
web predeterminat". Ens posem damunt de ell i premem el botó de STOP que està situat en la
barra d'eines de la consola d'administració. També podem trobar una opció per parar el servei
prement amb el botó dret en el "Lloc web predeterminat".
Una vegada instal·lat, l'Apache es posa en funcionament. Per controlar l'Apache podem trobar
en el botó d'inici, secció programes, un nou grup anomenat "Apache HTTP Server", amb icones
per detenir el servidor, engegar-ho, editar l'arxiu de configuració httpd.conf o per veure els
logs d'accés. També podem veure en la barra de tasques una nova icona que indica que
l'Apache està funcionant i que ofereix opcions per controlar-ho si premem sobre ell.
Veure si està funcionant
Per comprovar que el servidor està actiu i funciona correctament podem obrir un explorador i
provar d’accedir a la URL http://localhost, que és el nostre propi servidor. Si tot ha anat bé
observarem el missatge de benvinguda del servidor amb alguna cosa com "Funciona! El
servidor Apache ha estat instal·lat en aquest equip!".
Per seguir aprenent a configurar Apache és interessant llegir-se el manual d'instal·lació i
configuració d'Apache, que explica on hem de canviar les opcions més comuns del servidor.
Explicació de l'estructura de directoris que obtenim una vegada instal·lat el servidor Apache
Una vegada instal·lat l'Apache, en el directori arrel de la instal·lació, es trobaran els següents
directoris:
bin: fitxers executables de l'Apache.
conf: fitxers de configuració del servidor.
error: fitxers amb els missatges d'error del servidor, en diversos llenguatges.
htdocs: directori arrel per defecte del servidor (Es guarden les pàgines Web).
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
icons: directori on es troben les icones que utilitza el servidor (entre altres coses per mostrar
estructures de directoris).
logs: directori on s'emmagatzemen els registres d'accés i errors del servidor.
manual: directori on es troba el manual de l'Apache.
proxy: Directori amb els fitxers de la cache del servidor.
Bàsicament les configuracions del servidor resideixen dins de dos fitxers, el de configuració
principal que es troba dins de la carpeta conf, amb el nom httpd.conf, o dins d'un fitxer amb el
nom .htaccess que es pot trobar dins de qualsevol directori que es trobi mapejat dins del
servidor. Dins de cadascun d'aquests fitxers se situen les directives de configuració. Moltes
d'aquestes directives de configuració es poden trobar tant dins del fitxer de configuració
principal com dins d'un fitxer .htaccess. Els valors de les directives que es troben dins d'un
fitxer .htaccess, prevalen enfront dels valors de configuració especificats dins del fitxer
httpd.conf.
Estructura del fitxer principal de configuració de l'Apache
El fitxer httpd.conf és el fitxer principal de configuració de l'Apache, es troba dins del directori
conf, en el directori d'instal·lació de l'Apache.
En primer lloc cal destacar que el fitxer està dividit en tres seccions, que són:
· Paràmetres globals.
· Directives de funcionament.
· Host virtuals.
En el fitxer es troben tots els paràmetres de funcionament de l'Apache. Alguns paràmetres són
generals per a la instal·lació i funcionament de l'Apache. Molts d’altres dels paràmetres es
poden configurar independents per a un conjunt de directoris i/o fitxers . En aquests casos els
paràmetres es troben situats dins de seccions on s'indica l'àmbit d'aplicació del paràmetre.
Les seccions més importants són:
: Els paràmetres que es troben dins d'aquesta secció, només s'aplicaran al directori especificat i
als seus subdirectoris: Igual que Directory, però accepta en el nom del directori expressions
regulars. Els paràmetres de configuració proporcionen control d'accés dels fitxers pel seu nom.
Igual que Files, però accepta expressions regulars en el nom del fitxer. Proporciona un control
d'accés dels fitxers per mitjà de la URL. Igual que Location, però accepta expressions regulars
en el nom del fitxer.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Algunes vegades les directives de funcionament de les seccions anteriors es poden creuar.
També cal destacar, que el fitxer conté un munt de comentaris per a la seva correcta
utilització, les línies comentades apareixen amb el símbol #.
Enumeració i descripció dels paràmetres de la secció paràmetres globals del fitxer httpd.conf
Tots els paràmetres que s'estableixen dins d'aquesta secció són globals per al funcionament
del servidor, per la qual cosa no admeten estar dins de cap directiva.
ServerRoot: especifica la ubicació del directori arrel on es troba instal·lat l'Apache, a partir del
com es crea l'arbre de directoris comentat anteriorment. Aquesta directiva no hauria de
canviar tret que es mogui la carpeta d'instal·lació d'Apache a un altre directori. Es troba
disponible a través del mòdul core.
PidFile: ubicació del fitxer que contindrà el nombre d'identificació del procés quan s'encengui
el servidor. Es troba disponible a través de diversos mòduls beos, leader, mpm_winnt,
mpmt_us2, perchild, prefork, threadpool o worker.
TimeOut: el valor s'utilitza per configurar mesurat en segons, tres paràmetres:
- El temps tal que pot trigar una petició a ser rebuda.
- La quantitat de temps d’espera entre recepció de paquets TCP.
- La quantitat de temps entre ACK's en transmissions TCP.
Passat aquest temps es produeix un missatge d'error en el qual s'indica que s'ha consumit el
temps màxim d'espera. Establir un valor molt petit pot donar lloc al fet que els usuaris rebin
aquest missatge d'error, i establir un valor molt petit donarà lloc a una sobrecàrrega de la
màquina. Es troba disponible a través del mòdul core.
KeepAlive: especifica si s'utilitzaran connexions persistents, és a dir, que totes les peticions
d'un usuari s'atendran amb la mateixa connexió. Es troba disponible a través del mòdul core.
MaxKeepAliveRequests: nombre màxim de connexions persistents. (nombre màxim d'usuaris
concurrents si KeepAlive està a ON). Per establir aquest paràmetre, cal tenir en compte l'ample
de banda de sortida del nostre servidor, pel qual haurà de ser enviada tota la informació, si
s'estableix un valor molt gran respecte a l'ample de banda, el temps de resposta es veurà
incrementat per a cada usuari. Es troba disponible a través del mòdul core.
KeepAliveTimeout: temps que espera en segons entre peticions d'un usuari, abans de
considerar que aquest ha acabat, i tancar la seva connexió.
Si el valor és molt petit provocarà que alguns usuaris no puguin visualitzar la pàgina a causa
que el nombre màxim de connexions persistents s'ha superat, mentre que si s'estableix un
valor molt gran s'estaran utilitzant molts recursos de la màquina. Es troba disponible a través
del mòdul core.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Listen: aquesta directiva permet especificar quins port s'utilitzaran per atendre les peticions.
Per defecte s'utilitza el port 80 (www), també permet especificar quines adreces IP atendrà,
per defecte totes. Per atendre dos adreces IP diferents, amb diferents port, s'utilitzaria:
Listen 192.168.0.10:80
Listen 192.168.0.9:8080
Es troba disponible a través de diversos mòduls beos, leader, mpm_winnt, mpmt_us2,
perchild, prefork, threadpool o worker.
LoadModule: Directiva que serveix per carregar mòduls que inclouen diferents funcionalitats.
La sintaxi és:
LoadModule nom_del_mòdul ubicació_Arxiu
Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf
Aquesta és la secció principal de configuració del servidor, en ella podem trobar les següents
opcions:
ServerAdmin: especifica l'adreça de correu electrònic de l'administrador, aquesta adreça
apareix en els missatges d'error, per permetre a l'usuari notificar un error a l'administrador. No
pot estar dins de cap secció. Es troba disponible a través del mòdul core.
ServerName: especifica el nom i el port que el servidor utilitza per identificar-se, normalment
es determina automàticament, però és recomanable especificar-ho explícitament perquè no hi
hagi problemes en iniciar el servidor. Si el servidor no té un nom registrat en les DNS, es
recomana posar el seu número IP. No pot estar dins de cap secció.
La sintaxi és:
ServerName direccióIP:Port p.ex:. ServerName localhost:80
Es troba disponible a través del mòdul core.
DocumentRoot: la carpeta arrel que se situa en el servidor, des de la qual se serviran els
documents. Per defecte, totes les peticions, tindran com a arrel aquesta carpeta, tret que
s'utilitzin àlies (directoris virtuals en IIS).
Per defecte, la carpeta arrel és la carpeta htdocs, que es troba en la carpeta d'instal·lació de
l'Apache. No pot estar dins de cap secció.
Si es canvia aquest directori per un altre, és molt important que es posi el nou valor, no només
en aquesta línia, sinó també en la secció de la qual s'estableixen els paràmetres de
configuració d'aquest directori.
Aquesta línia comença per "
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Es troba disponible a través del mòdul core.
DirectoryIndex: especifica el fitxer per defecte que buscarà en cada directori, en cas que no
s'especifiqui cap. Per defecte és index.html. És a dir, que si per exemple es posa en el
navegador: www.exabyteinformatica.com el servidor per defecte servirà
www.exabyteinformatica.com/index.html
En aquesta directiva es poden especificar més d'un fitxer, la sintaxi és la següent:
DirectoryIndex fitxer1 fitxer2 fitxer3
L'ordre amb el qual s'especifica el nom de fitxer determinarà la prioritat a l'hora de decidir
quin fitxer és el que es mostra.
La directiva es pot trobar fora de qualsevol secció, dins d'una secció o dins d'un fitxer
.htaccess.
Es troba disponible a través del mòdul mod_dir.
AccessFileName: és el nom del fitxer de configuració que es buscarà en cadascun dels
directoris del servidor per conèixer la configuració del mateix. Aquest fitxer permet configurar
el comportament de cadascun dels directoris individualment. Perquè aquesta configuració
funcioni, la directiva AllowOverride ha de tenir un valor que ho permeti. No pot estar dins de
cap secció.
El nom de fitxer que s'especifica per defecte és el del fitxer ".htaccess".
Com a mesura de seguretat, la configuració de l'Apache estableix que no es mostri l'existència
d'aquest fitxer a cap usuari, encara que sí establir l'opció de llistat de directoris. Si es decideix
canviar al nom, caldrà redefinir la seguretat perquè no es mostri el contingut del nou fitxer.
Això es fa en el fitxer httpd.conf en una secció File com la qual es presenta a continuació en la
qual s'estableix que tots els fitxers que comencin per .ht no es mostraran.
Order allow,deny
Deny from all
Es troba disponible a través del mòdul core.
Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf
TypesConfig: especifica el nom del fitxer que conté la llista de tipus mime que coneix el
servidor, i que determinarà depenent de les extensions per generar les capçaleres http. No pot
estar dins de cap secció.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Es troba disponible a través del mòdul mod_mime.
DefaultType: tipus mime que se servirà per defecte en cas de no conèixer l'extensió del fitxer
que s'està servint. Per defecte, s'indicarà que se serveix text pla, amb el valor text/plain. La
directiva es pot trobar fora de qualsevol secció, dins d'una secció o dins d'un fitxer .htaccess.
Sintaxi: DefaultType tipusMime
Es troba disponible a través del mòdul Core.
HostnameLookups: s'utilitza en els fitxers de registre. Per defecte quan es produeix un accés,
es guarda simplement el seu nombre IP, si aquesta directiva es troba en On, el servidor
buscarà la correspondència d'aquest nombre IP amb el seu nom, i emmagatzemarà el nom.
Establir aquesta configuració en ON provocarà que almenys s'hagi de fer una petició al servidor
de noms per cadascuna de les peticions d'usuari, per la qual cosa el rendiment de la màquina
es pot veure reduït. Aquesta directiva es pot trobar dins d'una secció o fora de qualsevol altra.
Es troba disponible a través del mòdul Core.
ErrorLog: especifica la ubicació del fitxer que conté el registre d'errors, per defecte en la
carpeta logs. Aquesta directiva només es pot trobar fora de qualsevol secció.
Es troba disponible a través del mòdul Core.
LogLevel: especifica el tipus de missatges que es guardessin en el fitxer de registre d'errors,
depenent dels valors especificats, es guardaran mes o menys. Aquesta directiva només es pot
trobar fora de qualsevol secció.
Valor de més a menys són: debug, info, notice, warn, error, crit, alert, emerg
Es troba disponible a través del mòdul Core.
LogFormat: la directiva permet definir el format que s'utilitzarà per emmagatzemar els
registres. A cada format se li pot assignar un nom, utilitzant-ho després per crear diferents
tipus de fitxers de registre. Poden existir diversos logFormat diferents.
Sintaxi:
LogFormat "configuracióError" nom
Aquesta directiva es troba fora de qualsevol secció.
Es troba disponible a través del mòdul mod_log_config.
CustomLog: la directiva s'utilitza per especificar la ubicació i el tipus de format que s'utilitzarà
en un fitxer de registre. Poden existir diversos fitxers de registre diferents amb configuracions
diferents. Per fer això, simplement cal posar diverses línies customlog
Sintaxi: CustomLog fitxer format
Aquesta directiva es troba fora de qualsevol secció.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Es troba disponible a través del mòdul mod_log_config.
ServerTokens: Aquesta directiva estableix la informació que es retorna dins de la capçalera
http que envia el servidor.
Aquesta directiva es troba fora de qualsevol secció.
Es troba disponible a través del mòdul Core.
IndexOptions: Aquesta directiva controla l'aparença de la pàgina que es mostrarà a un usuari
quan es demana la llista de fitxers d'un directori.
Sintaxi:
IndexOptions [+|-]opció [[+|-]opció]
Entre les opcions que es poden posar, destaca:
FancyIndexing: que mostra els noms dels fitxers, amb icones etc..
Es troba disponible a través del mòdul mod_autoindex.
FoldersFirst: Fa que primer es mostrin els directoris. Aquesta opció només es pot establir en el
cas que FancyIndexing estigui activa.
Aquesta directiva es pot trobar dins del fitxer .htaccess, dins d'una secció i fora de qualsevol
altre.
Es troba disponible a través del mòdul mod_autoindex.
Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf
AddIconByEncoding: Aquesta directiva permet associar una icona a un tipus mime, de manera
que quan la directiva fancyIndexing estigui activada, es mostrarà al costat del fitxer la icona
corresponent.
Sintaxi:
AddIconByEncoding icon MIME-encoding
Exemple:
AddIconByEncoding/icons/icona_PC.gif x-compress
Aquesta directiva es pot trobar dins del fitxer .htaccess, dins d'una secció i fora de qualsevol
altra.
Es troba disponible a través del mòdul mod_autoindex.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
AddIconByType: Aquesta directiva associa una icona a un fitxer depenent de l'un tipus mime,
de manera que quan la directiva fancyIndexing està activada, es mostrarà al costat del fitxer la
icona corresponent.
Sintaxi:
AddIconByType icon MIME-encoding
Exemple:
AddIconByType /icons/Icona_Llapis.gif text/*
La diferència entre AddIconByType i AddIconByEncoding resideix en que mentre que en la
primera es determina el tipus mime mitjançant la codificació del fitxer, en la segona es
determina el tipus mime basant-se en el nom del fitxer.
Ambdues directives es poden trobar dins del fitxer .htaccess, dins d'una secció o fora de
qualsevol altra.
Es troba disponible a través del mòdul mod_autoindex.
AddDescription: Aquesta directiva permet associar una descripció a un tipus de fitxer, que es
mostrarà en llistar un directori. Aquesta directiva es pot trobar dins del fitxer .htaccess, dins
d'una secció o fora de qualsevol altra.
Sintaxi:
AddDescripcion cadena , fitxer
Es troba disponible a través del mòdul mod_autoindex.
AddDefaultCharset: Aquesta directiva defineix la codificació de caràcters que s'utilitzarà de
forma predeterminada per als documents. Per defecte ve establert el valor ISO-8859-1.
Aquesta directiva es pot trobar dins de qualsevol secció i en els fitxers .htaccess.
Es troba disponible a través del mòdul core.
ErrorDocument: Aquesta directiva estableix el la configuració del servidor per quan es
produeix un error. Es poden establir quatre configuracions diferents:
Mostrar un text d'error.
Redirigir a un fitxer en el mateix directori.
Redirigir a un fitxer en el nostre servidor.
Redirigir a un fitxer fora del nostre servidor.
Cal tenir en compte que si el text d'error s’envia a Internet Explorer, aquest haurà de tenir
almenys 512 Bytes, perquè sinó Internet Explorer mostrarà la seva pròpia pàgina d'error.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Sintaxi:
ErrorDocument NúmeroError Acció
Aquesta directiva es pot trobar tant dins del fitxer .htaccess, dins de la secció o fora de
qualsevol altra secció.
Exemple:
ErrorDocument 404 /error_404.html.
En cas de no trobar-se un fitxer, es mostrarà el fitxer error_404.html
Es troba disponible a través del mòdul Core.
CacheRoot: estableix el directori on es trobaran els fitxers de la cache de l'Apache.
Es troba disponible a través del mòdul mod_disk_cache
CacheSize: Grandària de la cache en Kilobytes.
Es troba disponible a través del mòdul mod_disk_cache
CacheGcInterval: Estableix cada quantes hores es verificarà la grandària dels fitxers de la cache
per comprovar si es corresponen amb la grandària establerta dins de CacheSize. El valor
accepta nombres flotants, per la qual cosa es poden establir els intervals en minuts. Com més
gran sigui el valor d'aquesta directiva, més possibilitats existiran que se sobrepassi el valor
establert en CacheSize.
Es troba disponible a través del mòdul mod_disk_cache
CacheMaxExpire: màxim nombre d'hores que els fitxers romandran dins de la cache.
Es troba disponible a través del mòdul mod_cache
CacheLastModifiedFactor: Serveix per calcular la caducitat d'un fitxer en la cache, que serà el
de l'hora de l'última modificació, multiplicat per aquest valor.
Es troba disponible a través del mòdul mod_cache
CacheDefaultExpire: Nombre d'hores per defecte a partir de les quals un fitxer caduca. S'aplica
en aquells casos en els quals no es pot determinar l'hora de creació del fitxer.
Totes les directives de la caché, han de trobar-se fora de qualsevol secció. Aquesta directiva no
es pot trobar dins de cap secció.
Es troba disponible a través del mòdul mod_cache directori virtual. Un directori que es troba
en un directori diferent del que es mapeja en la URL.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Com crear-los en Apache
Aquesta directiva només es troba dins del fitxer de configuració httpd.conf, i es tracta aparti
en aquest capítol a causa de la seva importància.
Àlies:
Permet la definició de directoris virtuals, un directori virtual és un directori que es troba en un
directori diferent del que es mapeja en la URL. El directori virtual no es té perquè trobar dins
de l’arbre de directoris que es crea a partir de DocumentRoot, sinó que es pot trobar en
qualsevol altra ubicació, fins i tot es podria trobar en un altre servidor diferent.
Per exemple, quan s'escriu www.exabyteinformatica.com/manual/php la carpeta php no s'ha
de trobar necessàriament dins de la carpeta manual, que al seu torn està dins de la carpeta
arrel exabyteinformatica, sinó que pot estar en una ubicació diferent, i fora de l'arbre de
subdirectoris de la directiva DocumentRoot
Sintaxi:
Alias nomFictici ubicacióReal
Exemple:
Alias /manual/Wordpress "c:Wordpress"
El directori Wordpress no es troba dins del directori manual dins de la carpeta documentRoot,
sinó en la carpeta o directori c:Wordpress.
Per defecte vénen creats dos redireccionaments amb Àlies.
- Icons: per establir la carpeta on es troben les icones que utilitzarà l'Apache per mostrar el
contingut dels directoris.
- Manual: que apunta a la carpeta on està instal·lat el manual de l'Apache en cas que s'hagués
triat l'opció durant la instal·lació.
AliasMatch:
La utilitat d'aquesta directiva és idèntica a la de la directiva Alias, l'única diferència és que
Àlies utilitza expressions estàndard regulars per especificar la URL que es va mapejar.
Aspectes importants a tenir en compte en la seguretat d'Apache:
Autenticació i autorització d'usuaris amb Apache
Quan un servidor Apache rep una petició d'una pàgina web, abans de retornar el resultat, duu
a terme diverses accions per verificar que la petició està autoritzada.
Les diferents accions que duu a terme per verificar la validesa de l'aplicació, es poden agrupar
en tres tipus: autenticació, autorització i control d'accés.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
L'autenticació és el procés pel qual es verifica la identitat d'una persona. D'una forma simple,
aquest procés es pot dur a terme mitjançant un nom d'usuari i una contrasenya, però es poden
arribar a utilitzar altres mètodes per validar la identitat d'una persona, com mitjançant l'ús de
certificats, targetes etc…
En Apache l'autenticació pot estar gestionada per diferents mòduls, depenent de la forma
d'implementació. Si decideix dur-la a terme gestionant fitxers amb llistes d'usuaris i
contrasenyes (xifrades), haurà d'utilitzar el mòdul mod_auth. No obstant això, si decideix dur-
la a terme mitjançant la base de dades, haurà d'utilitzar els mòduls mod_auth_dbm.
L'autorització és el procés pel qual es verifica que un usuari amb una identitat coneguda, té
accés al recurs sol·licitat. Per dur a terme aquesta acció, se solen utilitzar llistes de permisos en
les quals s'enumeren cadascuna de les accions que pot realitzar un usuari, o les que no pot fer.
Normalment, per simplificar la gestió d'aquests fitxers, els usuaris se solen unir en grups
proporcionant els permisos al grup.
En Apache l'autorització a recursos és gestionada o bé mitjançant la directiva en el fitxer
principal de configuració, o bé mitjançant la configuració de la carpeta a través de fitxers
.htaccess.
El control d'accés és el procés pel qual es verifica que la màquina des de la qual s'ha fet la
petició, té accés al recurs. Els controls d'accés s'utilitzen per limitar i controlar les màquines
que tenen accés a un recurs independentment de l'usuari que accedeix, ja que aquests
controls es duen a terme abans que es realitzi el procés d'autenticació.
En Apache, el control d'accés es pot dur a terme mitjançant les directives i , o a través del fitxer
de configuració .htaccess per controlar una carpeta especifica.
En tot cas i per poder dur a terme la configuració de les tres característiques aquí enumerades,
autenticació, autorització i control d'accés, és necessari tenir la directiva AllowOverride amb el
valor AuthConfig, per així permetre l'ús de les diferents directives d'autenticació.
Autenticació i autorització d'usuaris en Apache. Mod_auth
Per configurar el servidor Apache perquè sigui capaç d'autenticar als usuaris i verificar
l'autorització del mateix al recurs sol·licitat, és necessari realitzar les següents accions:
Crear un fitxer amb usuaris.
Crear un fitxer amb grups (si és necessari).
Definir les directives en el fitxer de configuració o mitjançant un fitxer .htaccess
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
En els fitxers d'usuaris d'Apache, en cada línia s'especifica un usuari, escrivint el nom d'usuari
separat de dos punts, seguit de la contrasenya xifrada amb MD5.
En els fitxers de grups d'Apache, en cada línia s'especifica un grup escrivint el nom del grup
seguit de dos punts, i a continuació separat per espais, els noms dels usuaris.
És recomanable que tant els fitxers d'usuaris com els de grups, es trobin emmagatzemats fora
dels directoris publicats, perquè d'aquesta forma ningú pugui descarregar-los. Així mateix,
només l'usuari root hauria d'estar autoritzat a escriure en ell, mentre que només l'usuari que
executa el servei web, hauria d'estar autoritzat per llegir-ho.
El fitxer de grups es pot crear manualment, però el fitxer amb els usuaris és recomanable
crear-ho mitjançant la utilitat htpasswd, que es troba en la carpeta amb els binaris d'Apache.
Per crear un fitxer d'usuari s'utilitzarà la següent sintaxi:
htpasswd -c ruta/passwords usuari
El paràmetre -c s'utilitza per crear un fitxer nou, per la qual cosa només s'haurà de posar la
primera vegada que es crea el fitxer, sinó ho esborrarà.
Els mòduls que intervenen en l'autenticació i autorització són els de core i mod_auth.
Les directives de mod_auth necessàries per configurar l'autenticació i autorització són les
següents:
AuthUserFile: serveix per especificar la ruta on s'emmagatzemarà el fitxer d'usuaris.
AuthGroupFile: serveix per especificar la ruta on s'emmagatzemarà el fitxer de grups.
Les directives de core necessàries per complementar la configuració del mòdul són:
AuthType: selecciona el tipus d'autenticació d'usuaris que s'utilitzarà per autenticar a un
usuari. Pot variar per directori. Els valors possibles són Basic i Digest. Amb Basic, la
transferència de les claus es farà sense xifrar, i amb digest es faran xifrades.
AuthName: especifica un nom del domini pel qual se sol·licita l'accés, aquest nom figurarà en
la pantalla on es demana la clau, i al seu torn servirà perquè el client identifiqui la contrasenya
que ha d'utilitzar en enviar una petició a un àrea determinada.
Require: selecciona els usuaris que poden accedir a un àrea determinada, els usuaris es poden
determinar a través de noms o grups.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Com protegir una carpeta i Autenticació i autorització d'usuaris amb MySQL i Apache
mod_auth_MySQL.
· Crear un fitxer de claus fora de la part pública:
-htpasswd -c /ruta/passwords Joan
En fer-ho, demanarà que s'introdueixi la clau, i aquesta serà codificada, escrivint el fitxer.
· Crear un nou fitxer, en la mateixa ubicació que "ruta", que es dirà "grups" en la qual
s'emmagatzemaran els grups, ara com ara un, per a això escriure la següent línia i guardar el
fitxer:
usuarisAutenticats: Joan
D'aquesta forma, hauria de tenir un fitxer que s’anomeni passwords, i que contingui una línia
amb les dades de l'usuari Joan, i un fitxer, amb el nom de grups, que conté una línia definint un
grup anomenat usuarisAutenticats, del que només l'usuari Joan forma part.
· Crear un fitxer amb el nom .htaccess en la carpeta que es vol protegir, escriure les següents
línies i guardar el fitxer:
AuthType Basic
AuthName "Nom_del_Servidor"
AuthUserFile /ruta/passwords
AuthGroupFile /ruta/grups
Require group usuarisAutenticats
L'explicació del contingut del fitxer és la següent:
Amb "AuthType Basic" s'estarà protegint la carpeta amb autenticació bàsica, és a dir que la
clau que l'usuari introdueixi, es transmetrà sense xifrar per la web.
Amb "AuthName "Nom_del_Servidor" s'associarà aquesta carpeta amb el domini "
Nom_del_Servidor ", nom amb el qual ho identificarà el client.
Amb "AuthUserFile /ruta/passwords" i "AuthGroupFile /ruta/grups" Es definirà la ubicació tant
dels fitxers d'usuaris com els fitxers de grups i s'emmagatzemaran en la carpeta /ruta, amb
noms passwords i grups respectivament.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Amb "Require group usuarisAutenticats" s'autoritzarà l'accés al contingut d'aquesta carpeta a
tots els usuaris que formen part del grup de "usuarisAutenticats", per la qual cosa en la
pràctica s'autoritzarà l'accés al contingut a l'usuari Joan.
En comptes de realitzar les autoritzacions a grups complets, es pot autoritzar a un usuari
determinat canviant l'última línia per "Require user Joan", d'aquesta forma només
s'autoritzarà a l'usuari Joan.
Es pot permetre l'accés a tots els usuaris identificats mitjançant la introducció de la següent
directiva "Require valid-user". El fet que aquesta directiva està inclosa en el fitxer, fa que les
altres no tinguin efecte.
Autenticació i autorització d'usuaris amb MySQL i Apache. mod_auth_MySQL
Anteriorment hem explicat com controlar l'autenticació i l'autorització d'usuaris amb el
mod_auth. Aquest mòdul té com a característica el que emmagatzema els noms d'usuari, les
contrasenyes i els grups en fitxers de text que han de ser escrits i gestionats per
l'administrador del sistema. Aquesta solució és òbviament poc escalable, ja que quan el
nombre d'usuaris i de grups és elevat, el gestionar-los i controlar-los pot ser un problema.
Per aquest motiu existeix el mod_auth_MySQL, aquest mòdul permet gestionar l'autenticació i
autorització, emmagatzemant els usuaris i els grups en taules de MySQL, de manera que fins i
tot es poden gestionar mitjançant un panell de control escrit en php.
Per configurar el mòdul en Linux, serà necessari extreure-ho i executar:
./configure --with-MySQL=/usr/local/MySQL --with-Apache=/usr/local/Apache
Substituint el lloc on es troba la instal·lació de MySQL i d'Apache.
Per utilitzar el mòdul és necessari disposar de com a mínim una taula on s'emmagatzemin els
usuaris i una altra on s'emmagatzemin els grups. Per a això es pot crear una taula usuaris amb
els camps, nom i password, i una altra taula anomenada grups amb els camps grup, usuari,
emmagatzemant una entrada per cada usuari que tingui un grup.
La configuració és la següent:
En primer lloc serà necessari establir el servidor, l'usuari i la contrasenya de la connexió amb la
base de dades, això es farà escrivint la següent línia en el fitxer httpd.conf, i reemplaçant els
valors pels correctes:
Auth_MySQL_Info
Per configurar el mòdul serà necessari establir els valors de les següents directives del mòdul:
Auth_MySQL_DB: nom de la base de dades.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Auth_MySQL_Password_Table: nom de la base de dades que conté els noms d'usuari i les
contrasenyes.
Auth_MySQL_Username_Field: nom del camp de la taula que conté a l'usuari.
Auth_MySQL_Password_Field: nom del camp de la taula que conté la contrasenya de l'usuari.
Auth_MySQL_Group_Table: nom de la taula que conté els usuaris i els grups als quals
pertanyen.
Auth_MySQL_Group_Field: nom del camp de la taula que conté el nom del grup.
Auth_MySQL_Empty_Passwords on/off per determinar si s'accepten usuaris amb contrasenyes
buides.
Auth_MySQL_Encryption_Types per especificar el tipus de xifrat que s'utilitzarà per
emmagatzemar la clau de l'usuari dins de la base de dades.
Auth_MySQL_Senar_Persistent on/off per especificar si es desitgen utilitzar connexions
persistents.
A més serà necessari establir les següent directives de core per al seu correcte funcionament:
AuthName: amb el nom del domini.
AuthType: establert a Basic.
Una vegada engegat, el funcionament és anàleg al mòdul mod_auth.
El mòdul de control d'accés d'Apache permet controlar l'accés als diferents directoris i fitxers
del servidor depenent del nom de la màquina o adreça IP del client.
Les directives que proporciona aquest mòdul es poden utilitzar dins dels elements , i del fitxer
de configuració httpd.conf, o bé dins de fitxers .htaccess situats dins de les carpetes.
Les directives amb les quals explica el mòdul per permetre o denegar l'accés són:
Allow: controla els servidors que tindran accés al contingut, per exemple:
Allow from exabyteinformatica.com Permet l'accés des de exabyteinformatica.com
Allow from 192.168.0.10 Permet l'accés des de 192.168.0.10
Allow from 192.168 Permet l'accés des de totes les adreces Ip que comencen per 192.168
Allow from all Permet tots els accessos.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Deny: controla els servidors als quals es denegarà l'accés, per exemple:
Deny from exabyteinformatica.com Denega l'accés des de exabyteinformatica.com
Deny from 192.168.0.10 Denega l'accés des de 192.168.0.10
Deny from 192.168 Denega l'accés des de totes les adreces IP que comencen per 192.168
Deny from all Denega totes les IP’s.
Order: determina l'ordre en el qual es llegiran els permisos, per exemple per llegir primer els
permesos i després els no permesos es posarà "Allow,Deny" en aquest cas si un servidor
aquesta en la llista de permesos, i en la de denegats, l'accés al mateix serà denegat, ja que
l'entrada dins de l'opció Deny sobreescriurà la de l'entrada Allow.
Cal tenir en compte que l'ús de order juntament amb Allow from all o Deny from all, permet
especificar configuracions com, permetre des d'una màquina qualsevol i denegar de la resta,
d'una forma molt senzilla.
Addicionalment, mitjançant la directiva SetEnvIf del mòdul mod_setenvif, es poden establir
variables d'entorn que determinin el funcionament de Allow o Deny de la mateixa forma que
s'utilitzen nombres IP o noms de màquines. Per exemple, utilitzant Allow from env=entrada
permetrà l'accés a totes les peticions que tinguin definida la variable d'entorn "entrada".
Controlar accés depenent del navegador amb Apache
Mitjançant l'ús conjunt de les directives Allow, Deny, Order i SetEnvIf es pot restringir l'accés a
un lloc depenent del tipus de navegador. Per realitzar-ho simplement n'hi ha prou amb crear
una variable d'entorn depenent del tipus del navegador, i permetre l'accés a les peticions que
comptin amb aquesta variable d'entorn denegant-li-ho a la resta.
Per a això la configuració necessària és la següent:
SetEnvId User-Agent googlebot entrar
Order Deny, Allow
Deny from all
Allow from env=entrar
En la primera línia s'especifica que es crearà una variable d'entorn anomenada entrar quan el
navegador sigui el motor d'indexació de Google.
En la segona línia s'especifica l'ordre en el qual s'utilitzarà la llista de servidors, primer els
denegats i després els permesos.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
En la quarta línia s'especifica que es denega l'accés a qualsevol petició.
En la cinquena línia s'especifica que es permet l'accés a les peticions que tenen definida la
variable d'entorn entrar.
En el cas que entri el motor d'indexació de Google, primer es llegirà la línia en què es
deneguen totes les peticions, per a continuació llegir la línia en la línia en la qual es permet
l'accés des de les peticions que tenen definida la variable entrar, com el navegador que ho fa
és el googlebot, aquesta variable estarà definida i entrarà.
En el cas en què la petició sigui realitzada per qualsevol altre navegador, primer es llegirà la
línia en la qual es deneguen les peticions, i com no satisfà la línia en què ho permet, no
entrarà.
En aquest document anem a ensenyar a utilitzar una API d'Apache per gestionar les
configuracions de les vostres aplicacions de manera avançada.
Alguna vegada has implementat classes que gestionessin directament dades de configuració?
Si la resposta és afirmativa, segurament hagis reinventat la roda.
Existeixen diverses formes estàndard de gestionar les dades de configuració dels nostres
components i aplicacions:
Mitjançant la classe java.util.Properties
A través de les classes del paquet java.util.prefs. (API molt potent que permet gestionar dades
de configuració de manera jeràrquica a l'estil del "Registre de Windows" que recomano llegir si
la desconeixes).
Hi ha una API que és d'enorme utilitat i potència per a la gestió de dades de configuració. Es
tracta d'Apache Jakarta Commons Configuration.
Apache Jakarta Commons Configuration és un sub-projecte de la sèrie de projectes Apache
Jakarta Commons.
Commons Configuration és un conjunt de projectes que intenten estandarditzar les tasques
comunes que gairebé totes les aplicacions i components realitzen normalment.
Una tasca molt comuna en qualsevol aplicació és la gestió de dades de configuració. És aquí on
entra en joc Apache Jakarta Commons Configuration.
Podem obtenir tot el necessari des de la següent adreça:
http://jakarta.apache.org/commons/configuration/
Bàsicament Apache Commons Configuration ens permet:
Gestió de les dades de configuració independentment del lloc en el qual estiguin
emmagatzemades. (Fitxers de propietats, documents XML, base de dades, etc.).
Un potent motor de consultes per realitzar cerques del valor que tenen determinades
propietats de configuració.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Recarrega automàtica de les dades de configuració en cas de que siguin modificades en el seu
lloc físic d'origen (Fitxer de text pla, fitxer XML, etcètera...).
Possibilitat d'emmagatzemar les dades de configuració automàticament en el seu lloc físic
(fitxer de text pla, fitxer XML, etc).
Alguns exemples:
Abans de res, ressaltem que aquesta secció és només una introducció al API, i que ha de
documentar-se en la Web oficial del API per veure totes les possibilitats que ens proporciona..
Exemple:
Suposem que tenim el següent fitxer de propietats, en el qual es defineixen dades de
configuració relacionades amb l'interfície gràfica de l'aplicació.
app.windows.properties:
mainmdi.title=Títol de la meva aplicació de prova
mainmdi.width=1024
mainmdi.height=768
mainmdi.state=maximized
userform.title=Gestió d'usuaris
userform.width=640
userform.height=480
userform.state=normal
language=Català
language=English
language=French
Doncs a través de Commons Configuration, podríem accedir a les propietats de la següent
forma:
try {
// Llegim les dades de configuració. El fitxer ha d'estar en el mateix directori que l'aplicació.
PropertiesConfiguration config = new PropertiesConfiguration("app.windows.properties");
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
// La següent sentència imprimirà: 1024
System.out.println(config.getInt("main.mdi.width"));
// La següent sentència imprimirà: Títol de la meva aplicació de prova
System.out.println(config.getString("main.mdi.title"));
// La següent sentència imprimirà: Català
System.out.println(config.getStringArray("language")[0]);
// La següent sentència configura l'objecte perquè salvi les propietats
// automàticament a l'origen (En aquest cas un fitxer) quan s’actualitzen
// o quan s’afegeixen noves propietats
config.setAutoSave(true);
// Afegim un parell de propietats
config.addProperty("version", "1.0");
config.addProperty("author", "Nom_de_l’autor");
// No fa falta gràcies a que està establerta la propietat autoSave
// config.save();
} catch (ConfigurationException ex){
System.out.println(ex);
}
Altres Característiques interessants
Aquest API també ens dóna la possibilitat que es recarregin automàticament les dades de
configuració sobre l'objecte Configuration en cas que aquests hagin estat modificats.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Per habilitar aquesta característica haurà d'indicar-ho mitjançant la següent línia de codi:
config.setReloadingStrategy(new FileChangedReloadingStrategy());
Conclusions
Aquesta API és més completa, potent i flexible que la resta de APIS o mètodes per gestionar
dades de configuració.
Encara que java.util.prefs proporciona una funcionalitat i potència similar a Commons
Configurations, les dades de configuració en java.util.prefs només poden ser modificades des
d'aplicacions i no manualment, doncs entre altres coses no se sap on guarda realment aquest
API les dades de configuració.
Quan utilitzem objectes Properties per gestionar les propietats, hem de realitzar conversions
de tipus de dades, amb aquest API ens estalviem aquest treball.
Per comentar alguna cosa negativa, aquesta API depèn d'altres sub-projectes de Jakarta, per la
qual cosa hem d'incloure els seus JAR’s associats si volem usar-ho. Per exemple, per usar les
funcions bàsiques, el API depèn de:
Apache Jakarta Commons Lang
Apache Jakarta Commons Collections
Apache Jakarta Commons Loggin
Aquestes són 20 recomanacions per optimitzar la seguretat en el teu servidor Apache
De la mateixa manera has de tenir en compte que algunes d'aquestes recomanacions poden
disminuir el rendiment del teu servidor depenent de la teva configuració i de les
especificacions del sistema.
Primer, assegura’t de tenir instal·lat els últims pegats de seguretat.
No té sentit posar un pany mes resistent a la teva porta si deixes la finestra oberta. De la
mateixa manera si no tenim els últims pegats de seguretat instal·lats no tindria sentit
continuar amb l'optimització de seguretat.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Restringir l’accés per IP
Si tens un recurs al que hagi de només tenir accés alguna xarxa, o IP en concret pots
configurar-ho en Apache. Per exemple si desitges restringir l'accés a la teva Intranet per
permetre nomès la xarxa 192.168:
Order Deny,Allow
Deny from all
Allow from 192.168.0.0/255
o per IP:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Ocultar la versió i una altra informació delicada
Per defecte moltes instal·lacions d'Apache mostren el nombre de versió que està funcionant, el
sistema operatiu i un informe de mòduls d'Apache estan instal·lats en el servidor. Els usuaris
maliciosos poden utilitzar aquesta informació per atacar el teu servidor.
Hi ha dues directives que necessites afegir o corregir en el teu arxiu de httpd.conf:
ServerSignature Off
ServerTokens Prod
El ServerSignature apareix en la part inferior de les pàgines generades per Apache tals com els
famosos errors 404.
La directiva ServerTokens s'utilitza per determinar-se el que posarà Apache en la capçalera de
la resposta HTTP del servidor.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Apache ha de funcionar sota el seu propi compte i grup d'usuari
Algunes versions d'Apache corren sota l'usuari nobody, això compromet molt la seva seguretat
per tant fes el següent:
User Apache
Group Apache
Utilitza el mod_security
El mod_security és un mòdul fantàstic d'Apache escrit per Ivan Ristic, l'autor d'Apache Security
d'O'Reilly.
Aquesta és una llista de coses que pots fer amb mod_security:
Filtració simple.
Filtració basada en expressions regulars.
Validació de codificació de la URL.
Validació de codificació Unicode.
Auditoria.
Prevenció de l'atac NULL Byte.
Limitar la memòria de pujada.
Emmascarar la identitat del servidor.
I més...
Deshabilitar qualsevol mòdul innecessari
Apache ve per defecte instal·lat amb un sèrie de mòduls. Has de fer-li un cop d'ull a la
documentació d'Apache i veure perquè serveix cadascun d'ells, i d'aquesta manera t'adonaràs
que hi ha alguns que no són útils en el teu servidor.
Cerca en httpd.conf les línies que continguin LoadModule. Per deshabilitar el mòdul has
d'afegir un # al principi de la línia, perquè d'aquesta forma passi a ser un comentari. Per
buscar els mòduls prova amb:
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
grep LoadModule httpd.conf
Aquí estan alguns mòduls que s'instal·len per defecte però sovint no són necessaris:
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex.
Assegura’t de que els arxius als quals s'accedeix són els desitjats.
No desitgem que es pugui accedir als directoris que no tinguin permisos per a això, suposem
que el directori arrel per les nostres webs és /web, la configuració òptima hauria de ser la
següent:
Order Deny,Allow
Deny from all
Options None
AllowOverride None
Order Allow,Deny
Allow from all
Desactiva les opcions per explorar directoris
Això ho pots fer amb les opcions de directiva dins de l'etiqueta directori té dos possibles
valors: none o index.
Options -Index
Desactiva els includes del costat del servidor.
Això també es fa amb les opcions de directiva dins de l'etiqueta directori té dos possibles
valors: none o include.
Options -Includes
Desactiva l'execució de CGI.
Si no necessites l'execució de CGI per algun motiu en concret desactiva’ls es fa amb les opcions
de directiva dins de l'etiqueta directori té dos possibles valors: none o ExecCGI.
Options –ExecCGI
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
No permetre que Apache segueixi enllaços simbòlics
De nou es configura amb les opcions de directiva dins de l'etiqueta directori té dos possibles
valors: none o FollowSymLinks.
Options -FollowSymLinks
Desactivar totes les opcions.
Si desitges desactivar l'ús de totes les opcions simplement:
Options None
Si solament desitges desactivar algunes en concret, separa-les amb un espai en les opcions de
directiva:
Options -ExecCGI -FollowSymLinks -Indexis
Desactivar l'ajuda per als arxius .htaccess
Això està fet ja però amb la directiva AllowOverride. Canvia-ho a none.
AllowOverride None
Una altra opció interessant seria bloquejar la descàrrega de tots els arxius que comencin amb
.ht per exemple, es faria de la següent manera:
AccessFileName .httpdoverride
Order allow,deny
Deny from all
Satisfy All
Disminueix el valor màxim de temps d'espera
Per defecte el temps d'espera és de 300 segons. Pots disminuir-ho per seguretat per prevenir
atacs d'aquesta manera:
Timeout 45
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Limitar la grandària màxima de peticions
Apache té diverses directives que permeten que limitis la grandària d'una petició, això pot ser
molt útil.
Una bona manera de començar és amb la directiva LimitRequestBody. Aquesta directiva està
fixada a il·limitat per defecte. Si estàs permetent uploads d'arxius que no siguin majors a 1
Megabyte, podries fixar aquest ajust a alguna cosa semblat a això:
LimitRequestBody 105000
Si no estàs permetent uploads d'arxius pots fixar-ho fins i tot a una grandària més petita.
Alguns altres directives a mirar són LimitRequestFields, LimitRequestFieldSize i
LimitRequestLine.
Conclusió
Espero que aquestes recomanacions us hagin estat útils i recorda que l'ús que li has de donar
depèn en gran mesura dels recursos que necessites i de les característiques del teu servidor,
abans de fer qualsevol canvi si no estàs segur documenta't i utilitza aquest article únicament
com una referència perquè et porti a la solució més ideal.
Solució a un problema en dominis allotjats en servidors amb el panell de control Plesk
Relatiu a la directiva de PHP open_basedir.
Estem utilitzant un nou servidor que té suport per PHP 5. (Fins al moment estàvem treballant
amb PHP 4, però ja era hora de canviar). Com sempre, migrar a un nou servidor porta els seus
problemes, però afortunadament amb l'ajuda del suport tècnic i amb la documentació que es
troba per Internet, es van arreglant.
En aquest article us explicarem un error que hem trobat a l'hora de configurar el domini, que
després s’ha vist que és comú a moltes persones que tenen el panell de control Plesk com a
gestor dels recursos del servidor. Així doncs vaig a intentar expressar el problema i la solució
que hem trobat.
El problema amb open_basedir
Plesk té una configuració pròpia de la directiva de PHP open_basedir (que es defineix en el
php.ini). Per la configuració de Plesk de open_basedir, només es poden incloure arxius que
pengin del directori de publicació del domini, és a dir el directori httpdocs del domini.
L'estat de open_basedir configurat per Plesk de manera predeterminada és el següent:
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
open_basedir = "/var/www/vhosts/elteudomini.com/httpdocs:/tmp"
Per aquesta directiva no es poden incloure arxius (amb la funció include o require de PHP) que
estiguin en altres carpetes o sub-carpetes que pengin de les marcades en el open_basedir.
Nosaltres tenim algunes carpetes que contenen codis font i no s'estaven podent incloure. Per
això ens saltava sovint un error PHP com a aquest:
open_basedir restriction in effect. File(./../directori-fonts-httpdocs/arxiu.php) is not within the
allowed path(s): (/var/www/vhosts/elmeudomini.com/httpdocs:/tmp)
Després es va veure que aquest problema ho tenen també usuaris que tinguin codis inclosos
en frameworks per PHP com PEAR.
Solució al problema: configurar Plesk
La primera aproximació a la solució va ser, com es va pensar, modificar l'arxiu PHP.ini. De fet,
és el que pensava que ho arreglaria. Per canviar la directiva open_basedir del php.ini. Però els
canvis, no van fer efecte. També vaig provar canviant la directiva include_path, però tampoc es
va arreglar gens.
Una vegada consultat amb el servei tècnic del nostre proveïdor, ens van aconsellar moure
totes les carpetes al directori de publicació, però això no és possible, per diverses raons. Però
ens van donar la pista que el problema estava relacionat amb Plesk.
Finalment buscant per Pear i Plesk en Google va aparèixer un article molt interessant en una
pàgina en anglès: How to: Enable PEAR/Set open_basedir.
En aquest article s’expressa pas a pas el que s'ha de fer, que resumint seria:
Existeix un arxiu que Plesk utilitza per configurar cada domini, de manera que no convé tocar
el php.ini, perquè això afectaria a tot el servidor (i no sempre, perquè algunes directives, com
open_basedir, després les sobre-escriu Plesk en altres arxius apart i per molt que es toquin en
el php.ini no tindrà cap efecte).
Hi ha un lloc on s'han de configurar els canvis del php.ini, específics per a cada domini allotjat.
En el meu cas aquest arxiu de configuració no estava creat, per la qual cosa he hagut de crear-
ho. L'arxiu de configuració específic per a cada domini està en el directori
/var/www/vhosts/midominio.com/conf
I l'arxiu que cal crear allí, o modificar si és que ja existeix és:
vhost.conf
Perquè funcioni, el contingut de l'arxiu que he col·locat és el següent:
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
php_admin_value open_basedir
"/var/www/vhosts/elmeudomini.com/httpdocs:/tmp:/var/www/vhosts/elmeudomini.com/dir
ectori_includes
php_admin_value display_errors On
Es tracta simplement de definir el open_basedir marcant tots els directoris on hi ha arxius que
es pretenen incloure des de PHP. (Amb incloure un directori et permet incloure arxius de tots
els subdirectoris que hi hagi dins).
En el codi anterior pots veure que hem modificat un altre paràmetre del PHP:
display_errors On (Això és per poder veure els errors directament a la pàgina, en comptes del
log d'errors, que és més còmode almenys durant les proves i fins a migrar definitivament el
domini).
Ara bé, ja sabem on tocar per configurar directives PHP del php.ini específiques per a un
domini allotjat. Podrem definir totes les directives que es necessitin. Per exemple, una altra
cosa que es pot necessitar canviar és anul·lar el safe_mode per a un domini en concret i això es
pot fer des d'aquest mateix arxiu amb la línia:
php_admin_value safe_mode Off
Perquè els canvis tinguin efecte àdhuc hem de realitzar un parell de passos.
Es tracta primer de dir-li a Plesk que actualitzi la configuració d'un domini. Això es fa amb la
instrucció:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=elmeudomini.com
Ara també haurem de reiniciar l'Apache, que es pot fer amb la instrucció:
/etc/init.d/httpd restart
O bé amb la instrucció:
service httpd restart
Això és tot, ara hauria de funcionar.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Què és la compressió per GZIP d'un lloc web, com funciona i de quina manera ajuda en
l'optimització de la descàrrega d'una pàgina
La compressió per GZIP és una de les possibilitats més importants per optimitzar un lloc web,
per buscar un millor acompliment en la càrrega de les pàgines. Consisteix a enviar els codis del
lloc en format comprimit, perquè ocupin molt menys espai i per tant es transfereixin per la
xarxa d'una manera més ràpida.
Tenim vàries formes de definir que s'enviïn comprimits els arxius de la pàgina. La manera més
normal és configurar el servidor web on estigui allotjada la pàgina, ja sigui Apache, IIS o
qualsevol altre sistema, per marcar que s'utilitzi algun dels mètodes de compressió per als
arxius. Encara que en ocasions espanta una mica això de configurar el servidor web, us podem
avançar que aquesta configuració és molt senzilla de realitzar i al llarg de l’article anem a
explicar detingudament com realitzar-la de diverses maneres.
Una altra manera d'enviar els arxius comprimits és programar nosaltres mateixos aquesta
funcionalitat amb algun mòdul a la teva pàgina realitzada en llenguatges del servidor com PHP.
Aquest mòdul que podries programar s'encarregaria de comprimir els arxius i enviar-los
comprimits al client web, però aquestes tècniques només serien recomanades si no tenim la
possibilitat de configurar directament el servidor web. D'ara endavant veurem de quines
maneres que es poden enviar els arxius comprimits amb algun llenguatge de programació.
En definitiva, veurem maneres diferents d'aconseguir aquesta configuració i així qualsevol
persona, en qualsevol àmbit de treball, pugui optimitzar la distribució dels continguts de la
seva pàgina amb GZIP.
Avantatges de comprimir amb GZIP
L'avantatge de comprimir amb GZIP el nostre lloc web és que serà menys pesat en KB, la qual
cosa derivarà al seu torn en altres avantatges importants:
Estalvi d'ample de banda / transferència: el nostre lloc web enviarà arxius comprimits i per
tant, la transferència que utilitzarà per enviar una mateixa pàgina, serà molt millor que si no
estigués comprimida. Al cap del mes, sobretot en llocs web amb bastant tràfic, s'obtindrà un
estalvi considerable en transferència.
Velocitat del lloc: els arxius comprimits trigaran menys a arribar als seus destinataris, per tant
el lloc carregarà amb major rapidesa. Si estem optimitzant el lloc a la recerca de millorar el
temps de càrrega, la compressió amb GZIP serà una de les més importants opcions que
tindrem a la nostra disposició i podrem configurar-la en pocs minuts.
Suport en tots els navegadors actuals: avui dia podem estar tranquils amb la compatibilitat de
la compressió amb GZIP, ja que tots els navegadors actuals la implementen.
En realitat, comprimir els arxius amb GZIP sempre ens porta avantatges interessants que faran
que nostre lloc web funcioni més de pressa, per la qual cosa resultarà positiu en qualsevol cas.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
L'únic marc que podria donar problemes és que el navegador que està utilitzant el visitant no
accepti compressió a les pàgines, però realment en el panorama actual de navegadors això és
poc probable. Per tant, tret que el teu lloc web hagi de ser compatible amb, per exemple, la
versió 3 d'Internet Explorer, pots utilitzar-la sense problemes.
De qualsevol forma, el nostre servidor pot enviar els arxius comprimits només als navegadors
que suportin aquest format. Pel que no hauria de preocupar-nos ni tan sols aquesta possibilitat
d'un navegador no compatible.
Llocs web populars com Yahoo.com o Google comprimeixen les pàgines amb GZIP abans
d'enviar-les al client web, per la qual cosa resulta clar que nosaltres també hem d'aprofitar
aquesta possibilitat d'optimització de la web. De fet, no fer-ho, significa que estem perdent
una oportunitat molt bona per fer que el nostre lloc sigui més ràpid.
Per posar un parell d'exemples, la portada de Yahoo.com en aquest moment ocupa 149 Kb.,
però com s'envia comprimida, en realitat només es transfereixen 28 Kb..
exabyteinformatica.com, el lloc on estem publicant aquestes informacions, ocupa en la seva
home page 92 KB i en enviar-se comprimida la pàgina per GZIP en realitat només es
transfereixen 43 KB. Això vol dir que estem estalviant més d'un 40% de la transferència que en
principi seria necessària si no ho comprimíssim.
Com podem crear un arxiu .htaccess per configurar Apache i demanar-li que enviï tots els
arxius, menys les imatges, comprimides amb GZIP?
Després d'haver llegit el Manual de compressió amb GZIP d'un lloc web ja hem de tenir una
idea sobre els avantatges de comprimir les pàgines i altres recursos abans d'enviar-los al
navegador. A més, hem conegut ja diversos mètodes de fàcil configuració per aconseguir
aquesta compressió GZIP a les pàgines PHP i altres arxius externs com JS o CSS.
En aquest article anem a continuar explorant possibilitats de configuració del nostre servidor
web Apache, també per mitjà d'un arxiu .htaccess, que és la manera més senzilla i a l'abast
d'un major nombre de persones. En concret anem a mostrar com definir en una sola instrucció
que es comprimeixin tots els arxius menys les imatges.
Potser alguns de vosaltres es preguntin: Per què no comprimim les imatges? I és que realment,
com ja havíem assenyalat en aquest manual, les imatges ja estan comprimides, ja que els
arxius gràfics utilitzats en web tenen tots un nivell de compressió. Per tant, comprimir un GIF
amb GZIP no tindrà pràcticament millora alguna, doncs el pes de l'arxiu comprimit serà
pràcticament el mateix que el GIF original. A més, representarà un esforç per al processador
del servidor web, que haurà de comprimir aquests arxius abans d'enviar-los al client. Al final, el
rendiment del servidor pot veure's reduït, per haver de comprimir totes les imatges, i realment
no haurem avançat en gens, ja que les imatges ocuparan gairebé el mateix espai en KB. Això
passa amb qualsevol tipus d'arxiu gràfic, no només amb els GIF, sinó amb altres utilitzats per
fer webs, com JPG o PNG.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Instrucció htaccess per comprimir un tipus de mitjà
Existeix una instrucció que s'insereix en el codi dels htaccess que serveix per definir la
compressió GZIP / DEFLATE. La instrucció es diu AddOutputFilterByType i hem d'indicar-li
després el tipus de compressió i el tipus de mitjà que desitgem comprimir.
Per exemple, amb aquesta línia de codi comprimiríem tots els arxius de text pla:
AddOutputFilterByType DEFLATE text/plain
Si desitgem, podem comprimir tots els arxius HTML amb aquesta línia de codi en el htaccess.
AddOutputFilterByType DEFLATE text/html
A continuació podem veure una sèrie de línies amb diferents tipus de mitjans que s'estan
indicant per comprimir:
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
Amb aquest mètode, Apache serà prou intel·ligent per enviar els arxius comprimits només per
als navegadors que suporten aquesta optimització i nosaltres no hem de fer res perquè tot
funcioni correctament.
Entre els dos mètodes GZIP / DEFLATE podem triar qualsevol d'ells. Deflate és bastant ràpid i
compatible amb més versions de navegadors antics.
Com configurar i personalitzar la pàgina d'error 404, de pàgina no oposada, en el servidor
Apache amb la directiva ErrorDocument
Les pàgines d'error 404 són tan típiques que és possible que tots les coneguem sense parlar
més d'elles. Penso que és difícil trobar algú que navegui habitualment per la xarxa i no hagi
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
reparat en elles en alguna ocasió, però així i tot la persona que desitgi saber una mica més, pot
consultar què diuen els usuaris de la Wiki en l'entrada sobre l'error 404.
Apache, el servidor web més utilitzat mundialment, ofereix una senzilla manera de configurar
les pàgines d'error, accessible fins i tot per a les persones que menys experiència tenen quant
a desenvolupament de pàgines web. En aquest article veurem dues possibles maneres de dir-li
al nostre servidor web Apache la pàgina que desitgem es mostri en el cas que es produeixi un
error 404.
En principi, les dues possibilitats que veurem són independents una de l'altra, per la qual cosa
podrem triar la que més ens convingui, o la que suporti el nostre espai d'allotjament. Les dues
maneres passen per configurar la variable de sistema "ErrorDocument", que serveix per indicar
el document HTML que ha de lliurar-se quan sorgeixi un error de pàgina no oposada.
Nota: de manera predeterminada, en produir-se un error 404, Apache mostra una pàgina
d'error molt simple, que la veritat és que no ofereix a l'usuari molta informació útil que li
serveixi per detectar el motiu de l'error. Per això, pot merèixer la pena configurar la nostra
pròpia pàgina d'error 404 personalitzada.
Configuració de l'error 404 en el httpd.conf
La primera possibilitat per configurar la pàgina d'error 404 és editar l'arxiu principal de
configuració d'Apache, anomenat httpd.conf. Aquest arxiu és bastant llarg i conté centenars de
configuracions possibles per al servidor web. En el Manual d'Apache ja vam veure diversos
articles sobre els quals tractem aquest arxiu httpd.conf i les variables principals per a la seva
configuració. En concret, recomanem llegir l'article Directives de funcionament en httpd.conf.
L'única cosa que haurem d'afegir és una línia on indiquem la ruta de l'arxiu que envia en
produir-se un error de recurs no oposat, per mitjà de la variable "ErrorDocument".
ErrorDocument 404 /mipagina404.html
En aquest cas, s'indicaria que, sota un error 404, s'ha d'enviar el document que està en l'arxiu
"lamevapàgina404.html" (o qualsevol altre document que vulguem utilitzar com a pàgina
d'error). La ruta indicada cap a l'arxiu comença per "/", per la qual cosa Apache entendrà que
el mateix està en l'arrel del domini.
Nota: Abans d'afegir aquesta línia, hauríem de comprovar si existeix en alguna part de l'arxiu
httpd.conf una referència anterior a aquesta directiva, fent una cerca pel text
"ErrorDocument" dins de l'arxiu. Però tenir en compte que en l'arxiu httpd.conf totes les línies
que comencen per "#" són comentaris.
Recordar també que, perquè els canvis en el httpd.conf facin efecte, hem de guardar l'arxiu i
després reiniciar el servidor Apache.
Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
© Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Configuració de la pàgina d'error 404 per .htaccess
En la majoria dels casos que puguem trobar-nos, en els plans d'allotjament per a la nostra web,
no ens permetran editar el httpd.conf, ja que aquest arxiu conté moltes directives de
configuració crítiques, que mal editades podrien donar lloc a funcionaments erronis del
servidor. Per això, per configurar el nostre espai de hosting en Apache segurament ens vindrà
molt millor aquesta segona opció.
La segona possibilitat es tracta simplement de crear un arxiu que s’anomeni .htaccess (l'arxiu
comença per ".", com si no tingués nom i només s'indica aquesta extensió), on col·locarem la
directiva de configuració "ErrorDocument".
L'arxiu .htaccess es col·locarà en l'arrel del domini i tindrà el següent contingut.
ErrorDocument 404 /error404.html
Com es pot veure, s'indica també la ruta on estaria la pàgina d'error en el nostre sistema. En
aquest cas en un arxiu anomenat error404.html, que estaria en l'arrel del domini. Òbviament,
cada persona col·locarà el nom d'arxiu que vulgui utilitzar com a error 404 i la ruta on es trobi
aquest arxiu dins del domini.
Nota: Si disposem ja d'un arxiu .htaccess en la nostra arrel del domini, simplement haurem
d'editar-ho per incorporar aquesta línia.
Conclusió i altres referències sobre error 404
A partir de que hàgim realitzat aquesta configuració podrem accedir a qualsevol pàgina que no
existeixi, o qualsevol altre tipus de recurs, com una imatge, i veure que Apache ens mostra des
de llavors l'arxiu que hàgim configurat per expressar l'error 404.
Com dèiem, els errors 404 són bastant típics i gràcies a aquesta tècnica podem utilitzar-los per
redireccionar a l'usuari cap a altres continguts o explicar-li els motius de l'error, així com oferir-
li possibles accions per solucionar-los o trobar allò que buscava.

More Related Content

Viewers also liked

Viewers also liked (12)

Presentació del protocol TCP/IP
Presentació del protocol TCP/IPPresentació del protocol TCP/IP
Presentació del protocol TCP/IP
 
Presentació de Facebook
Presentació de FacebookPresentació de Facebook
Presentació de Facebook
 
Presentació de la història de Google
Presentació de la història de GooglePresentació de la història de Google
Presentació de la història de Google
 
Presentació de Wordpress fins a la 3.5.1
Presentació de Wordpress fins a la 3.5.1Presentació de Wordpress fins a la 3.5.1
Presentació de Wordpress fins a la 3.5.1
 
Presentació de Virtual box
Presentació de Virtual boxPresentació de Virtual box
Presentació de Virtual box
 
Presentació de Twitter
Presentació de TwitterPresentació de Twitter
Presentació de Twitter
 
Servidor web apache
Servidor web apache Servidor web apache
Servidor web apache
 
Apache: páginas multilenguaje
Apache: páginas multilenguajeApache: páginas multilenguaje
Apache: páginas multilenguaje
 
Apache: información sobre nuestro servidor web
Apache: información sobre nuestro servidor webApache: información sobre nuestro servidor web
Apache: información sobre nuestro servidor web
 
Apache: Más opciones de configuración
Apache: Más opciones de configuraciónApache: Más opciones de configuración
Apache: Más opciones de configuración
 
Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)
 
Que es wamp server
Que es wamp serverQue es wamp server
Que es wamp server
 

Similar to Presentació del servidor Apache

Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)Carlos Campderrós
 
HyperText Transfer Protocolo
HyperText Transfer ProtocoloHyperText Transfer Protocolo
HyperText Transfer ProtocoloFrancesc Perez
 
Drupal: Posada en Funcionament
Drupal: Posada en FuncionamentDrupal: Posada en Funcionament
Drupal: Posada en FuncionamentAtenea tech
 
Resum
ResumResum
Resumcfgmi
 
Power Point Informàtica
Power Point InformàticaPower Point Informàtica
Power Point InformàticaAndreuSegui
 
ARSO-M6: Administracio del web - Guio
ARSO-M6: Administracio del web - GuioARSO-M6: Administracio del web - Guio
ARSO-M6: Administracio del web - GuioAurora Lara Marin
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Miquel Boada Artigas
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Miquel Boada Artigas
 
El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephpherotyc
 
Wordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linuxWordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linuxJosep Comas
 
Programari d'un ordinador 1r trimestre
Programari d'un ordinador 1r trimestre Programari d'un ordinador 1r trimestre
Programari d'un ordinador 1r trimestre eriik12
 

Similar to Presentació del servidor Apache (20)

Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)
 
Tema 5
Tema 5Tema 5
Tema 5
 
HyperText Transfer Protocolo
HyperText Transfer ProtocoloHyperText Transfer Protocolo
HyperText Transfer Protocolo
 
Drupal: Posada en Funcionament
Drupal: Posada en FuncionamentDrupal: Posada en Funcionament
Drupal: Posada en Funcionament
 
Resum
ResumResum
Resum
 
Power point informàtica
Power point informàticaPower point informàtica
Power point informàtica
 
Power Point Informàtica
Power Point InformàticaPower Point Informàtica
Power Point Informàtica
 
Power Point Informàtica
Power Point InformàticaPower Point Informàtica
Power Point Informàtica
 
ARSO-M6: Administracio del web - Guio
ARSO-M6: Administracio del web - GuioARSO-M6: Administracio del web - Guio
ARSO-M6: Administracio del web - Guio
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
CakePHP
CakePHPCakePHP
CakePHP
 
Wordpress bàsic - Olot 2011
Wordpress bàsic - Olot 2011Wordpress bàsic - Olot 2011
Wordpress bàsic - Olot 2011
 
El framework Cakephp
El framework CakephpEl framework Cakephp
El framework Cakephp
 
Wordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linuxWordpress i detecció de malware en servidors linux
Wordpress i detecció de malware en servidors linux
 
Presentació de PHP
Presentació de PHPPresentació de PHP
Presentació de PHP
 
Programari
ProgramariProgramari
Programari
 
Programari
ProgramariProgramari
Programari
 
Programari
ProgramariProgramari
Programari
 
Programari d'un ordinador 1r trimestre
Programari d'un ordinador 1r trimestre Programari d'un ordinador 1r trimestre
Programari d'un ordinador 1r trimestre
 

More from Roger Casadejús Pérez (20)

Presentació històrica del VHS
Presentació històrica del VHSPresentació històrica del VHS
Presentació històrica del VHS
 
Ps3 slim al descobert
Ps3 slim al descobertPs3 slim al descobert
Ps3 slim al descobert
 
Presentació de Playstation 3
Presentació de Playstation 3Presentació de Playstation 3
Presentació de Playstation 3
 
Què és W3C?
Què és W3C?Què és W3C?
Què és W3C?
 
Sitemap.xml i robots.txt
Sitemap.xml i robots.txtSitemap.xml i robots.txt
Sitemap.xml i robots.txt
 
Seo: Com triomfar en els buscadors?
Seo: Com triomfar en els buscadors?Seo: Com triomfar en els buscadors?
Seo: Com triomfar en els buscadors?
 
Dues tecniques SEO de programació web
Dues tecniques SEO de programació webDues tecniques SEO de programació web
Dues tecniques SEO de programació web
 
Què és i com funciona el pagerank?
Què és i com funciona el pagerank?Què és i com funciona el pagerank?
Què és i com funciona el pagerank?
 
Url amigables
Url amigablesUrl amigables
Url amigables
 
Zona DMZ
Zona DMZZona DMZ
Zona DMZ
 
Presentació de spoofing
Presentació de spoofingPresentació de spoofing
Presentació de spoofing
 
IP brick
IP brickIP brick
IP brick
 
Presentació de Smoothwall
Presentació de SmoothwallPresentació de Smoothwall
Presentació de Smoothwall
 
Presentació històrica de Visual.NET
Presentació històrica de Visual.NETPresentació històrica de Visual.NET
Presentació històrica de Visual.NET
 
Presentació de MySQL
Presentació de MySQLPresentació de MySQL
Presentació de MySQL
 
Presentació de Javascript
Presentació de JavascriptPresentació de Javascript
Presentació de Javascript
 
Presentació Ajax
Presentació AjaxPresentació Ajax
Presentació Ajax
 
Presentació de HTML 5
Presentació de HTML 5Presentació de HTML 5
Presentació de HTML 5
 
Presentació del Mini dv
Presentació del Mini dvPresentació del Mini dv
Presentació del Mini dv
 
Presentació de Xbox one
Presentació de Xbox onePresentació de Xbox one
Presentació de Xbox one
 

Presentació del servidor Apache

  • 1. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Presentació del servidor Apache Descripció de l'arquitectura en mòduls de l'Apache. Explicació i enumeració de les funcionalitats associades a cada mòdul: El servidor Apache és un programari que està estructurat en mòduls. La configuració de cada mòdul es fa mitjançant la configuració de les directives que estan contingudes dins del mòdul. Els mòduls de l'Apache es poden classificar en tres categories: · Mòduls base: Mòdul amb les funcions bàsiques de l'Apache. · Mòduls multi procés: són els responsables de la unió amb els ports de la màquina, acceptant les peticions i enviant als fills a atendre a les peticions. · Mòduls addicionals: Qualsevol altre mòdul que li afegeixi una funcionalitat al servidor. Les funcionalitats més elementals es troben en el mòdul base, sent necessari un mòdul multi procés per gestionar les peticions. S'han dissenyat diversos mòduls multi procés per a cadascun dels sistemes operatius sobre els quals s'executa l'Apache, optimitzant el rendiment i rapidesa del codi. La resta de funcionalitats del servidor s'aconsegueixen per mitjà de mòduls addicionals que es poden carregar. Per afegir un conjunt d'utilitats al servidor, simplement cal afegir-li un mòdul, de manera que no és necessari tornar a instal·lar el programari. Mòduls base i mòduls multi procés core: Funcions bàsiques de l'Apache que estan sempre disponibles. mpm_common: Col·lecció de directives que s'implementen en més d'un mòdul multi procés. beos: Mòdul de multi procés optimitzat per BeOS. leader: Variable experimental de MPM. mpm_netware: Mòdul de multi procés que implementa un servidor web optimitzat per Novell NetWare. mpmt_us2: MPM híbrid, multi procés i multi fil para OS/2 . perchild: Mòdul multi procés que permet als processos dimoni servir les peticions que s'assignen a diferents usuaris. prefork: Implementa un servidor sense fils. threadpool: Variant experimental del mòdul estàndard de MPM .
  • 2. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ mpm_winnt: Mòdul multi procés optimitzat per Windows NT. worker: Mòdul multi procés que implementa un híbrid multi fils i multi processos de servidor Web. Mòduls addicionals mod_access: proporciona control d'accés basant-se en el nom del host del client, la seva adreça IP o altres característiques de la petició del client. mod_actions: aquest mòdul s'utilitza per executar scripts CGI, basant-se en el tipus de mitjà o el mètode de petició. mod_àlies: proporcionat per mapejar diferents parts del sistema de fitxers del servidor en l'arbre de documents del servidor, i per a redirecció d'URL's. mod_asis: enviament de fitxers que tenen les seves pròpies capçaleres http. mod_auth: autenticació d'usuari utilitzant fitxers de text. mod_auth_anon: permet a usuaris anònims accedir a àrees autenticades. mod_auth_dbm: proporciona autenticació utilitzant fitxers DBM. mod_auth_digest: autenticació d'usuari utilitzant MD5. mod_auth_ldap: permet la utilització un directori LDAP per emmagatzemar la base de dades d'autenticació. mod_autoindex: mostra els continguts d'un directori automàticament, semblant a la instrucció ls d'Unix. mod_cache: Cache de continguts indexats per URI's. mod_cern_meta: Semàntica d'etiquetes del CERN. mod_cgi: Execució de scritps CGI. mod_cgid: execució de scripts CGI utilitzant un dimoni CGI extern. mod_charset_lite: per a l'especificació del joc de caràcters de les traduccions. mod_deflate: comprimeix el contingut abans de ser enviat al client. mod_dir: Proporcionat per a redireccionaments i per servir els fitxers del llistat de directoris. mod_disk_cache: Cache per emmagatzemar continguts identificats per URI. mod_tiro: Un servidor simple per il·lustrar els mòduls del protocol. mod_env: modificació de l'entorn que es envia als scripts CGI i les pàgines SSL.
  • 3. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ mod_expire: Generació de les capçaleres http expire, d'acord amb els criteris especificats per l'usuari. mod_ext_filter: passa el cos de la resposta a través d'un programa abans d'enviar-la-hi al client. mod_file_cache: escorcolla una llista estàtica de fitxers en memòria. mod_headers: personalització de les peticions HTTP i les capçaleres de les respostes. mod_imap: procés d'imatges en el costat del servidor (Server Side). mod_include: Documents HTML generats pel servidor (Server Side Includes). mod_info: proporciona una visió comprensiva de la configuració del servidor. mod_isapi: Extensions ISAPI en Apache per Windows. mod_ldap: pool de connexions LDAP i escorcoll de resultats per a la utilització d'altres mòduls LDAP. mod_log_config: registre de les peticions fetes al servidor. mod_logio: registre del nombre de bytes rebuts i enviats en cada resposta. mod_mem_cache: Cache de continguts identificats per URI. mod_mime: associa les extensions de peticions dels fitxers amb el comportament del fitxer (gestionadores i filtres) i contingut (tipus mime, idioma, joc de caràcters i codificació). mod_mime_magic: determina el tipus mime d'un fitxer mirant uns pocs bytes del contingut. mod_negotiation: es fa servir per a la negociació del contingut. mod_proxy: servidor HTTP/1.1 proxy/gateway. mod_proxy_connect: extensió de mod_proxy per a la gestió de les peticions connect. mod_proxy_ftp: suport FTP per mod_proxy. mod_proxy_http: suporta HTTP per al mòdul mod_proxy. mod_rewrite: proporciona un motor de reescriptura basat en regles que torna a escriure les peticions d'URL's al vol. mod_setenvif: permet la configuració de les variables d'entorn basant-se en les característiques de la petició. mod_speling: intenta corregir les URL mal posades pels usuaris, ignorant les majúscules i permetent fins a una falta. mod_ssl: criptografia avançada utilitzant els protocols Secure Sockets Layer i Transport Layer Security.
  • 4. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ mod_status: proporciona informació en l'activitat i rendiment del servidor. mod_suexec: permet als scripts CGI ser executats amb un nom i grup específic. mod_unique_id: proporciona variables d'entorn i un identificador únic per a cada petició. mod_userdir: directoris específics per a usuaris. mod_usertrack: registre d'activitat d'un usuari en el lloc. mod_vhost_alias: Proporcionat per configurar molts servidors virtuals dinàmicament. Explicarem el procés de descàrrega i instal·lació del servidor Apache en sistemes Windows. El procés per instal·lar Apache en Windows és molt senzill. D'ara endavant, és possible que la configuració del servidor pugui complicar-se una mica, no obstant això, si desitgem utilitzar-ho amb les funcions habituals, no hem de tenir majors problemes en cap moment. Descàrrega d'Apache El servidor web Apache es pot descarregar a la pàgina de la Fundació Apache, a apache.org. En la URL http://httpd.apache.org/ teniu una secció en particular per al servidor HTTP (Protocol de transmissió utilitzat en la web), en la qual haurem de buscar l'enllaç per a la descàrrega. Una vegada a la pàgina de descàrrega hem de buscar l'última versió estable o la versió que recomanen. El servidor està disponible per a sistemes Unix o Windows, per la qual cosa ens oferiran diverses opcions de descàrrega, fins i tot per obtenir el codi font del programa. Si desitgem instal·lar-ho en un sistema Windows, necessitem obtenir l'arxiu Win-32 binari, que és un instal·lador Windows. Instal·lació Una vegada descarregat, hem d'instal·lar-ho en el nostre sistema, executant l'arxiu obtingut. Donarem pas a un assistent que ens guiarà en el procés d'instal·lació del servidor. Durant el procés ens preguntarà el nom del domini i del servidor, que podem emplenar amb localhost. Ens demanarà també una adreça de correu, que podem emplenar amb qualsevol que desitgem. També ens pregunta si desitgem que el servidor respongui en el port 80 per a tots els usuaris o si desitgem que només s'activi per a l'usuari actual en el port 8080, quan s'iniciï manualment. El normal és que ho activem per a tots els usuaris. Amb aquestes dades queda configurat l'Apache inicialment. En qualsevol moment podem editar-lo al nostre gust o necessitats. Per a això haurem d'editar el fitxer httpd.conf, que es
  • 5. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ troba en el directori d'instal·lació d'Apache, que hem indicat durant el procés d'instal·lació, més concretament, en el subdirectori conf. D'ara endavant en aquest manual podrem aprendre les configuracions més habituals. Nota: Hem d'anar amb compte de no tenir un altre servidor configurat per treballar en el port 80 (per exemple el servidor IIS que ve en les versions professionals o servidor de Windows). En cas de tenir en marxa un altre servidor web durant la instal·lació, pot fallar i mostrar-nos un missatge d'error que indiqui això precisament, és a dir, que no podem tenir dos servidors alhora escoltant en el port 80. Per solucionar el problema n'hi ha prou que parem el IIS o l'altre servidor que estigui funcionant. El IIS el podem parar accedint a Panell de control - Eines administratives - Serveis d'Internet Information Server. La pantalla que surt és la consola d'administració del sistema. Aquí hem de desplegar l'arbre de l'esquerra, prement sobre el signe +, fins que trobem el "Lloc web predeterminat". Ens posem damunt de ell i premem el botó de STOP que està situat en la barra d'eines de la consola d'administració. També podem trobar una opció per parar el servei prement amb el botó dret en el "Lloc web predeterminat". Una vegada instal·lat, l'Apache es posa en funcionament. Per controlar l'Apache podem trobar en el botó d'inici, secció programes, un nou grup anomenat "Apache HTTP Server", amb icones per detenir el servidor, engegar-ho, editar l'arxiu de configuració httpd.conf o per veure els logs d'accés. També podem veure en la barra de tasques una nova icona que indica que l'Apache està funcionant i que ofereix opcions per controlar-ho si premem sobre ell. Veure si està funcionant Per comprovar que el servidor està actiu i funciona correctament podem obrir un explorador i provar d’accedir a la URL http://localhost, que és el nostre propi servidor. Si tot ha anat bé observarem el missatge de benvinguda del servidor amb alguna cosa com "Funciona! El servidor Apache ha estat instal·lat en aquest equip!". Per seguir aprenent a configurar Apache és interessant llegir-se el manual d'instal·lació i configuració d'Apache, que explica on hem de canviar les opcions més comuns del servidor. Explicació de l'estructura de directoris que obtenim una vegada instal·lat el servidor Apache Una vegada instal·lat l'Apache, en el directori arrel de la instal·lació, es trobaran els següents directoris: bin: fitxers executables de l'Apache. conf: fitxers de configuració del servidor. error: fitxers amb els missatges d'error del servidor, en diversos llenguatges. htdocs: directori arrel per defecte del servidor (Es guarden les pàgines Web).
  • 6. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ icons: directori on es troben les icones que utilitza el servidor (entre altres coses per mostrar estructures de directoris). logs: directori on s'emmagatzemen els registres d'accés i errors del servidor. manual: directori on es troba el manual de l'Apache. proxy: Directori amb els fitxers de la cache del servidor. Bàsicament les configuracions del servidor resideixen dins de dos fitxers, el de configuració principal que es troba dins de la carpeta conf, amb el nom httpd.conf, o dins d'un fitxer amb el nom .htaccess que es pot trobar dins de qualsevol directori que es trobi mapejat dins del servidor. Dins de cadascun d'aquests fitxers se situen les directives de configuració. Moltes d'aquestes directives de configuració es poden trobar tant dins del fitxer de configuració principal com dins d'un fitxer .htaccess. Els valors de les directives que es troben dins d'un fitxer .htaccess, prevalen enfront dels valors de configuració especificats dins del fitxer httpd.conf. Estructura del fitxer principal de configuració de l'Apache El fitxer httpd.conf és el fitxer principal de configuració de l'Apache, es troba dins del directori conf, en el directori d'instal·lació de l'Apache. En primer lloc cal destacar que el fitxer està dividit en tres seccions, que són: · Paràmetres globals. · Directives de funcionament. · Host virtuals. En el fitxer es troben tots els paràmetres de funcionament de l'Apache. Alguns paràmetres són generals per a la instal·lació i funcionament de l'Apache. Molts d’altres dels paràmetres es poden configurar independents per a un conjunt de directoris i/o fitxers . En aquests casos els paràmetres es troben situats dins de seccions on s'indica l'àmbit d'aplicació del paràmetre. Les seccions més importants són: : Els paràmetres que es troben dins d'aquesta secció, només s'aplicaran al directori especificat i als seus subdirectoris: Igual que Directory, però accepta en el nom del directori expressions regulars. Els paràmetres de configuració proporcionen control d'accés dels fitxers pel seu nom. Igual que Files, però accepta expressions regulars en el nom del fitxer. Proporciona un control d'accés dels fitxers per mitjà de la URL. Igual que Location, però accepta expressions regulars en el nom del fitxer.
  • 7. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Algunes vegades les directives de funcionament de les seccions anteriors es poden creuar. També cal destacar, que el fitxer conté un munt de comentaris per a la seva correcta utilització, les línies comentades apareixen amb el símbol #. Enumeració i descripció dels paràmetres de la secció paràmetres globals del fitxer httpd.conf Tots els paràmetres que s'estableixen dins d'aquesta secció són globals per al funcionament del servidor, per la qual cosa no admeten estar dins de cap directiva. ServerRoot: especifica la ubicació del directori arrel on es troba instal·lat l'Apache, a partir del com es crea l'arbre de directoris comentat anteriorment. Aquesta directiva no hauria de canviar tret que es mogui la carpeta d'instal·lació d'Apache a un altre directori. Es troba disponible a través del mòdul core. PidFile: ubicació del fitxer que contindrà el nombre d'identificació del procés quan s'encengui el servidor. Es troba disponible a través de diversos mòduls beos, leader, mpm_winnt, mpmt_us2, perchild, prefork, threadpool o worker. TimeOut: el valor s'utilitza per configurar mesurat en segons, tres paràmetres: - El temps tal que pot trigar una petició a ser rebuda. - La quantitat de temps d’espera entre recepció de paquets TCP. - La quantitat de temps entre ACK's en transmissions TCP. Passat aquest temps es produeix un missatge d'error en el qual s'indica que s'ha consumit el temps màxim d'espera. Establir un valor molt petit pot donar lloc al fet que els usuaris rebin aquest missatge d'error, i establir un valor molt petit donarà lloc a una sobrecàrrega de la màquina. Es troba disponible a través del mòdul core. KeepAlive: especifica si s'utilitzaran connexions persistents, és a dir, que totes les peticions d'un usuari s'atendran amb la mateixa connexió. Es troba disponible a través del mòdul core. MaxKeepAliveRequests: nombre màxim de connexions persistents. (nombre màxim d'usuaris concurrents si KeepAlive està a ON). Per establir aquest paràmetre, cal tenir en compte l'ample de banda de sortida del nostre servidor, pel qual haurà de ser enviada tota la informació, si s'estableix un valor molt gran respecte a l'ample de banda, el temps de resposta es veurà incrementat per a cada usuari. Es troba disponible a través del mòdul core. KeepAliveTimeout: temps que espera en segons entre peticions d'un usuari, abans de considerar que aquest ha acabat, i tancar la seva connexió. Si el valor és molt petit provocarà que alguns usuaris no puguin visualitzar la pàgina a causa que el nombre màxim de connexions persistents s'ha superat, mentre que si s'estableix un valor molt gran s'estaran utilitzant molts recursos de la màquina. Es troba disponible a través del mòdul core.
  • 8. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Listen: aquesta directiva permet especificar quins port s'utilitzaran per atendre les peticions. Per defecte s'utilitza el port 80 (www), també permet especificar quines adreces IP atendrà, per defecte totes. Per atendre dos adreces IP diferents, amb diferents port, s'utilitzaria: Listen 192.168.0.10:80 Listen 192.168.0.9:8080 Es troba disponible a través de diversos mòduls beos, leader, mpm_winnt, mpmt_us2, perchild, prefork, threadpool o worker. LoadModule: Directiva que serveix per carregar mòduls que inclouen diferents funcionalitats. La sintaxi és: LoadModule nom_del_mòdul ubicació_Arxiu Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf Aquesta és la secció principal de configuració del servidor, en ella podem trobar les següents opcions: ServerAdmin: especifica l'adreça de correu electrònic de l'administrador, aquesta adreça apareix en els missatges d'error, per permetre a l'usuari notificar un error a l'administrador. No pot estar dins de cap secció. Es troba disponible a través del mòdul core. ServerName: especifica el nom i el port que el servidor utilitza per identificar-se, normalment es determina automàticament, però és recomanable especificar-ho explícitament perquè no hi hagi problemes en iniciar el servidor. Si el servidor no té un nom registrat en les DNS, es recomana posar el seu número IP. No pot estar dins de cap secció. La sintaxi és: ServerName direccióIP:Port p.ex:. ServerName localhost:80 Es troba disponible a través del mòdul core. DocumentRoot: la carpeta arrel que se situa en el servidor, des de la qual se serviran els documents. Per defecte, totes les peticions, tindran com a arrel aquesta carpeta, tret que s'utilitzin àlies (directoris virtuals en IIS). Per defecte, la carpeta arrel és la carpeta htdocs, que es troba en la carpeta d'instal·lació de l'Apache. No pot estar dins de cap secció. Si es canvia aquest directori per un altre, és molt important que es posi el nou valor, no només en aquesta línia, sinó també en la secció de la qual s'estableixen els paràmetres de configuració d'aquest directori. Aquesta línia comença per "
  • 9. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Es troba disponible a través del mòdul core. DirectoryIndex: especifica el fitxer per defecte que buscarà en cada directori, en cas que no s'especifiqui cap. Per defecte és index.html. És a dir, que si per exemple es posa en el navegador: www.exabyteinformatica.com el servidor per defecte servirà www.exabyteinformatica.com/index.html En aquesta directiva es poden especificar més d'un fitxer, la sintaxi és la següent: DirectoryIndex fitxer1 fitxer2 fitxer3 L'ordre amb el qual s'especifica el nom de fitxer determinarà la prioritat a l'hora de decidir quin fitxer és el que es mostra. La directiva es pot trobar fora de qualsevol secció, dins d'una secció o dins d'un fitxer .htaccess. Es troba disponible a través del mòdul mod_dir. AccessFileName: és el nom del fitxer de configuració que es buscarà en cadascun dels directoris del servidor per conèixer la configuració del mateix. Aquest fitxer permet configurar el comportament de cadascun dels directoris individualment. Perquè aquesta configuració funcioni, la directiva AllowOverride ha de tenir un valor que ho permeti. No pot estar dins de cap secció. El nom de fitxer que s'especifica per defecte és el del fitxer ".htaccess". Com a mesura de seguretat, la configuració de l'Apache estableix que no es mostri l'existència d'aquest fitxer a cap usuari, encara que sí establir l'opció de llistat de directoris. Si es decideix canviar al nom, caldrà redefinir la seguretat perquè no es mostri el contingut del nou fitxer. Això es fa en el fitxer httpd.conf en una secció File com la qual es presenta a continuació en la qual s'estableix que tots els fitxers que comencin per .ht no es mostraran. Order allow,deny Deny from all Es troba disponible a través del mòdul core. Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf TypesConfig: especifica el nom del fitxer que conté la llista de tipus mime que coneix el servidor, i que determinarà depenent de les extensions per generar les capçaleres http. No pot estar dins de cap secció.
  • 10. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Es troba disponible a través del mòdul mod_mime. DefaultType: tipus mime que se servirà per defecte en cas de no conèixer l'extensió del fitxer que s'està servint. Per defecte, s'indicarà que se serveix text pla, amb el valor text/plain. La directiva es pot trobar fora de qualsevol secció, dins d'una secció o dins d'un fitxer .htaccess. Sintaxi: DefaultType tipusMime Es troba disponible a través del mòdul Core. HostnameLookups: s'utilitza en els fitxers de registre. Per defecte quan es produeix un accés, es guarda simplement el seu nombre IP, si aquesta directiva es troba en On, el servidor buscarà la correspondència d'aquest nombre IP amb el seu nom, i emmagatzemarà el nom. Establir aquesta configuració en ON provocarà que almenys s'hagi de fer una petició al servidor de noms per cadascuna de les peticions d'usuari, per la qual cosa el rendiment de la màquina es pot veure reduït. Aquesta directiva es pot trobar dins d'una secció o fora de qualsevol altra. Es troba disponible a través del mòdul Core. ErrorLog: especifica la ubicació del fitxer que conté el registre d'errors, per defecte en la carpeta logs. Aquesta directiva només es pot trobar fora de qualsevol secció. Es troba disponible a través del mòdul Core. LogLevel: especifica el tipus de missatges que es guardessin en el fitxer de registre d'errors, depenent dels valors especificats, es guardaran mes o menys. Aquesta directiva només es pot trobar fora de qualsevol secció. Valor de més a menys són: debug, info, notice, warn, error, crit, alert, emerg Es troba disponible a través del mòdul Core. LogFormat: la directiva permet definir el format que s'utilitzarà per emmagatzemar els registres. A cada format se li pot assignar un nom, utilitzant-ho després per crear diferents tipus de fitxers de registre. Poden existir diversos logFormat diferents. Sintaxi: LogFormat "configuracióError" nom Aquesta directiva es troba fora de qualsevol secció. Es troba disponible a través del mòdul mod_log_config. CustomLog: la directiva s'utilitza per especificar la ubicació i el tipus de format que s'utilitzarà en un fitxer de registre. Poden existir diversos fitxers de registre diferents amb configuracions diferents. Per fer això, simplement cal posar diverses línies customlog Sintaxi: CustomLog fitxer format Aquesta directiva es troba fora de qualsevol secció.
  • 11. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Es troba disponible a través del mòdul mod_log_config. ServerTokens: Aquesta directiva estableix la informació que es retorna dins de la capçalera http que envia el servidor. Aquesta directiva es troba fora de qualsevol secció. Es troba disponible a través del mòdul Core. IndexOptions: Aquesta directiva controla l'aparença de la pàgina que es mostrarà a un usuari quan es demana la llista de fitxers d'un directori. Sintaxi: IndexOptions [+|-]opció [[+|-]opció] Entre les opcions que es poden posar, destaca: FancyIndexing: que mostra els noms dels fitxers, amb icones etc.. Es troba disponible a través del mòdul mod_autoindex. FoldersFirst: Fa que primer es mostrin els directoris. Aquesta opció només es pot establir en el cas que FancyIndexing estigui activa. Aquesta directiva es pot trobar dins del fitxer .htaccess, dins d'una secció i fora de qualsevol altre. Es troba disponible a través del mòdul mod_autoindex. Descripció de les directives de funcionament que es troben dins del fitxer httpd.conf AddIconByEncoding: Aquesta directiva permet associar una icona a un tipus mime, de manera que quan la directiva fancyIndexing estigui activada, es mostrarà al costat del fitxer la icona corresponent. Sintaxi: AddIconByEncoding icon MIME-encoding Exemple: AddIconByEncoding/icons/icona_PC.gif x-compress Aquesta directiva es pot trobar dins del fitxer .htaccess, dins d'una secció i fora de qualsevol altra. Es troba disponible a través del mòdul mod_autoindex.
  • 12. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ AddIconByType: Aquesta directiva associa una icona a un fitxer depenent de l'un tipus mime, de manera que quan la directiva fancyIndexing està activada, es mostrarà al costat del fitxer la icona corresponent. Sintaxi: AddIconByType icon MIME-encoding Exemple: AddIconByType /icons/Icona_Llapis.gif text/* La diferència entre AddIconByType i AddIconByEncoding resideix en que mentre que en la primera es determina el tipus mime mitjançant la codificació del fitxer, en la segona es determina el tipus mime basant-se en el nom del fitxer. Ambdues directives es poden trobar dins del fitxer .htaccess, dins d'una secció o fora de qualsevol altra. Es troba disponible a través del mòdul mod_autoindex. AddDescription: Aquesta directiva permet associar una descripció a un tipus de fitxer, que es mostrarà en llistar un directori. Aquesta directiva es pot trobar dins del fitxer .htaccess, dins d'una secció o fora de qualsevol altra. Sintaxi: AddDescripcion cadena , fitxer Es troba disponible a través del mòdul mod_autoindex. AddDefaultCharset: Aquesta directiva defineix la codificació de caràcters que s'utilitzarà de forma predeterminada per als documents. Per defecte ve establert el valor ISO-8859-1. Aquesta directiva es pot trobar dins de qualsevol secció i en els fitxers .htaccess. Es troba disponible a través del mòdul core. ErrorDocument: Aquesta directiva estableix el la configuració del servidor per quan es produeix un error. Es poden establir quatre configuracions diferents: Mostrar un text d'error. Redirigir a un fitxer en el mateix directori. Redirigir a un fitxer en el nostre servidor. Redirigir a un fitxer fora del nostre servidor. Cal tenir en compte que si el text d'error s’envia a Internet Explorer, aquest haurà de tenir almenys 512 Bytes, perquè sinó Internet Explorer mostrarà la seva pròpia pàgina d'error.
  • 13. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Sintaxi: ErrorDocument NúmeroError Acció Aquesta directiva es pot trobar tant dins del fitxer .htaccess, dins de la secció o fora de qualsevol altra secció. Exemple: ErrorDocument 404 /error_404.html. En cas de no trobar-se un fitxer, es mostrarà el fitxer error_404.html Es troba disponible a través del mòdul Core. CacheRoot: estableix el directori on es trobaran els fitxers de la cache de l'Apache. Es troba disponible a través del mòdul mod_disk_cache CacheSize: Grandària de la cache en Kilobytes. Es troba disponible a través del mòdul mod_disk_cache CacheGcInterval: Estableix cada quantes hores es verificarà la grandària dels fitxers de la cache per comprovar si es corresponen amb la grandària establerta dins de CacheSize. El valor accepta nombres flotants, per la qual cosa es poden establir els intervals en minuts. Com més gran sigui el valor d'aquesta directiva, més possibilitats existiran que se sobrepassi el valor establert en CacheSize. Es troba disponible a través del mòdul mod_disk_cache CacheMaxExpire: màxim nombre d'hores que els fitxers romandran dins de la cache. Es troba disponible a través del mòdul mod_cache CacheLastModifiedFactor: Serveix per calcular la caducitat d'un fitxer en la cache, que serà el de l'hora de l'última modificació, multiplicat per aquest valor. Es troba disponible a través del mòdul mod_cache CacheDefaultExpire: Nombre d'hores per defecte a partir de les quals un fitxer caduca. S'aplica en aquells casos en els quals no es pot determinar l'hora de creació del fitxer. Totes les directives de la caché, han de trobar-se fora de qualsevol secció. Aquesta directiva no es pot trobar dins de cap secció. Es troba disponible a través del mòdul mod_cache directori virtual. Un directori que es troba en un directori diferent del que es mapeja en la URL.
  • 14. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Com crear-los en Apache Aquesta directiva només es troba dins del fitxer de configuració httpd.conf, i es tracta aparti en aquest capítol a causa de la seva importància. Àlies: Permet la definició de directoris virtuals, un directori virtual és un directori que es troba en un directori diferent del que es mapeja en la URL. El directori virtual no es té perquè trobar dins de l’arbre de directoris que es crea a partir de DocumentRoot, sinó que es pot trobar en qualsevol altra ubicació, fins i tot es podria trobar en un altre servidor diferent. Per exemple, quan s'escriu www.exabyteinformatica.com/manual/php la carpeta php no s'ha de trobar necessàriament dins de la carpeta manual, que al seu torn està dins de la carpeta arrel exabyteinformatica, sinó que pot estar en una ubicació diferent, i fora de l'arbre de subdirectoris de la directiva DocumentRoot Sintaxi: Alias nomFictici ubicacióReal Exemple: Alias /manual/Wordpress "c:Wordpress" El directori Wordpress no es troba dins del directori manual dins de la carpeta documentRoot, sinó en la carpeta o directori c:Wordpress. Per defecte vénen creats dos redireccionaments amb Àlies. - Icons: per establir la carpeta on es troben les icones que utilitzarà l'Apache per mostrar el contingut dels directoris. - Manual: que apunta a la carpeta on està instal·lat el manual de l'Apache en cas que s'hagués triat l'opció durant la instal·lació. AliasMatch: La utilitat d'aquesta directiva és idèntica a la de la directiva Alias, l'única diferència és que Àlies utilitza expressions estàndard regulars per especificar la URL que es va mapejar. Aspectes importants a tenir en compte en la seguretat d'Apache: Autenticació i autorització d'usuaris amb Apache Quan un servidor Apache rep una petició d'una pàgina web, abans de retornar el resultat, duu a terme diverses accions per verificar que la petició està autoritzada. Les diferents accions que duu a terme per verificar la validesa de l'aplicació, es poden agrupar en tres tipus: autenticació, autorització i control d'accés.
  • 15. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ L'autenticació és el procés pel qual es verifica la identitat d'una persona. D'una forma simple, aquest procés es pot dur a terme mitjançant un nom d'usuari i una contrasenya, però es poden arribar a utilitzar altres mètodes per validar la identitat d'una persona, com mitjançant l'ús de certificats, targetes etc… En Apache l'autenticació pot estar gestionada per diferents mòduls, depenent de la forma d'implementació. Si decideix dur-la a terme gestionant fitxers amb llistes d'usuaris i contrasenyes (xifrades), haurà d'utilitzar el mòdul mod_auth. No obstant això, si decideix dur- la a terme mitjançant la base de dades, haurà d'utilitzar els mòduls mod_auth_dbm. L'autorització és el procés pel qual es verifica que un usuari amb una identitat coneguda, té accés al recurs sol·licitat. Per dur a terme aquesta acció, se solen utilitzar llistes de permisos en les quals s'enumeren cadascuna de les accions que pot realitzar un usuari, o les que no pot fer. Normalment, per simplificar la gestió d'aquests fitxers, els usuaris se solen unir en grups proporcionant els permisos al grup. En Apache l'autorització a recursos és gestionada o bé mitjançant la directiva en el fitxer principal de configuració, o bé mitjançant la configuració de la carpeta a través de fitxers .htaccess. El control d'accés és el procés pel qual es verifica que la màquina des de la qual s'ha fet la petició, té accés al recurs. Els controls d'accés s'utilitzen per limitar i controlar les màquines que tenen accés a un recurs independentment de l'usuari que accedeix, ja que aquests controls es duen a terme abans que es realitzi el procés d'autenticació. En Apache, el control d'accés es pot dur a terme mitjançant les directives i , o a través del fitxer de configuració .htaccess per controlar una carpeta especifica. En tot cas i per poder dur a terme la configuració de les tres característiques aquí enumerades, autenticació, autorització i control d'accés, és necessari tenir la directiva AllowOverride amb el valor AuthConfig, per així permetre l'ús de les diferents directives d'autenticació. Autenticació i autorització d'usuaris en Apache. Mod_auth Per configurar el servidor Apache perquè sigui capaç d'autenticar als usuaris i verificar l'autorització del mateix al recurs sol·licitat, és necessari realitzar les següents accions: Crear un fitxer amb usuaris. Crear un fitxer amb grups (si és necessari). Definir les directives en el fitxer de configuració o mitjançant un fitxer .htaccess
  • 16. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ En els fitxers d'usuaris d'Apache, en cada línia s'especifica un usuari, escrivint el nom d'usuari separat de dos punts, seguit de la contrasenya xifrada amb MD5. En els fitxers de grups d'Apache, en cada línia s'especifica un grup escrivint el nom del grup seguit de dos punts, i a continuació separat per espais, els noms dels usuaris. És recomanable que tant els fitxers d'usuaris com els de grups, es trobin emmagatzemats fora dels directoris publicats, perquè d'aquesta forma ningú pugui descarregar-los. Així mateix, només l'usuari root hauria d'estar autoritzat a escriure en ell, mentre que només l'usuari que executa el servei web, hauria d'estar autoritzat per llegir-ho. El fitxer de grups es pot crear manualment, però el fitxer amb els usuaris és recomanable crear-ho mitjançant la utilitat htpasswd, que es troba en la carpeta amb els binaris d'Apache. Per crear un fitxer d'usuari s'utilitzarà la següent sintaxi: htpasswd -c ruta/passwords usuari El paràmetre -c s'utilitza per crear un fitxer nou, per la qual cosa només s'haurà de posar la primera vegada que es crea el fitxer, sinó ho esborrarà. Els mòduls que intervenen en l'autenticació i autorització són els de core i mod_auth. Les directives de mod_auth necessàries per configurar l'autenticació i autorització són les següents: AuthUserFile: serveix per especificar la ruta on s'emmagatzemarà el fitxer d'usuaris. AuthGroupFile: serveix per especificar la ruta on s'emmagatzemarà el fitxer de grups. Les directives de core necessàries per complementar la configuració del mòdul són: AuthType: selecciona el tipus d'autenticació d'usuaris que s'utilitzarà per autenticar a un usuari. Pot variar per directori. Els valors possibles són Basic i Digest. Amb Basic, la transferència de les claus es farà sense xifrar, i amb digest es faran xifrades. AuthName: especifica un nom del domini pel qual se sol·licita l'accés, aquest nom figurarà en la pantalla on es demana la clau, i al seu torn servirà perquè el client identifiqui la contrasenya que ha d'utilitzar en enviar una petició a un àrea determinada. Require: selecciona els usuaris que poden accedir a un àrea determinada, els usuaris es poden determinar a través de noms o grups.
  • 17. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Com protegir una carpeta i Autenticació i autorització d'usuaris amb MySQL i Apache mod_auth_MySQL. · Crear un fitxer de claus fora de la part pública: -htpasswd -c /ruta/passwords Joan En fer-ho, demanarà que s'introdueixi la clau, i aquesta serà codificada, escrivint el fitxer. · Crear un nou fitxer, en la mateixa ubicació que "ruta", que es dirà "grups" en la qual s'emmagatzemaran els grups, ara com ara un, per a això escriure la següent línia i guardar el fitxer: usuarisAutenticats: Joan D'aquesta forma, hauria de tenir un fitxer que s’anomeni passwords, i que contingui una línia amb les dades de l'usuari Joan, i un fitxer, amb el nom de grups, que conté una línia definint un grup anomenat usuarisAutenticats, del que només l'usuari Joan forma part. · Crear un fitxer amb el nom .htaccess en la carpeta que es vol protegir, escriure les següents línies i guardar el fitxer: AuthType Basic AuthName "Nom_del_Servidor" AuthUserFile /ruta/passwords AuthGroupFile /ruta/grups Require group usuarisAutenticats L'explicació del contingut del fitxer és la següent: Amb "AuthType Basic" s'estarà protegint la carpeta amb autenticació bàsica, és a dir que la clau que l'usuari introdueixi, es transmetrà sense xifrar per la web. Amb "AuthName "Nom_del_Servidor" s'associarà aquesta carpeta amb el domini " Nom_del_Servidor ", nom amb el qual ho identificarà el client. Amb "AuthUserFile /ruta/passwords" i "AuthGroupFile /ruta/grups" Es definirà la ubicació tant dels fitxers d'usuaris com els fitxers de grups i s'emmagatzemaran en la carpeta /ruta, amb noms passwords i grups respectivament.
  • 18. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Amb "Require group usuarisAutenticats" s'autoritzarà l'accés al contingut d'aquesta carpeta a tots els usuaris que formen part del grup de "usuarisAutenticats", per la qual cosa en la pràctica s'autoritzarà l'accés al contingut a l'usuari Joan. En comptes de realitzar les autoritzacions a grups complets, es pot autoritzar a un usuari determinat canviant l'última línia per "Require user Joan", d'aquesta forma només s'autoritzarà a l'usuari Joan. Es pot permetre l'accés a tots els usuaris identificats mitjançant la introducció de la següent directiva "Require valid-user". El fet que aquesta directiva està inclosa en el fitxer, fa que les altres no tinguin efecte. Autenticació i autorització d'usuaris amb MySQL i Apache. mod_auth_MySQL Anteriorment hem explicat com controlar l'autenticació i l'autorització d'usuaris amb el mod_auth. Aquest mòdul té com a característica el que emmagatzema els noms d'usuari, les contrasenyes i els grups en fitxers de text que han de ser escrits i gestionats per l'administrador del sistema. Aquesta solució és òbviament poc escalable, ja que quan el nombre d'usuaris i de grups és elevat, el gestionar-los i controlar-los pot ser un problema. Per aquest motiu existeix el mod_auth_MySQL, aquest mòdul permet gestionar l'autenticació i autorització, emmagatzemant els usuaris i els grups en taules de MySQL, de manera que fins i tot es poden gestionar mitjançant un panell de control escrit en php. Per configurar el mòdul en Linux, serà necessari extreure-ho i executar: ./configure --with-MySQL=/usr/local/MySQL --with-Apache=/usr/local/Apache Substituint el lloc on es troba la instal·lació de MySQL i d'Apache. Per utilitzar el mòdul és necessari disposar de com a mínim una taula on s'emmagatzemin els usuaris i una altra on s'emmagatzemin els grups. Per a això es pot crear una taula usuaris amb els camps, nom i password, i una altra taula anomenada grups amb els camps grup, usuari, emmagatzemant una entrada per cada usuari que tingui un grup. La configuració és la següent: En primer lloc serà necessari establir el servidor, l'usuari i la contrasenya de la connexió amb la base de dades, això es farà escrivint la següent línia en el fitxer httpd.conf, i reemplaçant els valors pels correctes: Auth_MySQL_Info Per configurar el mòdul serà necessari establir els valors de les següents directives del mòdul: Auth_MySQL_DB: nom de la base de dades.
  • 19. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Auth_MySQL_Password_Table: nom de la base de dades que conté els noms d'usuari i les contrasenyes. Auth_MySQL_Username_Field: nom del camp de la taula que conté a l'usuari. Auth_MySQL_Password_Field: nom del camp de la taula que conté la contrasenya de l'usuari. Auth_MySQL_Group_Table: nom de la taula que conté els usuaris i els grups als quals pertanyen. Auth_MySQL_Group_Field: nom del camp de la taula que conté el nom del grup. Auth_MySQL_Empty_Passwords on/off per determinar si s'accepten usuaris amb contrasenyes buides. Auth_MySQL_Encryption_Types per especificar el tipus de xifrat que s'utilitzarà per emmagatzemar la clau de l'usuari dins de la base de dades. Auth_MySQL_Senar_Persistent on/off per especificar si es desitgen utilitzar connexions persistents. A més serà necessari establir les següent directives de core per al seu correcte funcionament: AuthName: amb el nom del domini. AuthType: establert a Basic. Una vegada engegat, el funcionament és anàleg al mòdul mod_auth. El mòdul de control d'accés d'Apache permet controlar l'accés als diferents directoris i fitxers del servidor depenent del nom de la màquina o adreça IP del client. Les directives que proporciona aquest mòdul es poden utilitzar dins dels elements , i del fitxer de configuració httpd.conf, o bé dins de fitxers .htaccess situats dins de les carpetes. Les directives amb les quals explica el mòdul per permetre o denegar l'accés són: Allow: controla els servidors que tindran accés al contingut, per exemple: Allow from exabyteinformatica.com Permet l'accés des de exabyteinformatica.com Allow from 192.168.0.10 Permet l'accés des de 192.168.0.10 Allow from 192.168 Permet l'accés des de totes les adreces Ip que comencen per 192.168 Allow from all Permet tots els accessos.
  • 20. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Deny: controla els servidors als quals es denegarà l'accés, per exemple: Deny from exabyteinformatica.com Denega l'accés des de exabyteinformatica.com Deny from 192.168.0.10 Denega l'accés des de 192.168.0.10 Deny from 192.168 Denega l'accés des de totes les adreces IP que comencen per 192.168 Deny from all Denega totes les IP’s. Order: determina l'ordre en el qual es llegiran els permisos, per exemple per llegir primer els permesos i després els no permesos es posarà "Allow,Deny" en aquest cas si un servidor aquesta en la llista de permesos, i en la de denegats, l'accés al mateix serà denegat, ja que l'entrada dins de l'opció Deny sobreescriurà la de l'entrada Allow. Cal tenir en compte que l'ús de order juntament amb Allow from all o Deny from all, permet especificar configuracions com, permetre des d'una màquina qualsevol i denegar de la resta, d'una forma molt senzilla. Addicionalment, mitjançant la directiva SetEnvIf del mòdul mod_setenvif, es poden establir variables d'entorn que determinin el funcionament de Allow o Deny de la mateixa forma que s'utilitzen nombres IP o noms de màquines. Per exemple, utilitzant Allow from env=entrada permetrà l'accés a totes les peticions que tinguin definida la variable d'entorn "entrada". Controlar accés depenent del navegador amb Apache Mitjançant l'ús conjunt de les directives Allow, Deny, Order i SetEnvIf es pot restringir l'accés a un lloc depenent del tipus de navegador. Per realitzar-ho simplement n'hi ha prou amb crear una variable d'entorn depenent del tipus del navegador, i permetre l'accés a les peticions que comptin amb aquesta variable d'entorn denegant-li-ho a la resta. Per a això la configuració necessària és la següent: SetEnvId User-Agent googlebot entrar Order Deny, Allow Deny from all Allow from env=entrar En la primera línia s'especifica que es crearà una variable d'entorn anomenada entrar quan el navegador sigui el motor d'indexació de Google. En la segona línia s'especifica l'ordre en el qual s'utilitzarà la llista de servidors, primer els denegats i després els permesos.
  • 21. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ En la quarta línia s'especifica que es denega l'accés a qualsevol petició. En la cinquena línia s'especifica que es permet l'accés a les peticions que tenen definida la variable d'entorn entrar. En el cas que entri el motor d'indexació de Google, primer es llegirà la línia en què es deneguen totes les peticions, per a continuació llegir la línia en la línia en la qual es permet l'accés des de les peticions que tenen definida la variable entrar, com el navegador que ho fa és el googlebot, aquesta variable estarà definida i entrarà. En el cas en què la petició sigui realitzada per qualsevol altre navegador, primer es llegirà la línia en la qual es deneguen les peticions, i com no satisfà la línia en què ho permet, no entrarà. En aquest document anem a ensenyar a utilitzar una API d'Apache per gestionar les configuracions de les vostres aplicacions de manera avançada. Alguna vegada has implementat classes que gestionessin directament dades de configuració? Si la resposta és afirmativa, segurament hagis reinventat la roda. Existeixen diverses formes estàndard de gestionar les dades de configuració dels nostres components i aplicacions: Mitjançant la classe java.util.Properties A través de les classes del paquet java.util.prefs. (API molt potent que permet gestionar dades de configuració de manera jeràrquica a l'estil del "Registre de Windows" que recomano llegir si la desconeixes). Hi ha una API que és d'enorme utilitat i potència per a la gestió de dades de configuració. Es tracta d'Apache Jakarta Commons Configuration. Apache Jakarta Commons Configuration és un sub-projecte de la sèrie de projectes Apache Jakarta Commons. Commons Configuration és un conjunt de projectes que intenten estandarditzar les tasques comunes que gairebé totes les aplicacions i components realitzen normalment. Una tasca molt comuna en qualsevol aplicació és la gestió de dades de configuració. És aquí on entra en joc Apache Jakarta Commons Configuration. Podem obtenir tot el necessari des de la següent adreça: http://jakarta.apache.org/commons/configuration/ Bàsicament Apache Commons Configuration ens permet: Gestió de les dades de configuració independentment del lloc en el qual estiguin emmagatzemades. (Fitxers de propietats, documents XML, base de dades, etc.). Un potent motor de consultes per realitzar cerques del valor que tenen determinades propietats de configuració.
  • 22. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Recarrega automàtica de les dades de configuració en cas de que siguin modificades en el seu lloc físic d'origen (Fitxer de text pla, fitxer XML, etcètera...). Possibilitat d'emmagatzemar les dades de configuració automàticament en el seu lloc físic (fitxer de text pla, fitxer XML, etc). Alguns exemples: Abans de res, ressaltem que aquesta secció és només una introducció al API, i que ha de documentar-se en la Web oficial del API per veure totes les possibilitats que ens proporciona.. Exemple: Suposem que tenim el següent fitxer de propietats, en el qual es defineixen dades de configuració relacionades amb l'interfície gràfica de l'aplicació. app.windows.properties: mainmdi.title=Títol de la meva aplicació de prova mainmdi.width=1024 mainmdi.height=768 mainmdi.state=maximized userform.title=Gestió d'usuaris userform.width=640 userform.height=480 userform.state=normal language=Català language=English language=French Doncs a través de Commons Configuration, podríem accedir a les propietats de la següent forma: try { // Llegim les dades de configuració. El fitxer ha d'estar en el mateix directori que l'aplicació. PropertiesConfiguration config = new PropertiesConfiguration("app.windows.properties");
  • 23. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ // La següent sentència imprimirà: 1024 System.out.println(config.getInt("main.mdi.width")); // La següent sentència imprimirà: Títol de la meva aplicació de prova System.out.println(config.getString("main.mdi.title")); // La següent sentència imprimirà: Català System.out.println(config.getStringArray("language")[0]); // La següent sentència configura l'objecte perquè salvi les propietats // automàticament a l'origen (En aquest cas un fitxer) quan s’actualitzen // o quan s’afegeixen noves propietats config.setAutoSave(true); // Afegim un parell de propietats config.addProperty("version", "1.0"); config.addProperty("author", "Nom_de_l’autor"); // No fa falta gràcies a que està establerta la propietat autoSave // config.save(); } catch (ConfigurationException ex){ System.out.println(ex); } Altres Característiques interessants Aquest API també ens dóna la possibilitat que es recarregin automàticament les dades de configuració sobre l'objecte Configuration en cas que aquests hagin estat modificats.
  • 24. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Per habilitar aquesta característica haurà d'indicar-ho mitjançant la següent línia de codi: config.setReloadingStrategy(new FileChangedReloadingStrategy()); Conclusions Aquesta API és més completa, potent i flexible que la resta de APIS o mètodes per gestionar dades de configuració. Encara que java.util.prefs proporciona una funcionalitat i potència similar a Commons Configurations, les dades de configuració en java.util.prefs només poden ser modificades des d'aplicacions i no manualment, doncs entre altres coses no se sap on guarda realment aquest API les dades de configuració. Quan utilitzem objectes Properties per gestionar les propietats, hem de realitzar conversions de tipus de dades, amb aquest API ens estalviem aquest treball. Per comentar alguna cosa negativa, aquesta API depèn d'altres sub-projectes de Jakarta, per la qual cosa hem d'incloure els seus JAR’s associats si volem usar-ho. Per exemple, per usar les funcions bàsiques, el API depèn de: Apache Jakarta Commons Lang Apache Jakarta Commons Collections Apache Jakarta Commons Loggin Aquestes són 20 recomanacions per optimitzar la seguretat en el teu servidor Apache De la mateixa manera has de tenir en compte que algunes d'aquestes recomanacions poden disminuir el rendiment del teu servidor depenent de la teva configuració i de les especificacions del sistema. Primer, assegura’t de tenir instal·lat els últims pegats de seguretat. No té sentit posar un pany mes resistent a la teva porta si deixes la finestra oberta. De la mateixa manera si no tenim els últims pegats de seguretat instal·lats no tindria sentit continuar amb l'optimització de seguretat.
  • 25. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Restringir l’accés per IP Si tens un recurs al que hagi de només tenir accés alguna xarxa, o IP en concret pots configurar-ho en Apache. Per exemple si desitges restringir l'accés a la teva Intranet per permetre nomès la xarxa 192.168: Order Deny,Allow Deny from all Allow from 192.168.0.0/255 o per IP: Order Deny,Allow Deny from all Allow from 127.0.0.1 Ocultar la versió i una altra informació delicada Per defecte moltes instal·lacions d'Apache mostren el nombre de versió que està funcionant, el sistema operatiu i un informe de mòduls d'Apache estan instal·lats en el servidor. Els usuaris maliciosos poden utilitzar aquesta informació per atacar el teu servidor. Hi ha dues directives que necessites afegir o corregir en el teu arxiu de httpd.conf: ServerSignature Off ServerTokens Prod El ServerSignature apareix en la part inferior de les pàgines generades per Apache tals com els famosos errors 404. La directiva ServerTokens s'utilitza per determinar-se el que posarà Apache en la capçalera de la resposta HTTP del servidor.
  • 26. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Apache ha de funcionar sota el seu propi compte i grup d'usuari Algunes versions d'Apache corren sota l'usuari nobody, això compromet molt la seva seguretat per tant fes el següent: User Apache Group Apache Utilitza el mod_security El mod_security és un mòdul fantàstic d'Apache escrit per Ivan Ristic, l'autor d'Apache Security d'O'Reilly. Aquesta és una llista de coses que pots fer amb mod_security: Filtració simple. Filtració basada en expressions regulars. Validació de codificació de la URL. Validació de codificació Unicode. Auditoria. Prevenció de l'atac NULL Byte. Limitar la memòria de pujada. Emmascarar la identitat del servidor. I més... Deshabilitar qualsevol mòdul innecessari Apache ve per defecte instal·lat amb un sèrie de mòduls. Has de fer-li un cop d'ull a la documentació d'Apache i veure perquè serveix cadascun d'ells, i d'aquesta manera t'adonaràs que hi ha alguns que no són útils en el teu servidor. Cerca en httpd.conf les línies que continguin LoadModule. Per deshabilitar el mòdul has d'afegir un # al principi de la línia, perquè d'aquesta forma passi a ser un comentari. Per buscar els mòduls prova amb:
  • 27. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ grep LoadModule httpd.conf Aquí estan alguns mòduls que s'instal·len per defecte però sovint no són necessaris: mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex. Assegura’t de que els arxius als quals s'accedeix són els desitjats. No desitgem que es pugui accedir als directoris que no tinguin permisos per a això, suposem que el directori arrel per les nostres webs és /web, la configuració òptima hauria de ser la següent: Order Deny,Allow Deny from all Options None AllowOverride None Order Allow,Deny Allow from all Desactiva les opcions per explorar directoris Això ho pots fer amb les opcions de directiva dins de l'etiqueta directori té dos possibles valors: none o index. Options -Index Desactiva els includes del costat del servidor. Això també es fa amb les opcions de directiva dins de l'etiqueta directori té dos possibles valors: none o include. Options -Includes Desactiva l'execució de CGI. Si no necessites l'execució de CGI per algun motiu en concret desactiva’ls es fa amb les opcions de directiva dins de l'etiqueta directori té dos possibles valors: none o ExecCGI. Options –ExecCGI
  • 28. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ No permetre que Apache segueixi enllaços simbòlics De nou es configura amb les opcions de directiva dins de l'etiqueta directori té dos possibles valors: none o FollowSymLinks. Options -FollowSymLinks Desactivar totes les opcions. Si desitges desactivar l'ús de totes les opcions simplement: Options None Si solament desitges desactivar algunes en concret, separa-les amb un espai en les opcions de directiva: Options -ExecCGI -FollowSymLinks -Indexis Desactivar l'ajuda per als arxius .htaccess Això està fet ja però amb la directiva AllowOverride. Canvia-ho a none. AllowOverride None Una altra opció interessant seria bloquejar la descàrrega de tots els arxius que comencin amb .ht per exemple, es faria de la següent manera: AccessFileName .httpdoverride Order allow,deny Deny from all Satisfy All Disminueix el valor màxim de temps d'espera Per defecte el temps d'espera és de 300 segons. Pots disminuir-ho per seguretat per prevenir atacs d'aquesta manera: Timeout 45
  • 29. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Limitar la grandària màxima de peticions Apache té diverses directives que permeten que limitis la grandària d'una petició, això pot ser molt útil. Una bona manera de començar és amb la directiva LimitRequestBody. Aquesta directiva està fixada a il·limitat per defecte. Si estàs permetent uploads d'arxius que no siguin majors a 1 Megabyte, podries fixar aquest ajust a alguna cosa semblat a això: LimitRequestBody 105000 Si no estàs permetent uploads d'arxius pots fixar-ho fins i tot a una grandària més petita. Alguns altres directives a mirar són LimitRequestFields, LimitRequestFieldSize i LimitRequestLine. Conclusió Espero que aquestes recomanacions us hagin estat útils i recorda que l'ús que li has de donar depèn en gran mesura dels recursos que necessites i de les característiques del teu servidor, abans de fer qualsevol canvi si no estàs segur documenta't i utilitza aquest article únicament com una referència perquè et porti a la solució més ideal. Solució a un problema en dominis allotjats en servidors amb el panell de control Plesk Relatiu a la directiva de PHP open_basedir. Estem utilitzant un nou servidor que té suport per PHP 5. (Fins al moment estàvem treballant amb PHP 4, però ja era hora de canviar). Com sempre, migrar a un nou servidor porta els seus problemes, però afortunadament amb l'ajuda del suport tècnic i amb la documentació que es troba per Internet, es van arreglant. En aquest article us explicarem un error que hem trobat a l'hora de configurar el domini, que després s’ha vist que és comú a moltes persones que tenen el panell de control Plesk com a gestor dels recursos del servidor. Així doncs vaig a intentar expressar el problema i la solució que hem trobat. El problema amb open_basedir Plesk té una configuració pròpia de la directiva de PHP open_basedir (que es defineix en el php.ini). Per la configuració de Plesk de open_basedir, només es poden incloure arxius que pengin del directori de publicació del domini, és a dir el directori httpdocs del domini. L'estat de open_basedir configurat per Plesk de manera predeterminada és el següent:
  • 30. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ open_basedir = "/var/www/vhosts/elteudomini.com/httpdocs:/tmp" Per aquesta directiva no es poden incloure arxius (amb la funció include o require de PHP) que estiguin en altres carpetes o sub-carpetes que pengin de les marcades en el open_basedir. Nosaltres tenim algunes carpetes que contenen codis font i no s'estaven podent incloure. Per això ens saltava sovint un error PHP com a aquest: open_basedir restriction in effect. File(./../directori-fonts-httpdocs/arxiu.php) is not within the allowed path(s): (/var/www/vhosts/elmeudomini.com/httpdocs:/tmp) Després es va veure que aquest problema ho tenen també usuaris que tinguin codis inclosos en frameworks per PHP com PEAR. Solució al problema: configurar Plesk La primera aproximació a la solució va ser, com es va pensar, modificar l'arxiu PHP.ini. De fet, és el que pensava que ho arreglaria. Per canviar la directiva open_basedir del php.ini. Però els canvis, no van fer efecte. També vaig provar canviant la directiva include_path, però tampoc es va arreglar gens. Una vegada consultat amb el servei tècnic del nostre proveïdor, ens van aconsellar moure totes les carpetes al directori de publicació, però això no és possible, per diverses raons. Però ens van donar la pista que el problema estava relacionat amb Plesk. Finalment buscant per Pear i Plesk en Google va aparèixer un article molt interessant en una pàgina en anglès: How to: Enable PEAR/Set open_basedir. En aquest article s’expressa pas a pas el que s'ha de fer, que resumint seria: Existeix un arxiu que Plesk utilitza per configurar cada domini, de manera que no convé tocar el php.ini, perquè això afectaria a tot el servidor (i no sempre, perquè algunes directives, com open_basedir, després les sobre-escriu Plesk en altres arxius apart i per molt que es toquin en el php.ini no tindrà cap efecte). Hi ha un lloc on s'han de configurar els canvis del php.ini, específics per a cada domini allotjat. En el meu cas aquest arxiu de configuració no estava creat, per la qual cosa he hagut de crear- ho. L'arxiu de configuració específic per a cada domini està en el directori /var/www/vhosts/midominio.com/conf I l'arxiu que cal crear allí, o modificar si és que ja existeix és: vhost.conf Perquè funcioni, el contingut de l'arxiu que he col·locat és el següent:
  • 31. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ php_admin_value open_basedir "/var/www/vhosts/elmeudomini.com/httpdocs:/tmp:/var/www/vhosts/elmeudomini.com/dir ectori_includes php_admin_value display_errors On Es tracta simplement de definir el open_basedir marcant tots els directoris on hi ha arxius que es pretenen incloure des de PHP. (Amb incloure un directori et permet incloure arxius de tots els subdirectoris que hi hagi dins). En el codi anterior pots veure que hem modificat un altre paràmetre del PHP: display_errors On (Això és per poder veure els errors directament a la pàgina, en comptes del log d'errors, que és més còmode almenys durant les proves i fins a migrar definitivament el domini). Ara bé, ja sabem on tocar per configurar directives PHP del php.ini específiques per a un domini allotjat. Podrem definir totes les directives que es necessitin. Per exemple, una altra cosa que es pot necessitar canviar és anul·lar el safe_mode per a un domini en concret i això es pot fer des d'aquest mateix arxiu amb la línia: php_admin_value safe_mode Off Perquè els canvis tinguin efecte àdhuc hem de realitzar un parell de passos. Es tracta primer de dir-li a Plesk que actualitzi la configuració d'un domini. Això es fa amb la instrucció: /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=elmeudomini.com Ara també haurem de reiniciar l'Apache, que es pot fer amb la instrucció: /etc/init.d/httpd restart O bé amb la instrucció: service httpd restart Això és tot, ara hauria de funcionar.
  • 32. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Què és la compressió per GZIP d'un lloc web, com funciona i de quina manera ajuda en l'optimització de la descàrrega d'una pàgina La compressió per GZIP és una de les possibilitats més importants per optimitzar un lloc web, per buscar un millor acompliment en la càrrega de les pàgines. Consisteix a enviar els codis del lloc en format comprimit, perquè ocupin molt menys espai i per tant es transfereixin per la xarxa d'una manera més ràpida. Tenim vàries formes de definir que s'enviïn comprimits els arxius de la pàgina. La manera més normal és configurar el servidor web on estigui allotjada la pàgina, ja sigui Apache, IIS o qualsevol altre sistema, per marcar que s'utilitzi algun dels mètodes de compressió per als arxius. Encara que en ocasions espanta una mica això de configurar el servidor web, us podem avançar que aquesta configuració és molt senzilla de realitzar i al llarg de l’article anem a explicar detingudament com realitzar-la de diverses maneres. Una altra manera d'enviar els arxius comprimits és programar nosaltres mateixos aquesta funcionalitat amb algun mòdul a la teva pàgina realitzada en llenguatges del servidor com PHP. Aquest mòdul que podries programar s'encarregaria de comprimir els arxius i enviar-los comprimits al client web, però aquestes tècniques només serien recomanades si no tenim la possibilitat de configurar directament el servidor web. D'ara endavant veurem de quines maneres que es poden enviar els arxius comprimits amb algun llenguatge de programació. En definitiva, veurem maneres diferents d'aconseguir aquesta configuració i així qualsevol persona, en qualsevol àmbit de treball, pugui optimitzar la distribució dels continguts de la seva pàgina amb GZIP. Avantatges de comprimir amb GZIP L'avantatge de comprimir amb GZIP el nostre lloc web és que serà menys pesat en KB, la qual cosa derivarà al seu torn en altres avantatges importants: Estalvi d'ample de banda / transferència: el nostre lloc web enviarà arxius comprimits i per tant, la transferència que utilitzarà per enviar una mateixa pàgina, serà molt millor que si no estigués comprimida. Al cap del mes, sobretot en llocs web amb bastant tràfic, s'obtindrà un estalvi considerable en transferència. Velocitat del lloc: els arxius comprimits trigaran menys a arribar als seus destinataris, per tant el lloc carregarà amb major rapidesa. Si estem optimitzant el lloc a la recerca de millorar el temps de càrrega, la compressió amb GZIP serà una de les més importants opcions que tindrem a la nostra disposició i podrem configurar-la en pocs minuts. Suport en tots els navegadors actuals: avui dia podem estar tranquils amb la compatibilitat de la compressió amb GZIP, ja que tots els navegadors actuals la implementen. En realitat, comprimir els arxius amb GZIP sempre ens porta avantatges interessants que faran que nostre lloc web funcioni més de pressa, per la qual cosa resultarà positiu en qualsevol cas.
  • 33. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ L'únic marc que podria donar problemes és que el navegador que està utilitzant el visitant no accepti compressió a les pàgines, però realment en el panorama actual de navegadors això és poc probable. Per tant, tret que el teu lloc web hagi de ser compatible amb, per exemple, la versió 3 d'Internet Explorer, pots utilitzar-la sense problemes. De qualsevol forma, el nostre servidor pot enviar els arxius comprimits només als navegadors que suportin aquest format. Pel que no hauria de preocupar-nos ni tan sols aquesta possibilitat d'un navegador no compatible. Llocs web populars com Yahoo.com o Google comprimeixen les pàgines amb GZIP abans d'enviar-les al client web, per la qual cosa resulta clar que nosaltres també hem d'aprofitar aquesta possibilitat d'optimització de la web. De fet, no fer-ho, significa que estem perdent una oportunitat molt bona per fer que el nostre lloc sigui més ràpid. Per posar un parell d'exemples, la portada de Yahoo.com en aquest moment ocupa 149 Kb., però com s'envia comprimida, en realitat només es transfereixen 28 Kb.. exabyteinformatica.com, el lloc on estem publicant aquestes informacions, ocupa en la seva home page 92 KB i en enviar-se comprimida la pàgina per GZIP en realitat només es transfereixen 43 KB. Això vol dir que estem estalviant més d'un 40% de la transferència que en principi seria necessària si no ho comprimíssim. Com podem crear un arxiu .htaccess per configurar Apache i demanar-li que enviï tots els arxius, menys les imatges, comprimides amb GZIP? Després d'haver llegit el Manual de compressió amb GZIP d'un lloc web ja hem de tenir una idea sobre els avantatges de comprimir les pàgines i altres recursos abans d'enviar-los al navegador. A més, hem conegut ja diversos mètodes de fàcil configuració per aconseguir aquesta compressió GZIP a les pàgines PHP i altres arxius externs com JS o CSS. En aquest article anem a continuar explorant possibilitats de configuració del nostre servidor web Apache, també per mitjà d'un arxiu .htaccess, que és la manera més senzilla i a l'abast d'un major nombre de persones. En concret anem a mostrar com definir en una sola instrucció que es comprimeixin tots els arxius menys les imatges. Potser alguns de vosaltres es preguntin: Per què no comprimim les imatges? I és que realment, com ja havíem assenyalat en aquest manual, les imatges ja estan comprimides, ja que els arxius gràfics utilitzats en web tenen tots un nivell de compressió. Per tant, comprimir un GIF amb GZIP no tindrà pràcticament millora alguna, doncs el pes de l'arxiu comprimit serà pràcticament el mateix que el GIF original. A més, representarà un esforç per al processador del servidor web, que haurà de comprimir aquests arxius abans d'enviar-los al client. Al final, el rendiment del servidor pot veure's reduït, per haver de comprimir totes les imatges, i realment no haurem avançat en gens, ja que les imatges ocuparan gairebé el mateix espai en KB. Això passa amb qualsevol tipus d'arxiu gràfic, no només amb els GIF, sinó amb altres utilitzats per fer webs, com JPG o PNG.
  • 34. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Instrucció htaccess per comprimir un tipus de mitjà Existeix una instrucció que s'insereix en el codi dels htaccess que serveix per definir la compressió GZIP / DEFLATE. La instrucció es diu AddOutputFilterByType i hem d'indicar-li després el tipus de compressió i el tipus de mitjà que desitgem comprimir. Per exemple, amb aquesta línia de codi comprimiríem tots els arxius de text pla: AddOutputFilterByType DEFLATE text/plain Si desitgem, podem comprimir tots els arxius HTML amb aquesta línia de codi en el htaccess. AddOutputFilterByType DEFLATE text/html A continuació podem veure una sèrie de línies amb diferents tipus de mitjans que s'estan indicant per comprimir: AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml Amb aquest mètode, Apache serà prou intel·ligent per enviar els arxius comprimits només per als navegadors que suporten aquesta optimització i nosaltres no hem de fer res perquè tot funcioni correctament. Entre els dos mètodes GZIP / DEFLATE podem triar qualsevol d'ells. Deflate és bastant ràpid i compatible amb més versions de navegadors antics. Com configurar i personalitzar la pàgina d'error 404, de pàgina no oposada, en el servidor Apache amb la directiva ErrorDocument Les pàgines d'error 404 són tan típiques que és possible que tots les coneguem sense parlar més d'elles. Penso que és difícil trobar algú que navegui habitualment per la xarxa i no hagi
  • 35. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ reparat en elles en alguna ocasió, però així i tot la persona que desitgi saber una mica més, pot consultar què diuen els usuaris de la Wiki en l'entrada sobre l'error 404. Apache, el servidor web més utilitzat mundialment, ofereix una senzilla manera de configurar les pàgines d'error, accessible fins i tot per a les persones que menys experiència tenen quant a desenvolupament de pàgines web. En aquest article veurem dues possibles maneres de dir-li al nostre servidor web Apache la pàgina que desitgem es mostri en el cas que es produeixi un error 404. En principi, les dues possibilitats que veurem són independents una de l'altra, per la qual cosa podrem triar la que més ens convingui, o la que suporti el nostre espai d'allotjament. Les dues maneres passen per configurar la variable de sistema "ErrorDocument", que serveix per indicar el document HTML que ha de lliurar-se quan sorgeixi un error de pàgina no oposada. Nota: de manera predeterminada, en produir-se un error 404, Apache mostra una pàgina d'error molt simple, que la veritat és que no ofereix a l'usuari molta informació útil que li serveixi per detectar el motiu de l'error. Per això, pot merèixer la pena configurar la nostra pròpia pàgina d'error 404 personalitzada. Configuració de l'error 404 en el httpd.conf La primera possibilitat per configurar la pàgina d'error 404 és editar l'arxiu principal de configuració d'Apache, anomenat httpd.conf. Aquest arxiu és bastant llarg i conté centenars de configuracions possibles per al servidor web. En el Manual d'Apache ja vam veure diversos articles sobre els quals tractem aquest arxiu httpd.conf i les variables principals per a la seva configuració. En concret, recomanem llegir l'article Directives de funcionament en httpd.conf. L'única cosa que haurem d'afegir és una línia on indiquem la ruta de l'arxiu que envia en produir-se un error de recurs no oposat, per mitjà de la variable "ErrorDocument". ErrorDocument 404 /mipagina404.html En aquest cas, s'indicaria que, sota un error 404, s'ha d'enviar el document que està en l'arxiu "lamevapàgina404.html" (o qualsevol altre document que vulguem utilitzar com a pàgina d'error). La ruta indicada cap a l'arxiu comença per "/", per la qual cosa Apache entendrà que el mateix està en l'arrel del domini. Nota: Abans d'afegir aquesta línia, hauríem de comprovar si existeix en alguna part de l'arxiu httpd.conf una referència anterior a aquesta directiva, fent una cerca pel text "ErrorDocument" dins de l'arxiu. Però tenir en compte que en l'arxiu httpd.conf totes les línies que comencen per "#" són comentaris. Recordar també que, perquè els canvis en el httpd.conf facin efecte, hem de guardar l'arxiu i després reiniciar el servidor Apache.
  • 36. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware © Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/ Configuració de la pàgina d'error 404 per .htaccess En la majoria dels casos que puguem trobar-nos, en els plans d'allotjament per a la nostra web, no ens permetran editar el httpd.conf, ja que aquest arxiu conté moltes directives de configuració crítiques, que mal editades podrien donar lloc a funcionaments erronis del servidor. Per això, per configurar el nostre espai de hosting en Apache segurament ens vindrà molt millor aquesta segona opció. La segona possibilitat es tracta simplement de crear un arxiu que s’anomeni .htaccess (l'arxiu comença per ".", com si no tingués nom i només s'indica aquesta extensió), on col·locarem la directiva de configuració "ErrorDocument". L'arxiu .htaccess es col·locarà en l'arrel del domini i tindrà el següent contingut. ErrorDocument 404 /error404.html Com es pot veure, s'indica també la ruta on estaria la pàgina d'error en el nostre sistema. En aquest cas en un arxiu anomenat error404.html, que estaria en l'arrel del domini. Òbviament, cada persona col·locarà el nom d'arxiu que vulgui utilitzar com a error 404 i la ruta on es trobi aquest arxiu dins del domini. Nota: Si disposem ja d'un arxiu .htaccess en la nostra arrel del domini, simplement haurem d'editar-ho per incorporar aquesta línia. Conclusió i altres referències sobre error 404 A partir de que hàgim realitzat aquesta configuració podrem accedir a qualsevol pàgina que no existeixi, o qualsevol altre tipus de recurs, com una imatge, i veure que Apache ens mostra des de llavors l'arxiu que hàgim configurat per expressar l'error 404. Com dèiem, els errors 404 són bastant típics i gràcies a aquesta tècnica podem utilitzar-los per redireccionar a l'usuari cap a altres continguts o explicar-li els motius de l'error, així com oferir- li possibles accions per solucionar-los o trobar allò que buscava.