Está en la página 1de 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 bajo linux.
Muy
senzillo
de
configurar.
Es
Open-source.
- Muy til para proveedores de Servicios de Internet que requieran miles de sitios
pequeos
con
pginas
estticas.
- mplias libreras de PHP y Perl a disposicin de los programadores.
- Posee diversos mdulos que permiten incorporarle nuevas funcionalidades,
estos
son
muy
simples
de
cargar.
- Es capaz de utilizar lenguajes como PHP, TCL, Python, etc.
En el mercado podemos encontrar otras alternativas, entre las ms importantes
comentaremos
las
siguientes:
A
OLServer:
Es
Open-source.
Mejora
varias
deficiencias
de
Apache.
- Se basa en un desarrollo por threads, con lo cual se reduce la carga sobre la
memoria
de
procesos.
- Uso ms eficiente de las conexiones a bases de datos (es una de sus principales
caractersticas).
- Es utilizado por AOL, el proveedor de servicios de internet (ISP) ms grande del
mundo.
- Multiplataforma.
IIS
(Internet
Information
Server):
Desarrollado
por
Microsoft.
Slo
funciona
bajo
Windows.
Muy
fcil
de
instalar.
- Proporciona ASP's, que facilitan el desarrollo de aplicaciones.
- Es un software propietario, con lo cual su uso tiene un coste.
- Tiene numerosos fallos de seguridad.
"
Servlet
Engines"
y
"Java
Application
Server":
- Su representant ms conocido es Tomcat, desarrollado por Sun Microsystem's.
- Requiere de un JDK ("Java Development kit") para funcionar.
- Normalmente se usa un "Servidor de pginas" (Apache, AOL, etc.) en conjuncin
con un "Servlet Engine", dado que el primero es mucho ms eficiente a la hora de
devolver una pgina HTML esttica.

2. Opciones para definir la configuracin de apache


Para definir la
- Fichero .htaccess

configuracin de
Fichero

apache

tenemos

dos

opciones:
httpd.conf

Primero de todo comentaremos qu efectos tiene cada uno de los ficheros sobre
la configuracin del dominio.
En el caso del fichero httpd.conf estamos definiendo una configuracin global para
todos los dominios que se alojen en el servidor donde se encuentra dicho fichero.
En el caso del fichero .htaccess slo se modificar la configuracin del dominio en
el cual est alojado ste.
Cuando apache debe devolver una pgina web, en primera instancia lee el archivo
httpd.conf, y en segunda instancia el archivo .htaccess, con lo cual siempre tendr
prioridad el segundo.
Pasamos a comentar unos cuantos detalles de cada uno de los ficheros de
configuracin:
Fichero
httpd.conf:
En este fichero est incluida toda la configuracin de apache, siempre y cuando no
tengamos la configuracin en varios ficheros, de forma distribuida, (la distribucin
de linux Suse, instala apache por defecto en varios ficheros), para principiantes
recomiendo un solo fichero, si se es un usuario ms avanzado recomiendo el uso
de ficheros separados.
NOTA: En el caso que el archivo de configuracin est distribuido en varios
archivos, dentro del fichero httpd.conf tendremos indicada la ruta a cada uno de
los ficheros y los parmetros que podremos modificar en ellos. Por defecto apache
carga la configuracin que est definida en todos los ficheros que tengan
extensin ".conf".
Fichero
.htaccess:
Este fichero se ubica en el directorio raiz donde esten los archivos de la pgina
web. Mediante ste podremos definir parmetros especficos para el dominio que
lo aloja. Es muy usado en los hostings, dado que evidentemente no pueden dejar
que los usuarios cambien la configuracin del archivo httpd.conf segn las
necesidades de su dominio.
Finalmente comentaremos un par de propiedades que nos podra interesar
cambiar mediante el fichero .htaccess.
Un ejemplo sera la codificacin de la pgina web. Pensemos por ejemplo que el
hosting que hemos contratado tiene configurado que nuestras pginas estn
codificadas mediante UTF-8, con lo cual los navegadores interpretarn el

contenido segn sta codificacin. Si en cambio nosotros queremos utilizar la


codificacin ISO-8859-1 debemos "sobreescribir" esta propiedad, por lo tanto
incorporaremos
la
siguiente
sentencia
en
el
archivo
.htaccess:
AddDefaultCharset ISO-8859-1
Otra caracterstica muy utilizada en los ficheros .htaccess es la que nos permite
cambiar propiedades de PHP, con lo cual no tendremos que tener acceso al
fichero php.ini para poder configurar ciertas caractersticas. Para cambiar una
propiedad
de
PHP
utilizaremos
la
siguiente
sintaxis:
php_flag "nombre propiedad" "valor"
Por ejemplo, para indicar a apache que deseamos cargar las sesiones a travs de
una cookie en vez de pasarlos por la url debemos usar el siguiente comando:
php_flag session.use_only_cookies on
Como vemos, el fichero .htaccess es una herramienta muy potente que se pone a
disposicin del administrador de la pgina 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, an as gran parte de ellas estn
disponibles tambin para el fichero .htaccess. Si queremos comprobar la
compatibilidad de estas para el fichero .htaccess solo debemos dirigirnos a la
pgina
http://httpd.apache.org/docs/2.0/mod/directives.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.

3. Invocacin del servicio de apache


Cada uno de los cambios que hagamos en el fichero httpd.conf debe venir
acompaado del reinicio del servicio de apache, dado que de lo contrario no
tendrn efecto. No es as para los cambios que se efectuen en el fichero
.htaccess, estos sern tenidos en cuenta cuando se haga una nueva peticin de la
pgina web.
Para poner en marcha apache, debemos invocar el servicio que inicia el demonio.
Si deseamos que durante el inicio del apache se nos muestren los mensajes que
va devolviendo el servicio de apache por pantalla, debemos usar la directiva
apachectl, en el caso que no deseemos que se muestren los mensajes podemos
usar la directiva httpd.
Tanto apachectl, como httpd aceptan los parmetros start, stop y restart.

Para reiniciar el servicio deberemos usar el siguiente


/etc/init.d/apache2
restart
(En
el
caso
que
usemos
/etc/init.d/apache restart (En el caso que usemos Apache 1.3)

comando:
Apache2)

En el caso que estemos trabajando sobre windows debemos seguir los siguientes
pasos:
Inicio->Panel de control->Herramientas administrativas->Servicios->Apache*
*El nombre del proceso de apache puede variar segn la versin de apache que
tengais instalado o si usais algn paquete que incluya mysql, php y apache (como
por ejemplo Apache2Triad). Estos paquetes son muy tiles para los rogramadores
que necesitan instalar un entorno de preproduccin o bien para principiantes.
4. Definicin de las variables ms importantes
En esta seccin vamos a definir las variables que ms importancia tienen durante
la configuracin de apache. stas nos van a permitir optimizar la respuesta a la
hora de servir las pginas y mejorar la seguridad del servidor.
ServerRoot
"etc/httpd"
- Directorio en el cual se encuentran los ficheros de configuracin de apache.
Timeout
300
- Tiempo (en segundos) antes de recibir una seal de timeout, que significa que la
pgina no ha podido ser cargada por algn motivo.
User
apache
- Usuario que va a ejecutar el proceso de apache. Mucho 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 escritura/lectura sobre los directorios utilizados para
guardar la pgina y de acceso a la base de datos.
ServerAdmin
admin@localhost
- Cuenta de correo donde se van a enviar los emails de aviso en caso de que
apache
deje
de
responder por algn motivo.
DocumentRoot
"web/contenido"
- Directorio donde se encuentran los ficheros de la pgina web. Aqu guardaremos
el repositorio de la pgina, y por lo tanto ser donde los usuarios tengan acceso.
Recomendamos tener mucho cuidado en el tipo de ficheros o subdirectorios a los
cuales tienen acceso los usuarios, stos los podemos proteger mediante el tag
</file></file> o bien <directory> </directory>. La sintaxis de stos se muestra en
secciones posteriores.

AccessFileName
.htaccess
- Nombre del fichero que va a contener informacin suplementaria de
configuracin
del
apache.
Lo
hemos
mencionado
anteriormente.
- Para bloquear el acceso a este fichero a los usuarios (dado que se tiene que
ubicar en el directorio especificado por DocumentRoot se debe usar la siguiente
sentencia:
<files
~
"^\.ht">
Order
allow,
deny
Deny
from
all
</files>
Con estas sentencias estamos indicando que los directorios que empiezen por .ht
no sean visibles para los usuarios.
ErrorLog
logs/error_log
- Archivo donde se registrarn los errores que se produzcan durante el inicio o
ejecucin de apache, y que por lo tanto debemos tener muy presente cuando
tengamos problemas con apache.
CustomLog
logs/access_log
combined
- Archivo donde se registrarn los accesos a la pgina 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:
CustomLog
logs/agent_log
agent
Guarda
los
agentes.
- CustomLog logs/referer_log referer Guarda los referers.
AddDefaultCharset
ISO-8859-1
- Definicin del tipo de condificacin. ISO-8859-1 es un estandard muy extendido
de codificacin, ahora bien, para internacionalizar la web se puede usar tambin el
charset UTF-8. Es muy recomendable definir un charset y no dejar que el
navegador lo escoja por defecto, dado que la interpretacin del tipo de codificacin
puede
no
ser
correcta
y
la
pgina
no se ver correctamente.
ErrorDocument
404/404.html
- Archivo que se va a mostrar al producirse un error 404. Esta misma sintaxis sirve
para
los
otros
tipos
de
error,
por
ejemplo:
- ErrorDocument 302/302.html (donde 302.html es el nombre que nosotros le
damos al archivo, lo escogemos nosotros).
Evidentemente hay muchas ms propiedades que entran en juego a la hora de
configurar apache, para encontrar una descripcin de cada una de ellas os remito
a la siguiente pgina: http://httpd.apache.org/docs/2.0/mod/directives.html.

5. Cargar un mdulo
Tal como hemos comentado en la primera seccin, una de las principales
caractersticas de apache es que nos permite cargar una serie de mdulos que no
vienen instalados por defecto. Mediante stos podremos implementar pginas con
lenguajes como PHP, Python, conectarnos a una base de datos, etc. Estos
mdulos son de tipo DSO, mdulos que se cargan en tiempo de ejecucin, y que
por lo tanto no consumen memoria si no son necesarios.
Pasamos a comentar como podemos cargar estos mdulos, sin embargo ya
avanzamos que su carga es extremadamente simple.
Primero de todo nos debemos asegurar que el mdulo que deseamos cargar
existe en el directorio donde stos estn guardados. Normalmente los podremos
encontrar en el directorio path_apache/modules.
El segundo paso es indicarle a apache que debe cargar el mdulo:
Para indicar el directorio y nombre del fichero, debemos usar la siguiente
sentencia:
LoadModule nombre_modulo modules/nombre_archivo.so
Por ejemplo:
LoadModule access_module modules/mod_access.so
Vemos que la sintaxis es muy simple, solo debemos indicarle que tenemos
disponible un mdulo especfico mediante LoadModule, el mdulo que estamos
cargando (en este caso access_module), y a continuacin le indicamos donde se
encuentra, (en este caso modules/mod_access.so).
Despus de reiniciar apache, si no hay ningn problema con la sintaxis
anteriormente comentada y el fichero que implementa el mdulo se encuentra
disponible, el mdulo ser cargado.
6. Definicin 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 sintaxis que siguen este tipo de
sentencias.
Para definir los directorios a los cuales queremos permitir/denegar el acceso a
los
usuarios
vamos
a
usar
la
directiva:

<Directory
//directivas
</Directory>

para

permitir

denegar

el

acceso

al

/>
directorio

Si queremos restringir o permitir la lectura en un fichero vamos a utilizar la


siguiente
sintaxis:
<File
/>
//directivas para permitir o denegar un fichero a los usuarios
</File>
Para especificar el directorio al cual queremos permitir o restringir el paso
debemos indicarlo mediante su ruta, o bien mediante una expresin regular, si
estamos tratando con una serie de ficheros que siguen un patrn especfico.
Por ejemplo, si queremos denegar el paso a un directorio especfico:
<Directory
/usr/private_directory>
Order
Deny,Allow
Deny
from
all
</Directory>
- Con esta sentencia conseguimos que los usuarios no puedan acceder al
directorio /usr/private_directory.
Si en cambio queremos restringir el acceso a un cierto tipo de ficheros, vamos a
usar
una
expresin
regular,
por
ejemplo:
<files
~
"^\.ht">
Order
allow,
deny
Deny
from
all
</files>
- En este caso denegamos la lectura de los ficheros que empiezen por .ht (como
por ejemplo el fichero .htaccess).
Si queremos permitir el paso a los directorios especificados o bien denegarlo,
seguiremos
la
siguiente
sintaxis:
- Para denegar el paso: Deny from usuarios, donde usuarios puede ser all (para
denegar el paso a TODOS los usuarios) o bien una IP, etc.
- Para permitir el paso: Allow from usuarios, donde usuarios puede ser all (para
denegar el paso a TODOS los usuarios) o bien una IP, etc.
7. Virtualhosts
Mediante los virtualhosts podremos tener varios dominios apuntando a una misma
mquina. Dentro de cada virtualhost definiremos las directivas especficas para el
dominio que est representando.

sta es otra forma de definir la configuracin de apache de modo local, con lo cual
slo afectar a un dominio o subdominio (recordemos que el fichero .htaccess
sirve para lo mismo).
Podemos definir un virtualhost a travs de una IP o bien a travs de un namebased virtual host, para el segundo caso utilizaremos un * para representarlo.
Por
lo
tanto
NameVirtualHost
<Virtualhost
//
</Virtualhost>

la

sintaxis

Directivas

de

un

virtualhost

especficas

es
del

la
siguiente:
ip_maquina:80
*>
virtualhost.

Observamos que hemos implementado la definicin de un virtualhost a travs de


un name-based virtual host. Para ello hemos utilizado el parmetro
NameVirtualHost, la IP de la mquina donde se encuentra instalado apache, y el
puerto por el cual escuchar, en este caso el puerto 80.
Seguidamente hemos definido el espacio en el cual implementaremos los detalles
especficos del dominio que representar el virtualhost mediante los tags
<Virtualhost> y </Virtualhost>.
NOTA: Recordar que para que los cambios en el fichero de configuracin httd.conf
tengan efecto, se debe reiniciar el servicio de apache.
8. Variables 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
admin@localhost
DocumentRoot
"etc/httpd"
ServerName
dominio.comCustomLog
logs/access_log
DirectoryIndex
index.php
Define el dominio con el cual tendr efecto la configuracin que definamos en este
virtualhost.
ErrorLog

logs/error_log

Indica el fichero que se va a cargar en el caso que apache reciba la peticin de


cargar un directorio sin especificar ningn fichero.
Por
ejemplo:
Si apache recibe la url http://www.dominio.com/ por defecto va a cargar el fichero

index.php. Si hacemos una lista de ficheros en la misma directiva se va a intentar


cargar cada uno de los ficheros por orden de colocacin en la lista.
php_value
magic_quotes_gpc
0
Esta directiva va a hacer que todos los carcteres ', ", \ y NULL sean escapados
con una barra invertida automticamente. Con sto vamos a conseguir evitar
muchos de los ataques ms senzillos de sqlInjection.
La directiva php_value sirve para redefinir las propiedades que se encuentran en
el fichero php.ini, que es el fichero de configuracin de php. Es muy til cuando
tenemos ms de un dominio apuntando al mismo host, ya que podemos modificar
ciertas directivas de php para cada uno de los dominios. Si queris una gua de las
directivas del fichero php.ini os podis dirigir a sta pgina.

9. RewriteRules
RewriteRule
regla_de_apache
Mediante esta directiva podremos convertir pginas dinmicas en estticas. En
este artculo no vamos a detallar el funcionamiento de las RewritesRules, sin
embargo intentaremos dar una idea de stas.
La mayora de las veces implementamos pginas web en lenguajes dinmicos,
estos nos permiten pasar una serie de variables a travs de la url, como sera el
caso de este ejemplo:
http://www.dominio.com/directorio1/fichero.php?var1=1&var2=2
Las desventajas que tiene una url de este estilo sn las siguientes:
- Los buscadores slo aceptan cierto nmero de variables pasadas a travs de la
url.
- Para los usuarios es muy complicado guardar o memorizar url's tan complicadas.
- El posicionamiento en los buscadores de una url dinmica es muy complicado.
Por todos estos puntos, las RewriteRules son cada vez ms importantes en el
proceso de diseo de una pgina web.
Cmo funciona una RewriteRule? Muy fcil, cuando apache recibe una url
comprueba que la sintaxis de sta coincida con alguna de las expresiones
regulares definidas en las rewriteRules, en el caso de coincidir aplica la
RewriteRule, la cual aplica algn tipo de proceso, como puede ser una redireccin.
Con un ejemplo se ver mucho ms claro:
Supongamos que queremos redireccionar las pginas que empiezan por "patata"
a un fichero especfico. Lo que haramos sera hacer una RewriteRule con una

expresin regular que identificara estas pginas, y que una vez las hubiera
identificado las reenviara al fichero que le especificamos.
La
regla
quedara
de
la
siguiente
RewriteRule ^/patata_(.*)/? /directorio2/fichero2.php/$1 [L]

forma:

Para poder utilizar RewriteRules debemos tener en cuenta dos puntos. Primero
debemos cargar el mdulo mod_rewrite.so, tal como hemos especificado en
pginas anteriores, y segungo introducir la directiva RewriteEngine On en el
virtualhost.
10. Plataforma LAMP
Una plataforma LAMP es un conjunto de herramientas opensource que trabajando
juntas nos permiten disponer de un servidor web. Las herramientas que aglutina el
trmino LAMP sn Linux, Apache, MySQL y PHP, Perl, o Python , 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 lenguaje de programacin.
Las plataformas LAMP estn siendo muy bien aceptadas entre los proveedores de
servicios web.
Como
ventajas
a
destacar:
Est
compuesta
de
software
con
licencia
gratuita.
- El cdigo de todos sus componentes est disponible, con lo cual se pueden
hacer las modificaciones que se crean oportunas.
11. Referencias
http://www.apache.org/
-Pgina
oficial
de
apache.
http://www.augcyl.org/glol/apache2.html -- gua muy completa sobre
todos
los
parmetros
del
fichero
de
configuracin
de
apache.
http://www.programacionphp.net

También podría gustarte