¿Qué hace que una PC pueda ser un servidor web y qué la hace incapaz?

43

Tengo una pregunta sobre el uso de una computadora como servidor web. ¿Por qué una determinada computadora puede ser un servidor web? ¿Qué características hacen que sea un servidor web? ¿Hay algún caso en el que una computadora no pueda actuar como servidor web?

VincentTheonardo
fuente
Una tarjeta de red.
el.pescado
1
La más pequeña que he visto es una tarjeta SD wifi hecha por Apacer. Tiene 4 MB de RAM y ejecuta Linux y puede responder a solicitudes web y transmitir imágenes cuando está en una cámara.
user3528438
@ el.pescado A menos que el cliente esté en el mismo host.
Dmitry Grigoryev

Respuestas:

96

Casi cualquier computadora puede usarse como servidor [web], siempre que pueda conectarse a una red y pueda ejecutar software de servidor web. Como un servidor web puede ser bastante simple, y hay servidores web gratuitos y de código abierto, en la práctica, cualquier dispositivo puede actuar como un servidor web.

El mayor problema es el lado de la red. Para que un sistema actúe como servidor, otras máquinas deben poder acceder a él. Si es solo para usar en una LAN, no hay preocupaciones; sin embargo, si es para usar desde Internet más amplio, entonces los datos deben ser enviados a él. Esto requiere una dirección IP estática asociada con el servidor (o el puerto reenviado a través de un enrutador) o un servicio externo que pueda asignar un nombre de dominio / subdominio a una dirección IP dinámica cambiante.

(FWIW, puede comprar computadoras de $ 10 que pueden actuar como un servidor web básico).

Por supuesto, si bien cualquier dispositivo puede actuar como un servidor web, la funcionalidad de los sitios web puede variar enormemente, y un dispositivo barato (o conexión lenta) puede no ser capaz de satisfacer las demandas dependiendo de cuál sea el sitio web específico.

Noto que todo lo anterior habla de servidores web, pero lo mismo puede decirse de casi cualquier tipo de servidor.

davidgo
fuente
2
Otro problema es que los dispositivos baratos pueden no ser tan confiables como los servidores "reales" porque sus componentes no están certificados para ejecutarse en mucho tiempo y su memoria no tiene ningún medio para evitar la descomposición de bits como la RAM ECC. He visto a mis colegas dejar sus computadoras durante varios meses y terminar en BSOD
phuclv
11
Si y no. He ejecutado muchos sistemas las 24 horas, los 7 días de la semana, sin ecc ram, y la mayoría de los enrutadores domésticos / de pequeñas empresas, que son servidores wenb, también funcionan de manera bastante confiable sin bsod. Por supuesto, los equivalentes BSOD no son tan comunes fuera del mundo de Windows.
davidgo
99
@davidgo Los errores de Bugcheck tampoco son comunes en el mundo de Windows, a menos que tenga fallas de hardware o controladores poco fiables. Que causan problemas similares para cualquier sistema operativo. Recuento perdido de la cantidad de problemas relacionados con el controlador de video tanto en Windows como en Linux.
Bob
77
@davidgo BSOD es solo una prueba de fallas, no es un problema en sí mismo. Es un último intento para evitar la corrupción de datos / códigos furtivos y daños en el hardware. En cualquier caso, la evidencia anecdótica es completamente inútil en cosas como esta: hay una gran posibilidad de que nunca encuentres un problema visible con esto, o lo atribuirás mal, y hay una gran cantidad de factores ambientales que lo hacen más o menos probable (temperatura, latitud, ruido EM, calidad de la red eléctrica, carga del sistema, confiabilidad de un componente dado). Costo y valor de ECC RAM y tal es una decisión comercial.
Luaan
15
Probablemente ya tenga algunos servidores web en casa: su enrutador / punto de acceso, su impresora y todos los demás tipos de dispositivos de automatización del hogar configurables, como medidores inteligentes, cámaras IP, teléfonos VoIP, termostatos programables, su televisor. Los más pequeños le dan una idea de cuán poco hardware se necesita. Otro comentario: la creación de redes no es un requisito estricto para un servidor web; puede tener mucho sentido tener un servidor que solo sirva páginas a los usuarios en la misma máquina .
Peter - Restablece a Monica
25

No es del todo complicado. Simplemente depende de su definición de "servidor web".

Es completamente posible ejecutar un "servidor web" en dispositivos tan simples como un microcontrolador.

Consideremos lo que el servidor web mínimo debería hacer. Tendría que generar algo de texto, no necesariamente en HTML para un cliente. Necesitaría saber que una solicitud es una solicitud y responder adecuadamente. Ni siquiera necesitaría conectividad de red si su "cliente" fuera local. Sería un servidor web completamente inútil.

Sería el servidor web equivalente a uno de estos .

ingrese la descripción de la imagen aquí

Agregar conectividad de red para un cliente (Ethernet es bueno, pero no hay ninguna razón técnica por la que no pueda conectarse a un servidor web que se ejecuta en wifi) y sería mejor poder enrutar desde un cliente.

Un ESP8266 de $ 5 : un microcontrolador barato y mínimo con wifi puede manejar gran parte de eso, y tal vez incluso contenido dinámico básico

Yo uso algo así para compartir archivos rápidamente usando Python. Todavía es completamente posible escribir algo como esto en un microcontrolador o incluso ejecutarlo en un teléfono.

El contenido estático es aburrido. Agregue lenguajes dinámicos y necesitará comenzar a pensar en sistemas más pesados. Las cosas que ejecutan Linux o Windows son agradables.

En este punto, estás hablando de enrutadores de consumo, pequeñas aplicaciones que usan páginas web en la interfaz de usuario y todo eso.

Un servidor web ni siquiera es un problema complejo y puede escribirse en cinco líneas de bash y ejecutarse en Linux. Now doom ... Pero cualquier sistema que pueda ejecutar doom puede ejecutar un servidor web.

Una buena configuración de servidor web capaz de manejar una carga dada es algo más complicada.

Journeyman Geek
fuente
11
Incluso es posible soldar algunos chips TTL y ejecutar un servidor web. Vea esta página web para más detalles
Josef
77
Eso es más o menos como decir "Es incluso posible atornillar un poco de acero y construir la torre Eiffel. Eso es genial
Journeyman Geek
1
Divertidamente, su servidor web 'sin sentido' es exactamente cómo alguna ayuda solía funcionar para ciertos productos :) - No puedo recordar ejemplos, pero hubo al menos un caso en el que la ayuda se estaba ejecutando en un servidor (no solo una página html representada por un navegador) y los problemas posteriores que se presentaron (¡mis páginas de ayuda no se cargan cuando mi firewall está activado!).
djsmiley2k - CoW
55
@ djsmiley2k La ayuda de Eclipse utiliza un servidor web local. Porque Java
user253751
2
Un raspi tiene más potencia que el 99.9% de los servidores web comerciales en el año 2000. Y la gente ya estaba haciendo cosas muy dinámicas en ese entonces.
rackandboneman
11

Lo mínimo

Literalmente, cualquier computadora puede convertirse en un servidor web si tiene lo siguiente:

  • Una conexión de red
  • Una aplicación de servidor web muy simple, como esta .

¿Pero sería suficiente? Ahora, esa es la pregunta difícil.

Sirviendo una Intranet

Para que una computadora se convierta en un servidor web que sirve páginas web modernas o aplicaciones web a toda una comunidad (por ejemplo, escuela, empresa, museo):

  • Hardware capaz de responder varias computadoras a la vez. Tal vez una computadora vieja con Linux o Windows XP funcionaría.
  • Una conexión de red de alta velocidad con suficiente ancho de banda, digamos Ethernet de 1 Gbit / seg o Wi-Fi 802.11g.
  • Una buena aplicación de servidor web, como IIS , Apache , Nginx u otros . (Sorprendentemente, estos tres son gratuitos).

Pero eso era solo un mínimo para pequeñas operaciones. Cuando su operación aumenta (es decir, obtiene un tráfico más pesado y sirve aplicaciones web complejas en lugar de páginas estáticas), sus necesidades crecen. Eventualmente necesitarás:

  • Hardware de clase de servidor como servidores montados en bastidor con varias CPU Xeon y cientos de gigabytes de RAM
  • Redes de fibra óptica

Sirviendo al mundo exterior

Para explotar la infraestructura de Internet para servir al mundo entero, necesitará:

Sin estos, todo lo que tiene es un posible servidor web.


fuente
._. Considero que un raspi es un mínimo básico y escandaloso. También vale la pena recordar que muchas cosas usan una página web como interfaz de usuario. Su enrutador tiene, pero no es un servidor web, por ejemplo.
Journeyman Geek
99
Concuerde con estos comentarios: un enrutador ES un servidor web (así como otras cosas). Según la lógica de los comentarios, no existe un servidor web porque dicho sistema tiene otra funcionalidad.
davidgo
55
La gran cantidad de CPU y otras necesidades de recursos tienen mucho más que ver con las aplicaciones web y los lenguajes dinámicos de generación de HTML, por ejemplo, PHP, un lenguaje común pero (especialmente si se configura de la forma en que suele ser) hilarantemente ineficiente, que con el servicio web. Se podría hacer un 80486 de 33MHz con 16MB de RAM para manejar una gran carga de páginas estáticas si alguien se molestara.
rackandboneman
@rackandboneman Muy bien. Aclararé el significado de "si su operación se agranda" para abordar su preocupación.
@rackandboneman No solo 'podría ser' manejado, sino 'a menudo lo fue'.
jwg
8

Programación / Perspectiva del software:

Un programa que puede escuchar el puerto 80 en el adaptador de red. Eso se ejecuta en el sistema operativo que tienes. Y puede procesar las solicitudes de acuerdo con las definiciones HTTP.

Se puede acceder a un programa que escucha cualquier puerto desde cualquier computadora en la misma red. Idealmente, debería ser un puerto estándar conocido (80 y 8080 para servidores HTML; elija más allá de 1024 para aplicaciones personalizadas). Incluso es una práctica común ejecutar el desarrollo de un programa accesible en red en la misma computadora en la que está realizando el desarrollo.

Si puede alcanzarlo a través de localhost, puede hacerlo desde cualquier lugar dentro de la misma red, y desde cualquier otro lugar hay una ruta a esta máquina y su adaptador de red.

Advertencia: muchos entornos de desarrollo todo en uno en instalaciones predeterminadas limitan el acceso a Localhost. No desea que sus herramientas de administración sean accesibles desde Internet, después de todo.

Hardware:

El hardware comienza en algún lugar de "esa computadora de 10 años que ejecuta XP o Linux" y termina en algún lugar alrededor de "128 núcleos, con 2 TiB RAM y 256 TiB de SSD en una incursión", con la base de datos ejecutándose en un servidor diferente también . Las aplicaciones web tienden a ser agradablemente paralelizables, por lo que puede / tener que hacerlo aún más con clústeres de esos servidores. Y Geocast. Y diseño distribuido. Y muchas otras cosas. Depende completamente de qué escala estamos hablando.

El servidor web más simple que probablemente conozcas es el enrutador que estás utilizando, por cierto. Todos ellos ejecutan un servidor web con fines de configuración, alojados en un Linux (que está haciendo todo el trabajo de DHCP y NAT).

Redes:

Que tiene un recorrido de otras redes - incluyendo cualquier parte de Internet - ahora que es una historia totalmente diferente y una parte aún más difícil que la programación de la aplicación. Entre el NAT de su enrutador y el de NAT de portadora, esto se volvió realmente difícil.

  • Siempre tiene la opción de comprar una dirección IP fija de su ISP, incluso como persona privada. Como indica, eso probablemente costará más. Una entrada de DNS sería una cuestión de calidad de vida.
  • Antes de Carrier Grade NAT , podría trabajar con su dirección IP dinámica y un servicio DynDNS. Pero con NAT de nivel de operador, ahora tiene que superar otro NAT incontrolable, tal vez. Depende de su proveedor.
  • La solución definitiva para atravesar un tipo de NAT, cualquier número de capas es la perforación de agujeros TCP / IP . Todas las soluciones VPN lo usan. Al igual que Skype, TeamViewer y todos los demás. El problema es: para realizar perforaciones TCP / IP, necesita un servidor al que ya se pueda acceder en Internet.
  • Si se trata de escalas pequeñas (1 a 10 puntos finales), por lo general, la forma más simple es simplemente hacer una conexión VPN en la red que tiene los servidores. La mayoría de los enrutadores tienen soporte para ello.
Christopher
fuente
2
"Esa computadora de 10 años que ejecuta Linux". Teniendo en cuenta la edad de la web, podemos retroceder con seguridad. Personalmente recuerdo haber ejecutado un servidor web en un Intel 80386 original, hace unos 20 años.
MSalters
@MSalters Puedes ir mucho más bajo que eso. No puedo encontrarlo hoy, pero hace unos años me encontré con un servidor web shell script / CGI que podía ejecutarse en hardware tan bajo como un moto 68k. Aparentemente fue relativamente popular hace 15-20 años en el espacio incrustado.
Dan Neely
3

Si tiene a mano cualquier tipo de computadora (PC, computadora portátil, teléfono inteligente, raspberryPI ...) con Python instalado, simplemente escriba:

$ python -m SimpleHTTPServer

O si tiene instalado Node.js:

$ npm install http-server -g
$ http-server

¡Felicidades, tienes un servidor web!

mate
fuente