Redes Posix 2
Servidor Web Apache
¿Qué es Apache?
Historia sobre Apache
El servidor web Apache comenzó como una bifurcación (un flujo de desarrollo
independiente) del servidor web httpd NCSA creado por Rob McCool en el Centro Nacional
de Aplicaciones de Supercomputación (NCSA). Después de la salida de McCool de NCSA en
1994, se formó una comunidad en línea de individuos llamada Apache Group para
respaldar y mejorar su software a través de la colaboración por correo electrónico. Los
miembros fundadores de Apache Group incluyeron a Brian Behlendorf, Roy Fielding, Rob
Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert Thau y Andrew Wilson.
A menos de un año de la formación del Grupo Apache, el servidor Apache superó a NCSA
httpd como el servidor número uno en Internet, y lo sigue siendo hasta el día de hoy. En
marzo de 1999, los miembros del Apache Group formaron The Apache Software
Foundation para proporcionar apoyo organizativo, legal y financiero para el servidor HTTP
Apache.
¿Qué es un servidor web?
Un servidor web es un programa de tipo informático que se encarga de procesar una
aplicación del lado del servidor, cada una de las cuales puede acceder a archivos
almacenados en un servidor físico y usarlos para diferentes propósitos, mediante
conexiones bidireccionales o unidireccionales con la máquina del cliente, tras lo cual se
genera una respuesta del lado del cliente.
El trabajo de un servidor web es servir sitios web en Internet. Para lograr ese objetivo,
actúa como un intermediario entre el servidor y las máquinas de los clientes. Extrae el
contenido del servidor en cada solicitud de usuario y lo envía a la web.
El mayor desafío de un servidor web es servir a muchos usuarios diferentes de la web al
mismo tiempo, cada uno de los cuales solicita diferentes páginas. Los servidores web
procesan archivos escritos en diferentes lenguajes de programación como PHP, Python,
Java y otros.
Los convierten en archivos HTML estáticos y le entregan estos archivos al navegador de los
usuarios de la web. Cuando escuches la palabra servidor web, piensa que es la
herramienta responsable de la comunicación adecuada entre el servidor y el cliente.
Funcionamiento del Servidor web Apache
Aunque llamamos a Apache un servidor web, no es un servidor físico, sino un software que
se ejecuta en un servidor. Su trabajo es establecer una conexión entre un servidor y los
navegadores de los visitantes del sitio web (Firefox, Google Chrome, Safari, etc.) mientras
envían archivos entre ellos (estructura cliente-servidor). Apache es un software
multiplataforma, por lo cual funciona tanto en servidores Unix como en Windows.
Cuando un visitante quiere cargar una página de tu sitio web, por ejemplo la página de
inicio o tu página «Acerca de nosotros», su navegador le envía una solicitud a tu servidor y
Apache le devuelve una respuesta con todos los archivos solicitados (texto, imágenes, etc. )
El servidor y el cliente se comunican a través del protocolo HTTP y Apache es responsable
de garantizar una comunicación fluida y segura entre las dos máquinas.
Apache es altamente personalizable, ya que tiene una estructura basada en módulos. Los
módulos le permiten a los administradores del servidor activar y desactivar funcionalidades
adicionales. Apache tiene módulos de seguridad, almacenamiento en caché, reescritura de
2
URL, autenticación de contraseña y más. También puedes ajustar tus propias
configuraciones del servidor a través de un archivo llamado .htaccess.
Apache vs otros servidores web
Además de Apache, hay muchos otros servidores web. Cada aplicación de servidor web ha
sido creada para un propósito diferente. Si bien Apache es el más utilizado, tiene bastantes
alternativas y rivales.
Apache vs NGINX
Nginx, pronunciado como Engine-X, es una aplicación de servidor web más reciente
lanzada por primera vez en 2004. A la fecha, ha ganado una gran popularidad entre los
propietarios de sitios web. Nginx fue creado para resolver el denominado problema c10k,
lo que significa que un servidor web que utiliza subprocesos para manejar las solicitudes
de los usuarios no puede administrar más de 10,000 conexiones al mismo tiempo.
Apache vs Tomcat
Tomcat es un servidor web desarrollado también por la Apache Software Foundation, por
lo que su nombre oficial es Apache Tomcat. También es un servidor HTTP, sin embargo,
está hecho para aplicaciones Java en lugar de sitios web estáticos. Tomcat puede ejecutar
varias especificaciones diferentes de Java, como Java Servlet, JavaServer Pages (JSP), Java EL
y WebSocket.
Pros y contras de Apache
Un servidor web Apache puede ser una excelente opción para ejecutar tu sitio web en una
plataforma estable y versátil. Sin embargo, también presenta algunas desventajas a las que
debes prestarle atención.
3
Pros:
De código abierto y gratuito, incluso para uso comercial.
Software confiable y estable.
Parches de seguridad regulares y actualizados con frecuencia.
Flexible debido a su estructura basada en módulos.
Fácil de configurar para principiantes.
Multiplataforma (funciona tanto en servidores Unix como en Windows).
Viene listo para trabajar con sitios de WordPress.
Enorme comunidad y soporte fácilmente disponible en caso de cualquier problema.
Contras:
Problemas de rendimiento en sitios web con demasiado tráfico.
Demasiadas opciones de configuración pueden generar vulnerabilidades de seguridad.
Conclusión
Apache es uno de los servidores web más populares que te permite ejecutar un sitio web
seguro sin demasiados dolores de cabeza. Es la opción más común de los emprendedores
en solitario y pequeñas empresas que desean tener presencia en la web.
Puedes instalar un sitio web de WordPress en un servidor web Apache sin ninguna
personalización. Además, Apache funciona excelentemente con muchos otros sistemas de
administración de contenido (Joomla, Drupal, etc.), marcos web (Django, Laravel, etc.) y
lenguajes de programación.
4
Versiones de Apache HTTP Server
● Version 2.4 (Current)
● Version 2.2 (Historical)
● Version 2.0 (Historical)
● Version 1.3 (Historical)
● Trunk (Development / Draft)
Instalación en Fedora / CentOS / Red Hat Enterprise Linux
sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
Instalación en Ubuntu / Debian
sudo apt install apache2
sudo service apache2 start
Instalación desde la fuente
Download Download the latest release from [Link]
Extract$ gzip -d [Link]
$ tar xvf [Link]
$ cd httpd-NN
Configure $ ./configure --prefix=PREFIX
Compile $ make
Install $ make install
Customize $ vi PREFIX/conf/[Link]
Test $ PREFIX/bin/apachectl -k start
5
NN debe reemplazarse con el número de versión actual y PREFIX debe reemplazarse con la
ruta del sistema de archivos bajo la cual se debe instalar el servidor. Si no se especifica
PREFIX, el valor predeterminado es /usr /local /apache2.
Descarga
El servidor HTTP Apache se puede descargar desde el sitio de descarga del servidor HTTP
Apache, que enumera varios links. La mayoría de los usuarios de Apache en sistemas tipo
Unix estarán mejor descargando y compilando una versión fuente. El proceso de creación
(descrito a continuación) es sencillo y le permite personalizar su servidor para que se
adapte a sus necesidades. Además, las versiones binarias a menudo no están actualizadas
con las últimas versiones fuente. Si descarga un binario, siga las instrucciones del archivo
[Link] dentro de la distribución.
Después de la descarga, es importante verificar que tiene una versión completa y sin
modificar del servidor HTTP Apache. Esto se puede lograr probando el tarball descargado
con la firma PGP. Los detalles sobre cómo hacer esto están disponibles en la página de
descarga y hay un ejemplo extendido disponible que describe el uso de PGP.
Extracción
Extraer la fuente del tarball del servidor HTTP Apache es una simple cuestión de
descomprimir y luego deshacer:
$ gzip -d [Link]
$ tar xvf [Link]
Esto creará un nuevo directorio bajo el directorio actual que contiene el código fuente para
la distribución. Debería entrar en ese directorio antes de proceder con la compilación del
servidor.
Configurar el árbol de fuentes
6
El siguiente paso es configurar el árbol de fuentes de Apache para su plataforma particular
y requisitos personales. Esto se hace usando el script configure incluido en el directorio raíz
de la distribución. (Los desarrolladores que descarguen una versión inédita del árbol de
fuentes de Apache deberán tener autoconf y libtool instalados y deberán ejecutar
buildconf antes de continuar con los siguientes pasos. Esto no es necesario para las
versiones oficiales).
Para configurar el árbol de origen utilizando todas las opciones predeterminadas,
simplemente escriba ./configure. Para cambiar las opciones predeterminadas, configure
acepta una variedad de variables y opciones de línea de comando.
La opción más importante es la ubicación, prefijo donde se instalará Apache más adelante,
porque Apache debe configurarse para que esta ubicación funcione correctamente. Es
posible un control más preciso de la ubicación de los archivos con opciones de
configuración adicionales.
También en este punto, puede especificar qué características desea incluir en Apache
habilitando y deshabilitando módulos. Apache viene con una amplia gama de módulos
incluidos por defecto. Se compilarán como objetos compartidos (DSO) que se pueden
cargar o descargar en tiempo de ejecución. También puede optar por compilar módulos de
forma estática mediante la opción --enable-module = static.
Los módulos adicionales se habilitan usando la opción --enable-module, dónde módulo es
el nombre del módulo con la cadena mod_ eliminada y con cualquier guión bajo convertido
en un guión. Del mismo modo, puede deshabilitar módulos con la opción --disable-module.
Tenga cuidado al utilizar estas opciones, ya que configure no puede advertirle si el módulo
que especifica no existe; simplemente ignorará la opción.
Además, a veces es necesario proporcionar al script de configuración información adicional
sobre la ubicación de su compilador, bibliotecas o archivos de encabezado. Esto se hace
7
pasando variables de entorno o opciones de línea de comando para configurar. Para
obtener más información, consulte la página del manual de configuración. O invoque
configure usando la opción --help.
Para una breve impresión de las posibilidades que tiene, aquí hay un ejemplo típico que
compila Apache para el árbol de instalación / sw / pkg / apache con un compilador
particular y banderas más los dos módulos adicionales mod_ldap y mod_lua:
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared
Construir
Ahora puede construir las distintas partes que forman el paquete Apache simplemente
ejecutando el comando:
$ make
Tenga paciencia aquí, ya que una configuración básica tarda varios minutos en compilarse
y el tiempo variará ampliamente según su hardware y la cantidad de módulos que haya
habilitado.
Instalar
Ahora es el momento de instalar el paquete con el PREFIX de instalación configurado (ver la
opción --prefix arriba) ejecutando en modo root:
8
$ make install
Personalizar
A continuación, puede personalizar su servidor HTTP Apache editando los archivos de
configuración en PREFIX /conf/.
$ vi PREFIX/conf/[Link]
Echa un vistazo al manual de Apache en PREFIX / docs / manual / o consulte
[Link] para obtener la versión más reciente de este manual y
una referencia completa de las directivas de configuración disponibles.
Test
Ahora puede iniciar su servidor HTTP Apache ejecutando inmediatamente:
$ PREFIX/bin/apachectl -k start
A continuación, debería poder solicitar su primer documento a través de la URL http: //
localhost /. La página web que ve se encuentra debajo de DocumentRoot, que
normalmente será PREFIX /htdocs/. Luego, detenga el servidor nuevamente ejecutando:
$ PREFIX/bin/apachectl -k stop
Actualizando
9
El primer paso en la actualización es leer el anuncio de lanzamiento y el archivo CAMBIOS
en la distribución de origen para encontrar cualquier cambio que pueda afectar su sitio. Al
cambiar entre versiones principales (por ejemplo, de 2.0 a 2.2 o de 2.2 a 2.4), es probable
que haya diferencias importantes en la configuración de tiempo de compilación y tiempo
de ejecución que requerirán ajustes manuales. Todos los módulos también deberán
actualizarse para adaptarse a los cambios en la API del módulo.
La actualización de una versión secundaria a la siguiente (por ejemplo, de 2.2.55 a 2.2.57)
es más fácil. El proceso de instalación de make no sobrescribirá ninguno de sus
documentos, archivos de registro o archivos de configuración existentes. Además, los
desarrolladores hacen todo lo posible para evitar cambios incompatibles en las opciones
de configuración, la configuración en tiempo de ejecución o la API del módulo entre
versiones menores. En la mayoría de los casos, debería poder utilizar una línea de
comandos de configuración idéntica, un archivo de configuración idéntico y todos sus
módulos deberían seguir funcionando.
Para actualizar en versiones menores, comience por buscar el archivo [Link] en el
directorio de compilación de su servidor instalado o en la raíz del árbol de origen de su
instalación anterior. Este contendrá la línea de comandos de configuración exacta que usó
para configurar el árbol de origen. Luego, para actualizar de una versión a la siguiente, solo
necesita copiar el archivo [Link] en el árbol de origen de la nueva versión, editarlo
para realizar los cambios deseados y luego ejecutar:
$ ./[Link]
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
Puede pasar argumentos adicionales a [Link], que se agregarán a sus opciones de
configuración originales:
10
$ ./[Link] --prefix=/home/test/apache --with-port=90
11