¿Qué hace un Servidor Web como Apache?. Configuración
Apache es el Servidor Web más utilizado, líder con el mayor número de instalaciones a nivel mundial muy por delante de otras soluciones como el IIS (Internet Information Server) de Microsoft. Apache es un proyecto de código abierto y uso gratuito, multiplataforma (hay versiones para todos los sistemas operativos más importantes), muy robusto y que destaca por su seguridad y rendimiento.
Ahora bien,se puede estar preguntando alguien, ¿qué es un Servidor Web y qué hace exactamente?
Bueno, lo primero que debemos aclarar es que estamos hablando de software, aunque el equipo donde se ejecuta recibe la misma denominación. Su misión es crítica, ya que es el encargado de aceptar las peticiones de páginas (o recursos en general) que provienen de los visitantes que acceden a nuestro sitio web y gestionar su entrega o denegación, de acuerdo a las políticas de seguridad establecidas. Esto, que puede parecer simple, implica muchas facetas y funcionalidades que debe cubrir, como pueden ser:
- Atender de manera eficiente, ya que puede recibir un gran número de peticiones HTTP, incluyendo una ejecución multitarea ya que pueden darse peticiones simultáneas. Cualquier petición compleja (por ejemplo con acceso a base de datos) dejaría colapsado el servicio.
- Restricciones de acceso a los ficheros que no se quieran ‘exponer’, gestión de autentificaciones de usuarios o filtrado de peticiones según el origen de éstas.
- Manejar los errores por páginas no encontradas, informando al visitante y/o redirigiendo a páginas predeterminadas.
- Gestión de la información a transmitir en función de su formato e informar adecuadamente al navegador que está solicitando dicho recurso.
- Gestión de logs, es decir almacenar las peticiones recibidas, errores que se han producido y en general toda aquella información que puede ser registrada y analizada posteriormente para obtener las estadísticas de acceso al sitio web.
Además, Apache nos permite configurar un Hosting Virtual basado en IPs o en nombres, es decir, tener varios sitios web en un mismo equipo (por ejemplo: nombreweb1.com, nombreweb2.com,….) o como indicábamos, establecer distintos niveles de control de acceso a la información incluyendo el soporte a cifrado SSL utilizando protocolo seguro HTTPS.
A continuación, para los que quieran tener una visión más en detalle de cómo se trabaja con Apache, reproducimos la explicación del fichero de configuración de Apache 2 de nuestro curso Servidor Web Apache, elaborado por Franciso Illeras. Este apartado, junto a otros dos, los podéis descargar en el extracto del curso que hemos publicado en nuestra sección de Tutoriales, para que podáis tener una mejor idea del mismo.
Archivo “apache2.conf”
(apartado del Tema «Configuración y ajuste del servidor Apache»)
Sin lugar a dudas, «apache2.conf» es el fichero más importante de Apache, puesto que en él se definirá el comportamiento general del servidor de páginas web y además, es el encargado de acceder a los distintos módulos que amplían la funcionalidad del servidor.
Como ya hemos comentado, el archivo “apache2.conf” se encuentra en el directorio “/etc/apache2”, y al tratarse de un fichero de texto podrá editarlo fácilmente (por ejemplo, con nuestro editor preferido “joe”).
Dentro del archivo de configuración encontraremos dos partes bien diferenciadas:
1) Variables globales del servidor: variables que definen el funcionamiento general del servidor. Las más importantes son (siempre podrá completar la información que le suministro con la que posee en la propia web de Apache, el lugar donde encontrará la documentación es “http://httpd.apache.org/docs/2.0/es/”):
En este momento solo tiene que preocuparte que el nombre de nuestro servidor esté bien indicado mediante la variable “ServerName” para que cualquier redirección o referencia existente en nuestros documentos HTML funcionen bien. Y el resto de las variables no tendrán que tocarse puesto que por defecto vienen con los valores adecuados, salvo la parte correspondiente a “AccessFileName”. Lo explicaremos de una manera más detallada.A la vista de la tabla anterior parecería que Apache es un servidor que no es muy complejo de configurar, porque no posee muchas opciones. Es cierto en parte, aunque éstas son solo una pequeña parte de las opciones que posee Apache, ya que mayoría de las variables de configuración se encuentra repartida entre otros pequeños ficheros de configuración (módulos) guardados en “mods-available” (pero esto lo veremos más adelante).
.htaccess es un archivo de texto oculto (por esa razón comienza por “.”) que permite personalizar el funcionamiento del servidor Apache un directorio concreto sin necesidad de modificar el fichero de configuración principal “apache2.conf”.
Cuando un cliente web solicita un archivo al servidor, este busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo .htaccess y tiene en cuenta las directivas contenidas en el mismo antes de proceder con la petición.
Los usos principales del .htaccess son:
- Impedir el listado de los archivos de un directorio.
- Redireccionar el tráfico Web.
- Personalizar las páginas de error.
- Restringir el acceso a determinados archivos.
- Impedir el acceso a determinadas IPs o rangos de IP.
En el apartado de comunicaciones seguras de este mismo tema lo veremos con más detenimiento.
2) Ampliación de funcionalidades: relacionado con las llamadas a otros módulos y archivos de configuración. Todas las directivas relacionadas con este punto vendrán precedidas por la palabra “Include».
Si aún no te has hecho una idea mental de cómo esta conformado el servidor Apache, la siguiente imagen te ayudará.
Ilustración 1: Estructura del servidor Apache2.
Hasta ahora has aprendido que el archivo de configuración principal de Apache 2 se llama “apache2.conf” y se encuentra en el directorio “/etc/apache2”. Ya sabes como indicar el nombre del servidor, que el usuario y grupo con el que se ejecuta el servidor Apache se llama www-data, y que se cargarán todos los módulos que se encuentren almacenados en los directorios de configuración “mods-enabled” y “sites-enabled”.
Esta entrada tiene 10 comentarios
Los comentarios están cerrados.
Excelente aporte. Muchas gracias por la informacion!.
Gracias, nos alegra que os haya interesado
Hola Estoy interesado en el Curso, quisiera saber, el curso se dicta a través de videos explicativos? o como? si fuera con videos, tienen alguno para que pueda ver antes de comprar el curso?
Gracias
Saludos
Roberto
Hola Roberto,
el contenido de este curso está en formato web, dentro de la nuestra plataforma de teleformación, y puedes bajarlo también en formato PDF para estudiarlo offline y mantener esa documentación una vez acabado el curso. Tienes además tests, ejercicios autocorregibles y ejercicios evaluables que envías por la plataforma y son revisados por el Tutor, aparte por supuesto de poder consultarle a través de foros cualquier duda que tengas con la materia.
Esta información de las características del curso la tienes en: https://www.digitallearning.es/curso-apache-servidor-web.html, donde puedes ver algún extracto del contenido.
Saludos
En la red donde puedo encontrar un manual que me oriente o me enseñe la programa de Apache Server en este momento estoy bajo Tesis para titularme y requiero aprender esta programación para ralizar mi proyecto, agradeceré quien me pueda apoyar, saludos.
Hola Salvador,
nosotros podemos ofrecerte lógicamente nuestro curso de Servidor Apache (https://www.digitallearning.es/curso-apache-servidor-web.html) porque además de contenidos cuentas con la ayuda de un tutor especializado.
Si quieres estudiarlo por tu cuenta, te podemos indicar la documentación oficial de Apache: http://httpd.apache.org/docs/
Saludos
COMO MANEJA LOS SOCKETS ESTE SERVIDOR
Hola Andrés, te agradecemos tu pregunta, aunque este tipo de cuestiones es difícil contestarlas en el blog, ya que es cada Tutor, cómo especialista en la materia, es el que las atiende dentro del curso correspondiente. En cualquier caso, hemos pedido a Francisco Illeras, el tutor del curso de Servidor Apache, si podía darnos una orientación y ésta ha sido su respuesta:
«La pregunta necesitaría concretarse algo más, porque así queda algo ambigua. Intentaré responder de forma más o menos general.
Quien realmente maneja los sockets es el propio kernel de Linux, solo que Apache, como cualquier otra aplicación, puede acceder a la gestión de los mismos.
Apache, en sus archivos de configuración, cuenta con parámetros estándar para la gestión de hebras (procesos «hijo»), también permite identificar la forma en la que escucha en distintos puertos para diferentes dominios, pero quizás la parte más desconocida del servidor web es aquella que hace uso de «select» para determinar el estado de las conexiones. Puedes encontrar más información acerca del uso de sockets de Apache en el documento: http://httpd.apache.org/docs/2.4/misc/perf-tuning.html
De todas formas esta es la forma menos habitual de trabajar con sockets en la actualidad, ya que se opta por la utilización del protocolo «Websocket» que permita gestionar y asegurar la comunicación entre el cliente y el servidor (más información sobre este protocolo en: http://tools.ietf.org/html/rfc6455 ), gracias a su implementación en aplicaciones o extensiones del servidor web de Apache tales como «Pywebsocket» (http://code.google.com/p/pywebsocket).»
Esperamos que esta respuesta te haya servido de ayuda y recordaros en general, que los alumnos de nuestros cursos, cuentan con la ayuda personalizada de un Tutor, con amplia experiencia en los contenidos que allí se imparten.
Gracias por compartir esta muy buena información.
Nos alegra Jesús que te haya gustado