Sei sulla pagina 1di 10

1. Qu es apache, y qu alternativas hay en el mercado?

Apache es un servidor web gratuito, potente y que nos ofrece un servicio estable y
senzillo de mantener y configurar. Es indiscutiblemente uno de los mayores logros
del Software Libre.
Destacaremos las siguientes caractersticas!
" Es multiplataforma, aunque idealmente est# preparado para funcionar ba$o linu%.
" &uy senzillo de configurar.
" Es 'pen"source.
" &uy (til para proveedores de Servicios de )nternet que requieran miles de sitios
peque*os con p#ginas est#ticas.
" +mplias libreras de ,-, y ,erl a disposici.n de los programadores.
" ,osee diversos m.dulos que permiten incorporarle nuevas funcionalidades,
estos son muy simples de cargar.
" Es capaz de utilizar lengua$es como ,-,, /0L, ,ython, etc.
En el mercado podemos encontrar otras alternativas, entre las m#s importantes
comentaremos las
siguientes!
A OLServer!
" Es 'pen"source.
" &e$ora varias deficiencias de Apache.
" Se basa en un desarrollo por threads, con lo cual se reduce la carga sobre la
memoria de procesos.
" 1so m#s eficiente de las cone%iones a bases de datos 2es una de sus principales
caractersticas3.
" Es utilizado por A'L, el proveedor de servicios de internet 2)S,3 m#s grande del
mundo.
" &ultiplataforma.
IIS Internet In!ormation Server"#
" Desarrollado por &icrosoft.
" S.lo funciona ba$o 4indows.
" &uy f#cil de instalar.
" ,roporciona AS,5s, que facilitan el desarrollo de aplicaciones.
" Es un software propietario, con lo cual su uso tiene un coste.
" /iene numerosos fallos de seguridad.
$ Servlet %n&ines$ y $'ava Application Server$#
" Su representant m#s conocido es /omcat, desarrollado por Sun &icrosystem5s.
" 6equiere de un 7D8 297ava Development :it93 para funcionar.
" ;ormalmente se usa un 9Servidor de p#ginas9 2Apache, A'L, etc.3 en con$unci.n
con un 9Servlet Engine9, dado que el primero es mucho m#s eficiente a la hora de
devolver una p#gina -/&L est#tica.
(. Opciones para de!inir la con!i&uraci)n de apache
,ara definir la configuraci.n de apache tenemos dos opciones!
" <ichero httpd.conf
" <ichero .htaccess
,rimero de todo comentaremos qu= efectos tiene cada uno de los ficheros sobre
la configuraci.n del dominio.
En el caso del fichero httpd.conf estamos definiendo una configuraci.n global para
todos los dominios que se alo$en en el servidor donde se encuentra dicho fichero.
En el caso del fichero .htaccess s.lo se modificar# la configuraci.n del dominio en
el cual est= alo$ado =ste.
0uando apache debe devolver una p#gina web, en primera instancia lee el archivo
httpd.conf, y en segunda instancia el archivo .htaccess, con lo cual siempre tendr#
prioridad el segundo.
,asamos a comentar unos cuantos detalles de cada uno de los ficheros de
configuraci.n!
*ichero httpd.con!#
En este fichero est# incluida toda la configuraci.n de apache, siempre y cuando no
tengamos la configuraci.n en varios ficheros, de forma distribuida, 2la distribuci.n
de linu% Suse, instala apache por defecto en varios ficheros3, para principiantes
recomiendo un solo fichero, si se es un usuario m#s avanzado recomiendo el uso
de ficheros separados.
;'/A! En el caso que el archivo de configuraci.n est= distribuido en varios
archivos, dentro del fichero httpd.conf tendremos indicada la ruta a cada uno de
los ficheros y los par#metros que podremos modificar en ellos. ,or defecto apache
carga la configuraci.n que est= definida en todos los ficheros que tengan
e%tensi.n 9.conf9.
*ichero .htaccess#
Este fichero se ubica en el directorio raiz donde esten los archivos de la p#gina
web. &ediante =ste podremos definir par#metros especficos para el dominio que
lo alo$a. Es muy usado en los hostings, dado que evidentemente no pueden de$ar
que los usuarios cambien la configuraci.n del archivo httpd.conf seg(n las
necesidades de su dominio.
<inalmente comentaremos un par de propiedades que nos podra interesar
cambiar mediante el fichero .htaccess.
1n e$emplo sera la codificaci.n de la p#gina web. ,ensemos por e$emplo que el
hosting que hemos contratado tiene configurado que nuestras p#ginas est#n
codificadas mediante 1/<">, con lo cual los navegadores interpretar#n el
contenido seg(n =sta codificaci.n. Si en cambio nosotros queremos utilizar la
codificaci.n )S'">>?@"A debemos 9sobreescribir9 esta propiedad, por lo tanto
incorporaremos la siguiente sentencia en el archivo .htaccess!
AddDefaultCharset ISO-8859-1
'tra caracterstica muy utilizada en los ficheros .htaccess es la que nos permite
cambiar propiedades de ,-,, con lo cual no tendremos que tener acceso al
fichero php.ini para poder configurar ciertas caractersticas. ,ara cambiar una
propiedad de ,-, utilizaremos la siguiente sinta%is!
php_flag "nombre propiedad" "valor"
,or e$emplo, para indicar a apache que deseamos cargar las sesiones a trav=s de
una coo:ie en vez de pasarlos por la url debemos usar el siguiente comando!
php_fla session!use_onl"_#oo$ies on
0omo vemos, el fichero .htaccess es una herramienta muy potente que se pone a
disposici.n del administrador de la p#gina web para poder personalizar el servidor
apache que nos ofrece el hosting que contratemos.
En las siguientes secciones nos centraremos en las propiedades que podemos
modificar dentro del fichero httpd.conf, a(n as gran parte de ellas est#n
disponibles tambi=n para el fichero .htaccess. Si queremos comprobar la
compatibilidad de estas para el fichero .htaccess solo debemos dirigirnos a la
p#gina http!BBhttpd.apache.orgBdocsBC.DBmodBdirectives.html y buscar las
especificaciones para cada una de las directivas que necesitemos usar. En las
caractersticas de la directiva se indica si se puede usar en el fichero .htaccess o
no.
+. Invocaci)n del servicio de apache
0ada uno de los cambios que hagamos en el fichero httpd.conf debe venir
acompa*ado del reinicio del servicio de apache, dado que de lo contrario no
tendr#n efecto. ;o es as para los cambios que se efectuen en el fichero
.htaccess, estos ser#n tenidos en cuenta cuando se haga una nueva petici.n de la
p#gina web.
,ara poner en marcha apache, debemos invocar el servicio que inicia el demonio.
Si deseamos que durante el inicio del apache se nos muestren los mensa$es que
va devolviendo el servicio de apache por pantalla, debemos usar la directiva
apachectl, en el caso que no deseemos que se muestren los mensa$es podemos
usar la directiva httpd.
/anto apachectl, como httpd aceptan los par#metros start, stop y restart.
,ara reiniciar el servicio deberemos usar el siguiente comando!
%et#%init!d%apa#he& restart 2En el caso que usemos ApacheC3
%et#%init!d%apa#he restart 2En el caso que usemos Apache A.E3
En el caso que estemos traba$ando sobre windows debemos seguir los siguientes
pasos!
Ini#io-'(anel de #ontrol-')erramientas administrativas-'Servi#ios-'Apa#heF
FEl nombre del proceso de apache puede variar seg(n la versi.n de apache que
tengais instalado o si usais alg(n paquete que incluya mysql, php y apache 2como
por e$emplo ApacheC/riad3. Estos paquetes son muy (tiles para los rogramadores
que necesitan instalar un entorno de preproducci.n o bien para principiantes.
,. -e!inici)n de las varia.les m/s importantes
En esta secci.n vamos a definir las variables que m#s importancia tienen durante
la configuraci.n de apache. Gstas nos van a permitir optimizar la respuesta a la
hora de servir las p#ginas y me$orar la seguridad del servidor.
Server0oot $etc1httpd$
" Directorio en el cual se encuentran los ficheros de configuraci.n de apache.
2imeout +33
" /iempo 2en segundos3 antes de recibir una se*al de timeout, que significa que la
p#gina no ha podido ser cargada por alg(n motivo.
4ser apache
" 1suario que va a e$ecutar el proceso de apache. &ucho cuidado con esta
variable, dado que tiene gran importancia a la hora de tener un servidor seguro.
Debemos asegurarnos que el usuario apache tenga unos privilegios muy
limitados, a poder ser solo de escrituraBlectura sobre los directorios utilizados para
guardar la p#gina y de acceso a la base de datos.
ServerAdmin admin5localhost
" 0uenta de correo donde se van a enviar los emails de aviso en caso de que
apache de$e de
responder por alg(n motivo.
-ocument0oot $6e.1contenido$
" Directorio donde se encuentran los ficheros de la p#gina web. Aqu guardaremos
el repositorio de la p#gina, y por lo tanto ser# donde los usuarios tengan acceso.
6ecomendamos tener mucho cuidado en el tipo de ficheros o subdirectorios a los
cuales tienen acceso los usuarios, =stos los podemos proteger mediante el tag
HBfileIHBfileI o bien HdirectoryI HBdirectoryI. La sinta%is de =stos se muestra en
secciones posteriores.
Access*ile7ame .htaccess
" ;ombre del fichero que va a contener informaci.n suplementaria de
configuraci.n del apache. Lo hemos mencionado anteriormente.
" ,ara bloquear el acceso a este fichero a los usuarios 2dado que se tiene que
ubicar en el directorio especificado por Document6oot se debe usar la siguiente
sentencia!
*files + ",-!ht"'
Order allo./ den"
Den" from all
*%files'
0on estas sentencias estamos indicando que los directorios que empiezen por .ht
no sean visibles para los usuarios.
%rrorLo& lo&s1error8lo&
" Archivo donde se registrar#n los errores que se produzcan durante el inicio o
e$ecuci.n de apache, y que por lo tanto debemos tener muy presente cuando
tengamos problemas con apache.
9ustomLo& lo&s1access8lo& com.ined
" Archivo donde se registrar#n los accesos a la p#gina web. Se guardar# el
acceso, el agente y el referer.
" Si queremos que se registren el agente y el referer en archivos diferentes
debemos usar las siguientes sentencias!
" 9ustomLo& lo&s1a&ent8lo& a&ent Juarda los agentes.
" 9ustomLo& lo&s1re!erer8lo& re!erer Juarda los referers.
Add-e!ault9harset ISO:;;<=:1
" Definici.n del tipo de condificaci.n. )S'">>?@"A es un estandard muy e%tendido
de codificaci.n, ahora bien, para internacionalizar la web se puede usar tambi=n el
charset 1/<">. Es muy recomendable definir un charset y no de$ar que el
navegador lo esco$a por defecto, dado que la interpretaci.n del tipo de codificaci.n
puede no ser correcta y la p#gina
no se ver# correctamente.
%rror-ocument ,3,1,3,.html
" Archivo que se va a mostrar al producirse un error KDK. Esta misma sinta%is sirve
para los otros tipos de error, por e$emplo!
" ErrorDocument EDCBEDC.html 2donde EDC.html es el nombre que nosotros le
damos al archivo, lo escogemos nosotros3.
Evidentemente hay muchas m#s propiedades que entran en $uego a la hora de
configurar apache, para encontrar una descripci.n de cada una de ellas os remito
a la siguiente p#gina! http!BBhttpd.apache.orgBdocsBC.DBmodBdirectives.html.
<. 9ar&ar un m)dulo
/al como hemos comentado en la primera secci.n, una de las principales
caractersticas de apache es que nos permite cargar una serie de m.dulos que no
vienen instalados por defecto. &ediante =stos podremos implementar p#ginas con
lengua$es como ,-,, ,ython, conectarnos a una base de datos, etc. Estos
m.dulos son de tipo DS', m.dulos que se cargan en tiempo de e$ecuci.n, y que
por lo tanto no consumen memoria si no son necesarios.
,asamos a comentar como podemos cargar estos m.dulos, sin embargo ya
avanzamos que su carga es e%tremadamente simple.
,rimero de todo nos debemos asegurar que el m.dulo que deseamos cargar
e%iste en el directorio donde =stos est#n guardados. ;ormalmente los podremos
encontrar en el directorio path_apa#he%modules.
El segundo paso es indicarle a apache que debe cargar el m.dulo!
,ara indicar el directorio y nombre del fichero, debemos usar la siguiente
sentencia!
Load>odule nom.re8modulo modules1nom.re8archivo.so
,or e$emplo!
Load>odule access8module modules1mod8access.so
Lemos que la sinta%is es muy simple, solo debemos indicarle que tenemos
disponible un m.dulo especfico mediante Load&odule, el m.dulo que estamos
cargando 2en este caso accessMmodule3, y a continuaci.n le indicamos donde se
encuentra, 2en este caso modulesBmodMaccess.so3.
Despu=s de reiniciar apache, si no hay ning(n problema con la sinta%is
anteriormente comentada y el fichero que implementa el m.dulo se encuentra
disponible, el m.dulo ser# cargado.
?. -e!inici)n de permisos de los directorios
Anteriormente hemos comentado como se protega el fichero .htaccess, para ello
hemos usado una sentencia que prohibe la lectura de dicho fichero a los usuarios.
Ahora procederemos a comentar brevemente la sinta%is que siguen este tipo de
sentencias.
,ara definir los directorios a los cuales queremos permitirBdenegar el acceso a
los usuarios vamos a usar la directiva!
*Dire#tor" %'
%%dire#tivas para permitir o denear el a##eso al dire#torio
*%Dire#tor"'
Si queremos restringir o permitir la lectura en un !ichero vamos a utilizar la
siguiente sinta%is!
*0ile %'
%%dire#tivas para permitir o denear un fi#hero a los usuarios
*%0ile'
,ara especificar el directorio al cual queremos permitir o restringir el paso
debemos indicarlo mediante su ruta, o bien mediante una e%presi.n regular, si
estamos tratando con una serie de ficheros que siguen un patr.n especfico.
,or e$emplo, si queremos denegar el paso a un directorio especfico!
*Dire#tor" %usr%private_dire#tor"'
Order Den"/Allo.
Den" from all
*%Dire#tor"'
" 0on esta sentencia conseguimos que los usuarios no puedan acceder al
directorio BusrBprivateMdirectory.
Si en cambio queremos restringir el acceso a un cierto tipo de ficheros, vamos a
usar una e%presi.n regular, por e$emplo!
*files + ",-!ht"'
Order allo./ den"
Den" from all
*%files'
" En este caso denegamos la lectura de los ficheros que empiezen por .ht 2como
por e$emplo el fichero .htaccess3.
Si queremos permitir el paso a los directorios especificados o bien denegarlo,
seguiremos la siguiente sinta%is!
" ,ara denegar el paso! -eny !rom usuarios, donde usuarios puede ser all 2para
denegar el paso a /'D'S los usuarios3 o bien una ),, etc.
" ,ara permitir el paso! Allo6 !rom usuarios, donde usuarios puede ser all 2para
denegar el paso a /'D'S los usuarios3 o bien una ),, etc.
@. Airtualhosts
&ediante los virtualhosts podremos tener varios dominios apuntando a una misma
m#quina. Dentro de cada virtualhost definiremos las directivas especficas para el
dominio que est= representando.
Gsta es otra forma de definir la configuraci.n de apache de modo local, con lo cual
s.lo afectar# a un dominio o subdominio 2recordemos que el fichero .htaccess
sirve para lo mismo3.
,odemos definir un virtualhost a trav=s de una ), o bien a trav=s de un name"
based virtual host, para el segundo caso utilizaremos un F para representarlo.
,or lo tanto la sinta%is de un virtualhost es la siguiente!
1ame2irtual)ost ip_ma3uina485
*2irtualhost 6'
%% Dire#tivas espe#7fi#as del virtualhost!
*%2irtualhost'
'bservamos que hemos implementado la definici.n de un virtualhost a trav=s de
un name"based virtual host. ,ara ello hemos utilizado el par#metro
;ameLirtual-ost, la ), de la m#quina donde se encuentra instalado apache, y el
puerto por el cual escuchar#, en este caso el puerto >D.
Seguidamente hemos definido el espacio en el cual implementaremos los detalles
especficos del dominio que representar# el virtualhost mediante los tags
HLirtualhostI y HBLirtualhostI.
;'/A! 6ecordar que para que los cambios en el fichero de configuraci.n httd.conf
tengan efecto, se debe reiniciar el servicio de apache.
;. Aaria.les importantes
Acto seguido pasamos a detallar algunas de las variables que suelen utilizarse en
los virtualhosts. La mayora de las propiedades ya fueron comentadas
anteriormente, con lo cual no las volveremos a comentar.
ServerAdmin admin8lo#alhost
Do#ument9oot "et#%httpd"
Server1ame dominio!#omCustom:o los%a##ess_lo
Dire#tor"Inde; inde;!php
Define el dominio con el cual tendr# efecto la configuraci.n que definamos en este
virtualhost.
<rror:o los%error_lo
)ndica el fichero que se va a cargar en el caso que apache reciba la petici.n de
cargar un directorio sin especificar ning(n fichero.
,or e$emplo!
Si apache recibe la url http!BBwww.dominio.comB por defecto va a cargar el fichero
inde%.php. Si hacemos una lista de ficheros en la misma directiva se va a intentar
cargar cada uno de los ficheros por orden de colocaci.n en la lista.
php_value mai#_3uotes_p# 5
Esta directiva va a hacer que todos los car#cteres 5, 9, N y ;1LL sean escapados
con una barra invertida autom#ticamente. 0on =sto vamos a conseguir evitar
muchos de los ataques m#s senzillos de sql)n$ection.
La directiva phpMvalue sirve para redefinir las propiedades que se encuentran en
el fichero php.ini, que es el fichero de configuraci.n de php. Es muy (til cuando
tenemos m#s de un dominio apuntando al mismo host, ya que podemos modificar
ciertas directivas de php para cada uno de los dominios. Si quer=is una gua de las
directivas del fichero php.ini os pod=is dirigir a =sta p#gina.
=. 0e6rite0ules
6ewrite6ule rela_de_apa#he
&ediante esta directiva podremos convertir p#ginas din#micas en est#ticas. En
este artculo no vamos a detallar el funcionamiento de las 6ewrites6ules, sin
embargo intentaremos dar una idea de =stas.
La mayora de las veces implementamos p#ginas web en lengua$es din#micos,
estos nos permiten pasar una serie de variables a trav=s de la url, como sera el
caso de este e$emplo!
http!BBwww.dominio.comBdirectorioABfichero.phpOvarAPAQvarCPC
Las desventa$as que tiene una url de este estilo s.n las siguientes!
" Los buscadores s.lo aceptan cierto n(mero de variables pasadas a trav=s de la
url.
" ,ara los usuarios es muy complicado guardar o memorizar url5s tan complicadas.
" El posicionamiento en los buscadores de una url din#mica es muy complicado.
,or todos estos puntos, las 6ewrite6ules son cada vez m#s importantes en el
proceso de dise*o de una p#gina web.
R0.mo funciona una 6ewrite6uleO &uy f#cil, cuando apache recibe una url
comprueba que la sinta%is de =sta coincida con alguna de las e%presiones
regulares definidas en las rewrite6ules, en el caso de coincidir aplica la
6ewrite6ule, la cual aplica alg(n tipo de proceso, como puede ser una redirecci.n.
0on un e$emplo se ver# mucho m#s claro!
Supongamos que queremos redireccionar las p#ginas que empiezan por 9patata9
a un fichero especfico. Lo que haramos sera hacer una 6ewrite6ule con una
e%presi.n regular que identificara estas p#ginas, y que una vez las hubiera
identificado las reenviara al fichero que le especificamos.
La regla quedara de la siguiente forma!
0e6rite0ule B1patata8.C"1? 1directorio(1!ichero(.php1D1 ELF
,ara poder utilizar 6ewrite6ules debemos tener en cuenta dos puntos. ,rimero
debemos cargar el m.dulo mod8re6rite.so, tal como hemos especificado en
p#ginas anteriores, y segungo introducir la directiva 0e6rite%n&ine On en el
virtualhost.
13. Glata!orma LA>G
1na plataforma LA&, es un con$unto de herramientas opensource que traba$ando
$untas nos permiten disponer de un servidor web. Las herramientas que aglutina el
t=rmino LA&, s.n Linu%, Apache, &ySSL y ,-,, ,erl, o ,ython , con lo cual
conseguimos todo lo que debe tener una plataforma web, que es un sistema
operativo, un servidor web, una base de datos, y un lengua$e de programaci.n.
Las plataformas LA&, est#n siendo muy bien aceptadas entre los proveedores de
servicios web.
0omo venta$as a destacar!
" Est# compuesta de software con licencia gratuita.
" El c.digo de todos sus componentes est# disponible, con lo cual se pueden
hacer las modificaciones que se crean oportunas.
11. 0e!erencias
http#11666.apache.or&1 :: G/&ina o!icial de apache.
http#11666.au&cyl.or&1&lol1apache(.html :: &uHa muy completa so.re
todos los par/metros del
!ichero de con!i&uraci)n de apache.
http#11666.pro&ramacionphp.net

Potrebbero piacerti anche