| El servidor de web Apache: Introducción práctica: Apache 1.x y 2.0 alpha | ||
|---|---|---|
| Prev | Chapter 1. El servidor de web Apache | Next |
Apache en la actualidad ya ocupa el 62% del mercado de servidores web, después de subir un 2% en Junio de 2000. A pesar de este predominio el grupo de desarrolladores de Apache no se está durmiendo en los laureles y en la nueva versión, la 2.0, destaca que el servidor Apache tendrá soporte para hebras de ejecución, lo que permitirá un modelo mixto de ejecución utilizando procesos y/o hebras según se configure el servidor. El rendimiento y escalabilidad de esta nueva arquitectura serán muy superiores a los que existen en la actualidad, además de mucho más flexibles de configurar.
Otro de los detalles importantes en esta nueva versión es el soporte para el sistema operativo BeOS, que se une a la saga de Unix, con GNU/Linux a la cabeza, y a la plataforma Microsoft Windows.
Apache 2.0 están aún en fase alpha, es decir, que aún es impensable utilizarlo para nada más que comenzar a conocerlo. Se han liberado ya 4 alphas de Apache 2.0 y vamos a probar la última versión a la que tenemos acceso a través del CVS aunque ya se nos advierte: no tiene ni que compilar. Esperemos que haya suerte y podamos jugar un poco con Apache 2.0.
Las mejoras en Apache 2.0 las podemos ver en el plan del proyecto en la referencia [7]. Vemos que en la versión 3.0, aún muy muy lejana, se tiene previsto dar soporte para HTTP-NG, algo que podría ser un nuevo hito para la era de los servidores web.
Las pruebas que vamos a realizar son con el fichero apache-2.0_20000702041230.tar.gz que como veremos a posteriori, es la versión alpha 5 de Apache 2.0.
Lo primero a destacar es el tamaño del "tar.gz". Más de 2 Mb de código fuente y documentación. Con cuidado vamos leyendo los ficheros "README" de los desarrolladores para no perder tiempo y siguiendo sus indicacione nos vamos al directorio "src" y leemos "README.MPM". Bién, como siempre, parece que con "configure" vamos a poder preparar los Makefiles y compilar sin muchos problemas. Vamos con ello.
tar xvfz apache-2.0_20000702041230.tar.gz
cd apache-2.0
cd src
./buildconf
./configure
make
El lector podrá observar que durante el make se utiliza para compilar con el gcc el flag -lpthread. Sí, esta usando Posix Threads para compilar. Era verdad lo el uso de hebras en esta nueva versión ;-D. También se ve muchos que se compilan muchos fuentes con "xml" como parte de sus nombres. XML se está convirtiendo en el estándar para el intercambio de datos entre aplicaciones y Apache parece que algo ha adoptado.
Bueno pues no hemos tenido ningún problema para compilar Apache 2.0. Sabíamos que estos chicos de Apache eran precavidos cuando decían que podría ni compilar. Seguimos con la investigación. Y lo primero será intentar arrancarlo. Para ello vamos a arriesgarnos a instalarlo bajo "/usr/local".
su
make install
/usr/local/conf: ficheros de configuración
/usr/local/htdocs: directorio con los ficheros HTML del servidor
/usr/local/icons: iconos del servidor Apache
/usr/local/logs: logs de acceso y errores
/usr/local/cgi-bin: directorio de cgi-bin del servidor Apache
/usr/local/include/xml: el parser de XML de Apache
/usr/local/include/apr: Apache Portable Runtime
/usr/local/bin/httpd: el binario del servidor web
Vamos a probar a arrancar el servidor de web. En la máquina está corriendo el servidor 1.3.9 por lo que puede haber algún conflicto con los puertos.
/usr/local/bin/httpd
Parece que ha arrancado correctamente, con un par de avisos sobre la configuración, la cual no ha sido tocada para nada. Ha sido sencillo llegar a tener corriendo Apache 2.0. Vamos a seguir profundizando. Y para ello lo mejor que podemos hacer es irnos al directorio de configuración para ver al menos en que puerto tenemos lanzado el servidor de web Apache 2.0 y poder acceder a él. Mirando con más detenimiento los ficheros de logs, /usr/local/logs, en el fichero error_log se nos informa de que no se ha podido arrancar de forma correcta porque el puerto ya estaba en uso. Vamos a cambiarlo en el fichero de configuración.
cd /usr/local/conf/
En este directorio nos encontramos 4 ficheros:
httpd.conf: viejo conocido de las versiones 1.x, y explicado en este mismo artículo, nos encontramos con las primeras diferencias en la sección del número de servidores que se arrancan por defecto, el número máximo ... y sí, las diferencias son debidas a que tenemos una sección para configurar por hebras en vez de por procesos.
## Server-Pool Size Regulation (MPM specific)Aquí comenzamos a ver hablar de MPM, que es una máquina alrededor de Apache que se encarga de crear y gestionar los procesos, hebras y sockets. El MPM y el APR (Apache Portable Rountime) son las únicas parte de Apache que son dependientes de la arquitectura. Para más detalles de MPM y como se integra dentro de la arquitectura de Apache 2.0 está el fichero "mpm-design.txt" dentro del directorio "doc" donde se encuentran las discusiones entre desarrolladores para dilucidar el papel de MPM. Podemos seleccionar entre distintos MPM, que son módulos de Apache, según las necesidades de nuestro servicio. Como vemos, la flexibilidad que tenemos es mucho más grande que en Apache 1.x. Todo lo demás en él es exactamente igual que en las versiones 1.x aunque incluye el contenido de srm.conf y el de access.conf de la versión 1.x.
highperformance.conf: los chicos de Apache han preparado este ejemplo de configuración para lograr un servidor de web con un gran rendimiento. La configuración no tiene nada especial y el supuesto alto rendimiento viene de las opciones:
MaxClients 8 StartServers 5 MinSpareServers 5 MaxSpareServers 10 # Assume no memory leaks at all MaxRequestsPerChild 0No se utiliza el módulo "mpmt_pthread.c" de Posix Threads.
mime.types: tipos MIME que reconoce el servidor de web.
magic: datos para el módulo mod_mime_magic para detectar de forma automática a que tipo MIME pertence un fichero, sin tener en cuenta su extensión (comando file de GNU/Linux).
Tras modificar el puerto al 8080 y cambiar el grupo bajo el que se ejecuta el servidor de web, en nuestro caso se ha puesto webs, se ha arrancado de nuevo el servidor y esta vez no ha habido ningún problema. Con "tail /usr/local/logs/error_log" podemos ver el mensaje:
[Sun Jul 02 11:45:22 2000] [notice] Apache/2.0a5-dev (Unix) configured -- resuming normal operationsBueno pues ya tenemos el Apache 2.0 alpha 5 funcionando. Vamos a acceder a la documentación del servidor a través de la URL http://localhost:8080/manual/index.html.
Bueno, quedarían por analizar muchos aspectos de este nueva versión de Apache pero de momento vamos a pararnos aquí. Hemos logrado los objetivos principales: obtener Apache 2.0, compilarlo, instalarlo y configurarlo, asi como ver como afecta la nueva arquitectura de procesos y hebras al funcionamiento de Apache.