Advertisement
  1. Code
  2. Web Development

Una Introduccion a Apache

Scroll to top
Read Time: 13 min

Spanish (Español) translation by RRGG (you can also view the original English article)

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:

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:

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:


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:

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.


Conclusion

... con mas de la mitad de los sitios en la web ejecutandose.

Apache ha sido el servidor web más popular en Internet desde 1996, con más de la mitad de los sitios en la web que se ejecutan en él. Jugó un papel clave en dar forma y hacer que la World Wide Web sea lo que es hoy. Las razones detrás de su éxito son obvias y la forma en que se ven las cosas, probablemente permanecerá a la cabeza al menos durante bastante tiempo. Fue pensado para ser una sesión introductoria de este poderoso software y espero que haya sido útil para comprender qué es esta gran herramienta y cómo funciona en general.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.