Está en la página 1de 10

Si Apache siempre te ha parecido una caja negra, ¡es hora de que

aprendas lo que está sucediendo tras bambalinas!

Apache es el servidor web más popular disponible.


El trabajo de un servidor web es básicamente aceptar solicitudes de
clientes y enviar respuestas a esas solicitudes. Un servidor web obtiene
una URL, la traduce a un nombre de archivo (para solicitudes estáticas),
y envía ese archivo a través de Internet desde el disco local, o lo traduce
a un nombre de programa (para solicitudes dinámicas), lo ejecuta y luego
lo ejecuta. envía la salida de ese programa nuevamente a través de
Internet a la parte solicitante. Si por alguna razón, el servidor web no
pudo procesar y completar la solicitud, en su lugar devuelve un mensaje
de error. La palabra, servidor web, puede referirse a la máquina
(computadora / hardware), o al software que recibe solicitudes y envía
respuestas.

Apache es el servidor web más popular (después del cual viene el IIS de
Microsoft) disponible. Las razones detrás de su popularidad, para
nombrar algunos, son:

1. Es gratis para descargar e instalar.


2. Es de código abierto: el código fuente es visible para todos y cada
uno, lo que básicamente permite a cualquier persona (que pueda
asumir el desafío) ajustar el código, optimizarlo y corregir errores y
agujeros de seguridad. Las personas pueden agregar nuevas
caracteristicas y escribir nuevos modulos.
3. Se adapta a todas las necesidades: Apache puede utilizarse para
sitios web pequeños de una o dos páginas, o sitios web de cientos
y miles de páginas, que atienden a millones de visitantes regulares
cada mes. Puede servir tanto para el contenido dinamico como
para el estatico.

¿Qué es apache?
La funcionalidad que no necesitas o quieres puede ser
facilmente eliminada.
El servidor HTTP Apache es un software (o programa) que se ejecuta en
segundo plano bajo un sistema operativo apropiado, que admite tareas
múltiples y proporciona servicios a otras aplicaciones que se conectan a
él, como los navegadores web de los clientes. Primero se desarrolló para
funcionar con sistemas operativos Linux / Unix, pero luego se adaptó
para trabajar con otros sistemas, incluidos Windows y Mac. El binario de
Apache que se ejecuta bajo UNIX se llama HTTPd (abreviatura de
daemon HTTP), y bajo win32 se llama Apache.exe.

Instalar Apache en Linux requiere un poco de conocimientos de


programación (aunque no es demasiado difícil). Instalarlo en una
plataforma Windows es sencillo, ya que puede ejecutarlo a través de una
interfaz gráfica de usuario.

El núcleo original de Apache es bastante básico y contiene un número


limitado de características. Su poder más bien proviene de la
funcionalidad agregada introducida a través de muchos módulos que
están escritos por programadores y se pueden instalar para ampliar las
capacidades del servidor. Para agregar un nuevo módulo, todo lo que
necesita hacer es instalarlo y reiniciar el servidor Apache. La
funcionalidad que no necesita o desea puede eliminarse fácilmente, lo
que en realidad se considera una buena práctica, ya que mantiene al
servidor pequeño y liviano, comienza más rápido, consume menos
recursos del sistema y memoria, y hace que el servidor sea menos
propenso a los agujeros de seguridad. El servidor de Apache también
admite módulos de terceros, algunos de los cuales se han agregado a
Apache 2 como características permanentes. El servidor Apache se
integra muy fácilmente con otras aplicaciones de código abierto, como
PHP y MySQL, lo que lo hace aún más poderoso de lo que ya es.

Un servidor web en su forma más simple es una


computadora con software especial y una conexión a
Internet que le permite conectarse a otros dispositivos.
Cada dispositivo conectado a una red tiene una dirección IP a través de
la cual otros se conectan y se comunican con ella. Esta dirección IP es
algo así como una dirección regular que necesita en la vida real para
llamar o visitar cualquier contacto suyo. Si no tuvieran una dirección, no
sabría cómo llamarlos o comunicarse con ellos. Las direcciones IP tienen
el exacto mismo proposito. Si un dispositivo no tuviera uno, las otras
máquinas en la misma red no sabrían cómo alcanzarlo.

Sin embargo, las otras máquinas en la misma red no sabrán cómo


alcanzarlos. Estos servicios se ofrecen utilizando varios protocolos a
través de diferentes puertos, e incluyen: protocolo de transferencia de
hipertexto (HTTP), generalmente a través del puerto 80, protocolo simple
de transferencia de correo (SMTP), generalmente a través del puerto 25,
servicio de nombre de dominio (DNS) para asignar nombres de dominio a
sus direcciones IP correspondientes, generalmente a través del puerto
53, y el protocolo de transferencia de archivos (FTP) para cargar y
descargar archivos, generalmente a través del puerto 21.

Como Funciona Apache


La función principal de Apache se basa en la comunicación a través de
redes, y utiliza el protocolo TCP / IP (Protocolo de control de
transmisión / Protocolo de Internet que permite que los dispositivos con
direcciones IP dentro de la misma red se comuniquen entre sí).

El protocolo TCP / IP es un conjunto de reglas que


definen cómo los clientes realizan las solicitudes y
cómo responden los servidores, y determinan cómo se
transmiten, entregan, reciben y reconocen los datos.
El servidor Apache está configurado para ejecutarse a través de archivos
de configuración, en los que se agregan directivas para controlar su
comportamiento. En su estado inactivo, Apache escucha las direcciones
IP identificadas en su archivo de configuración (HTTPd.conf). Cada vez
que recibe una solicitud, analiza los encabezados, aplica las reglas
especificadas para ello en el archivo de configuración y toma medidas.

Pero un servidor puede alojar muchos sitios web, no solo uno, aunque,
para el mundo exterior, parecen estar separados entre sí. Para lograr
esto, a cada uno de esos sitios web se les debe asignar un nombre
diferente, incluso si todos se asignan finalmente a la misma máquina.
Esto se logra al usar lo que se conoce como anfitriones virtuales.
Como las direcciones IP son difíciles de recordar, nosotros, como
visitantes de sitios específicos, usualmente escribimos sus respectivos
nombres de dominio en el cuadro de la dirección URL en nuestros
navegadores. El navegador luego se conecta a un servidor DNS, que
traduce los nombres de dominio a sus direcciones IP. El navegador toma
la dirección IP devuelta y se conecta a ella. El navegador también envía
un encabezado de host con la solicitud para que, si el servidor aloja
varios sitios, sabrá a cuál devolver.

Por ejemplo, escribir www.google.com en el campo de dirección de su


navegador puede enviar la siguiente solicitud al servidor en esa dirección
IP:

1 GET / HTTP/1.1
2 Host: www.google.com
La primera linea contiene varias piezas de informacion. Primero, está el
método (en este caso es un GET), el URI, que especifica qué página se
recuperará o qué programa se ejecutará (en este caso es el directorio
raíz indicado por /), y finalmente está el Versión HTTP (que en este caso
es HTTP 1.1).

HTTP es un protocolo sin estado de solicitud /


respuesta.
HTTP es un protocolo sin estado de solicitud / respuesta. Es un conjunto
de reglas que gobiernan la comunicación entre un cliente y el servidor. El
cliente (generalmente, pero no necesariamente un navegador web)
realiza una solicitud, el servidor envía una respuesta y la comunicación
se detiene. El servidor no espera más comunicación, como es el caso
con otros protocolos que permanecen en estado de espera una vez que
finaliza la solicitud.

Si la solicitud es exitosa, el servidor devuelve un código de estado 200 (lo


que significa que se encuentra la página), encabezados de respuesta,
junto con los datos solicitados. El encabezado de respuesta de un
servidor Apache podría tener un aspecto similar al siguiente:

01 HTTP/1.1 200 OK
Date: Sun, 10 Jun 2012 19:19:21 GMT
02
Server: Apache
03 Expires: Wed, 11 Jan 1984 05:00:00 GMT
04
05 Cache-Control: no-cache, must-revalidate, max-age=0
06 Pragma: no-cache
07 Last-Modified: Sun, 10 Jun 2012 19:19:21 GMT
08 Vary: Accept-Encoding,User-Agent
Content-Type: text/html; charset=UTF-8
09 Content-Length: 7560
10
La primera línea en el encabezado de respuesta es la línea de estado.
Contiene la version HTTP y el codigo de estado. La fecha sigue a
continuación, y luego cierta información sobre el servidor host y los datos
recuperados. El encabezado  Content-Type  le permite al cliente saber el
tipo de datos recuperados para que sepa cómo manejarlos.  Content-
Length  permite al cliente saber el tamaño del cuerpo de respuesta. Si la
solicitud no fue lanzada, el cliente obtendría un código de error y un
mensaje, como el siguiente encabezado de respuesta en caso de que no
se encuentre un error en la página:

1 HTTP/1.1 404 Not Found

Protocolo TCP/IP
TCP/IP es realmente dos protocolos construidos uno
encima de otro.
TCP / IP es en realidad dos protocolos construidos uno encima del otro.
El protocolo IP es responsable de obtener los datos transferidos de un
punto a otro. Toma los datos que se transfieren entre los dos puntos, los
divide en paquetes más pequeños, adjunta las direcciones de origen y
destino a cada paquete y transfiere los datos.

TCP maneja la parte que incluye el establecimiento de la conexión entre


las dos partes, asegurándose de que los datos llegan a su destino,
cuidando cualquier pérdida de datos y gestionando la recuperación de
datos.

Una vez que se recibe un mensaje, la parte de destino envía un mensaje


de confirmación (ACK) al host que lo envía, si todo va bien, notificándole
la llegada de los datos. Si algo sale mal, como la ocurrencia de una
situación de pérdida de datos, el destino envía un mensaje No
reconocido (NAK) en su lugar, notificando al host emisor del problema e
informándole de la necesidad de reenviar el paquete de datos.

Como se mencionó anteriormente, Apache ofrece muchos servicios, a los


cuales los clientes pueden querer conectarse, usar o beneficiarse. TCP
administra cada servicio para que se acceda a él a través de un puerto
particular para diferenciar los distintos servicios. De esta manera,
garantiza que cualquier interfaz (o host) dada pueda ofrecer múltiples
servicios. Entonces, cuando un cliente se conecta a un host, pasa el
número de puerto junto con la dirección IP. Los navegadores utilizan el
protocolo HTTP que, de forma predeterminada, utiliza el puerto 80, por lo
que no es necesario realizar más especificaciones.

La siguiente imagen es una instantánea de mi software FTP (WinScp).


Como puede ver, para FTP mi servidor no solo necesito proporcionar la
dirección IP (o, alternativamente, escribir el nombre de dominio), sino que
también debo especificar el número de puerto a través del cual mi
servidor proporciona el servicio. En el caso de FTP, el número de puerto
es 21. En el caso de SFTP (FTP seguro), el número de puerto es 22.
En UNIX, se puede encontrar una lista de los servicios ofrecidos junto
con sus respectivos números de puerto en el archivo / etc / services. El
siguiente comando mostrará el contenido del archivo:

1 more /etc/services
A continuación se muestra una captura de pantalla que muestra una
parte del archivo. Como puede ver, los servicios se enumeran en la
primera columna, seguido del número de puerto al que se accede y el
nombre del protocolo que utiliza el servicio.
En Windows, el archivo se llama Servicios y se puede encontrar en C: \
WINNT \ system32 \ drivers \ etc \

Inetd
Para preservar los recursos del sistema, UNIX maneja
muchos de sus servicios a través del demonio de
Internet.
Para preservar los recursos del sistema, UNIX maneja muchos de sus
servicios a través del demonio de Internet (inetd), a diferencia de un
demonio que se ejecuta constantemente. El inetd es un super servidor
que escucha los diversos puertos y maneja las solicitudes de conexión a
medida que las recibe al iniciar una nueva copia del demonio apropiado
(programa). La nueva copia del programa luego lo toma desde allí y
funciona con el cliente, y el inted vuelve a escuchar los puertos del
servidor a la espera de que se manejen las nuevas solicitudes de los
clientes. Una vez que se procesa la solicitud y se termina la
comunicación, el daemon se cierra.

Estructura General
Como se mencionó anteriormente, Apache se puede instalar en una
variedad de sistemas operativos. Independientemente de la plataforma
utilizada, un sitio web alojado normalmente tendrá cuatro directorios
principales: htdocs, conf, logs, cgi-bin.

htdocs es el directorio de documentos del servidor web Apache


predeterminado, lo que significa que es el directorio público cuyos
contenidos generalmente están disponibles para los clientes que se
conectan a través de la web. Contiene todas las páginas estáticas y el
contenido dinámico para ser servido una vez que se recibe una solicitud
HTTP para ellos. Dado que los archivos y subdirectorios de htdocs están
disponibles para el público, el manejo correcto de los permisos de los
archivos es de gran importancia para no comprometer la seguridad del
servidor.

conf es el directorio donde se encuentran todos los archivos de


configuración del servidor. Los archivos de configuración son
básicamente archivos de texto simple donde se agregan directivas para
controlar el comportamiento y la funcionalidad del servidor web.
Generalmente, cada directiva se coloca en una línea separada, y la tecla
de hash (#) indica un comentario, por lo que la línea que se sigue se
ignora.

logs es el directorio donde se guardan los registros del servidor, e


incluye los registros de acceso de Apache y los registros de errores. El
Servidor HTTP de Apache proporciona una variedad de mecanismos
diferentes para registrar todo lo que sucede en él, desde la solicitud
inicial, a través del proceso de mapeo de URL, hasta la resolución final
de la conexión, incluyendo cualquier error que pueda haber ocurrido en el
proceso. Además de esto, los módulos de terceros pueden proporcionar
capacidades de registro o inyectar entradas en los archivos de registro
existentes, y las aplicaciones como los scripts PHP u otros controladores
pueden enviar mensajes al registro de errores del servidor.

cgi-bin es el directorio donde se guardan los scripts CGI. La CGI


(Interfaz de puerta de enlace común) define una forma en que un
servidor web puede interactuar con programas externos generadores de
contenido, que a menudo se denominan programas CGI o scripts CGI.
Estos son programas o scripts de shell que están escritos para ser
ejecutados por Apache en nombre de sus clientes.

Es importante tener en cuenta que los nombres de directorio y archivo


discutidos anteriormente (así como las ubicaciones) pueden diferir de un
servidor a otro dependiendo de la versión de Apache instalada y el
sistema operativo bajo el que se ejecuta. Los roles se mantienen iguales.

También podría gustarte