Cómo monté mi servidor - El servidor web

12 - El servidor web

[editar]
Tutorial creado por Daniel Clemente. Extraido de: http://www.mononeurona.org/index.php?idp=230
27 de Octubre de 2005
¿Qué me hace falta? Eso es lo que necesito saber. Parece que al hablar de "buen servidor web en Linux" hay que hablar de Apache, pero no quiero Apache. Tiene algún fallo (demasiados, pues no debería tener ninguno) y es muy extenso, tanto que no conseguiría aprender a manejarlo por completo. Y en mi ordenador no voy a poner cosas que no sepa usar. Además, es que no necesito todo lo que tiene Apache. Ni me gusta su licencia...

Quiero algo sencillo. Probando varios servidores diferentes empiezo a ver qué cosas ofrecen, y si me interesan. Decido que no necesito PHP por ser demasiado complicado, pero que lo de generar páginas mediante scripts de bash (que es lo que siempre había querido) se puede hacer con CGIs.

También veo lo útil que es el 'virtual hosting': asociar varios dominios a la misma IP y que el servidor decida cada vez cuál le han pedido para saber qué página dar. Eso me servirá para....... bueno, más bien les servirá a mis amigos que quieran que les aloje algo. Que asocien su dominio a mi IP y ya está, nada de frames o subcarpetas.

En total: quiero un servidor web sencillo, fácil de meter en un chroot, sin PHPs, con CGIs y con virtual hosting.




Si no es Apache, ¿cuál elijo?


Estuve mirando varios (hay muchísimos, algunos muy curiosos):

  • Tux: al parecer es un LKM (loadable kernel module) que hace que todo vaya mucho más rápido, pues está integrado en el kernel. Permite pasar las peticiones que no entiende a servidores en el espacio de usuario, bueno, me parece que sólo a Apache.
    Este sistema es muy bonito pero yo no quiero ejecutar nada como root y menos a nivel de kernel, ni quiero tener que instalar esto y Apache. Además encontré poca información sobre este programa; creo que lo hizo Red Hat pero está algo abandonado.
  • screws: Script Enhaced Web Server. La idea me gusta mucho: es modular y funciona a base de scripts; los módulos que no me interesan los puedo directamente borrar. Así me quedarían pocas líneas de código fáciles de revisar. Está todo muy bien hecho; conozco a los programadores pero aún no llego a su nivel y me costaría detectar problemas o fallos. No lo usé por este motivo, pero tengo ganas de entenderlo y probarlo porque lo veo muy útil.
  • nc (netcat): alguna vez he dicho que es fácil hacerse un servidor web con un script en bash y netcat. No cuesta mucho (logs, CGIs, virtual hosting, .... en eso no veo problemas), pero me preocupa lo de los threads/fork o el sistema que use para aceptar varias conexiones a la vez (ya que sólo puedo abrir un nc por el puerto 80). Cuando aprenda cómo se hace me arrepentiré de haber escrito esto.
  • mini-httpd (de Peter Simons): no soporta contenido dinámico... :-( Por lo demás está muy bien.
  • mini_httpd (éste es otro): hace todo lo que quiero, es muy sencillo, pero ya dice el autor que es una prueba y que no está optimizado para ser rápido (su velocidad es el 90% de la de Apache). Me lo habría mirado, pero es que el autor ha hecho varios servidores más que me van mejor.
  • micro_httpd: del mismo que el anterior, pero éste ocupa 150 líneas de código y funciona desde inetd. No me gusta inetd, así que nada de nada.
  • thttpd: del mismo que los dos anteriores, Jef Poskanzer. Éste está más trabajado y es con el que me quedé; me gusta cómo está diseñado. Es mucho más rápido que Apache (y mucho más sencillo) y su seguridad está comprobada por cientos de personas; no tantas como Apache pero al menos ya sé que tiene un mínimo de seguridad (también ha tenido algunos fallos gordos, desgraciadamente). Tiene todo lo que necesito y alguna cosa más, como soporte IPv6 y limitación de velocidad por tipo de archivo. Reviso el código, y me gusta.
  • publicfile: de Dan J. Bernstein, éste lo vi después de haber acabado todo el montaje. Me habría ido perfecto, porque incorpora servidor http y ftp, con watchdog y gestión de logs; y creo que no tiene fallos de seguridad conocidos. No soporta CGIs. Requiere pasar más tiempo aprendiendo cómo funciona, pero creo que vale la pena y que cuando el thttpd me dé problemas cambiaré a estas utilidades. Gracias a los que me las habéis recomendado.

CGIs,¿qué es eso?


Antes lo único que sabía de los CGIs era que permitían ejecutar programas en Perl y que se usaban para los contadores, pero ahora ya los he descubierto del todo.

Un CGI no es más que un programa cuya salida se mandará al visitante web. Imagina que haces un

cualquier_comando > fichero  # toda la salida se queda grabada ahí
nc -l -p 80 <fichero # servir ese fichero.... :-)


Por eso puedes hacer cosas tan bonitas como:

#!/bin/bash
echo "Content-type: text/html"
echo
fortune
cat << EOF
<br><br>Hola, esto es una prueba en HTML, <br>
<b>probando</b>, <i>probando</i>.
<br> Mi uptime:
EOF
uptime



O incluso:

#!/bin/bash
echo "Content-type: image/jpeg"; echo; cat imagen.jpg



El echo ése suelto es para ese ENTER que hay que hacer para mandar cada petición/respuesta HTTP.
[editar]

26 opiniones

Buen tutorial.

Está guay. Yo estoy buscando una idea también sobre el hardware apropiado y creo que lo mejor de lo mejor es esa maravilla que comentas más arriba. Ese mini ordenador que consume poquísimo y no hace nada de ruido. Es cierto que el precio es un poco elevado, pero creo que vale la pena porque se amortizará y es extremadamente cómodo. Creo que optaré por uno de esos.

Está muy bueno lo que hiciste, muy buen trabajo. Pero que servidor usas? por lo que mencionas del flujo de usuarios parece que podrías aprovechar mucho más el rendimiento de la compu. Windows server 2008 te deja controlar muchas de esas opciones de accesibilidad, deberías probarlo a ver como te funciona.
Atencion !!!!.

Hola ! tengo una empresa de arquitectura web y necesito algún proveedor de servidor web para trabajar... Por favor ! tengo mucho trabajo. Al que le interese escríbame al correo. Gracias !!!!!!!!!!!!!.
Gracias!!!.

Sr daniel clemente:

muchas gracias por este excelente trabajo. Saluda atte maximiliano.
Excelente.

Actualmente acabo de adquirir 2 servidores ibm rs6000 me estoy iniciando en esto y van para el mismo proposito si alguien tiene mas conocimiento sobre esto me interesa platicar con el para resolver mis dudas ;) gracias.
1 2 3 4 5 6 | siguiente >

Tutoriales relacionados con 'Cómo monté mi servidor'

Las páginas que estás viendo están alojadas en mi propio servidor (IP 217. 126.10.173), que... Más »
¿Qué es una imagen ISO? Las imágenes ISO son archivos que siguen los estándares ISO-9660... Más »
Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... Más »
Manual para Slackware 10. 0 en el que prescindiremos de usar las X. Esto puede... Más »
Este es un curso sin ninguna relevancia. Pretende ser una pequeña introducción para todos mis... Más »

Autor y licencia de 'Cómo monté mi servidor'


Tutorial de Daniel Clemente. Extraido de: http://www.mononeurona.org/index.php?idp=230 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.