Qu'est-ce qui rend un PC capable d'être un serveur Web et qu'est-ce qui le rend incapable?

43

J'ai une question sur l'utilisation d'un ordinateur en tant que serveur Web. Pourquoi un ordinateur donné peut-il être un serveur Web? Quelles fonctionnalités permettent de devenir un serveur Web? Existe-t-il des cas dans lesquels un ordinateur est incapable de jouer le rôle de serveur Web?

Vincent Théonardo
la source
Une carte réseau
el.pescado
1
Le plus petit que j'ai vu est une carte SD wifi fabriquée par Apacer. Il a 4 Mo de RAM et tourne sous Linux et peut répondre aux requêtes Web et transmettre des images quand il est dans une caméra.
user3528438
@ el.pescado À moins que le client ne se trouve sur le même hôte.
Dmitry Grigoryev

Réponses:

96

À peu près n'importe quel ordinateur peut être utilisé comme serveur [Web], à condition qu'il puisse se connecter à un réseau et qu'il puisse exécuter un logiciel de serveur Web. Comme un serveur Web peut être assez simple et qu'il existe des serveurs Web gratuits et à code source ouvert, en pratique, tout périphérique peut agir en tant que serveur Web.

Le plus gros problème est le côté réseau. Pour qu'un système agisse en tant que serveur, d'autres machines doivent pouvoir y accéder. Si c'est juste pour une utilisation dans un réseau local, il n'y a pas de souci; Toutefois, si vous utilisez Internet plus large, les données doivent y être acheminées. Cela nécessite soit une adresse IP statique associée au serveur (ou un port transféré via un routeur), soit un service externe pouvant mapper un nom de domaine / sous-domaine sur une adresse IP dynamique en évolution.

(FWIW, vous pouvez acheter 10 $ d’ordinateurs pouvant servir de serveur Web de base.)

Bien entendu, bien que tout appareil puisse faire office de serveur Web, les fonctionnalités des sites Web peuvent varier énormément et un appareil peu coûteux (ou une connexion lente) peut ne pas être en mesure de répondre à la demande, en fonction du site Web concerné.

Je remarque que tout ce qui précède parle de serveurs Web - mais on peut en dire autant de tout type de serveur.

Davidgo
la source
2
Un autre problème est que les périphériques bon marché ne sont peut-être pas aussi fiables que les serveurs "réels" car leurs composants ne sont pas certifiés pour fonctionner dans un temps très long et leur mémoire n'a aucun moyen d'empêcher la pourriture de bits comme la RAM ECC. J'ai vu mes collègues laisser leurs ordinateurs plusieurs mois et finir dans BSOD
phuclv
11
Oui et non. J'ai beaucoup de systèmes fonctionnant 24h / 24 et 7j / 7 sans ecc ram, et la plupart des routeurs domestiques / de petites entreprises - qui sont des serveurs wenb fonctionnent également de manière assez fiable sans bsod. Bien entendu, les équivalents BSOD ne sont pas courants en dehors du monde Windows.
davidgo
9
Les erreurs @davidgo Bugcheck ne sont pas courantes non plus dans le monde Windows, sauf si le matériel ou les pilotes sont défectueux. Ce qui cause des problèmes similaires pour tout système d'exploitation. Nombre perdu de problèmes liés au pilote vidéo sous Windows et Linux.
Bob
7
@davidgo BSOD est juste un système de sécurité intégrée, pas un problème en soi. Il s’agit d’une dernière tentative pour empêcher la corruption sournoise de codes / données et de dommages matériels. Dans tous les cas, des preuves anecdotiques sont totalement inutiles dans des situations comme celle-ci: il y a de fortes chances que vous ne rencontriez jamais de problème visible avec ceci, ou que vous l'attribuiez à tort, et que de nombreux facteurs environnementaux en découle plus ou moins probable (température, latitude, bruit électromagnétique, qualité du réseau électrique, charge du système, fiabilité d'un composant donné). Le coût et la valeur de la RAM ECC constituent une décision de gestion.
Luaan
15
Vous avez probablement déjà quelques serveurs Web chez vous: votre routeur / point d'accès, votre imprimante et tous les autres types de gadgets domotiques configurables tels que compteurs intelligents, caméras IP, téléphones VoIP, thermostats programmables, votre téléviseur. Les plus petites vous donnent une idée du peu de matériel nécessaire. Autre remarque: la mise en réseau ne constitue pas une exigence stricte pour un serveur Web. Il est donc parfaitement logique d’avoir un serveur ne servant que des pages à des utilisateurs sur le même ordinateur .
Peter - Réintégration de Monica
25

Ce n'est pas délicat du tout. Cela dépend simplement de votre définition de "serveur Web".

Il est tout à fait possible d’exécuter un "serveur Web" sur des périphériques aussi simples qu’un microcontrôleur.

Voyons ce que le serveur Web minimal devrait faire. Il devrait générer du texte, même pas nécessairement en HTML, sur un client. Il aurait besoin de savoir qu'une demande est une demande et de répondre de manière appropriée. Vous n'auriez même pas besoin de connectivité réseau si votre "client" était local. Ce serait un serveur Web totalement inutile.

Ce serait l'équivalent serveur Web de l' un d'entre eux .

entrez la description de l'image ici

Ajout de la connectivité réseau pour un client (Ethernet, c’est bien, mais il n’ya aucune raison technique de ne pas pouvoir se connecter à un serveur Web fonctionnant en wifi) et il serait préférable de pouvoir acheminer à partir d’un client.

Un ESP8266 à 5 dollars US - un microcontrôleur minimal et économique avec wifi peut gérer une grande partie de ce contenu, voire même du contenu dynamique de base

J'utilise quelque chose comme ça pour le partage rapide de fichiers en utilisant Python. Il est toujours tout à fait possible d'écrire quelque chose comme ça sur un microcontrôleur ou même de l'exécuter sur un téléphone.

Le contenu statique est ennuyeux. Ajoutez des langages dynamiques et vous devrez penser à des systèmes plus lourds. Les choses qui fonctionnent sous Linux ou Windows sont bien.

À ce stade, vous parlez de routeurs grand public, de petites applications utilisant des pages Web sur l'interface utilisateur, etc.

Un serveur Web n'est même pas un problème complexe et peut être écrit en cinq lignes de bash et s'exécuter sous Linux. Maintenant, malheur ... Mais tout système capable d'exécuter malheur peut utiliser un serveur Web.

Une bonne configuration de serveur Web capable de gérer une charge donnée est un peu plus délicate.

Compagnon Geek
la source
11
Il est même possible de souder ensemble des puces TTL et d’exécuter un serveur Web. Consultez cette page Web pour plus de détails
Josef
7
C'est à peu près comme si on disait "Il est même possible d'assembler de l'acier et de construire la tour Eiffel. C'est trop cool
Journeyman Geek
1
De manière amusante, votre serveur Web "inutile" correspond exactement à la façon dont certaines aides fonctionnaient pour certains produits :) - Je ne me souviens pas des exemples, mais il y avait au moins un cas où l'aide était exécutée sur un serveur (pas seulement une page html rendue par un navigateur) et les problèmes qui ont suivi (mes pages d’aide ne se chargent pas lorsque mon pare-feu est activé!).
djsmiley2k - CoW
5
@ djsmiley2k L'aide Eclipse utilise un serveur Web local. Parce que Java.
user253751
2
Un Raspi est plus puissant que probablement 99,9% des serveurs Web commerciaux l’étaient en 2000. À l’époque, les gens faisaient déjà des choses très dynamiques.
rackandboneman
11

Le strict minimum

Littéralement, n'importe quel ordinateur peut devenir un serveur Web s'il présente les caractéristiques suivantes:

  • Une connexion réseau
  • Une application de serveur Web très simple, comme celle-ci .

Mais cela suffirait-il? Maintenant, c'est la question délicate.

Servir un intranet

Pour qu'un ordinateur devienne un serveur Web servant des pages Web modernes ou des applications Web à une communauté entière (par exemple, une école, une entreprise, un musée):

  • Matériel capable de répondre à plusieurs ordinateurs à la fois. Peut-être qu'un vieil ordinateur sous Linux ou Windows XP ferait l'affaire.
  • Une connexion réseau haut débit avec une bande passante suffisante, par exemple Ethernet 1 Gbit / s ou Wi-Fi 802.11g.
  • Une bonne application de serveur Web, comme IIS , Apache , Nginx ou autres . (Étonnamment, ces trois sont gratuits.)

Mais c'était juste un minimum pour les petites opérations. Lorsque vos opérations deviennent plus importantes (à savoir que le trafic est plus important et que vous utilisez des applications Web complexes au lieu de pages statiques), vos besoins augmentent. Vous aurez éventuellement besoin de:

  • Matériel de type serveur, tel que les serveurs montés en rack avec plusieurs processeurs Xeon et des centaines de gigaoctets de RAM
  • Réseaux de fibres optiques

Servir le monde extérieur

Pour exploiter l'infrastructure Internet au service du monde entier, vous aurez besoin de:

Sans cela, tout ce que vous avez est un serveur Web potentiel .


la source
._. Je considère un raspi comme un strict minimum et un janky comme diable. Il convient également de rappeler que de nombreuses choses utilisent une page Web comme interface utilisateur. Votre routeur a, mais n'est pas un serveur Web par exemple.
Compagnon Geek
9
Diisagree avec ces commentaires - un routeur est un serveur Web (ainsi que d’autres choses). Selon la logique des commentaires, il n’existe pas de serveur Web, car un tel système a d’autres fonctionnalités.
davidgo
5
Les besoins en ressources de processeur et autres ressources sont beaucoup plus liés aux applications Web et aux langages de génération HTML dynamiques - par exemple, PHP, un langage commun mais (surtout s'il est configuré de la manière habituelle) hileusement inefficace - plutôt que de servir des serveurs Web. Un 80486 à 33 MHz avec 16 Mo de RAM pourrait être conçu pour traiter une lourde charge de pages statiques si quelqu'un le dérangeait.
rackandboneman
@rackandboneman Très bien. Je vais clarifier le sens de "si votre opération s'agrandit" pour répondre à votre préoccupation.
@rackandboneman Pas simplement "pourrait être" fait pour gérer, mais "était souvent".
Jwg
8

Programmation / perspective logicielle:

Un programme capable d'écouter le port 80 sur la carte réseau. Cela fonctionne sur le système d'exploitation que vous avez. Et peut traiter les demandes en fonction des définitions HTTP.

Un programme qui écoute n'importe quel port est accessible à partir de tous les ordinateurs du même réseau. Idéalement, il devrait s'agir d'un port standard connu (80 et 8080 pour les serveurs HTML; choisissez au-delà de 1024 pour les applications personnalisées). Il est même pratique courante de développer un programme accessible en réseau sur le même ordinateur que celui sur lequel vous effectuez le développement.

Si vous pouvez l'atteindre via localhost, vous pouvez l'atteindre de n'importe où sur le même réseau et de n'importe où ailleurs, il y a un chemin d'accès à cette machine et à sa carte réseau.

Mise en garde: De nombreux environnements de développement tout-en-un dans les installations par défaut limitent l'accès à Localhost. Vous ne voulez pas que vos outils d'administration soient accessibles depuis Internet, après tout.

Matériel:

Le matériel commence quelque part sur "cet ordinateur de 10 ans qui exécute XP ou Linux" et se termine vers "128 cœurs, avec 2 To de mémoire vive et 256 To de SSD dans un raid", avec la base de données également exécutée sur un autre serveur. . Les applications Web ont tendance à être agréablement parallélisables, de sorte que vous pouvez / devez encore plus utiliser les clusters de ces serveurs. Et géocast. Et design distribué. Et beaucoup d'autres choses. Cela dépend entièrement de quelle échelle nous parlons.

Le serveur Web le plus simple que vous rencontrerez probablement est le routeur que vous utilisez, au fait. Ils exécutent tous un serveur Web à des fins de configuration, hébergé sur un serveur Linux (qui effectue tout le travail DHCP et NAT).

La mise en réseau:

Avoir un chemin d'autres réseaux - y compris partout sur Internet - maintenant que est une histoire totalement différente et une partie encore plus difficile que la programmation de l'application. Entre le NAT de votre routeur et un NAT de classe opérateur, ces choses sont devenues très difficiles.

  • Vous avez toujours la possibilité d'acheter une adresse IP fixe auprès de votre fournisseur d'accès, même en tant que personne privée. Comme il est indiqué, cela coûtera probablement plus cher. Une entrée DNS serait une question de qualité de vie.
  • De retour avant le NAT de classe opérateur , vous pouvez utiliser votre adresse IP dynamique et un service DynDNS. Mais avec le NAT de classe opérateur, vous avez maintenant un autre NAT incontrôlable à surmonter - peut-être. Cela dépend de votre fournisseur.
  • La solution ultime pour traverser une sorte de NAT, n’importe quel nombre de couches est la perforation TCP / IP . Toutes les solutions VPN l'utilisent. Tout comme Skype, TeamViewer et tous les autres. Le problème est le suivant: pour pouvoir effectuer la perforation TCP / IP, vous avez besoin d'un serveur déjà accessible sur Internet.
  • S'il s'agit de petites échelles (1 à 10 points finaux), le moyen le plus simple consiste généralement à établir une connexion VPN sur le réseau comportant les serveurs. La plupart des routeurs ont un support pour cela.
Christopher
la source
2
"Cet ordinateur de 10 ans sous Linux". Compte tenu de l’âge du Web, nous pouvons le repousser en toute sécurité. Je me souviens personnellement d'avoir utilisé un serveur Web sur un Intel 80386 d'origine, il y a environ 20 ans.
MSalters
@ MSalters Vous pouvez aller beaucoup plus bas que cela. Je ne le trouve pas aujourd'hui, mais il y a quelques années, je suis tombé sur un serveur Web script / CGI qui pouvait être exécuté sur du matériel aussi bas qu'une moto 68k. C'était apparemment relativement populaire il y a 15-20 ans dans l'espace embarqué.
Dan Neely
3

Si vous avez sous la main tout type d’ordinateur (PC, ordinateur portable, smartphone, raspberryPI ...) sur lequel Python est installé, tapez simplement:

$ python -m SimpleHTTPServer

Ou si vous avez installé Node.js:

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

Félicitation, vous avez un serveur web!

mat
la source