×
Servidor Apache

Servidor Apache


Los servidores web son uno de los principales pilares de Internet tal como lo conocemos hoy, son mediante ellos que despachan todas las páginas web y  material multimedia que vemos dia a dia, también forman parte de la infraestructura de las aplicaciones móviles y servicios cloud.

Cuando en un navegador escribimos una dirección web nuestro navegador genera una petición HTTP a un servidor remoto que mediante un servicio llamado servidor web responde a esa petición con la página web que pretendemos visualizar, para entender mejor este complejo proceso puedes leer sobre cómo funciona un servidor web, donde lo explicamos con lujo de detalles.

¿Qué es el servidor Apache?

Existen varios tipos de servidores web en el mercado y entre ellos está Apache, uno de los servidores más antiguos y si bien en los últimos años han surgido alternativas más modernas y eficientes que han ganado terreno al dia de hoy Apache sigue uno servidor de referencia.

El servidor Apache nació a mediados de los años noventas gracias a la Apache Software Foundation, y es sus mejores años alcanzo una cuota de mercado del 70% de las web, siendo el primer servidor que alojo más de 100 millones de sitios web.

En un comienzo eran solo un grupo de parches para el servidor web NCSA HTTPd al que posteriormente sustituyó por completo al reescribir todo el código original del que ya no queda prácticamente nada dentro del código de Apache.

En definitiva, Apache es un software de servidor HTTP que permite servir contenido de las demandas que vienen desde los clientes web (navegadores).

 

➡️ Mira nuestros planes de Alojamiento Web Profesional con Apache
Servidor Apache HTTP instalado, rápido y seguro para tus apps.

Características

Es un servidor web con soporte para HTTP 1.1 y posteriormente añadir soporte para HTTP2 según la norma RFC 7540 y fue uno de los primeros servidores en soportar VirtualHost (llamado también como sitio virtual) tanto para dominios como para IP respetando la normal norma RFC 2616, lo que permite alojar varios dominios en un mismo servidor con una misma IP, algo que hoy nos parece básico pero que en los noventas supuso una revolución.

Entre las principales características de Apache, se encuentran las siguientes:

  • Es gratuito y de fuente abierta.
  • Instalación y configuración sencilla
  • Altamente extensible y adaptable mediante módulos
  • Funciones incorporadas para autentificación y validación de users.
  • Soporte para lenguajes como Perl, PHP y Python.

Arquitectura del servidor HTTP

El servidor es de una arquitectura modular que está formado por un Core que soporta las funciones básicas comunes y luego una serie de módulos propios y de terceros que extienden su funcionalidades que se pueden activar o desactivar en una instalación según se requiera.

Entre los más conocidos podemos encontrar auth_basic y mod_rewrite que son los que un programador utiliza más sin embargo la lista es mucho más extensa, la lista completa de módulos se puede ver en índice de módulos disponible en la documentación de Apache.

Entre los módulos más importantes podemos encontrar los módulos MPM que definen la arquitectura interna y cómo se distribuye el trabajo puede variar según el módulo de multiprocesamiento que se utilice entre los que podemos elegir:

  • Multiprocesamiento Prefork (mpm-prefork).
  • Multiprocesamiento Worker (mpm-worker).
  • Multiprocesamiento Event (mpm-event).
  • Multiprocesamiento ITK (mpm-itk).

Cuando se habla de multiprocesamiento podemos referirnos simplemente como MPM, estos módulos podemos tener varios aunque solo puede estar uno funcionando al mismo tiempo, estos módulos son los que se encargan de procesar las requests HTTP, administrar los procesos y los diferentes hilos de ejecución del servicio.

La elección del módulo es una decisión crucial ya que determinara que tan bien el buen funcionamiento o no del servidor dependiendo del uso que se le quiera dar al servidor.

mpm-prefork

El módulo usado por defecto para procesamiento es mpm-prefork que abre diferentes procesos para organizar el trabajo, se considera el más seguro ya que existen ciertas configuraciones y módulos que no son seguros de usar con procesamiento por hilos por lo que es más seguro usarlo con mpm-prefork que en lugar de abrir hilos abre procesos independientes.

Si bien se gana seguridad también es el que más recursos consume ya que los procesos independientes consumen mucho más CPU y memoria RAM que los hilos.

mpm-worker

Este modulo presenta un mejor de rendimiento con respecto a mpm-prefork y lo que hace es abrir varios procesos tal como prefork y cada uno de estos a su vez abren diferentes hilos para atender las demandas.

Fundamentalmente tiene dos desventajas, la primera es que tiene un manejo de errores mas pobre que prefork y ante una falla de un hilo puede perder peticiones y la segunda es que no todos los módulos disponibles son seguros de usar en este modo.

Por ejemplo la maner mas sencilla de hacer un setup de PHP en Apache es mediante mod_php sin embargo este módulo no puede ser usado con Worker por lo que en su lugar se debe reemplazar por ejemplo de PHP-FPM que a su vez nos suma una mejora en el uso de recursos, tanto de memoria como de CPU

mpm-event

Es bastante similar a mpm-worker ya que está basado en el para tomar lo bueno y mejorar algo en lo que Worker no es eficiente, event se enfoca en una mejora de las peticiones keep-alive en el que Worker no es tan bueno.

Normalmente una conexión se cerrará sino tiene más información, para volver a transmitir se tendría que negociar una nueva conexión, esto implica una comunicación de ida y vuelta para establecer ciertos parámetros y apertura en el servicio web de nuevos hilos de ejecución y sus respectivas asignaciones de recursos para atender dicha petición.

Una vez que se establece la comunicación es mucho más eficiente mantener el canal abierto, la forma en que se hace es mediante peticiones Keep-Alive son las que facilitan mantener una conexión abierta hasta que el cliente o el servidor decida cerrarlo.

Estas peticiones no son más que mensajes sin contenido de tamaño insignificante cuyo única función mantener con vida la comunicación para no tener que volver al proceso de negociación tanto a nivel de protocolos de red como los procesos internos que el propio servidor ejecutar para responder a una petición.

Por ejemplo como puede ser abrir un nuevo hilo de ejecución para atender dicha petición, mientras la conexión siga abierta continuará respondiendo el mismo hilo, si la conexión se cerrará la próxima solicitud abrirá un hilo nuevo que generaría tiempo de proceso adicional.

Es en ese sentido es qué Event supera a Worker ya por el resto comparten las ventajas y desventajas ya que Event está basado en Worker únicamente con la mejora de estas requests.

mpm-itk

Este es el modulo mas reciente y al igual que Prefork trabaja con procesos hijos en lugar de hilos, la principal innovación de este módulo es que permite asignar a cada VirtualHost (cada dominio alojado) un usuario para generar aislamiento y seguridad.

Esta forma de separar los sitios con diferentes usuarios permite que cada sitio tenga sus propios permisos de seguridad y que los procesos de los usuarios no puedan interactuar entre si obteniendo privacidad y seguridad de los datos.

Lo mismo puede obtenerse PHP-FPM donde cada sitio puede correr con su respectivo usuario sin embargo la configuración de cada uno es más engorrosa e implica un mayor uso de memoria al existir un proceso PHP-FPM por cada sitio.

Ventajas de Apache

¿Qué ventajas tiene el servidor Apache hoy en día? Veamos cuáles son sus grandes beneficios y pros a la hora de elegirlo:

  • Soporte: es uno de los servidores más usados desde hace más de dos décadas por lo que detrás existe una comunidad muy grande acompañado una extensa documentación.
  • Multiplataforma: funciona tanto en Microsoft Windows, Unix/Linux y Mac por lo cual es un excelente servicio tanto para servidor como para un entorno de desarrollo en cualquier escritorio.
  • Funcionalidades: contiene una gran cantidad de módulos tanto oficiales como de terceros que permiten ampliar las funcionalidades del servidor.
  • Sencillez: es uno de los servidores más sencillos de instalar y configurar, sobre todo en distribuciones Linux donde forma parte de los repositorios de cada distribución y en el caso de Windows se lo puede encontrar empaquetado junto con el servidor MySQL y PHP en un solo instalador que facilita enormemente la instalación.
  • Seguridad: Apache integra funcionalidades para brindar seguridad al software gracias a los módulos de Autorización y Autenticación y  funciones de Control de Acceso , además de un soporte para cifrado por certificados SSL/TLS.

Desventajas de Apache

La única desventaja notable es el pobre rendimiento frente a otras alternativas existentes en el mercado que son más veloces y con la capacidad de manejar mucho más tráfico con los mismos recursos.

Referido a esto puedes ver una comparativa que realizamos hace algún tiempo: Apache vs Nginx vs LiteSpeed donde Apache se vio superado tanto por Nginx como por LiteSpeed

Instalación del servidor Apache en Linux

Instalar Apache en Ubuntu o Debian

La instalación en Ubuntu es sumamente sencilla, basta con hacer setup del paquete apache2:

sudo apt install apache2

Si tenemos el firewall ufw activado podemos hacer lo siguiente:

sudo ufw app list
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Como vemos tenemos Apache Full entre las opciones ejecutamos:

sudo ufw app info "Apache Full"

Luego opcionalmente podemos hacer la instalación de PHP y MySQL, lo hacemos de la siguiente manera:

sudo apt install php libapache2-mod-php php-mysql mysql-server

Nos preguntará por la zona horaria, escogemos la zona horaria que corresponda con nuestra ubicación y por ultimo ejecutamos lo siguiente para configurar MySQL

mysql_secure_installation

Instalar Apache en CentOS/RHEL

En CentOS es bastante similar que en Ubuntu solo que aquí el paquete en lugar de llamarse apache2 se llama httpd y lo instalamos siguiendo estos pasos:

yum install httpd
systemctl start httpd.service
systemctl enable httpd.service

Opcionalmente podemos optar por hacer la instalación de PHP y lo hacemos así:

yum install php php-opcache

Reiniciamos el servicio para que tome los cambios:

systemctl restart httpd.service

Si tenemos el firewall habilitado ejecutamos:

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Por último instalamos MariaDB/MySQL:

yum install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service

Luego, para finalizar la configuración de MariaDB ejecutamos:

mysql_secure_installation

Una vez está configurado e instalado el software, puedes acceder a él a través del puerto 80 en https://127.0.0.1:80/ o bien https://127.0.0.1:80/, y ya estaría todo listo para que puedas visualizar tu proyecto de sites o webs que tengas desarrolladas. En la web puedes encontrar más de una guía sobre la configuración, directivas populares, archivo de conf, estructura de directorio. o bien el uso de htaccess.

Instalar servidor Apache en Windows

En Windows 10 tenemos la posibilidad de hacer un setup Bash de Linux con la capacidad instalar paquetes de Linux sin embargo si tenemos alguna otra versión anterior de Windows podemos optar por los conocidos clásicos instaladores XAMPP o WAMPServer.

Con cualquiera de las dos opciones nos proporciona un instalador típico de Windows que instalará todo en uno de forma muy sencilla Apache, PHP y MySQL todo en la misma instalación, basta bajar y ejecutar el instalador de alguna de las dos opciones y luego será seguir las diferentes pantallas de instalación una a una para completar la instalación de cada archivo.

Conclusión

El servidor Apache es uno de los servidores más usados que existen, y de los más flexibles a la hora de optimizar para sacar el máximo provecho. Es sin dudas una gran opción para un entornos de desarrollo y aunque tiene algunas desventajas en cuanto a rendimiento, con la configuración adecuada es una gran alternativa para servidores en producción también.

Como vemos es un servidor extremadamente sencillo de instalar independiente del sistema operativo, luego la configuración está basada en la edición de archivos de texto, disponemos de una gran cantidad de módulos para expandir las funciones y personalizar la instalación.

Y para este paso, seguramente ya lo tengas todo listo para crear un directorio, subir cualquier archivo o comenzar a usar WordPress, uno de los CMS más populares.

¿Te gustó el artículo? Compártelo:

Escrito por Álvaro De León

Desarrollador web / SysAdmin con amplia experiencia en optimización de aplicaciones, automatización, seguridad de sistemas, así como tweaking de rendimiento. Siempre disponible para ayudarte desde nuestro Chat online y el sistema de Tickets. Tiene estudios de Tecnólogo en Informática por la Facultad de Ingeniería de UDELAR – Centro Universitario de la Región Este. Conoce más sobre él desde su perfil de LinkedIn o visitando su web.

    Recibe en tu correo electrónico toda la información sobre hosting, desarrollo web y dominios

    Términos y Condiciones de Servicio

    Infranetworking Internacional - Copyright 2002-2022
    Todos los derechos reservados.