Cosa rende un PC in grado di essere un server Web e cosa non lo rende?


43

Ho una domanda sull'uso di un computer come server web. Perché un determinato computer può essere un server Web? Quali caratteristiche lo rendono in grado di essere un web server? Esiste un caso in cui un computer non è in grado di fungere da server Web?


Una scheda di rete.
el.pescado,

1
La più piccola che abbia mai visto è una scheda SD wifi creata da Apacer. Ha 4 MB di RAM ed esegue Linux e può rispondere a richieste Web e trasmettere immagini quando è su una videocamera.
user3528438

@ el.pescado A meno che il client non si trovi sullo stesso host.
Dmitry Grigoryev il

Risposte:


96

Praticamente qualsiasi computer può essere utilizzato come server [web], a condizione che possa connettersi a una rete e in grado di eseguire software per server Web. Poiché un web server può essere abbastanza semplice e ci sono server web gratuiti e open source, in pratica, qualsiasi dispositivo può fungere da web server.

Il problema più grande è il lato della rete. Affinché un sistema funzioni come server, è necessario che altre macchine possano accedervi. Se è solo per l'uso in una LAN, non ci sono preoccupazioni; tuttavia, se deve essere utilizzato da Internet, i dati devono essere indirizzati ad esso. Ciò richiede un indirizzo IP statico associato al server (o la porta inoltrata attraverso un router) o un servizio esterno in grado di mappare un nome di dominio / sottodominio a un indirizzo IP dinamico che cambia.

(FWIW, è possibile acquistare computer da $ 10 che possono fungere da server Web di base.)

Naturalmente, mentre qualsiasi dispositivo può fungere da server Web, la funzionalità dei siti Web può variare enormemente e un dispositivo economico (o una connessione lenta) potrebbe non essere in grado di soddisfare le esigenze a seconda di quale sia il sito Web specifico.

Noto che tutto quanto sopra parla di server Web, ma lo stesso si può dire praticamente per qualsiasi tipo di server.


2
un altro problema è che i dispositivi economici potrebbero non essere affidabili come i server "reali" perché i loro componenti non sono certificati per funzionare a lungo e la loro memoria non ha alcun mezzo per prevenire il marcio come la RAM ECC. Ho visto i miei colleghi lasciare i loro computer per diversi mesi e finire in BSOD
phuclv,

11
Sì e no. Ho eseguito molti sistemi 24 ore su 24, 7 giorni su 7, senza eccitazione, e la maggior parte dei router domestici / per piccole imprese, che sono anche server wenb, funzionano in modo abbastanza affidabile senza bsod. Ovviamente, gli equivalenti BSOD non sono così comuni al di fuori del mondo Windows.
David

9
Gli errori di @davidgo Bugcheck non sono comuni nemmeno nel mondo di Windows, a meno che tu non abbia hardware difettoso o driver dannosi. Che causano problemi simili per qualsiasi sistema operativo. Conteggio perduto del numero di problemi relativi al driver video sia su Windows che su Linux.
Bob

7
@davidgo BSOD è solo un fail-safe, non un problema da solo. È un ultimo tentativo disperato di prevenire la corruzione subdola di codice / dati e danni hardware. In ogni caso, le prove aneddotiche sono del tutto inutili in cose come questa: c'è un'alta probabilità che non incontrerai mai un problema visibile con questo, o lo assegnerai erroneamente, e c'è un'enorme quantità di fattori ambientali che lo rendono più o meno probabile (temperatura, latitudine, rumore elettromagnetico, qualità della rete elettrica, carico del sistema, affidabilità di un determinato componente). Costo e valore della RAM ECC e tale è una decisione aziendale.
Luaan,

15
Probabilmente hai già alcuni server web a casa: il tuo router / punto di accesso, la tua stampante e tutti gli altri tipi di gadget di automazione domestica configurabili come contatori intelligenti, telecamere IP, telefoni VoIP, termostati programmabili, TV. I più piccoli ti danno un'idea di quanto poco hardware sia necessario. Un'altra osservazione: la rete non è un requisito rigoroso per un server Web: può avere perfettamente senso avere un server che serve solo pagine agli utenti sullo stesso computer .
Peter - Ripristina Monica il

25

Non è affatto complicato. Dipende semplicemente dalla tua definizione di "web server".

È del tutto possibile eseguire un "web server" su dispositivi semplici come un microcontrollore.

Consideriamo cosa dovrebbe fare il semplice server web minimale. Dovrebbe produrre del testo, non necessariamente nemmeno in HTML per un client. Dovrebbe sapere che una richiesta è una richiesta e rispondere in modo appropriato. Non avresti nemmeno bisogno della connettività di rete se il tuo "client" era locale. Sarebbe un server web completamente inutile.

Sarebbe l'equivalente del web server di uno di questi .

inserisci qui la descrizione dell'immagine

Aggiunta della connettività di rete per un client (Ethernet è utile, ma non esiste alcun motivo tecnico per cui non è possibile connettersi a un server Web in esecuzione su Wi-Fi) ed essere in grado di instradare da un client sarebbe meglio.

Un ESP8266 da $ 5 : un microcontrollore economico e minimale con Wi - Fi in grado di gestire gran parte di ciò, e forse anche un contenuto dinamico di base

Uso qualcosa del genere per una rapida condivisione di file tramite Python. È ancora del tutto possibile scrivere qualcosa di simile su un microcontrollore o persino eseguirlo su un telefono.

Il contenuto statico è noioso. Aggiungi linguaggi dinamici e dovrai iniziare a pensare a sistemi di pesi più pesanti. Le cose che eseguono Linux o Windows sono belle.

A questo punto, stai parlando di router di consumo, piccole applicazioni che utilizzano pagine Web nell'interfaccia utente e tutto il resto.

Un web server non è nemmeno un problema complesso e può essere scritto in cinque righe di bash ed eseguito su Linux. Now doom ... Ma qualsiasi sistema in grado di eseguire doom può eseguire un server web.

Una buona configurazione del web server in grado di gestire un determinato carico è un po 'più complicata.


11
È anche possibile saldare insieme alcuni chip TTL ed eseguire un server web. Vedi questa pagina web per i dettagli
Josef

7
È più o meno come dire "È anche possibile imbullonare un po 'di acciaio e costruire la torre Eiffel. È così bello
Journeyman Geek

1
In modo divertente, il tuo server web "inutile" è esattamente il modo in cui alcuni aiuti funzionavano per determinati prodotti :) - Non ricordo esempi, ma c'era almeno un caso in cui l'aiuto era in esecuzione su un server (non solo una pagina HTML resa da un browser) e i successivi problemi che si sono presentati (le mie pagine di aiuto non si caricano quando il mio firewall è attivo!).
djsmiley2k - CoW

5
@ djsmiley2k La guida di Eclipse utilizza un server Web locale. Perché Java.
user253751

2
Un raspi è più potente di quanto probabilmente il 99,9% dei server Web commerciali fosse nell'anno 2000. E la gente stava già facendo cose fortemente dinamiche allora.
rackandboneman

11

Minimo indispensabile

Letteralmente, qualsiasi computer può diventare un server web se ha i seguenti:

  • Una connessione di rete
  • Un'app web server molto semplice, come questa .

Ma sarebbe sufficiente? Questa è la domanda difficile.

Serve una Intranet

Perché un computer diventi un server Web che serve pagine Web o app Web moderne a un'intera comunità (ad esempio scuola, azienda, museo):

  • Hardware in grado di rispondere a più computer contemporaneamente. Forse farebbe un vecchio computer con Linux o Windows XP.
  • Una connessione di rete ad alta velocità con sufficiente larghezza di banda, ad esempio 1 Gbit / sec Ethernet o Wi-Fi 802.11g.
  • Una buona app per server Web, come IIS , Apache , Nginx o altri . (Sorprendentemente, questi tre sono gratuiti.)

Ma quello era solo un minimo per le piccole operazioni. Quando l'operazione diventa più grande (ovvero si ottiene un traffico più pesante e si servono app Web complesse anziché pagine statiche), le esigenze crescono. Alla fine avrai bisogno di:

  • Hardware di classe server come server montati su rack con diverse CPU Xeon e centinaia di gigabyte di RAM
  • Reti in fibra ottica

Al servizio del mondo esterno

Per sfruttare l'infrastruttura Internet per servire tutto il mondo, avrai bisogno di:

Senza questi, tutto ciò che hai è un potenziale server web.


._. Considero un raspi un minimo indispensabile e stravagante come diamine. Vale anche la pena ricordare che molte cose usano una pagina web come interfaccia utente. Il tuo router ha, ma non è un web server per esempio.
Journeyman Geek

9
Diisagree con questi commenti: un router È un server Web (così come altre cose). Secondo la logica dei commenti, non esiste un server web perché tale sistema ha altre funzionalità.
David

5
Le pesanti esigenze della CPU e di altre risorse riguardano molto di più le applicazioni web e i linguaggi dinamici di generazione HTML - ad esempio PHP, un linguaggio comune ma (soprattutto se impostato come è di solito) tale linguaggio esilarantemente inefficiente - rispetto al servizio web. Un 80486 a 33 MHz con 16 MB di RAM potrebbe essere fatto per gestire un carico pesante di pagine statiche se qualcuno si preoccupasse.
Rackandboneman,

@rackandboneman Molto bene. Chiarirò il significato di "se la tua operazione diventa più grande" per rispondere alle tue preoccupazioni.

@rackandboneman Non solo "potrebbe essere" fatto per gestire, ma "spesso lo è stato".
jwg

8

Prospettiva di programmazione / software:

Un programma in grado di ascoltare la porta 80 sulla scheda di rete. Funziona sul sistema operativo che hai. E può elaborare le richieste in base alle definizioni HTTP.

Un programma che ascolta qualsiasi porta è raggiungibile da tutti i computer della stessa rete. Idealmente, dovrebbe essere una porta standard nota (80 e 8080 per server HTML; selezionare oltre 1024 per applicazioni personalizzate). È anche pratica comune eseguire lo sviluppo di un programma raggiungibile in rete sullo stesso computer su cui si sta eseguendo lo sviluppo.

Se riesci a raggiungerlo tramite localhost, puoi raggiungerlo da qualsiasi parte della stessa rete e da qualsiasi altra parte c'è un percorso per questa macchina e la sua scheda di rete.

Avvertenza: molti ambienti di sviluppo all-in-one nelle installazioni predefinite limitano l'accesso a Localhost. Dopotutto, non vuoi che i tuoi strumenti di amministrazione siano raggiungibili da Internet.

Hardware:

L'hardware inizia da qualche parte su "quel computer di 10 anni che esegue XP o Linux" e termina da qualche parte intorno a "128 core, con 2 TiB RAM e 256 TiB di SSD in un raid", con il DB in esecuzione anche su un altro server . Le applicazioni Web tendono ad essere piacevolmente parallelizzabili, quindi è possibile / doverle aumentare ulteriormente con i cluster di tali server. E Geocast. E design distribuito. E molte altre cose. Dipende interamente dalla scala di cui stiamo parlando.

Il web server più semplice che probabilmente incontrerai è il router che stai utilizzando, tra l'altro. Tutti eseguono un server Web a scopo di configurazione, ospitato su un Linux (che sta facendo tutto il lavoro DHCP e NAT).

networking:

Avere un percorso da altre reti - incluso ovunque su Internet - ora questa è una storia completamente diversa e una parte ancora più difficile della programmazione dell'applicazione. Tra il NAT del tuo router e il NAT di livello carrier, queste cose sono diventate davvero difficili.

  • Hai sempre la possibilità di acquistare un indirizzo IP fisso dal tuo ISP, anche come privato. Come indica, ciò avrà probabilmente un costo aggiuntivo. Una voce DNS sarebbe una cosa della qualità della vita.
  • Prima del Carrier Grade NAT , potevi lavorare con il tuo indirizzo IP dinamico e un servizio DynDNS. Ma con NAT di livello carrier, ora hai un altro NAT incontrollabile da superare - forse. Dipende dal tuo provider.
  • La soluzione definitiva per attraversare un tipo di NAT, qualsiasi numero di livelli è la perforazione TCP / IP . Tutte le soluzioni VPN lo usano. Come fanno Skype, TeamViewer e tutti gli altri. Il problema è: per eseguire la perforazione TCP / IP, è necessario un server già raggiungibile su Internet.
  • Se si tratta di scale di piccole dimensioni (da 1 a 10 endpoint), in genere, il modo più semplice è semplicemente stabilire una connessione VPN nella rete con i server. La maggior parte dei router ne ha il supporto.

2
"Quel computer di 10 anni che esegue Linux". Considerando l'età del web, possiamo tranquillamente respingerlo. Ricordo personalmente di aver eseguito un server Web su un Intel 80386 originale, circa 20 anni fa.
Salterio

@MSalters Puoi andare molto più in basso. Non riesco a trovarlo oggi, ma qualche anno fa mi sono imbattuto in uno script shell / web server CGI che poteva essere eseguito su hardware di fascia bassa come un moto 68k. Apparentemente era relativamente popolare 15-20 anni fa nello spazio incorporato.
Dan Neely,

3

Se hai a portata di mano qualsiasi tipo di computer (PC, laptop, smartphone, raspberryPI ...) con Python installato, basta digitare:

$ python -m SimpleHTTPServer

O se hai installato Node.js:

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

Congratulazioni, hai un web server!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.