Was macht einen PC zu einem Webserver und was macht ihn unfähig?

43

Ich habe eine Frage zur Verwendung eines Computers als Webserver. Warum kann ein bestimmter Computer ein Webserver sein? Welche Funktionen machen es zu einem Webserver? Gibt es einen Fall, in dem ein Computer nicht als Webserver fungieren kann?

VincentTheonardo
quelle
Eine Netzwerkkarte.
el.pescado
1
Die kleinste, die ich gesehen habe, ist eine WiFi-SD-Karte von Apacer. Es hat 4 MB RAM und läuft unter Linux und kann auf Webanfragen reagieren und Bilder übertragen, wenn es sich in einer Kamera befindet.
user3528438
@ el.pescado Es sei denn, der Client befindet sich auf demselben Host.
Dmitry Grigoryev

Antworten:

96

Nahezu jeder Computer kann als [Web] Server verwendet werden, vorausgesetzt, er kann eine Verbindung zu einem Netzwerk herstellen und Webserver-Software ausführen. Da ein Webserver recht einfach sein kann und es kostenlose und Open-Source-Webserver gibt, kann in der Praxis jedes Gerät als Webserver fungieren.

Das größere Problem ist die Netzwerkseite. Damit ein System als Server fungieren kann, müssen andere Computer darauf zugreifen können. Wenn es nur für die Verwendung in einem LAN vorgesehen ist, gibt es keine Bedenken. Wenn es jedoch aus dem weiteren Internet verwendet werden soll, müssen Daten an dieses weitergeleitet werden. Dies erfordert entweder eine statische IP-Adresse, die dem Server zugeordnet ist (oder einen über einen Router weitergeleiteten Port), oder einen externen Dienst, der einen Domänennamen / eine Unterdomäne einer sich ändernden dynamischen IP-Adresse zuordnen kann.

(FWIW, Sie können 10 US-Dollar-Computer kaufen, die als einfacher Webserver fungieren können.)

Obwohl jedes Gerät als Webserver fungieren kann, kann die Funktionalität von Websites sehr unterschiedlich sein, und ein billiges Gerät (oder eine langsame Verbindung) kann den Anforderungen möglicherweise nicht gerecht werden, je nachdem, um welche Website es sich handelt.

Ich stelle fest, dass alles oben über Webserver spricht - aber dasselbe kann für so ziemlich jeden Servertyp gesagt werden.

Davidgo
quelle
2
Ein weiteres Problem ist, dass billige Geräte möglicherweise nicht so zuverlässig sind wie "echte" Server, da ihre Komponenten nicht für eine sehr lange Laufzeit zertifiziert sind und ihr Arbeitsspeicher keine Möglichkeit bietet, Bit Rot wie ECC-RAM zu verhindern. Ich habe gesehen, wie meine Kollegen ihre Computer für einige Monate verlassen und
phuclv am
11
Ja und nein. Ich habe viele Systeme 24/7 ohne ecc ram laufen, und die meisten Home / Small Business Router - die wenb Server sind, laufen auch ohne bsod recht zuverlässig. Natürlich sind BSOD-Entsprechungen außerhalb der Windows-Welt nicht so verbreitet.
Davidgo
9
@davidgo Bugcheck-Fehler sind auch in der Windows-Welt nicht häufig, es sei denn, Sie haben Hardware- oder fehlerhafte Treiber. Welche verursachen ähnliche Probleme für jedes Betriebssystem. Verlorene Anzahl der Probleme mit dem Grafiktreiber unter Windows und Linux.
Bob
7
@davidgo BSOD ist nur ein Fail-Safe, kein Problem für sich. Es ist ein letzter Versuch, um hinterhältige Code- / Datenverfälschungen und Hardwareschäden zu verhindern. Auf jeden Fall sind anekdotische Beweise in solchen Situationen völlig nutzlos - es besteht eine sehr hohe Wahrscheinlichkeit, dass Sie nie auf ein sichtbares Problem stoßen, oder Sie werden es falsch zuordnen, und es gibt eine Vielzahl von Umweltfaktoren, die es ausmachen mehr oder weniger wahrscheinlich (Temperatur, Breitengrad, EM-Rauschen, Qualität des Stromnetzes, Systemlast, Zuverlässigkeit einer bestimmten Komponente). Die Kosten und der Wert des ECC-Arbeitsspeichers sind eine Geschäftsentscheidung.
Luaan
15
Sie haben wahrscheinlich bereits einige Webserver zu Hause: Ihren Router / Access Point, Ihren Drucker und alle anderen konfigurierbaren Geräte für die Hausautomation wie Smart Meter, IP-Kameras, VoIP-Telefone, programmierbare Thermostate und Ihr Fernsehgerät. Die kleineren geben Ihnen eine Vorstellung davon, wie wenig Hardware benötigt wird. Eine weitere Bemerkung: Für einen Webserver ist das Netzwerk nicht unbedingt erforderlich - es kann durchaus sinnvoll sein, einen Server zu haben, der nur Seiten für Benutzer auf demselben Computer bereitstellt .
Peter - Reinstate Monica
25

Es ist überhaupt nicht schwierig. Dies hängt lediglich von Ihrer Definition des "Webservers" ab.

Es ist durchaus möglich, einen "Webserver" auf Geräten auszuführen, die so einfach wie ein Mikrocontroller sind.

Überlegen wir uns, was der minimalistische Webserver tun müsste. Es müsste etwas Text ausgeben - nicht unbedingt sogar in HTML an einen Client. Es muss bekannt sein, dass es sich bei einer Anfrage um eine Anfrage handelt, und es muss angemessen geantwortet werden. Sie würden nicht einmal eine Netzwerkverbindung benötigen, wenn Ihr "Client" lokal wäre. Es wäre ein völlig sinnloser Webserver.

Dies wäre das Webserveräquivalent zu einem dieser Server .

Bildbeschreibung hier eingeben

Hinzufügen einer Netzwerkkonnektivität für einen Client (Ethernet ist nett, aber es gibt keinen technischen Grund, warum Sie keine Verbindung zu einem Webserver herstellen können, der über WLAN ausgeführt wird) und die Möglichkeit, eine Route von einem Client aus zu erstellen, sind besser.

A $ 5 ESP8266 - ein billiger, minimaler Mikrocontroller mit WLAN kann einen Großteil davon und möglicherweise sogar grundlegende dynamische Inhalte verarbeiten

Ich benutze so etwas für den schnellen Dateiaustausch mit Python. Es ist durchaus möglich, so etwas auf einem Mikrocontroller zu schreiben oder sogar auf einem Telefon auszuführen.

Statischer Inhalt ist langweilig. Fügen Sie dynamische Sprachen hinzu und Sie müssen anfangen, an schwerere Gewichtssysteme zu denken. Sachen, die Linux oder Windows laufen lassen, sind nett.

An dieser Stelle geht es um Consumer-Router, kleine Anwendungen, die Webseiten auf der Benutzeroberfläche verwenden, und all das.

Ein Webserver ist nicht einmal ein komplexes Problem und kann in fünf Zeilen Bash geschrieben und unter Linux ausgeführt werden. Nun zum Scheitern verurteilt ... Aber jedes System, das zum Scheitern verurteilt werden kann, kann einen Webserver ausführen.

Eine gute Webserver-Konfiguration, die eine bestimmte Last verarbeiten kann, ist etwas schwieriger.

Geselle Geek
quelle
11
Es ist sogar möglich, einige TTL-Chips zusammenzulöten und einen Webserver zu betreiben. Siehe diese Webseite für die Details
Josef
7
Das ist ungefähr so, als würde man sagen: "Es ist sogar möglich, Stahl zusammenzuschrauben und den Eiffelturm zu bauen. Das ist so cool
Journeyman Geek
1
Amüsanterweise ist Ihr "sinnloser" Webserver genau so, wie manche Hilfe für bestimmte Produkte funktioniert hat :) - Ich kann mich nicht an Beispiele erinnern, aber es gab mindestens einen Fall, in dem die Hilfe auf einem Server ausgeführt wurde (nicht nur eine gerenderte HTML-Seite) über einen Browser) und die nachfolgenden Probleme (meine Hilfeseiten werden bei eingeschalteter Firewall nicht geladen!).
djsmiley2k - CoW
5
@ djsmiley2k Die Eclipse-Hilfe verwendet einen lokalen Webserver. Weil Java.
user253751
2
Ein Raspi ist leistungsstärker als wahrscheinlich 99,9% der kommerziellen Webserver waren im Jahr 2000. Und die Leute machten damals schon sehr dynamische Sachen.
Rackandboneman
11

Das absolut Nötigste

Jeder Computer kann buchstäblich zu einem Webserver werden, wenn er über Folgendes verfügt:

  • Eine Netzwerkverbindung
  • Eine sehr einfache Webserver-App wie diese .

Aber würde es ausreichen? Nun, das ist die schwierige Frage.

Ein Intranet bedienen

Damit ein Computer zu einem Webserver wird, der moderne Webseiten oder Web-Apps für eine ganze Community (z. B. Schule, Firma, Museum) bereitstellt:

  • Hardware, die mehrere Computer gleichzeitig ansprechen kann. Vielleicht würde ein alter Computer mit Linux oder Windows XP ausreichen.
  • Eine Hochgeschwindigkeitsnetzwerkverbindung mit ausreichender Bandbreite, z. B. 1 Gbit / s Ethernet oder 802.11g Wi-Fi.
  • Eine gute Webserver-App wie IIS , Apache , Nginx oder andere . (Überraschenderweise sind diese drei kostenlos.)

Dies war jedoch nur ein Minimum für kleine Operationen. Wenn Ihr Betrieb größer wird (dh Sie erhalten einen höheren Datenverkehr und stellen komplexe Webanwendungen statt statischer Seiten bereit), steigen Ihre Anforderungen. Sie benötigen schließlich:

  • Hardware der Serverklasse wie Rack-Server mit mehreren Xeon-CPUs und Hunderten von Gigabyte RAM
  • Glasfasernetze

Der Welt draußen dienen

Um die Internetinfrastruktur für die gesamte Welt zu nutzen, benötigen Sie:

Ohne diese ist alles, was Sie haben, ein potenzieller Webserver.


quelle
._. Ich halte eine Raspi für ein absolutes Minimum und für scheußlich. Es lohnt sich auch, sich an viele Dinge zu erinnern, die eine Webseite als Benutzeroberfläche verwenden. Ihr Router hat zum Beispiel einen Webserver, ist dieser aber nicht .
Geselle Geek
9
Stimmen Sie mit diesen Kommentaren überein - ein Router IST ein Webserver (sowie andere Dinge). Nach der Logik der Kommentare gibt es keinen Webserver, da ein solches System über andere Funktionen verfügt.
Davidgo
5
Der hohe CPU- und andere Ressourcenbedarf betrifft viel mehr Webanwendungen und dynamische HTML-Generierungssprachen - z. B. PHP, eine häufig verwendete, aber (besonders wenn sie so eingerichtet wird, wie sie normalerweise ist) komisch ineffiziente Sprache - als das Thema Web-Serving. Ein 33MHz 80486 mit 16MB RAM könnte für eine hohe Belastung mit statischen Seiten ausgelegt sein, wenn sich jemand darum kümmert.
Rackandboneman
@rackandboneman Sehr gut. Ich werde die Bedeutung von "Wenn Ihre Operation größer wird" klären, um Ihr Anliegen anzusprechen.
@rackandboneman Nicht nur "könnte" gemacht werden, sondern "war oft".
JWG
8

Programmier- / Software-Perspektive:

Ein Programm, das Port 80 auf dem Netzwerkadapter abhören kann. Das läuft auf dem Betriebssystem, das Sie haben. Und kann die Anfragen nach HTTP-Definitionen verarbeiten.

Ein Programm, das jeden Port abhört, ist von jedem Computer im selben Netzwerk aus erreichbar. Im Idealfall handelt es sich um einen bekannten Standardport (80 und 8080 für HTML-Server; für benutzerdefinierte Anwendungen sollte der Wert über 1024 liegen). Es ist sogar üblich, die Entwicklung eines netzwerkfähigen Programms auf demselben Computer auszuführen, auf dem Sie die Entwicklung durchführen.

Wenn Sie ihn über localhost erreichen können, können Sie ihn von überall im selben Netzwerk erreichen, und von überall aus gibt es einen Pfad zu diesem Computer und seinem Netzwerkadapter.

Vorsichtsmaßnahme: Viele All-in-One-Entwicklungsumgebungen in Standardinstallationen beschränken den Zugriff auf Localhost. Sie möchten doch nicht, dass Ihre Admin-Tools über das Internet erreichbar sind.

Hardware:

Die Hardware beginnt irgendwo bei "dem 10 Jahre alten Computer, auf dem XP oder Linux ausgeführt wird" und endet irgendwo bei "128 Core, mit 2 TiB RAM und 256 TiB SSDs in einem RAID", wobei die DB auch auf einem anderen Server ausgeführt wird . Webanwendungen sind in der Regel angenehm parallelisierbar, sodass Sie sie mit Clustern dieser Server noch weiter aufrüsten können / müssen. Und Geocast. Und verteiltes Design. Und viele andere Sachen. Es kommt ganz darauf an, über welchen Umfang wir sprechen.

Der einfachste Webserver, den Sie wahrscheinlich treffen werden, ist übrigens der von Ihnen verwendete Router. Sie alle betreiben einen Webserver für Konfigurationszwecke, der unter Linux gehostet wird (das erledigt die gesamte DHCP- und NAT-Arbeit).

Vernetzung:

Einen Weg aus anderen Netzen zu haben - überall im Internet inklusive - jetzt , die eine ganz andere Geschichte und ein Teil noch härter als die Programmierung die Anwendung ist. Zwischen dem NAT Ihres Routers und dem NAT Ihres Netzbetreibers wurde dieses Zeug wirklich hart.

  • Sie haben jederzeit die Möglichkeit, auch als Privatperson eine feste IP-Adresse von Ihrem ISP zu beziehen. Wie es anzeigt, kostet das wahrscheinlich extra. Ein DNS-Eintrag wäre eine Sache der Lebensqualität.
  • Vor dem Carrier Grade NAT konnten Sie mit Ihrer dynamischen IP-Adresse und einem DynDNS-Dienst arbeiten. Aber mit Carrier-Grade-NAT müssen Sie jetzt ein weiteres unkontrollierbares NAT überwinden - vielleicht. Hängt von Ihrem Provider ab.
  • Die ultimative Lösung, um eine Art NAT zu durchlaufen, ist das TCP / IP-Lochen . Alle VPN-Lösungen verwenden es. Wie Skype, TeamViewer und alle anderen. Das Problem ist: Um das Lochen von TCP / IP zu ermöglichen, benötigen Sie einen Server, der bereits im Internet erreichbar ist.
  • Wenn es sich um kleine Einheiten handelt (1 bis 10 Endpunkte), ist es normalerweise am einfachsten, eine VPN-Verbindung zum Netzwerk mit den Servern herzustellen. Die meisten Router unterstützen dies.
Christopher
quelle
2
"Dieser 10 Jahre alte Computer, auf dem Linux läuft". In Anbetracht des Alters des Webs können wir dies sicher zurückschieben. Ich persönlich erinnere mich, dass ich vor ungefähr 20 Jahren einen Webserver auf einem originalen Intel 80386 betrieben habe.
MSalters
@MSalters Sie können viel niedrigeres Ende als das gehen. Ich kann es heute nicht finden, aber vor ein paar Jahren bin ich auf ein Shell-Skript / einen CGI-Webserver gestoßen, das / der auf einer Hardware ausgeführt werden kann, die so niedrig ist wie eine Moto 68k. Es war anscheinend vor 15-20 Jahren im eingebetteten Raum relativ populär.
Dan Neely
3

Wenn Sie einen Computer zur Hand haben (PC, Laptop, Smartphone, HimbeerPI ...), auf dem Python installiert ist, geben Sie einfach Folgendes ein:

$ python -m SimpleHTTPServer

Oder wenn Sie Node.js installiert haben:

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

Herzlichen Glückwunsch, Sie haben einen Webserver!

matt
quelle