Cómo monté mi servidor - El servidor web
27 de Octubre de 2005
Servidores de aplicaciones, Servidores de contenidos, Servidores web
¿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.
Estuve mirando varios (hay muchísimos, algunos muy curiosos):
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.
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.
Valora este capítulo:
Autor y licencia de 'Cómo monté mi servidor - El servidor web'
|
Opiniona sobre 'Cómo monté mi servidor - El servidor web' (25)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Cómo monté mi servidor - El servidor web'
El observatorio tecnológico del Ministerio de Educación y Ciencia está empezando a formar en el...
Más »
Este documento describe los pasos y el software necesarios para crear un servidor de IRC...
Más »
En este documento voy a tratar de explicar como instalar y configurar un servidor de...
Más »
Este documento describe cómo configurar una Intranet usando Linux como servidor que enlace Unix, Netware,...
Más »
En muchos foros y cosas similares he visto muchas consultas sobre cómo montar servidores de...
Más »

