Servidores WebApache vs. IIS
Una comparación técnica.
Yolifé ArveloCarlos Castillo
William GonzálezMiguel LurgiOsiris Pérez
Eduardo Ruiz
Agenda Overview – Apache Funcionamiento – Apache Overview – IIS Funcionamiento - IIS Comparación – Rendimiento Comparación - Popularidad Comparación – Seguridad Conclusiones
Overview – Apache/1.3.26 Apache 2.0 lanzado al mercado a mediados de abril
2002. Actualmente menos de 50.000 sites utilizan la nueva
versión. En contraste, mas de 10 millones de sites corren Apache/1.3.26.
Plataformas: NetBSD, Digital UNIX, AIX, OS/2, Windows 3.x, SCO, HPUX, Novell NetWare, Macintosh, Be OS, Windows NT, Linux, VMS, AS/400, Windows 95/98, FreeBSD, IRIX, Solaris.
Precio: Gratis. (puede bajarse de apache.org) Incluido en algunas distribuciones de linux.
Ventajas Principales: Cantidad de plataformas soportadas y disponibilidad de código fuente. Modularidad. Costo.
Funcionamiento - Apache Instalación de Apache en Linux:
Binarios Código Fuente
Ventajas•Fácil Instalación•Incluye Código Fuente•Fácil Configuración
Desventajas•Particular para cada plataforma•Pocas posibilidades de configuración•Usualmente se consiguen en versiones anteriores a la más reciente.
Ventajas•Máxima Flexibilidad•Opción de Configurar libremente•Se puede ajustar libremente según las necesidades
Desventajas•Es necesario poseer compilador correcto•Proceso mas largo y complejo
Funcionamiento - Apache Instalación de binarios en linux1. Bajar de www.apache.org/dist/binaries el
archivo tar.gz correspondiente a la plataforma2. Descomprimir y desempaquetar el archivo
gunzip < apache_1.3.26-i386-linux.tar.gz | tar xvf –
3. Ir al Directorio recién creado (Apache 1.3.26) y ejecutar el script de instalación (Como Root)./ install.bindist.sh <directorio>
4. La instalación se llevará a cabo en el directorio mencionado o en /usr/local/apache por defecto
Funcionamiento - Apache Instalación de Apache – Código Fuente1. Descomprimir y desempaquetar el archivo
gunzip < apache_1.3.26-i386-linux.tar.gz|tar xvf –
2. En el directorio de apache, ejecutar el script de configuración./configure
3. Ejecutar make4. Ejecutar make install
Funcionamiento - Apache Ejecución Daemon Apache
/usr/local/apache/bin/apachectl start
Apachectl es un script que facilita el uso de httpd con comandos sencillos como start y stop.
Se crea el proceso padre httpd que creara hijos para atender las peticiones de web.
Para terminar con el proceso httpd, se le envia una señal TERM al proceso padre, esto lo obliga a matar a los hijos y luego a si mismo.
Funcionamiento - Apache ConfiguraciónLa configuración de Apache se realiza mediante
directivas en archivos planos, el archivo principal de configuración es el httpd.conf
Este archivo consiste de una directiva por linea.Ej. DocumentRoot /usr/web Define cual será el directorio que alberga los archivos del
siteAdicionalmente, existen dos otros archivos de configuración,
el srm.conf que maneja configuraciones para el manejo de recursos en el filesystem como aliases, índices, etc. También esta el access.conf que maneja control de acceso
Funcionamiento - Apache La Herramienta ConfigurePermite configuración de apache por línea de
comando.Ejecutar configure sin argumentos, utiliza todos
los valores por defecto.Configure --help para ayuda con los comandos.Ej:./configure --prefix=/home/httpd --enable-
module=speling --disable-module=userdir
Funcionamiento - Apache ModularidadLa distribución de Apache 1.3 trae 44 módulos
para su funcionamiento estándar, todos los módulos tienen por nombre mod_XXX. Se pueden Agrupar en 12 Categorías.
Módulos adicionales pueden agregarse con la directiva
add-module en la herramienta configure.Ej: ./configure --prefix=/usr/local/apache --add-
module=/home/redes/mods/mod_sense.c
Funcionamiento - Apache Categorías de módulos originales de
Apache1. Core2. Creación de Ambientes3. Decisiones de acuerdo al tipo de contenido4. Mapeo de URL5. Manejo de Directorios6. Control de Acceso7. Respuestas HTTP8. Contenido Dinámico9. Manejo de Contenido Interno10. Logging11. Misceláneos
Funcionamiento - Apache Páginas Dinámicas bajo ApacheSurge CGI (Common Gateway Interface) como
primera solución para la elaboración de contenido dinámico, mod_perl es una adición para acelerar los scripts CGI
CGI permite programar scripts en C/C++, Java, PCL y muchos más, pero el mas común es Perl
Mod_cgi es el módulo que maneja CGI y se encuentra habilitado por defecto.
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
Define el directorio contentivo de los scripts
Funcionamiento - Apache Directiva para manejar los scripts:AddHandler cgi-script .cgi .pl
o igualmente,<Directory "/usr/local/apache/cgi-bin/">
Options ExecCGI AddHandler cgi-script .cgi .pl</Directory>
Otras opciones para Server Side Scripting son PHP, JSP o incluso ASP
Funcionamiento - Apache
Virtual Hosts en ApacheEs posible, configurar varios servidores en una
misma maquina para atender peticiones de varios sites.
Port 80 ServerName server.dominio.com NameVirtualHost 111.22.33.44 <VirtualHost 111.22.33.44> DocumentRoot /www/domain ServerName www.dominio.com ... </VirtualHost> <VirtualHost 111.22.33.44> DocumentRoot /www/subdominio ServerName www.sub.dominio.com ... </VirtualHost>
Funcionamiento - Apache Tips de Rendimiento para Apache:1. La RAM es importantísima para el buen
funcionamiento del servidor, es preciso utilizarla correctamente.
2. Evitar el swapping evitando que el numero de usuarios se exceda, definir un máximo de conexiones.
3. Evitar la negociación de contenido4. Si no se usa contenido dinámico, deshabilitar
la opción.
Overview - IIS Internet Information Services es el servidor web
de la familia Microsoft, la versión mas reciente es la 5, que viene incluida en Windows 2000 Server. Curiosamente, Windows XP no incluye IIS.
Plataformas: Windows NT, Windows 2000 Precio: Incluido en el NT Option Pack 4.0 (v.4.0),
Incluido en el Windows 2000 Server(v.5.0) Ventajas Principales: ASP, soporte para los APIs
de Microsoft, ODBC.
Funcionamiento IIS v5.0
Ventana Original – Internet Information Services
Funcionamiento IIS v5.0
Ventana “Web Site”
Aquí se describen datos generales del site como el
puerto a utilizar y la dirección IP.
Funcionamiento IIS v5.0Ventana
“Performance”Detalles sobre la
configuración para el
rendimiento del servidor.
Funcionamiento IIS v5.0
Ventana “Home Directory”
Aquí se define el directorio que se
utilizará como root y otros
detalles de la aplicación.
Funcionamiento IIS v5.0
Ventana “Documents”
Aquí se define la pagina a ser entregada
inicialmente
Funcionamiento IIS v5.0
Ventana “Security” – Acceso y Autenticación
Funcionamiento IIS v5.0
Ventana “Security” – Acceso Anónimo y Restricciones de IP
Funcionamiento IIS v5.0
Ventana “HTTP Headers”
Aquí se definen distintos headers
que el cliente procesa para
diferentes utilidades
Funcionamiento IIS v5.0
Ventana “Custom Errors”Aquí se definen las páginas que se muestran en caso de error
Funcionamiento IIS v5.0 Contenido dinámico en IISEl Soporte para ASP viene incluido en IIS, es
necesario definir los DSN (Data Source Name) para que se efectúe el contacto con la base de datos.
Los archivos .asp son preprocesados y enviados al cliente en forma html
Funcionamiento IIS v5.0 Módulos en IISPueden instalarse módulos independientes en IIS
mediante la herramienta regsrv32, esta toma archivos .dll y los registra, luego estos pueden incluirse en el código ASP.
Existen módulos para integración con algunas herramientas de desarrollo como ColdFusion y Front Page por un costo adicional.
También se pueden adquirir módulos para anti-virus, load-balancing y paralelismo.
Comparación - Rendimiento
WebBench de Apache vs. IIS
Comparación - Rendimiento
Benchmark realizado por un instituto francés, a diferencia de WebBench, este mide el rendimiento con 10.000 archivos de 4Kb. Por la cantidad de archivos, este benchmark tambien evalua la capacidad del servidor de manejar condiciones extremas.
Comparación - Popularidad
Popularidad de Web Servers Junio 2002
59,6728,69
2,06
1,73
7,85
ApacheIISZeusNetscapeOtros
Comparación - Seguridad El 90% de las vulnerabilidades de seguridad
explotadas por virus, gusanos y ataques DoS, están relacionados con IIS.
Microsoft no había dado prioridad a corregir los agujeros de seguridad de IIS hasta mediados del año pasado. El rendimiento ha sido su fuerte, para competir contra Apache.
Apache desde sus inicios ha dado principal importancia a la correctitud y seguridad de su servidor. El rendimiento es una segunda prioridad.
Apache no incluye opción para SSL en su distribución original por evitar problemas legales.
Conclusiones Apache
ProsProyecto Open Source bajo
constante desarrolloMucha información disponibleSoporte disponible por parte
de gran numero de usuarios y comunidades a nivel mundial
Perl Engine integrado ofrece enlaces directos al API
ODBC disponible sin costoGran cantidad de opcionesExtensible
IISPros
Fácil de utilizarPoco o nada de configuración
necesariaASP sencillo de utilizarSoporte ODBC integradoSoporte FrontPage integradoInterfaz graficaDisponibilidad de
herramientas de desarrolloMucha información
disponible
Conclusiones Apache
ContrasConfiguración inicial
necesaria.Perl Engine incrementa
considerablemente el uso de memoria.
La curva de aprendizaje para uso efectivo del servidor es muy empinada.
IISContras
Cualquier problema serio (crash) puede requerir una reinstalación del servidor.
Los módulos y utilidades adicionales deben ser compradas.
Un objeto COM mal escrito o un lazo infinito puede matar al servidor.